FLAC

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. augusztus 26-án felülvizsgált verziótól ; az ellenőrzések 5 szerkesztést igényelnek .
Ingyenes veszteségmentes audiokodek
Típusú audio kodek , hangfájl formátum
Fejlesztő Josh Coalson, a Xiph.Org Alapítvány
Beírva C [2]
Operációs rendszer platformközi
Első kiadás 2001. július 20
legújabb verzió
Olvasható fájlformátumok Ingyenes veszteségmentes audiokodek
Generált fájlformátumok Ingyenes veszteségmentes audiokodek
Engedély GNU GPL ; BSD (alkatrészek)
Weboldal xiph.org/flac
 Médiafájlok a Wikimedia Commons oldalon
FLAC
Kiterjesztés .flac
MIME típusú audio/xflac
Fejlesztő Xiph.Org [3]
közzétett 2001. július 20. [4]
Formátum típusa hang-
Szabvány(ok) Leírás
Weboldal xiph.org/flac
 Médiafájlok a Wikimedia Commons oldalon

A FLAC ( angolul  Free Lossless Audio Codec ) egy ingyenes kodek , amelyet az audio adatok veszteség nélküli tömörítésére terveztek .

Ellentétben a veszteséges tömörítést biztosító audiokodekekkel ( MP3 , AAC , WMA , Ogg Vorbis , Opus ), a FLAC, mint bármely más veszteségmentes kodek, nem távolít el semmilyen információt a hangfolyamból, és kiváló minőségű zenehallgatásra is alkalmas. berendezésekhez és hanggyűjtemény archiválásához.

Manapság a FLAC formátumot számos audioalkalmazás, hordozható audiolejátszó és speciális audiorendszer támogatja, és sokféle hardvermegvalósítással rendelkezik [5]

Formátum részletei

Hangfolyam

Az áramlás fő részei a következők:

Az első négy bájt a FLAC adatfolyamot azonosítja. Az őket követő metaadatok a folyamról tartalmaznak információkat, majd a tömörített hangadatokat.

Metaadatok

2010. 10. 03-tól a következő blokktípusok vannak meghatározva a libflac-1.2.1-ben: StreamInfo, Padding, Application, SeekTable, VorbisComment, CueSheet, Picture, Unknown. A metaadatblokkok bármilyen méretűek lehetnek, nem nehéz új blokkokat hozzáadni. A dekóder kihagyja a metaadat ismeretlen blokkjait.

A STREAMINFO blokk szükséges. Olyan adatokat tartalmaz, amelyek lehetővé teszik a dekódoló számára a pufferek , a mintavételezési sebesség , a csatornák számának, a mintánkénti bitek és a minták számának beállítását. A tömörítetlen hangadatok MD5 aláírása is a blokkba kerül . Ez hasznos a teljes adatfolyam ellenőrzéséhez az átvitel után.

Más blokkok helyfoglalásra, keresési pontok táblázatainak, címkék , audio CD-elrendezések listájának, valamint konkrét alkalmazásokhoz szükséges adatok tárolására szolgálnak. Az alábbiakban felsoroljuk a PADDING blokkok vagy keresési pontok hozzáadásának lehetőségeit. A FLAC-nak nincs szüksége keresési pontokra, de jelentősen megnövelhetik a hozzáférési sebességet, és hangszerkesztőkben is használhatók címkézésre.

Az építőelem-struktúrák pontos leírása a libflac könyvtár format.h fájljában található, amely a format oldalról érhető el.

Hangadatok

A metaadatokat a tömörített hangadatok követik. A metaadatok és a hangadatok nincsenek átlapolva. A legtöbb kodekhez hasonlóan a FLAC is blokkokra osztja a bemeneti adatfolyamot, és egymástól függetlenül kódolja azokat. A blokk keretbe kerül, és hozzáadódik az adatfolyamhoz. Az alap kódoló állandó méretű blokkokat használ a teljes adatfolyamhoz, de a formátum lehetővé teszi különböző hosszúságú blokkok használatát az adatfolyamban.

Blokkolás

A blokk mérete nagyon fontos paraméter a kódolásnál. Ha túl kicsi, akkor túl sok keretfejléc lesz az adatfolyamban, ami csökkenti a tömörítési szintet. Ha a méret nagy, akkor a kódoló nem tud hatékony tömörítési modellt választani. A modellezési folyamat megértése segít bizonyos típusú bemenetek tömörítési szintjének növelésében. Jellemzően, ha 44,1 kHz-es mintavételezési frekvenciájú audioadatokon lineáris előrejelzést használunk, az optimális blokkméret 2-6 ezer minta tartományban van.

Csatornák közötti dekoráció

Ha sztereó audio adatot adnak be, akkor az átmehet a csatornák közötti dekorációs szakaszon. A jobb és bal csatornákat a következő képletek alapján konvertáljuk át átlagra és különbségre: átlag = (bal + jobb) / 2, különbség = bal - jobb. A veszteséges kódolókban használt közös sztereóval ellentétben ez a folyamat nem okoz veszteséget a veszteségmentes kódolásban. Audio CD-adatok esetén ez általában a tömörítési szint jelentős növekedését eredményezi.

Modellezés

A következő lépésben a kódoló egy olyan funkcióval próbálja közelíteni a jelet, hogy az eredetiből való kivonás után kapott eredményt (különbségnek, maradéknak, hibának nevezzük) minimális bitszámmal kódolható legyen. A funkció paramétereit is rögzíteni kell, így nem foglalhatnak sok helyet. A FLAC két módszert használ a közelítések generálására:

Először is, a konstans polinom előrejelzés (-l 0) lényegesen gyorsabb, de kevésbé pontos, mint az LPC. Minél magasabb az LPC sorrend, annál lassabb, de jobb lesz a modell. A sorrend növekedésével azonban a nyereség egyre kevésbé lesz jelentős. Egy bizonyos ponton (általában 9 körül) a kódoló eljárása a legjobb sorrend meghatározására meghiúsul, és a fogadott keretek mérete megnő. Ennek kiküszöbölésére kimerítő keresés használható, ami jelentősen megnöveli a kódolási időt.

Másodszor, a konstans prediktorok paraméterei három bittel írhatók le, míg az LPC modell paraméterei a mintánkénti bitek számától és az LPC sorrendtől függenek. Ez azt jelenti, hogy a keretfejléc mérete a választott módszertől és sorrendtől függ, és befolyásolhatja az optimális blokkméretet.

Maradék kódolás

A modell beillesztésekor a kódoló kivonja a közelítést az eredetiből, hogy maradék (hibás) jelet kapjon, amelyet azután veszteségmentesen kódol. Ez azt a tényt használja fel, hogy a különbségjel általában Laplace-eloszlású , és van egy sor entrópiakód, úgynevezett Rice-kód, amely lehetővé teszi ezeknek a jeleknek a hatékony és gyors kódolását szótár használata nélkül.

A rizskódolás abból áll, hogy egyetlen paramétert keresünk, amely megfelel a jel eloszlásának, majd ezt használja a kódok összeállításához. Az eloszlás megváltozásakor az optimális paraméter is megváltozik, így van egy módszer, amely lehetővé teszi, hogy szükség esetén újraszámítsuk. A maradék kontextusokra vagy szakaszokra bontható, mindegyik saját Rice paraméterrel. A FLAC lehetővé teszi a felosztás módjának megadását. A többi 2n részre osztható.

Keretezés

Az audio keretet egy fejléc előzi meg, amely szinkronkóddal kezdődik, és tartalmazza a dekódernek az adatfolyam lejátszásához szükséges minimális információt. Ide írjuk a blokk- vagy mintaszámot és magának a fejlécnek a nyolcbites ellenőrző összegét is. A szinkronkód, a keretfejléc CRC és a blokk/mintaszám lehetővé teszi az újraindítást és a keresést még keresési pontok hiányában is. A keret végére a tizenhat bites ellenőrző összeg kerül felírásra. Ha a mögöttes dekóder hibát észlel, akkor némítási blokk jön létre.

Vegyes

Az alapvető metaadattípusok támogatása érdekében a központi dekóder képes kihagyni az ID3v1 és ID3v2 címkéket , így szabadon hozzáadhatók. Az ID3v2 címkéket az "fLaC" marker elé, az ID3v1 címkéket pedig a fájl végére kell helyezni.

A FLAC kódolónak vannak módosításai: továbbfejlesztett FLAC kódoló , Flake és FLACCL.

2003. január 29-én a Xiphophorus (jelenleg Xiph.Org Foundation néven) bejelentette a FLAC formátum felvételét a termékcsaládjába: Ogg Vorbis , Theora és Speex [6] .

Jegyzetek

  1. Megjelent a FLAC 1.4.2
  2. A flac nyílt forráskódú projekt az Open Hubon: Nyelvek oldala - 2006.
  3. https://xiph.org/flac/format.html
  4. FLAC 1.0 (2001. július 20.)
  5. Linkek . FLAC. Letöltve: 2015. október 6. Az eredetiből archiválva : 2017. január 28..
  6. A FLAC csatlakozik a Xiph-hez!  (angol)  (elérhetetlen link) . Letöltve: 2008. október 30. Az eredetiből archiválva : 2007. június 30.

Linkek