FLAC

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 26. august 2021; checks kræver 5 redigeringer .
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]

Formatdetaljer

Lydstrøm

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.

Metadata

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.

Lyddata

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.

Blokering

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.

Cross-channel decorrelation

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.

Modellering

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.

Resterende kodning

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.

Indramning

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.

Diverse

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] .

Noter

  1. FLAC 1.4.2 udgivet
  2. The flac Open Source-projekt på Open Hub: Languages-side - 2006.
  3. https://xiph.org/flac/format.html
  4. FLAC 1.0 (20. juli 2001)
  5. Links . FLAC. Hentet 6. oktober 2015. Arkiveret fra originalen 28. januar 2017.
  6. FLAC slutter sig til Xiph!  (engelsk)  (utilgængeligt link) . Hentet 30. oktober 2008. Arkiveret fra originalen 30. juni 2007.

Links