Gratis Lossless Audio Codec | |
---|---|
Type | lyd-codec , lydfilformat |
Udvikler | Josh Coalson, Xiph.Org Foundation |
Skrevet i | C [2] |
Operativ system | på tværs af platforme |
Første udgave | 20. juli 2001 |
nyeste version |
|
Læsbare filformater | Gratis Lossless Audio Codec |
Genererede filformater | Gratis Lossless Audio Codec |
Licens | GNU GPL ; BSD (dele) |
Internet side | xiph.org/flac |
Mediefiler på Wikimedia Commons |
FLAC | |
---|---|
Udvidelse | .flac |
MIME -type | audio/xflac |
Udvikler | Xiph.Org [3] |
offentliggjort | 20. juli 2001 [4] |
Formattype | lyd |
Standard(er) | Specifikation |
Internet side | xiph.org/flac |
Mediefiler på Wikimedia Commons |
FLAC ( engelsk Free Lossless Audio Codec ) er et gratis codec designet til at komprimere lyddata uden tab .
I modsætning til lyd-codecs, der giver komprimering med tab ( MP3 , AAC , WMA , Ogg Vorbis , Opus ), fjerner FLAC, ligesom enhver anden tabsfri codec, ingen information fra lydstrømmen og er velegnet både til at lytte til musik på lyd af høj kvalitet udstyr og og til arkivering af en lydsamling.
I dag understøttes FLAC-formatet af mange lydapplikationer, bærbare lydafspillere og specialiserede lydsystemer og har en bred vifte af hardwareimplementeringer [5]
De vigtigste dele af flowet er:
De første fire bytes identificerer FLAC-strømmen. De metadata , der følger efter dem, indeholder information om streamen efterfulgt af de komprimerede lyddata.
Fra 03/10/2010 er følgende bloktyper defineret i libflac-1.2.1: StreamInfo, Padding, Application, SeekTable, VorbisComment, CueSheet, Picture, Unknown. Metadatablokke kan være af enhver størrelse, det er ikke svært at tilføje nye blokke. Dekoderen springer ukendte blokke af metadata over.
STREAMINFO-blokken er påkrævet. Den indeholder data, der gør det muligt for dekoderen at justere buffere , sample rate , antal kanaler, antal bits pr. sample og antal samples. MD5 -signaturen for de ukomprimerede lyddata skrives også til blokken . Dette er nyttigt til at kontrollere hele streamen, efter at den er blevet transmitteret.
Andre blokke er designet til at reservere plads, gemme tabeller over søgepunkter, tags , en liste over lyd-cd-layouts samt data til specifikke applikationer. Muligheder for at tilføje PADDING-blokke eller søgepunkter er angivet nedenfor. FLAC behøver ikke opslagspunkter, men de kan i høj grad øge adgangshastigheden og kan også bruges til tagging i lydeditorer.
En nøjagtig beskrivelse af byggeklodsstrukturerne kan findes i format.h-filen i libflac-biblioteket, tilgængelig fra formatwebstedet.
Metadataene efterfølges af de komprimerede lyddata. Metadata og lyddata er ikke sammenflettet. Som de fleste codecs opdeler FLAC inputstrømmen i blokke og koder dem uafhængigt. Blokken er indrammet og tilføjet til strømmen. Den grundlæggende encoder bruger blokke af konstant størrelse for hele strømmen, men formatet tillader blokke af forskellig længde i strømmen.
Blokstørrelsen er en meget vigtig parameter for kodning. Hvis den er for lille, vil der være for mange frame headers i strømmen, hvilket vil reducere komprimeringsniveauet. Hvis størrelsen er stor, vil encoderen ikke være i stand til at vælge en effektiv kompressionsmodel. Forståelse af modelleringsprocessen hjælper med at øge komprimeringsniveauet for nogle typer input. Typisk, når du bruger lineær forudsigelse på lyddata med en samplingshastighed på 44,1 kHz, ligger den optimale blokstørrelse i området 2-6 tusinde prøver.
Hvis stereolyddata er inputtet, kan de gå gennem inter-kanal dekorrelationsstadiet. Højre og venstre kanal konverteres til gennemsnit og forskel i henhold til formlerne: gennemsnit = (venstre + højre) / 2, forskel = venstre - højre. I modsætning til joint stereo , der bruges i tabsgivende indkodere, resulterer denne proces ikke i tab i tabsfri kodning. For lyd-cd-data resulterer dette normalt i en betydelig stigning i komprimeringsniveauet.
På det næste trin forsøger indkoderen at tilnærme signalet med en sådan funktion, at resultatet opnået efter at trække det fra originalen (kaldet forskellen, residual, fejl) kan kodes med et minimum antal bits. Funktionsparametre bør også registreres, så de bør ikke fylde meget. FLAC bruger to metoder til at generere tilnærmelser:
For det første er forudsigelse af konstant polynomium (-l 0) betydeligt hurtigere, men mindre nøjagtig end LPC. Jo højere LPC-rækkefølgen er, jo langsommere, men bedre bliver modellen. Men efterhånden som ordren stiger, vil gevinsten blive mindre og mindre væsentlig. På et tidspunkt (normalt omkring 9) begynder indkoderens procedure til at bestemme den bedste rækkefølge at mislykkes, og størrelsen af de modtagne rammer stiger. For at overvinde dette kan udtømmende søgning bruges, hvilket vil føre til en betydelig stigning i indkodningstiden.
For det andet kan parametrene for konstante prædiktorer beskrives med tre bit, mens parametrene for LPC-modellen afhænger af antallet af bits pr. sample og LPC-rækkefølgen. Det betyder, at størrelsen på rammehovedet afhænger af den valgte metode og rækkefølge og kan påvirke den optimale blokstørrelse.
Når modellen er monteret, trækker indkoderen tilnærmelsen fra originalen for at opnå et resterende (fejlagtigt) signal, som derefter kodes uden tab. Dette bruger det faktum, at forskelssignalet normalt har en Laplace-fordeling, og der er et sæt entropikoder, kaldet Rice-koder, som giver dig mulighed for effektivt og hurtigt at kode disse signaler uden at bruge en ordbog.
Riskodning består i at finde en enkelt parameter svarende til fordelingen af signalet og derefter bruge den til at sammensætte koder. Når fordelingen ændrer sig, ændres den optimale parameter også, så der er en metode, der giver dig mulighed for at genberegne den, hvis det er nødvendigt. Resten kan opdeles i sammenhænge eller sektioner, hver med sin egen Rice-parameter. FLAC giver dig mulighed for at specificere, hvordan opdeling skal udføres. Resten kan opdeles i 2n sektioner.
En lydramme indledes med en header, der begynder med en synkroniseringskode og indeholder den mindste information, som en dekoder behøver for at afspille streamen. Blok- eller prøvenummeret og otte-bit kontrolsummen af selve headeren er også skrevet her. Synkroniseringskoden, rammeoverskriften CRC og blok-/prøvenummeret giver mulighed for retiming og søgning, selv i fravær af søgepunkter. I slutningen af rammen skrives dens 16-bit kontrolsum. Hvis den underliggende dekoder registrerer en fejl, vil der blive genereret en tavshedsblok.
For at understøtte grundlæggende metadatatyper er kernedekoderen i stand til at springe ID3v1- og ID3v2-tags over , så de kan tilføjes frit. ID3v2-tags skal placeres før "fLaC"-markøren, og ID3v1-tags skal placeres i slutningen af filen.
Der er modifikationer af FLAC-encoderen: Forbedret FLAC-encoder , Flake og FLACCL.
Den 29. januar 2003 annoncerede Xiphophorus (nu kaldet Xiph.Org Foundation) optagelsen af FLAC-formatet i deres produktlinje: Ogg Vorbis , Theora og Speex [6] .
Xiph.Org | |
---|---|
Projekt Ogg | |
Andre projekter |
|
se også |
|
Lydkomprimering | |
---|---|
Codecs | |
Tale/stemme | |
Tabsfri |
|
Standarder og formater | |
mediebeholdere | |
---|---|
Video/lyd | |
Lyd | |
musik |
|
Raster | |
Vektor | |
Kompleks |