## 2.2 Támogatott codec-ek

### 2.2.1 Video codec-ek

Lásd a codec státusz lapot a teljes, naponta generált listához.

A legfontosabb video codecek:

- MPEG1 (VCD) és MPEG2 (DVD) video
- natív dekóderek DivX ;-), OpenDivX, DivX4, DivX5, M$ MPEG4 v1, v2 és más MPEG4 variánsokhoz
- natív dekóder Windows Media Video 7/8-hoz (WMV1/WMV2), és Win32 dekóder a Windows Media Video 9-hoz (WMV3), amik .wmv file-okban találhatóak
- natív Sorenson 1 (SVQ1) dekóder
- natív Win32/QT Sorenson 3 (SVQ3) dekóder
- 3ivx v1, v2 dekóder
- Cinepak és Intel Indeo codecek (3.1, 3.2, 4.1, 5.0)
- MJPEG, AVID, VCR2, ASV2 és más hardware formátumok
- VIVO 1.0, 2.0, I263 és más h263+ variánsok
- FLI/FLC
- RealVideo 1.0 codec a libavcodec-ből, és RealVideo 2.0, 3.0 és 4.0 codec a RealPlayer könyvtárainak használatával
- natív HuffYUV dekóder
- egyéb régi RLE-szerű formátumok

Ha van olyan Win32 codeced, ami nincs felsorolva vagy támogatva, olvasd el a codec importálás fejezetet, amiben le van írva mit kell tenned, hogy támogassuk a codeced!

#### 2.2.1.1 DivX4/DivX5

Ez a fejezet a ProjectMayo DivX4 és DivX5 codec-eiről tartalmaz információkat. Az első hozzáférhető alfa verzió az OpenDivX alpha 47 és 48 volt. A támogatás ezekhez benne volt/van az MPlayer-ben, és alapállapotban bele is fordul. Régebben a postprocessing kódját használjuk, hogy javítsunk az MPEG1/2 filmek képminőségén. Most már saját minőségjavító kódunk van.

Ezen codec új generációja le tudja játszani a hírhedt DivX codec-kel készült filmeket is! És ez még nem minden, SOKKAL gyorsabb mint a Win32-es DivX DLL (viszont a libavcodec még ENNÉL IS gyorsabb, így eme codec használata NEM AJÁNLOTT - kivéve enkódoláshoz). A beállítást lásd lent. A codec egyetlen hátránya, hogy nem Open Source licenszu. :(

Két lehetőség van a használatára:

`-vc odivx`
  a codec használata, mint az OpenDivX új verziója. Ebben az esetben YV12 képeket produkál a saját bufferében, és az MPlayer (libvo) konverziót végez.
`-vc divx4`
  a codec csinál konverziót. Ebben az esetben használhatsz YUY2/UYVY módokat is (LASSÚ).

Az `-vc odivx` módszer általában gyorsabb, amiatt hogy a képadatokat YV12 (planar YUV 4:2:0) formátumban kezeli, így sokkal kevesebb sávszélességet igényel a buszon. Packed YUV módokhoz (YUY2, UYVY) használd a 'divx4' módszert. RGB módoknál szabadonválasztott, a sebességük megegyezik, talán a használt bpp-tol függően változhat.

Megj: ha a -vo meghajtód támogat direct renderinget, a `-vc divx4` gyorsabb lehet!

A codec az avifile project, vagy a divx.com lapjárol tölthető le. Letöltés után csomagold ki és root-ként futtasd le az `install.sh` scriptet. Ne felejtsd el hozzáadni az `/usr/local/lib` útvonalat az `/etc/ld.so.conf` file végére, majd futtasd az ldconfig-ot.

A RÉGI OpenDivX CVS verzió a következőképp tölthető le:

1. `cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login`
2. `cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore`
3. A kód két részre van osztva, decore és encore néven. Ezeket külön-külön kell leforditani. A decore rész forditása így történik:

           cd divxcore/decore/build/linux
           make
           cp libdivxdecore.so /usr/local/lib
           ln -s libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
           cp ../../src/decore.h /usr/local/include

4. Az encore részhez nincs linuxos Makefile, és az MMX optimalizált rész csak Windows-on fordul le. Viszont ezzel a Makefile-lal szépen lefordul Linux alatt is.

           cd ../../../encore/build
           mkdir linux
           cd linux
           cp path/Makefile .
           make
           cp libdivxencore.so /usr/local/lib
           ln -s libdivxencore.so /usr/local/lib/libdivxencore.so.0
           cp ../../src/encore.h /usr/local/include

Az MPlayer automatikusan detektálja a helyesen felinstallált DivX4/5-ot, a fordítás a szokásos módon történik. Ha valami folytán mégse jön össze, a `configure`-nak vannak opciói erre a célra.

#### 2.2.1.2 ffmpeg/libavcodec

Az ffmpeg tartalmaz egy nyitott forráskódú codec csomagot, amely képes H263/MJPEG/LJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/HuffYUV/SVQ1/SVQ3/ MPEG1/MPEG2/VCR1/VCR2/ASV1/ASV2/CLJR codec-ekkel enkódolt videok, és WMA-val (Windows Media Audio) kódolt audiok lejátszására. Továbbá nemcsakhogy néhányukkal még enkódolni is lehet, de ezek sokkal szebbek és gyorsabbak mint a Win32-es codec-ek, vagy a DivX.com-féle DivX4 könyvtár.

A leghasznosabb codecek az MPEG4 variánsok: DivX 3, DivX 4, DivX 5, Windows Media Video 7/8 (WMV1/WMV2). A WMA dekóder is igen figyelemreméltó.

A legutóbbi, elismerést érdemlő codec a Sorenson 3 (SVQ3) dekóder. Ez a világon a legelső, teljesen nyílt forráskódú implementáció. Ráadásul sokkal gyorsabb mint az eredeti. Mindenképpen ezt használd, ne a bináris codec-et!

Ha egy MPlayer release-t használsz nem kell semmit tenned, a libavcodec már a csomagban van, csak fordítsd le az MPlayer-t ahogy szoktad. Ha CVS-ből szerezted az MPlayer-t, le kell töltened az ffmpeg CVS fáját is, mivel az ffmpeg release-k nem kompatibilisek a legújabb MPlayer-rel. A kiadandó parancsok:

1. `cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg login`
2. `cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg`
3. Mozgasd át a `libavcodec` könyvtárat az FFmpeg forrásból az MPlayer CVS fába. Így:

   `main/libavcodec`

   A symlinkelés nem elég, át kell másolni/mozgatni.
4. Fordíts. A configure fordítás előtt kiírja a hibákat, ha vannak.

Megj.: bár az MPlayer CVS tartalmaz egy libavcodec könyvtárat, NEM tartalmazza a libavcodec-et!

Ezzel és egy Matrox G400-zal még a legnagyobb felbontású DivX filmeket is meg lehet nézni képkockavesztés nélkül, egy régi K6/2 500-ason.

#### 2.2.1.3 XAnim codec-ek

Előszó:
A bináris XAnim codec-ek mellé van csomagolva egy-egy kis szöveges file ami legális licensznek vallja magát, és többek között tiltja a codec-ek XAnim-on kívüli bármilyen más programmal történő felhasználását. Szerencsére az XAnim szerzője úgy tűnik nem törődik a codec-eivel.

Nos igen, az MPlayer tudja használni az XAnim codec-eit dekódolásra. Nagyon könnyű bekapcsolni őket:

1. töltsd le a használni kívánt codec-eket az XAnim honlapjáról. A 3ivx codec-et nem találod meg ott, így azt töltsd le a 3ivx honlapjáról.
2. a codec csomag letölthető az MPlayer codec-ek lapjáról.
3. a `--with-xanimlibdir` opcióval mondd meg a configure-nak hogy hol vannak az xanim codec-ek. Magától az `/usr/local/lib/xanim/mods, /usr/lib/xanim/mods, /usr/lib/xanim` könyvtárban keresi őket. Egy másik megoldás ha a XANIM_MOD_DIR környezeti változót beállítod arra a könyvtárra ahol az XAnime codec-ek találhatók.
4. nevezd át a codeceket, hogy így nézzenek ki: `vid_cvid.xa, vid_h263.xa, vid_iv50.xa`

Ezek az `xanim` video codec családba tartoznak, így a `-vfm 10` opcióval megadhatod az MPlayer-nek, hogy ezeket használja, ha lehetséges.

Az eddig tesztelt codec-ek a következők: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, h263.

#### 2.2.1.4 VIVO video

Az MPlayer képes lejátszani Vivo (1.0 és 2.0) file-okat. Az 1.0-ás fileokra a legmegfelelőbb az FFmpeg-beli H263 codec, amit a `-vc ffh263` opcióval lehet használni (alapértelmezett). A 2.0-ás fileokhoz szedd le az `ivvideo.dll` Win32 DLL file-t innen), és installáld a `/usr/lib/codecs` könyvtárba, vagy ahol tárolod a Win32-es codeceket.

#### 2.2.1.5 MPEG 1/2 video

Az MPEG1 és MPEG2 a natív libmpeg2-vel dekódoljuk. A forrása benne van az MPlayer-ben, és természetesen több platformon is használható. A hibás MPEG1/2 fileokat úgy játszuk le hogy sig11 után gyorsan újrainicializáljuk a libmpeg2-őt és folytatjuk a lejátszást pontosan onnan ahol a hiba volt. Nincs sebességvesztés.

#### 2.2.1.6 MS Video1

Ez egy nagyon régi és nagyon rossz codec a Microsoft-tól. Régebben ennek dekódolásához az `msvidc32.dll` nevű Win32-es codecet használtuk, de mostmár van nyitott forrású implementációnk, Mike Melanson-tól.

#### 2.2.1.7 Cinepak CVID

Az MPlayer a saját nyílt forrású, többplatformos Cinepak dekóderét (Dr. Tim Ferguson munkája) használja Cinepak filmekhez. Ez a dekóder támogatja a YUV kimenetet, így a hardveres gyorsítást is ha az adott video kimeneti meghajtó lehetővé teszi azt.

#### 2.2.1.8 RealVideo

Az MPlayer a RealVideo összes verziójának dekódolását támogatja:

- RealVideo 1.0, 2.0 (fourcc RV10, RV20) - en/dekódolás libavcodec-kel
- RealVideo 3.0, 4.0 (fourcc RV30, RV40) - dekódolás RealPlayer könyvtárakkal

Nagyon ajánlott a RealPlayer8 vagy RealONE letöltése, mert az MPlayer képes ezek könyvtárainak használatával dekódolni a RealVideo 2.0 - 4.0 videókat. Az MPlayer configure script detektálja a felinstallált RealPlayert. Ha nem sikerül, mondd meg a configure-nak a helyet a `--with-reallibdir` opcióval.

A codec-ek letölthetők még a http://www.mplayerhq.hu/MPlayer/releases/codecs/ címről is. A csomag letöltése után tömörítsd ki a $PREFIX/lib/codecs könyvtárba, vagy add meg a kívánt útvonalat a `--with-reallibdir` opcióval.

Megj.: a RealPlayer könyvtárak jelenleg csak Linux, FreeBSD, NetBSD és Cygwin rendszereken működnek, x86, Alpha, és PowerPC platformokon (csak a Linux/Alpha és Linux/PowerPC van tesztelve).

#### 2.2.1.9 XViD

Az XViD az OpenDivX kód továbbfejlesztése. 2001 áprilisában az OpenDivX-et fejlesztő ProjectMayo úgy döntött hogy zárt forrásúvá teszi a codec-et, és DivX4 néven készíti tovább. A nekik "bedolgozók" erre a lépésre úgy döntöttek, hogy majd ők folytatják (nyitottan) az OpenDivX fejlesztését. Ebből lett az XViD.

Előnyei:

- nyitott forrás
- az API-ja kompatibilis a DivX4-gyel így könnyen irható hozzá támogatás
- 2 menetes enkódolás
- jó minőség, ezzel egyidejűleg a DivX4-nél magasabb sebesség (fordításnál a gépedre optimalizálhatod)

Hátrányai:

- jelenleg nem minden DivX/DivX4 file-t dekódol helyesen (de kit érdekel. A libavcodec kenterbe ver mindent.)
- fejlesztés alatt

Az XViD jelenleg csak CVS-ből érhető el. Ezek a letöltési és installálási utasítások:

1. `cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login`
2. `cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore`
3. `cd xvidcore/build/generic`
4. Szerkeszd át a `Makefile.linux`-ot a gépednek megfelelően
5. `make -f Makefile.linux`
6. fogod a DivX4linux csomagot és az `encore2.h` illetve `decore.h` file-okat átmásolod belőlük a `/usr/local/include/` könyvtárba
7. fordítsd újra az MPlayer-t a következő opcióval: `--with-xvidcore=/útvonal/libcore.a`

#### 2.2.1.10 Sorenson

A Sorenson egy, a Sorenson Media által kifejlesztett, és az Apple által licenszelt video codec. Jelenleg mindkét verzióját (SVQ1, SVQ3) képesek vagyok dekódolni, az alant felsorolt dekóderekkel:

- Sorenson 1 (fourcc SVQ1) - dekódolás natív codec-kel
- Sorenson 3 (fourcc SVQ3) - dekódolás natív codec-kel (libavcodec)

#### QuickTime támogatás belefordítása az MPlayer-be

Megjegyzés: jelenleg csak 32bites Intel platformokon használható.

1. töltsd le az MPlayer-t CVS-ből
2. töltsd le a QuickTime DLL csomagot a http://www.mplayerhq.hu/MPlayer/releases/codecs/ címről
3. tömörítsd ki a QuickTime DLL csomagot a Win32 codec-eket tartalmazó könyvtáradba (alapállapotban `/usr/lib/codecs`)
4. fordítsd le az MPlayer-t

### 2.2.2 Audio codec-ek

A legfontosabb audio codecek:

- MPEG layer 2 (MP2), és layer 3 (MP3) audio (nativ kód, MMX/SSE/3DNow! optimalizációval)
- MPEG layer 1 audio (natív codec, libavcodec-kel)
- Windows Media Audio v1, v2 (natív codec, libavcodec-kel)
- Windows Media Audio v9 (WMAv3) (DMO DLL használatával)
- AC3 dolby audio (natív kód, MMX/SSE/3DNow! optimalizációval)
- AC3 továbbítás a hangkártya digitális kimenetén
- Ogg Vorbis audio codec (natív)
- RealAudio: DNET (alacsony bitrátájú AC3), Cook, Sipro, Atrac
- QuickTime: Qualcomm és QDesign audio codec-ek
- VIVO audio (g723, Vivo Siren)
- VoxWare audio (DirectShow-os DLL használatával)
- alaw, msgsm, pcm és más régi formátumok

#### 2.2.2.1 Szoftveres AC3 dekódolás

Ez az alapértelmezett AC3 audio dekóder.

Az AC3 dekóder 2, 4 vagy 6 hangszórós mixelési képességgel van ellátva. Ha 6 csatornára van állítva, a dekóder külön-külön adja a hangkártyának a csatornákat, ami teljes térhatást eredményez, külső - hwac3 codec-kel használható - AC3 dekóder nélkül.

A `-channels` opcióval adható meg a kimeneti csatornák száma. A `-channels 2` stereo mixet eredményez. 4 csatornás mixhez (bal első, jobb első, bal térhatás és jobb térhatás) a `-channels 4` opció használható. Ebben az esetben minden "középső" csatorna egyenlő mértékben kerül az elülső csatornákra. Végül, a `-channels 6` opció ugyanúgy adja ki a csatornákat, ahogy azokat enkódolták - sorrendben: bal, jobb, bal térhatás, jobb térhatás, közép és LFE.

Az alapértelmezett kimenet a 2 csatornás.

Több mint két csatorna használatához OSS meghajtó kell, és egy olyan hangkártya (illetve meghajtó), ami támogatja is az adott mennyiségű csatornát a SNDCTL_DSP_CHANNELS ioctl-en keresztül. Például a 2001 augusztusinál újabb emu10k1 meghajtó (SB Live kártyákhoz) megfelelő (úgy hallottam hogy a legújabb ALSA CVS-ben is van hozzá támogatás).

#### 2.2.2.2 Hardveres AC3 dekódolás

Kell egy AC3 képes hangkártya, digitális kimenettel (SP/DIF). A kártya meghajtójának megfelelően támogatnia kell az AFMT_AC3 formátumot (ilyenek például az SB Live! és a C-Media kártyák). Kapcsold rá a hardveres AC3 dekódered az SP/DIF kimenetre, és használd az -ac hwac3 opciót. Jelenleg a C-Media, SB Live! (csak ALSA-val), és DXR3/Hollywood+ kártyákkal működik!

#### 2.2.2.3 libmad támogatás

A libmad egy többplatformos MPEG audio dekóder. Ha nem tudod miért lenne szükséged rá, nincs szükséged rá.

Nem kezeli jól a hibás file-okat, és a tekeréssel is problémái vannak.

A támogatást az `--enable-mad` configure opcióval lehet bekapcsolni.

#### 2.2.2.4. VIVO audio

A VIVO file-okban használt audio codec milyensége attól függ hogy VIVO/1.0 avagy VIVO/2.0 fileról beszélünk. Az 1.0-ás fileokban g.723 audio van, a 2.0-ásokban pedig Vivo Siren. Mindkettő támogatott. A g.723/Siren codec innen letölthető.

#### 2.2.2.5. RealAudio

Az MPlayer majdnem az összes RealAudio codec-et támogatja:

- RealAudio DNET - dekódolás liba52-vel
- RealAudio Cook, Sipro, ATRAC3 - dekódolás RealPlayer könyvtárakkal

Az installálási procedúra leírásához lásd a RealVideo codec fejezetet.

#### 2.2.2.6. QDesign

QDesign audioval (fourcc-k: QDMC, QDM2) a MOV/QT file-okat látják el. Ezen codec mindkét verziója dekódolható Linux a QuickTime könyvtár használatával. Ennek installálási útmutatója a Sorenson video codec fejezetben található.

#### 2.2.2.7. Qualcomm

A Qualcomm audio stream-ek (fourcc: Qclp) MOV/QT file-okban találhatóak. A dekódolásuk a QuickTime könyvtárakkal lehetséges. Ezek installálási leírása a Sorenson video codec fejezetben található.

#### 2.2.2.8. AAC codec

Az AAC (Advanced Audio Coding) egy MOV illetve MP4 file-okban előforduló audio codec. A FAAD nevű nyílt forráskódú dekóder az AudioCoding.com címről tölthető le. A második generációs FAAD2 codec a letöltési lapon található. Sajnos a FAAD2 1.1 nem fordul le Linux alatt, így a CVS verziót kell használni. Íme ennek útmutatója:

1. cvs -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac login
2. cvs -z3 -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac co faad2
3. cd faad2/
4. chmod +x bootstrap
5. ./bootstrap
6. ./configure
7. make
8. make install

Az audiocoding.com címen nem fogsz találni binárisokat. Debian csomagok Christian Marillat honlapján, Mandrake RPM-ek pedig a P.L.F lapján találhatók.

### 2.2.3 Hogyan használj ismeretlen Win32 codec-et

#### 2.2.3.1 VfW

VfW (Video for Windows) a régi Video API Windowshoz. A codec-jei .DLL vagy (ritkábban) .DRV kiterjesztést kapnak. Ha az MPlayer ezt írja ki az AVI-dra:

`UNKNOWN video codec: HFYU (0x55594648)`

Ez azt jelenti, hogy az AVI-d egy olyan codec-kel van tömörítve, aminek a fourcc-je HFYU (HFYU = HuffYUV codec, DIV3 = DivX Low Motion, stb...). Most, hogy ezt már tudod, azt kell kitalálni, hogy a Windows melyik DLL-lel játssza le a file-t. Esetünkben a system.ini ezt tartalmazza (többek között):

`VIDC.HFYU=huffyuv.dll`

Azaz a huffyuv.dll file-ra lesz szükség. Észrevehető, hogy az audio codecek az MSACM előtagot használják:

`msacm.l3acm=L3codeca.acm`

Ez az MP3 codec. Most, hogy tudod az összes szükséges infót (fourcc, codec file, minta AVI), küldd el kérésed levélben, és töltsd fel eme file-okat FTP-re:

`ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecnév]/`

Megj.: Windows NT/2000/XP-n keress a registry-ben, példánkban erre: "VIDC.HFYU". Hogy megtudd ez hogy lehetséges, olvasd el a régi fajta DirectShow keresést itt lent.

#### 2.2.3.2 DirectShow

DirectShow az újabb Video API, ami történetesen sokkal rosszabb, mint az elődje. Nehezebb dolgod lesz a DirectShow-val, mivel

- a system.ini nem tartalmazza a szükséges információt, ehelyett az egész a registryben van :(
- szükség lesz a codec GUID-jára is.

Új módszer: a Microsoft GraphEdit használata (gyors)

1. Töltsd le a GraphEdit-et vagy a DirectX SDK-ből, vagy a Doom9-ről
2. Indítsd el a `graphedit.exe-t`
3. A menűből válaszd ki a Graph -> Insert Filters menűpontot
4. Bontsd ki a `DirectShow Filters` ágat
5. Válaszd ki a keresett codec-et és bontsd ki
6. A `DisplayName` bejegyzésnél nézd meg mi a szöveg a szárnyas zárójelek között a backslash után, és írd le (öt darab, pontokkal elválasztott szám, a GUID)
7. A codec file az, amit a `Filename` mező jelez.

Megj.: ha nincs `Filename` mező, és a `DisplayName` valami olyat tartalmaz, hogy `device:dmo`, akkor az a codec egy DMO codec.

Régi módszer: kezdjük átnézni azt az istenverte registry-t...

1. Indítsd el a 'regedit'-et
2. ctrl-f, kapcsold ki az első két checkbox-ot, és be a harmadikat. Írd be a codec fourcc-jét. (pl.: TM20)
3. jó esetben előjön a path és filenév (pl.: C:\WINDOWS\SYSTEM\TM20DEC.AX)
4. most hogy ez megvolt, szükség lesz a GUID-ra. Keress újra, de most a codec nevére, ne a fourcc-re. A név megnézhető pl. a Media Playerrel, a File/Properties/Advanced menüpont alatt. Ha nem, ígyjárás ;) Találd ki. (itt: TrueMotion)
5. ha megvan, lesz ott egy FriendlyName, és egy CLSID mező. Írd le azt a 16 byte-nyi CLSID-et, ez a GUID.

MEGJ.: ha semmiképp nem találod, próbáld meg úgy, hogy bekapcsolod az összes checkboxot... Lesz egy rakás hamis találat, de talán meglesz az igazi is...

MEGJ.: dobd ki azt az M$ szart.

Most, hogy tudod az összes szükséges infót (fourcc, GUID, codec file, minta AVI), küldd el kérésed levélben, és töltsd fel eme file-okat FTP-re: ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecnév]/