FLAC és l'acrònim de Free Lossless Audio Codec (en català còdec d'àudio Lliure i Sense Pèrdues), que és com es coneix aquest format contenidor d'informació d'àudio, i també el còdec emprat per a codificar aquesta informació. El fet de ser un còdec sense pèrdues ve donat, ja que la informació sonora que s'emmagatzema dins d'aquest format és comprimida de tal manera que un cop decodificada no afecta per res a la qualitat sonora de l'àudio original. El desenvolupament i creació del FLAC es van dur a terme per Xiphophorus, actualment coneguda com a Xiph.org Foundation; altrament coneguda per projectes com ara el Vorbis, l'Icecast, Theora i d'altres.

Infotaula de format de fitxerFree Lossless Audio Codec
Tipuscòdec d'àudio i programari lliure Modifica el valor a Wikidata
Extensió.flac
MIMEaudio/x-flac
DesenvolupadorXiph.org Modifica el valor a Wikidata
Més informació
Lloc webxiph.org… Modifica el valor a Wikidata
FLAC
Modifica el valor a Wikidata
Modifica el valor a Wikidata
Tipuscòdec d'àudio i programari lliure Modifica el valor a Wikidata
Versió inicial
20 juliol 2001 Modifica el valor a Wikidata
Versió estable
1.4.3 (23 juny 2023) Modifica el valor a Wikidata
Llicènciallicència BSD de 3 clàusules
GNU GPL 2.0
GNU LGPL 2.0
Llicència de documentació lliure GNU, versió 1.2 Modifica el valor a Wikidata
Característiques tècniques
Sistema operatiumultiplataforma Modifica el valor a Wikidata
Escrit enC Modifica el valor a Wikidata
Format de fitxer de lectura
Format de fitxer d'escriptura
Equip
Desenvolupador(s)Xiph.org Modifica el valor a Wikidata
Més informació
Lloc webxiph.org… Modifica el valor a Wikidata
SourceForgeflac Modifica el valor a Wikidata
Free Software DirectoryFLAC Modifica el valor a Wikidata

Visió general modifica

Es pot considerar que el FLAC és un còdec d'àudio únic si es tenen en compte alguns aspectes, ja que el fet de ser sense pèrdues no és l'única cosa que el caracteritza; sinó això juntament amb la seva accessibilitat atès que és totalment no-propietari, no relacionat amb patents privades i de codi obert; és a dir, tota la documentació relacionada amb la seva implementació és totalment accessible per a tothom. Cal destacar també que és un format completament gratuït de fer servir. Totes aquestes característiques de facilitat d'accés i lliure distribució és el que està convertint el FLAC en un format atractiu per als desenvolupadors d'aplicacions i també en un dels formats i còdecs d'àudio sense pèrdues més estès i suportat tant per dispositius físics com per aplicacions de programari.

El projecte FLAC modifica

El projecte d'on va sorgir el FLAC no només inclou el format en si, sinó diverses eines i documentació. Les parts principals que conformen el projecte són aquestes:

  • El còdec amb el qual es codifica la informació d'àudio.
  • El format contenidor on hi hauran les dades codificades amb FLAC.
  • La llibreria libFLAC que defineix la codificació i descodificació de les dades, així com la manera amb què s'inclouen les metadades.Sota llicència BSD.
  • El grup de classes libFLAC++ que inclou les definicions de la llibreria libFLAC així com les seves estructures i funcions. Sota llicència BSD.
  • El flac, una eina de l'ordre de comandes que serveix com a aplicació per a implementar les llibreries libFLAC, permetent codificar i descodificar la informació. Sota llicència GPL.
  • El metaflac, una eina del mateix caire que el flac però que ens permet l'edició de les metadades dels contenidors .flac. Sota llicència GPL.
  • Un munt de plug-ins d'entrada per a diversos reproductors i editors de pistes d'àudio (Foobar2000, Winamp, Xmms...).

Característiques d'interès modifica

S'expliquen algunes de les possibilitats que poden interessar als usuaris finals de FLAC, sobretot en l'àmbit professional i de consum, més que de cara al desenvolupament tècnic.

  • sense pèrdues: la codificació que s'aplica no comporta cap pèrdua de qualitat vers la informació que entra al codificador. Per a fer-ho cada trama de dades conté 16 bits de detecció d'errors (CRC). La informació global codificació també fa servir mètodes per assegurar la integritat del tot, incloent un espai per al MD5 (de les dades sense codificar) a la capçalera de l'arxiu per d'aquesta manera comprovar la semblança amb la informació descodificada.
  • ràpid: la potència computacional que requereix en procés de descodificació és molt menor a la del procés inversa. Així doncs la descodificació en temps real és molt més fàcil d'aconseguir fet que fa del FLAC una gran tria per a dispositius de maquinari descodificadors, ja que no s'exigeix tanta potència.
  • suport de maquinari: hi ha un ample ventall de dispositius i electrònica de consum com ara reproductors portàtils d'àudio o de sobretaula que suporten plenament els arxius codificats amb aquest còdec.
  • flexibilitat en les metadades: el sistema que gestiona les metadades al FLAC suporta els tags, l'associació de cobertes d'àlbum, les taules d'indexació del contingut, i llistes cue(cue sheet).
  • explorable: l'exploració del contingut és ràpida i arriba fins a nivell de mostra. Aquest fet el fa altament útil per a la seva reproducció fàcil i lleugera però sobretot molt més adient per a tasques d'edició on l'exploració del contingut és molt necessària i freqüent.
  • "independència" de trames: les trames FLAC no depenen de les seves anteriors per a poder ser descodificades i reproduïdes. És a dir, cadascuna de les trames en les quals es divideix conté prou informació com per ser descodificada per ella mateixa. Això ho fa apte per a aplicacions en temps real(streaming).
  • resistent a l'error: la possibilitat que hi hagi un error és petita però possible; tanmateix; el fet que la informació es divideixi en trames fa que aquest error, que normalment afecta a una fracció de segon o de dimensions no molt majors, fa que aquest error no afecti més que a la trama en si.

Programari útil modifica

Són inacabables les aplicacions que ens permeten treballar amb el format FLAC, se citen algunes de les més destacades en l'àmbit de la codificació, la descodificació(reproductors). Un fet a destacar és que no només són múltiples les aplicacions sinó que també són compatibles amb tota mena d'arquitectures.

Linux (altres *NIX, Solaris...) modifica

Windows modifica

MAC OS X modifica

  • Codificació
  • Descodificació
    • Flac-Importer
    • Cog.
    • Play.
    • xACT
    • MacFLAC.

Dispositius que el suporten modifica

Característiques tècniques modifica

Fins avui i per molt que s'ha intentat no existeix cap algorisme de compressió que sigui capaç de comprimir informació de qualsevol tipus sense que hi hagi pèrdues. És per això que els algorismes de compressió se centren sobretot en un àmbit concret de treball, i és en aquest àmbit on sí és possible una compressió sense pèrdues. En el cas del FLAC i com és de suposar aquest àmbit és la informació d'àudio Això no vol dir que tota entrada d'àudio serà comprimida en una proporció alta; el FLAC és especialment eficient quant a compressió de l'original en determinats tipus d'àudio. Dins de l'àmbit de la informació d'àudio es poden trobar un ample ventall de sub-branques; podem estar tractant àudio de veu a baixa taxa de bits, àudio multicanal a alta taxa de bits… El FLAC aprofita el fet que dins de l'àudio és típic trobar-hi una alta correlació a nivell de mostra. Segons el tipus d'informació que tinguem seran els paràmetres de codificació els que ens permetin obtenir una compressió el més eficient possible.

Arquitectura de la codificació modifica

Com en la majoria de codificadors d'àudio, el procés de codificació emprant el FLAC passa per diferents fases:

  • Blocking

La informació d'entrada és dividida en diversos blocs contigus, la mida d'aquests blocs pot variar, segons les nostres necessitats. No es pot determinar una mida estàndard òptima, ja que depèn de diversos factors. El codificador oficial empra una mida fixa de bloc tot i que val a dir que el FLAC ens permet tenir diferents mides de bloc dins d'un mateix flux o contenidor. La mida del bloc que acabem triant tindrà una repercussió directa sobre el nivell de compressió que obtindrem, d'aquesta manera si la mida és massa petita estarem molt possiblement desaprofitant bits a causa de les capçaleres de les trames, en canvi si ens excedim en la mida dels blocs és molt probable que dins d'aquests el senyal canviï tant que no puguem trobar un predictor efectiu. És per això que el còdec FLAC estableix una mida mínima i màxima de bloc(16 i 65535 respectivament); dins d'aquest marge s'arriba a la mida òptima per a qualsevol tipus de data.

  • Interchannel Decorrelation (decorrelació entre canals)

Parlant del cas més habitual i fàcil d'entendre, l'àudio stereo, on hi ha dos canals separats que són dret i esquerre; el codificador podria optar per diverses opcions.

      • Independent: canal dret i esquerre són codificats independentment.
      • Mid-side: es creen dos senyals, un d'ells conté la mitja entre els dos canals i l'altre la diferència vers aquesta mitja (esquerra menys dret).
      • Left-side: el canal esquerre i el canal diferència(dret) seran codificats.
      • Right-side: el canal dret i canal diferència(esquerra) seran codificats.

Habitualment els mètodes més eficients són els dos últims.

  • Prediction (Predicció):

En aquesta fase es crea una aproximació matemàtica del senyal, sovint molt més petita que el senyal original. Els mètodes de predicció són coneguts tant pel codificador com pel seu invers posterior, d'aquesta manera dins la trama tan sols caldrà incloure-hi els paràmetres emprats, fet que redueix molt la mida de la informació codificada. Actualment el FLAC fa servir quatre tipus diferents de predictors tot i que en permet d'altres i fins i tot combinacions d'aquests entre diferents blocs.

  • Residual Coding (codificació residual):

En el cas que la descripció que ha fet el nostre predictor no sigui fidel a la dinàmica del nostre senyal original, la diferència entre aquestes dues ha de ser codificada de manera precisa, ja que sinó podrien esdevenir-se pèrdues. Com més efectiu sigui el nostre predictor en la seva tasca, menys bits necessitarem per a codificar el nostre error residual. Normalment s'empra un sol mètode per a aquesta tasca, de cara al còdec, però d'igual manera que en els tipus de predictor el format FLAC permet que s'utilitzin altres mètodes addicionals. També comparteix el fet de poder especificar diversos codificadors d'errors residuals en diferents blocs.

Format del FLAC modifica

La informació dins dels contenidors FLAC es distribueix d'una determinada manera com en qualsevol tipus de format. El format actual reserva un determinat espai buit perquè les futures implementacions puguin emprar el mateix sense haver de ser modificat, adaptant així vells i nous formats. Tots els valors que s'empren dins del format FLAc són del tipus integer (enter), així doncs no trobarem cap nombre quantitzat en coma flotant. La codificació utilitzada és l'arquitectura big-endian i llevat que s'especifiqui, tots els nombres són codificants com a unsigned. Un flux d'informació FLAC conté al principi d'aquest una etiqueta amb el valor "fLaC", seguit d'un bloc de metadades que descriu les característiques més generals de la informació i a continuació una sèrie de blocs més que ens donen informació d'altres tipus. Finalment, després dels blocs de metadades hi trobem les trames d'àudio. Hi ha fins a 128 tipus de blocs de metadades suportats al FLAC dels quals actualment podem trobar:

  • STREAMINFO

Aquest és el primer dels blocs de metadades que es troba dins del format. S'hi troba informació sobre les característiques de tot el flux FLAC com la freqüència de mostreig, el nombre de canals, el nombre total de mostres...

  • APPLICATION

L'utilitzen aplicacions externes a les oficials del FLAC i especifica què s'ha fet servir per a crear el flux. Cada aplicació té un identificador propi que proporcionen els encarregats de gestionar el FLAC.

  • PADDING

La informació que conté aquest bloc no és útil i s'acostuma a omplir amb informació inútil per a poder editar-ne el contingut amb dades útils després. És a dir, es reserva un espai per a poder emplenar-lo posteriorment.

  • SEEKTABLE

Ens permet indexar els continguts de les trames per una exploració instantània. Tan sols pot haver-hi una sola taula d'exploració però amb infinits punts dins d'aquesta. No és necessària per a l'exploració de les dades però si que en facilita la tasca i minimitza el retard que podria haver-hi.

  • VORBIS_COMMENT

S'hi inclou informació que pot ser llegida per l'usuari. Empra la codificació UTF-8.

  • CUESHEET

Especialment útil per a emmagatzemar la informació de les llistes CUE que hi ha incloses als suports CD-DA. D'aquesta manera al passar un CD-DA a FLAC es manté aquests informació.

  • PICTURE

Aquest bloc es fa servir per associar normalment cobertes dels discs a les pistes codificades en FLAC.

Taula comparativa de funcionalitats modifica

Molt sovint un dels factos que més es tenen en compte a l'hora de triar el nostre còdec d'àudio és la compressió que aporta. Tanmateix, depenent de l'aplicació final i considerant els mitjans disponibles, no sempre el més convenient és la màxima compressió. En aquesta taula es demostra perquè el FLAC és una bona tria en molts dels casos, comparant-ne les funcionalitats més destacades amb les mateixes d'altres còdecs d'àudio sense pèrdues. Els que es descriuen a la taula són:

Còdec Cod Decod Comp Flexibilitat Robust error Exp Tagging Dispositius Programari Híbrid/Amb pèrdues Streaming Codi Obert Multi-
canal
Alta resolució SO
Wavpack Molt
ràpid
Molt ràpid 58% Molt bona Si Si ID3/APE Limitat Bo Si Si Si Si Si Tots
ALAC Mitjana Ràpid 58,5% Dolenta No Si QT tags Bo Dolent No Si Si(descodif) Si Si Win/MAC
FLAC Ràpid Molt
ràpid
58,7% Molt bona Si Si VorbisTag Molt bo Molt bo No Si Si Si Si Tots
Monkey's Ràpid Mitjà 55,5% Molt bona No Si ID3/APE Limitat Bo No No Si No Si Tots
OptimFROG Lent Mitjà 54,7% Molt bona Si Si ID3/APE No Poc Si Si No No Si Win/Mac
/Linux
Shorten Molt Ràpid Molt Ràpid 63,5% Dolent No Si No Limitat Molt bo No No Si No No Tots
  • % Compressió quant més baix més comprimeix
  • Codificació i decod: velocitats que triga en fer-ho.
  • Dispositius i Programari: suport en els dos camps
  • Exp.: contingut de la trama explorable a nivell de mostra

Referències modifica

Enllaços externs modifica

A Wikimedia Commons hi ha contingut multimèdia relatiu a: FLAC