# Codec-ek

## Videó codec-ek

A codec státusz táblázat tartalmazza az összes támogatott codec-et, napi frissítéssel. Néhány MPlayerrel használható bináris codec elérhető a weboldalunk letöltési részében.

A legfontosabb dolgok:

- MPEG-1 (VCD) és MPEG-2 (DVD) videó

- natív dekódolók az összes DivX variánshoz, 3ivX-hez, M$ MPEG-4 v1, v2 és más MPEG4 variánsokhoz

- natív dekódoló Windows Media Video 7/8 (WMV1/WMV2), és Win32 DLL dekódoló a Windows Media Video 9 formátumhoz (WMV3), mindkettőt a `.wmv` fájloknál használjuk

- natív Sorenson 1 (SVQ1) dekódoló

- natív Sorenson 3 (SVQ3) dekódoló

- 3ivx v1, v2 dekódoló

- Cinepak és Intel Indeo codec (3.1,3.2,4.1,5.0)

- MJPEG, AVID, VCR2, ASV2 és más hardveres formátumok

- VIVO 1.0, 2.0, I263 és egyéb H.263(+) variánsok

- FLI/FLC

- RealVideo 1.0 & 2.0 a libavcodec-ből és RealVideo 3.0 & 4.0 codec a RealPlayer könyvtárak felhasználásával

- natív dekódoló HuffYUV-hoz

- különböző régi, egyszerű, RLE-szerű formátum

Ha van olyan Win32 codec-ed, ami nincs a listában és még nem támogatott, olvasd el a codec importálás HOGYAN-t és segítsd a munkánkat.

### FFmpeg/libavcodec

Az FFmpeg tartalmazza a libavcodec-et, a vezető nyílt forráskódú videó és audió codec függvénykönyvtárat. Képes a legtöbb multimédiás formátum dekódolására, általában az alternatíváknál gyorsabban, valamint egyre több formátumot támogat. Ez az alapértelmezett dekódoló az MPlayer által támogatott codec-ek nagy részénél. A kódolás szintén lehetséges pár formátumba, melyeket támogat is a MEncoder.

Az összes támogatott videó és audió codec-ek listájáért látogasd meg az FFmpeg weboldalát.

Az MPlayer tartalmazza a libavcodec-et. Csak futtasd a `./configure`-t és fordíts.

### Xvid

Az Xvid egy szabad szoftveres MPEG-4 ASP kompatibilis videó codec, ami tud két lépésben kódolni és teljes MPEG-4 ASP támogatás van benne, ezáltal sokkal hatékonyabb, mint a jólismert DivX codec. Nagyon jó videó minőséget kínál és a CPU optimalizációknak hála a legtöbb modern processzoron a teljesítménye is jó.

Az OpenDivX codec forkolt fejlesztésként indult annak idején. A fork akkor történt, amikor a ProjectMayo az OpenDivX-et zárt forráskódúvá tette DivX4 néven, felbosszantva így a nem-ProjectMayo-s fejlesztőket, akik az OpenDivX-en dolgoztak, s akik így elindították az Xvid-et. Így mindkét projektnek azonosak a gyökereik.

Jegyezd meg, hogy az Xvid nem szükséges az Xvid-es videók dekódolásához. A libavcodec az alapértelmezett, mivel jobb a sebessége.

#### Az Xvid telepítése

Mint a legtöbb nyílt forráskódú program, ez is két formában érhető el: hivatalos kiadás és a CVS verzió. A CVS verzió általában elég stabil a használathoz, mivel legtöbbször csak a kiadásokban benne lévő hibák javításait tartalmazza. Itt van lépésről lépésre, hogy mit kell tenned, ha az Xvid CVS-t használni akarod a MEncoderrel (szükséged lesz az autoconf 2.50-re, az automake-re és a libtool-ra):

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.     ./bootstrap.sh

5.     ./configure

   Meg kell adnod pár kapcsolót (tanulmányozd a `./configure --help` kimenetét).

6.     make && make install

7. Ha megadtad a `--enable-divxcompat` kapcsolót, másold át a `../../src/divx4.h` fájlt a `/usr/local/include/`könyvtárba.

8. Fordítsd újra az MPlayert a `--with-xvidlibdir=/eleresi/ut/libxvidcore.a` `--with-xvidincdir=/eleresi/ut/xvid.h` kapcsolókkal.

### x264

#### Mi az az x264?

Az x264 egy függvénykönyvtár a H.264 videó folyamok létrehozásához. Még nincs kész 100%-ig, de valamilyen szinten már támogatja a H.264 legtöbb minőségjavító tulajdonságát. Van számos fejlett tulajdonság a H.264 specifikációjában, aminek semmi köze a videó minőségéhez; ezek többsége még nincs implementálva az x264-ben.

##### Kódoló tulajdonságai

- CAVLC/CABAC

- Többszörös hivatkozás

- Intra: az összes makroblokk típus (16x16, 8x8 és 4x4 az összes előrejelzéssel)

- Inter P: az összes elosztás (16x16-tól le 4x4-ig)

- Inter B: elosztás 16x16-tól le 8x8-ig (beleértve a SKIP/DIRECT-et)

- Rátavezérlés: konstans kvantáló, konstans bitráta, egy vagy többlépéses ABR, opcionális VBV

- Jelenet vágás detektálása

- Adaptív B-kocka elhelyezés

- B-kocka mint referencia / önkényes képkocka sorrend

- 8x8 és 4x4 adaptív térbeli transzformáció

- Veszteségmentes mód

- Egyedi kvantálási matricák

- Több szelet párhuzamos kódolása

- Interlacing

#### Mi az a H.264?

A H.264 az ITU és az MPEG által közösen fejlesztett új digitális videó codec egyik neve. Hivatkoznak rá még olyan kellemetlen neveken is, mint "ISO/IEC 14496-10" vagy "MPEG-4 Part 10". Legtöbbször "MPEG-4 AVC" vagy csak "AVC" néven szerepel.

Bárhogy is nevezed, a H.264 megéri, hogy kipróbáld, mert általában eléri az MPEG-4 ASP minőségét 5%-30%-kal kisebb bitrátával. A valódi eredmények mind a forrás anyagtól, mind a kódolótól függnek. A H.264 előnyei nem jönnek ingyen: a H.264 folyamok dekódolásának elég meredek a CPU és memória igénye. Például egy 1733 Mhz-es Athlon-on egy DVD felbontású 1500kbps-es H.264 videó kb. 35% CPU-t használ a dekódoláshoz. Összehasonlításként egy DVD felbontású 1500kbps-es MPEG-4 ASP folyamnak 10% körüli CPU kell. Ez azt jelenti, hogy a nagy-felbontású folyamok dekódolása szinte szóba se jön a legtöbb felhasználónál. Azt is jelenti, hogy egy tisztességes DVD rip néha akadhat a 2.0 Ghz-nél lassabb processzorokon, és így tovább.

Az x264-mal a kódolási szükségletek nem sokkal rosszabbak, mint amit az MPEG-4 ASP-nél megszoktál. Például egy 1733 Mhz-es Athlon-on egy tipikus DVD kódolás 5-15 fps-sel fut.

Ennek a dokumentumnak nem célja a H.264 részletes leírása, ha érdekel egy rövid áttekintés, akkor olvasd el a The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions című írást.

#### Hogyan tudok lejátszani H.264 videókat az MPlayerrel?

Az MPlayer a libavcodec H.264 dekódolóját használja. A libavcodec már 2004. júliusa óta tartalmaz egy minimálisan használható H.264 dekódolást, de azóta több fontos változás és fejlesztés történt, mind a támogatott funkcionalitások, mind a CPU felhasználás szempontjából. Csak a biztonság kedvéért érdemes mindig a legfrissebb Subversion kódot használni.

Ha gyors és könnyen emészthető formában szeretnél információkat arról, hogy milyen új változások történtek a libavcodec H.264 dekódolójában, tartsd figyelemmel az FFmpeg Subversion fájának web-es felületét.

#### Hogyan tudok a MEncoderrel és az x264-gyel videót kódolni?

Ha van feltelepítve subversion kliensed, a legújabb x264 forrást letöltheted ezzel a paranccsal:

    svn co svn://svn.videolan.org/x264/trunk x264

Az MPlayer forrás mindig frissül, ha egy x264 API változás jelenik meg, így javasolt az MPlayer Subversion verziójának használata. Talán ez a szituáció változni fog ha egy x264 "kiadás" megjelenik. Addig az x264 nagyon instabilként kezelendő, figyelembe véve, hogy a programozási felülete is változik.

Az x264 a szabványos módon fordítható le és telepíthető:

    ./configure && make && sudo make install

Ez telepíti a libx264.a-t a /usr/local/lib könyvtárba és az x264.h-t beleteszi a /usr/local/include-ba.

Miután az x264 függvénykönyvtár és a fejléc fájl a megfelelő helyre került, az MPlayer fordítása x264 támogatással már egyszerű. csak futtasd a szabványos parancsokat:

    ./configure && make && sudo make install

A `./configure` script automatikusan detektálja, hogy eleget teszel az x264 követelményeinek.

## Audió codec-ek

### A legfontosabb audió codec-ek:

- MPEG layer 1/2/3 (MP1/2/3) audió (natív kód, MMX/SSE/3DNow! optimalizációval)

- Windows Media Audio 7 és 8 (ismert mint WMAv1 és WMAv2) (natív kód, libavcodec-kel)

- Windows Media Audio 9 (WMAv3) (DMO DLL-lel)

- AC-3 Dolby audió (natív kód, MMX/SSE/3DNow! optimalizációval)

- hangkártyán áteresztő AC-3

- AAC

- Ogg Vorbis audió codec (natív függvénykönyvtár)

- RealAudio: DNET (alacsony bitrátájú AC-3), Cook, Sipro és ATRAC3

- QuickTime: Qualcomm és QDesign audió codec-ek

- VIVO audió (g723, Vivo Siren)

- Voxware audió (DirectShow DLL használatával)

- alaw és ulaw, számos gsm, adpcm és pcm formátum és más, egyszerű, régi audió codec

- Adaptive Multi-Rate (AMR) beszéd codec

### Szoftveres AC-3 dekódolás

Ez az alapértelmezésben használt dekódoló az AC-3 audiójú fájlokhoz.

Az AC-3 dekódoló 2, 4 vagy 6 csatornás hangkimenet keverést tud csinálni. Ha 6 hangszóróra van beállítva, ez a dekódoló külön kimenetet biztosít hang vezérlő összes AC-3 csatornájának, létrehozva így a teljes "surround sound" hatást, a hwac3 codec-hez szükséges külső AC-3 dekódoló nélkül.

Használd a `-channels` kapcsolót a kimeneti csatornák számának megadásához. A `-channels 2` sztereo downmix-et produkál. Egy 4 csatornás downmixhez (bal elülső, jobb elülső, bal Surround és jobb Surround kimenet) használd a `-channels 4` kapcsolót. Ebben az esetben, bármelyik középső csatorna egyenlően lesz elkeverve az elülső csatornákhoz. A `-channels 6` kapcsoló minden AC-3 csatornát úgy ad ki, ahogy azok kódolva lettek - bal, jobb, bal Surround, jobb Surround, Center és LFE sorrendben.

A csatornák alapértelmezett száma 2.

2-nél több kimeneti csatorna használatához OSS-t kell használnod, és egy olyan hangkártyával kell rendelkezned, ami támogatja a megfelelő számú kimeneti csatornát az SNDCTL_DSP_CHANNELS ioctl-en keresztül. Például az emu10k1 2001. augusztus vagy későbbi verziói megfelelő vezérlők (a Soundblaster Live! kártyák használják, de az ALSA CVS is valószínűleg működik).

### Hardveres AC-3 dekódolás

AC-3-at támogató hangkártyára lesz szükséges, digitális kimenettel (S/PDIF). A kártya vezérlőjének megfelelően támogatnia kell az AFMT_AC3 formátumot (a C-Media támogatja). Csatlakoztasd az AC-3 dekódolódat az S/PDIF kimenethez és használd a `-ac hwac3` kapcsolót. Még kisérleti kód, de működik C-Media kártyákon és Soundblaster Live! + ALSA (de OSS-en nem) vezérlővel, valamint DXR3/Hollywood+ MPEG dekódoló kártyákon.

### libmad támogatás

A libmad egy többplatformos, csak egész (belső 24bit-es PCM) alapú MPEG audió dekódoló függvénykönyvtár. Nem kezeli jól a sérült fájlokat, és néha problémái vannak a kereséssel, de jobb a teljesítménye FPU nélküli rendszereken (mint pl. az ARM), mint az mp3lib-é.

Ha van megfelelő libmad telepítve, a `./configure` automatikusan észleli és beépíti a támogatást az MPEG audió libmad-on keresztüli dekódolásához.

### Hardveres MPEG audió codec

Ez a codec (a `-ac hwmpa` kapcsolóval választhatod ki) az MPEG audió csomagokat átadja a hardveres dekódolóknak, mint amilyenek például a jól felszerelt DVB kártyákon és DXR2 adaptereken vannak. Ne használd másik audió kimeneti eszközzel együtt (mint az OSS vagy ALSA), ami nem képes dekódolni (csak zajt fogsz hallanis).

### AAC codec

Az AAC (Advanced Audio Coding) egy audió codec, amit néha MOV és MP4 fájlokban található. Egy FAAD nevű, nyílt forráskódú dekódoló elérhető a címen. Az MPlayer tartalmazza a libfaad 2.1 béta CVS kódját, nem szükséges külön beszerezni.

Ha gcc 3.2-t használsz, ami nem tudja lefordítani a belső FAAD forrásunkat vagy valami más okból a külső függvénykönyvtárat szeretnéd használni, töltsd le a letöltési oldalról és add meg a `--enable-faad-external` kapcsolót a `./configure`-nak. Nem kell a teljes faad2 az AAC fájlok dekódolásához, a libfaad elég. Így készítsd el:

    cd faad2/
    sh bootstrap
    ./configure
    cd libfaad
    make
    make install

Binárisok nem tölthetőek le az audiocoding.com-ról, de (apt-)get-tel feltelepítheted Debian csomagokból Christian Marillat weboldaláról, vagy Mandrake/Mandriva RPM-ből a P.L.F-ről, Fedora RPM-ből pedig a Livna-ról.

### AMR codec-ek

Az Adaptive Multi-Rate beszéd codec-et harmadik generációs (3G) mobiltelefonokban használják. A referencia implementáció elérhető A 3. Generációs Együttműködés Projekt oldalán (személyes felhasználásra ingyenes). A támogatás bekapcsolásához töltsd le és telepítsd a függvénykönyvtárakat az AMR-NB és AMR-WB-hez az oldal utasításait követve. Utána forgasd újra az MPlayert!

## Win32 codec importálási HOGYAN

### VFW codec-ek

A VFW (Video for Windows) egy régi Videó API Windowshoz. A codecjei `.DLL` vagy (ritkán) `.DRV` kiterjesztésűek voltak. Ha az MPlayernek nem sikerül lejátszani az AVI fájlodat egy ilyesmi üzenettel:

    UNKNOWN video codec: HFYU (0x55594648)

Ez azt jelenti, hogy az AVI fájlod egy olyan codec-kel lett elkódolva, aminek HFYU a fourcc-je (HFYU = HuffYUV codec, DIV3 = DivX Low Motion, stb.). Most, hogy már tudod ezt, meg kell keresned, melyik DLL-t tölti be a Windows ennek a fájlnak a lejátszásához. A mi esetünkben, a `system.ini` tartalmazza ezt az információt ebben a sorban:

    VIDC.HFYU=huffyuv.dll

Szükséged lesz a `huffyuv.dll` fájlra. Figyelj rá, hogy az audio codec-ek MSACM prefix-szel vannak megadva:

    msacm.l3acm=L3codeca.acm

Ez az MP3 codec. Most már minden szükséges információval rendelkezel (fourcc, codec fájl, példa AVI), küldd be a codec támogatási kérésedet egy levélben és töltsd fel ezket a fájlokat az FTP-re: ftp://upload.mplayerhq.hu/MPlayer/incoming/<codecname>/

Windows NT/2000/XP alatt a regisztrációs adatbázisban keresd ezeket az információkat, pl. keress rá a "VIDC.HFYU"-ra. Hogy ezt hogy tudod megcsinálni, nézd meg a régi DirectShow módszert lejjebb.

### DirectShow codec-ek

A DirectShow egy újabb Videó API, ami még rosszabb, mint az elődje. A dolgok nehezebben mennek a DirectShow-val, mivel

- a `system.ini` nem tartalmazza a megfelelő információkat, azok a regisztrációs adatbázisban vannak és

- szükségünk van a codec GUID-jére.

#### Új módszer:

A Microsoft GraphEdit használatával (gyors)

1. Szedd le a GraphEdit-et a DirectX SDK-ból vagy a doom9-ről.

2. Indítsd el a `graphedit.exe`-t.

3. A menüben válaszd ki a Graph Insert Filters-t.

4. Nyisd ki a DirectShow Filters elemeit.

5. Válaszd ki a megfelelő codec nevet és nyisd ki.

6. A DisplayName bejegyzésben nézd meg a francia zárójelek között lévő karakterláncot és írd le (öt vonallal elválasztott blokk, a GUID).

7. A codec bináris a Filename bejegyzésben megadott fájl.

Ha nincs Filename és a DisplayName olyasmit tartalmaz, hogy device:dmo, akkor ez egy DMO-Codec.

#### Régi módszer:

Végy egy nagy levegőt és kezdj keresni a regisztrációs adatbázisban...

1. Indítsd el a `regedit`-et.

2. Nyomd meg a Ctrl F-et, kapcsold ki az első két kijelölő dobozd és engedélyezd a harmadikat. Írd be a codec fourcc-jét (pl. `TM20`).

3. Egy mezőt kell látnod, ami az elérési utat és a fájl nevét tartalmazza (pl. `C:\WINDOWS\SYSTEM\TM20DEC.AX`).

4. Most, hogy megvan a fájl, a GUID-t kell megkeresni. Próbáld újra a keresést, de most a codec nevére keress, ne a fourcc-re. A nevét a Media Player kiírja a fájl lejátszása közben, ha megnézed a File Properties Advanced fület. Ha mégsem, akkor így jártál. Próbáld meg kitalálni (pl. keress rá a TrueMotion-ra).

5. Ha megvan a GUID, látnod kell egy FriendlyName és egy CLSID mezőt. Írd le a 16 bájtos CLSID-t, ez a GUID, ami kell.

Ha nem sikerült a keresés, próbáld meg bekapcsolni az összes kijelölő dobozt. Ekkor kaphatsz hamis találatokat, de talán szerencséd lesz...

Most, hogy már megvan minden szükséges információ (fourcc, GUID, codec fájl, példa AVI), küldd el a codec támogatási kérelmedet levélben és töltsd fel a fájlokat az FTP-re: ftp://upload.mplayerhq.hu/MPlayer/incoming/<codecname>/

Ha saját magad szeretnél beépíteni egy codec-et, olvasd el a DOCS/tech/codecs.conf.txt-t.