multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · dirac bbc dwt, i/p/b-sn...

44
Multimedi´ aln´ ı kontejnery, kodeky a frameworky David Baˇ rina Multimedi´ aln´ ı kontejnery, kodeky a frameworky 1 / 44

Upload: others

Post on 05-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Multimedialnı kontejnery, kodeky aframeworky

David Barina

Multimedialnı kontejnery, kodeky a frameworky 1 / 44

Page 2: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Obsah

PrehledUvodKontejneryKodekyFrameworkyShrnutı

Multimedialnı kontejnery, kodeky a frameworky 2 / 44

Page 3: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Multimedia

• multimedia:text, zvuk, staticky obraz, video, metainformace, . . .

• potreba:• zıskavat (kamera),• ukladat (pevny disk, komprese),• vyhledavat (podle popisu),• prehravat,• upravovat (strih videa), . . .

• ukladanı: kontejner + kodeky

Multimedialnı kontejnery, kodeky a frameworky 3 / 44

Page 4: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Pojmy

• kontejner• datove proudy (audio, video, titulky, kapitoly)• napr. AVI, Matroska, MPEG-TS

• format videa• ztratova, bezeztratova komprese• napr. H.264, MPEG-4 ASP

• kodek• kompresor + dekompresor• napr. x264, DivX, libavcodec

• profily (zachytne body)

• FourCC (4CC, four character code)• AVI• napr. DIVX oznacuje DivX

Multimedialnı kontejnery, kodeky a frameworky 4 / 44

Page 5: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Kontejnery

AVI (Audio Video Interleave)

• prıpona .avi

• spolecnost Microsoft, od roku 1992

• implementace RIFF (Resource Interchange File Format)

• k identifikace kodeku FourCC (napr. DIVX = DivX)

• nenı mozne ulozit titulky, kapitoly, menu (tretı strany)

• puvodnı omezenı 1 GB

• index podle cısla snımku (ne casu) na konci souboru(nevhodny ke streamovanı)

• siroka podpora

• nema podporu B-snımku

Multimedialnı kontejnery, kodeky a frameworky 5 / 44

Page 6: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Kontejnery

Matroska

• prıpona .mkv

• otevreny format, oznamen 2002

• podporuje vse, neomezeny pocet stop

• zalozen na EBML (Extensible Binary Meta Language)

• kodek urcen CodecID (retezec)• napr. V MPEG4/ISO/AVC = H.264• typ V MS/VFW/FOURCC zaobaluje FourCC• http://haali.su/mkv/codecs.pdf

• WebM (prıpona .webm) je profil formatu Matroska• Google, 2010, urcen pro web (HTML5)• kodeky pouze VP8 + Vorbis

Multimedialnı kontejnery, kodeky a frameworky 6 / 44

Page 7: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Kontejnery

MP4 (MPEG-4 Part 14)

• prıpona .mp4

• standard ISO, od roku 2003 (verze 2)

• zalozen na MPEG-4 Part 12, ktery je zalozen na QuickTime

• k identifikaci objektu (take kodeku) ctyrznakove identifikatory• napr. avc1 pro MPEG-4 AVC• code-points, http://www.mp4ra.org/codecs.html

• podporuje libovolne kodeky (privatnı a registrovane),z registrovanych je siroce podporovanych pouze par

Multimedialnı kontejnery, kodeky a frameworky 7 / 44

Page 8: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Kontejnery

ASF (Advanced Systems Format)

• prıpony .asf, .wma, .wmv

• Microsoft

• objekty (take pouzite kodeky) identifikovany GUID• zaobaluje FourCC, napr.

DEFINE GUID(CLSID XVID, mmioFOURCC(’D’,’I’,’V’,’X’), . . .

• teoreticky libovolny kodek

• index prirazen klıcovym snımkum, muze byt podle casu, cıslasnımku nebo ref. cas. razıtka

Multimedialnı kontejnery, kodeky a frameworky 8 / 44

Page 9: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Kontejnery

QuickTime

• prıpona .mov

• spolecnost Apple, take QuickTime File Format (QTFF)

• je na nem zalozen MPEG-4 Part 12

Ogg

• prıpony .ogv, .oga, .ogx, .ogg

• otevreny format

• soucast projektu Ogg, zastresene Xiph.Org Foundation

• drıve ve specifikace HTML5

• hack OGM (Ogg Media)

Multimedialnı kontejnery, kodeky a frameworky 9 / 44

Page 10: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Kontejnery

Flash Video

• prıpony .flv, .f4v

• spolecnost Adobe Systems (puvodne Macromedia)

• dve verze: FLV (SWF) a F4V (MPEG-4 Part 12)

• omezena podpora kodeku

3GP, 3G2

• prıpony .3gp, .3g2

• zalozeny na MPEG-4 Part 12

• pro mobilnı zarızenı

• omezena podpora kodeku

Multimedialnı kontejnery, kodeky a frameworky 10 / 44

Page 11: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Kontejnery

MPEG-PS

• ISO, specifikovan v MPEG-1 Part 1 a MPEG-2 Part 1

• VOB, EVO (s omezenımi) – DVD-Video a HD DVD

• omezena podpora kodeku + privatnı proudy

MPEG-TS

• ISO, 1995, specifikovan v MPEG-2 Part 1

• muze nest vıce PS (Program Streams)

• omezena podpora kodeku + privatnı proudy

• televiznı vysılanı

Multimedialnı kontejnery, kodeky a frameworky 11 / 44

Page 12: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Multimedia

• multimedia:text, zvuk, staticky obraz, video, metainformace, . . .

• potreba:• zıskavat (kamera),• ukladat (pevny disk, komprese),• vyhledavat (podle popisu),• prehravat,• upravovat (strih videa), . . .

• ukladanı: kontejner + kodeky

Multimedialnı kontejnery, kodeky a frameworky 12 / 44

Page 13: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Pojmy

• snımek (frame)• snımkova frekvence• index (podle casu, cısla snımku)

• typy snımku• klıcove snımky (I-snımky)• rozdılove snımky (predikce, P-snımky, B-snımky)• frame reordering• GOP (skupina snımku)

Multimedialnı kontejnery, kodeky a frameworky 13 / 44

Page 14: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Pojmy

Multimedialnı kontejnery, kodeky a frameworky 14 / 44

Page 15: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Techniky

• barevny model: Y′CbCr + podvzorkovanı (sub-sampling)

• rozdelenı na bloky

• intra-snımkove kodovanı (prostorova redundance)• predikce• rozdelit snımek na bloky• transformace (DCT, DWT)• kvantizace, kodovanı

00110101100011100110101110...

1 2 3 4 5

Multimedialnı kontejnery, kodeky a frameworky 15 / 44

Page 16: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Techniky

• inter-snımkove kodovanı (casova redundance)• kompenzace pohybu

• globalnı• blokova – pohybovy vektor• s presahujıcımi bloky

Multimedialnı kontejnery, kodeky a frameworky 16 / 44

Page 17: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Formaty videa, kodeky

MPEG-1 Part 2

• vytvoren MPEG, standard ISO

• DCT

• format: VCD

• libavcodec

MPEG-2 Part 2/H.262

• format• SVCD, DVD, DVB, HD DVD, Blu-ray• DCT, VBR (na rozdıl od MPEG-1)• siroka podpora

• libavcodec

Multimedialnı kontejnery, kodeky a frameworky 17 / 44

Page 18: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Formaty videa, kodeky

MPEG-4 Part 2 ASP/MPEG-4 ASP

• format• zalozen na ITU-T H.263, ISO, 1999• B-snımky az ASP (ne SP), DCT

• kodeky• libavcodec• DivX• Xvid• 3ivx• Nero Digital

Multimedialnı kontejnery, kodeky a frameworky 18 / 44

Page 19: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Formaty videa, kodeky

MPEG-4 Part 10/H.264/MPEG-4 AVC

• format• ISO, 2003• Blu-ray, HD DVD, DVB (CT HD + Nova HD)• I/P/B-snımky, DCT/WHT

• kodeky• libavcodec (pouze dekomprese)• x264 (pouze komprese)• DivX (H.264)• Nero Digital• CoreAVC (pouze dekomprese)

Multimedialnı kontejnery, kodeky a frameworky 19 / 44

Page 20: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Formaty videa, kodeky

H.265/HEVC

• ve vyvoji, vetsı velikost transformace, adaptivnı vyberkvantizacnı matice, . . .

• HM-1.0

VP8

• format• Google, HTML5• DCT/WHT (Walsh–Hadamard transform)• nejsou B-snımky, zavadı golden snımky a altref snımky

• libvpx

Multimedialnı kontejnery, kodeky a frameworky 20 / 44

Page 21: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Formaty videa, kodeky

Theora

• urcen pro Ogg, Xiph.org Foundation

• format zalozen na VP3; DCT, I/P-snımky (ne B-snımky)

• libtheora

Dirac

• BBC

• DWT, I/P/B-snımky

• podmnozina standardizovana jako VC-2

• kodeky Schrodinger a Dirac (dirac-research)

Multimedialnı kontejnery, kodeky a frameworky 21 / 44

Page 22: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Formaty videa, kodeky

Windows Media Video + VC-1/SMPTE 421M

• Microsoft; VC-1 (zalozeno na WMV 9) pozdeji SMPTE

• HD DVD, Blu-ray; DCT, ∼MPEG

• nekolik profilu, nekolik kodeku od Microsoftu (WMV 9)

nestandardizovane

• Huffyuv

• Lagarith

• MJPEG

Multimedialnı kontejnery, kodeky a frameworky 22 / 44

Page 23: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Multimedia

• multimedia:text, zvuk, staticky obraz, video, metainformace, . . .

• potreba:• zıskavat (kamera),• ukladat (pevny disk, komprese),• vyhledavat (podle popisu),• prehravat,• upravovat (strih videa), . . .

• ukladanı: kontejner + kodeky

Multimedialnı kontejnery, kodeky a frameworky 23 / 44

Page 24: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Multimedialnı framework

• vse zaobaluje

• knihovny (API), nastroje (prehravac, CLI)

• formaty: kontejnery, kodeky, protokoly, . . .

• pozadavky: modularita, siroka podpora formatu, intuitivnıpouzitı, dokumentace, vykon, platforma, . . .

• problem: zadny neumı vse

Multimedialnı kontejnery, kodeky a frameworky 24 / 44

Page 25: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Pojmy

• barevny model (RGB, Y′CbCr)

• format pixelu (RGB24)

• framebuffer

...

{pixel

bajt }řádek

framebuffer:

skutečný obraz

šířka řádku

délka kroku

Multimedialnı kontejnery, kodeky a frameworky 25 / 44

Page 26: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Prehravac, kodek

prehravac videa:

inicializace

zobrazsnímek

destrukcedekódujsnímek

funkce kodeku:

• inicializace (alokace pameti – rozdılove snımky, parametry)

• odhad maximalnı velikosti zkomprimovaneho snımku

• komprese snımku

• dekomprese snımku

Multimedialnı kontejnery, kodeky a frameworky 26 / 44

Page 27: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Multimedialnı framework

nektere vyznamne frameworky:

• Video for Windows (VirtualDub, Media Player)

• DirectShow (WMP, BSPlayer, Media Player Classic)

• FFmpeg (MPlayer, VLC, ffdshow)

• QuickTime (QuickTime)

• Media Foundation (Windows Media Player 11/12)

• GStreamer

• xine, libvlc, Phonon a dalsı. . .

Multimedialnı kontejnery, kodeky a frameworky 27 / 44

Page 28: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

Video for Windows (VfW) / Video Compression Manager (VCM)

• vyvinul Microsoft jako reakci na QuickTime (Apple)

• prvnı verze (verze 1.0), listopad 1992

• vlastnı souborovy format Audio Video Interleave (AVI)

• nastupcem se stal DirectShow

• dokumentace na MSDN

LONG hr ;PAVIFILE p f i l e ;

A V I F i l e I n i t ( ) ;

hr = AVIFi leOpen (& p f i l e , s z F i l e , OF SHARE DENY WRITE , 0L ) ;i f ( hr != 0) {

r e t u r n ;}

A V I F i l e R e l e a s e ( p f i l e ) ;A V I F i l e E x i t ( ) ;

Multimedialnı kontejnery, kodeky a frameworky 28 / 44

Page 29: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

Video for Windows (VfW) / Video Compression Manager (VCM)

#i n c l u d e <vfw . h>

LRESULT WINAPI D r i v e r P r o c (DWORD d w D r i v e r I d ,HDRVR hdrvr ,UINT msg ,LONG lParam1 ,LONG lParam2 )

{s w i t c h ( msg ){

case ICM COMPRESS :// komprimuj sn imekr e t u r n Compress ( ( ICCOMPRESS∗) lParam1 , (DWORD) lParam2 ) ;

case ICM DECOMPRESS :// dekomprimuj sn imekr e t u r n Decompress ( ( ICDECOMPRESS∗) lParam1 , (DWORD) lParam2 ) ;

}}

kodek: zkompilovat jen plugin

Multimedialnı kontejnery, kodeky a frameworky 29 / 44

Page 30: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

Video for Windows (VfW) / Video Compression Manager (VCM)

Multimedialnı kontejnery, kodeky a frameworky 30 / 44

Page 31: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

DirectShow (DShow, DS)

• nastupce VfW; nastupcem Media Foundation

• zalozen na objektovem modelu COM (Component ObjectModel)

• graf slozeny z filtru

• automaticka konverze barevnych modelu (proti VfW)

• filtry: zdrojove, transformacnı, renderovacı

• pro vyvoj nutno nainstalovat Windows SDK, drıveDirectX SDK

• utilita GraphEdit

• zpetna kompatibilita: VfW kodeky obaleny filtremAVI Decompressor

• dokumentace na MSDN

Multimedialnı kontejnery, kodeky a frameworky 31 / 44

Page 32: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

DirectShow (DShow, DS)

Multimedialnı kontejnery, kodeky a frameworky 32 / 44

Page 33: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

DirectShow (DShow, DS)

c l a s s CDBVDecoder : p u b l i c C V i d e o T r a n s f o r m F i l t e r , p u b l i c IDBVDecoder{p u b l i c :

s t a t i c CUnknown ∗WINAPI C r e a t e I n s t a n c e (LPUNKNOWN punk , HRESULT ∗phr ) ;STDMETHODIMP N o n D e l e g a t i n g Q u e r y I n t e r f a c e ( REFIID r i i d , v o i d ∗∗ppv ) ;DECLARE IUNKNOWN ;

CDBVDecoder (LPUNKNOWN punk , HRESULT ∗phr ) ;

HRESULT CheckInputType ( const CMediaType ∗mtIn ) ;HRESULT GetMediaType ( i n t iPos , CMediaType ∗pmt ) ;HRESULT SetMediaType ( PIN DIRECTION d i r e c t i o n , const CMediaType ∗pmt ) ;HRESULT CheckTransform ( const CMediaType ∗mtIn , const CMediaType ∗mtOut ) ;HRESULT D e c i d e B u f f e r S i z e ( IMemAl locator ∗pima ,

ALLOCATOR PROPERTIES ∗ p P r o p e r t i e s ) ;

HRESULT Transform ( IMediaSample ∗pIn , IMediaSample ∗pOut ) ;} ;

kodek: zkompilovat jen plugin

Multimedialnı kontejnery, kodeky a frameworky 33 / 44

Page 34: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

DirectShow (DShow, DS)

Multimedialnı kontejnery, kodeky a frameworky 34 / 44

Page 35: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

FFmpeg

• svobodny multiplatformnı software

• vyuzıvajı jej MPlayer, VLC media player, Avidemux, ffdshow

• knihovny:• libavutil (matematicke rutiny, pro zjednodusenı programovanı)• libavcodec (audio a video kodeky)• libavformat (muxery a demuxery/splittery pro kontejnery)• libavdevice (grabovanı a renderovanı pres V4L(2), VfW, ALSA)• libavfilter (filtry)• libswscale (zmena rozlisenı a barevneho modelu obrazu)

• podporovane formaty nahttp://www.ffmpeg.org/general.html

• Libav (fork FFmpegu), http://libav.org/

Multimedialnı kontejnery, kodeky a frameworky 35 / 44

Page 36: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

FFmpeg

#i n c l u d e <avcodec . h>#i n c l u d e <a v f o r m a t . h>

i n t main ( i n t argc , c h a r g ∗a r g v [ ] ){

a v r e g i s t e r a l l ( ) ;

AVFormatContext ∗pFormatCtx ;

i f ( a v o p e n i n p u t f i l e (&pFormatCtx , a r g v [ 1 ] , NULL , 0 , NULL) != 0)r e t u r n −1;

i f ( a v f i n d s t r e a m i n f o ( pFormatCtx ) < 0)r e t u r n −1;

AVCodecContext ∗pCodecCtx ;

i f ( pFormatCtx−>s t r e a m s [0]−>codec . c o d e c t y p e != CODEC TYPE VIDEO)r e t u r n −1;

pCodecCtx = &pFormatCtx−>s t r e a m s [0]−>codec ;

Multimedialnı kontejnery, kodeky a frameworky 36 / 44

Page 37: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

FFmpeg

s t a t i c i n t d b v 1 d e c o d e f r a m e ( AVCodecContext ∗avctx ,v o i d ∗outdata , i n t ∗ o u t d a t a s i z e ,const u i n t 8 t ∗buf , i n t b u f s i z e )

{// dekodu j sn imek

}

AVCodec d b v 1 d e c o d e r ={

. name = ” dbv1 ” ,

. t y p e = CODEC TYPE VIDEO ,

. i d = CODEC ID DBV1 ,

. p r i v d a t a s i z e = s i z e o f ( DBV1Context ) ,

. i n i t = d b v 1 d e c o d e i n i t ,

. c l o s e = d b v 1 d e c o d e c l o s e ,

. decode = dbv1 decode f rame ,

. long name = NULL IF CONFIG SMALL ( ” DaBler ’ s Video codec v1 ” ) ,

. c a p a b i l i t i e s = CODEC CAP DR1 ,} ;

kodek: zkompilovat modul + libavcodec + libavformat

Multimedialnı kontejnery, kodeky a frameworky 37 / 44

Page 38: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

prıklad kodeku:jadro + ovladac pro VfW + filtr pro DShow + patch na FFmpeg

VfW ovl.DS filtr

VfWDShow ffdshow

patch

FFmpeg

aplikace

coreframeworkmultiplatformní

pouze Windows

Multimedialnı kontejnery, kodeky a frameworky 38 / 44

Page 39: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

GStreamer

• svobodny multiplatformnı, 1999, zalozen na GLib, primarnepro GNOME

• zalozen na grafu filtru (pipeline), jako DirectShow

• nastroje: gst-launch, gst-inspect, gst-editor

• terminologie• pads = spoje mezi filtry• source pad se propojı do sink pad• typ dat se zjistı pomocı capabilities

• tri balıcky pluginu: The Good, the Bad and the Ugly

Multimedialnı kontejnery, kodeky a frameworky 39 / 44

Page 40: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

GStreamer

export GST_PLUGIN_PATH=./.libs

gst-launch-0.10 v4l2src device="/dev/video0" ! videoscale ! video/x-raw-yuv,

width=160 ! ffmpegcolorspace ! video/x-raw-gray ! abr2 ! ffmpegcolorspace !

videoscale ! video/x-raw-rgb, width=640 ! ximagesink

Multimedialnı kontejnery, kodeky a frameworky 40 / 44

Page 41: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

GStreamer

GUI, XML

gst_xml_write_file (GST_ELEMENT (pipeline), fopen ("xmlTest.gst", "w"));

xml = gst_xml_new ();

ret = gst_xml_parse_file(xml, "xmlTest.gst", NULL);

g_assert (ret == TRUE);

pipeline = gst_xml_get_element (xml, "pipeline");

g_assert (pipeline != NULL);

gst_element_set_state (pipeline, GST_STATE_PLAYING);

Multimedialnı kontejnery, kodeky a frameworky 41 / 44

Page 42: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

GStreamer

Capabilities (omezenı vstupu a vystupu)

gst-inspect vorbisdec

Pad Templates:

SRC template: ’src’

Availability: Always

Capabilities:

audio/x-raw-float

rate: [ 8000, 50000 ]

channels: [ 1, 2 ]

endianness: 1234

width: 32

buffer-frames: 0

SINK template: ’sink’

Availability: Always

Capabilities:

audio/x-vorbis

Multimedialnı kontejnery, kodeky a frameworky 42 / 44

Page 43: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Frameworky

GStreamer

Plugin

$ git clone git://anongit.freedesktop.org/gstreamer/gst-template.git

$ ../tools/make_element abr2

static gboolean abr2_init (GstPlugin * abr2) {

// ...

}

static GstFlowReturn gst_abr2_chain (GstPad * pad, GstBuffer * buf) {

// ...

GstStructure *structure = gst_caps_get_structure (pad->caps, 0);

gst_structure_get_int (structure, "width", &width);

gst_structure_get_int (structure, "height", &height);

// ...

img.imageData = (char*) GST_BUFFER_DATA(buf);

// ...

}

$ ./autogen.sh

$ make

$ export GST_PLUGIN_PATH=./.libs

$ gst-launch-0.10 v4l2src device="/dev/video0" ! videoscale ! video/x-raw-yuv,

width=160 ! ffmpegcolorspace ! video/x-raw-gray ! abr2 ! ffmpegcolorspace !

videoscale ! video/x-raw-rgb, width=640 ! ximagesink

kodek: zkompilovat jen plugin

Multimedialnı kontejnery, kodeky a frameworky 43 / 44

Page 44: Multimedi aln kontejnery, kodeky a frameworkyibarina/pub/frameworks.pdf · Dirac BBC DWT, I/P/B-sn mky podmno zina standardizov ana jako VC-2 kodeky Schr odinger a Dirac (dirac-research)

Shrnutı

• pojmy a techniky (typ snımku, format framebufferu)

• kontejnery (AVI, Matroska, MP4)

• formaty videa (H.264, MPEG-4 ASP, Theora)

• kodeky (DivX, Xvid, libavcodec)

• stavba kodeku

• frameworky (Video for Windows, DirectShow, FFmpeg)

Multimedialnı kontejnery, kodeky a frameworky 44 / 44