FLAC

De Viquipèdia
Dreceres ràpides: navegació, cerca
Logotip oficial del FLAC
Free Lossless Audio Codec
Extensió del fitxer .flac
MIME audio/x-flac
Free Lossless Audio Codec
Desenvolupador(s) Xiph.org
Versió estable

1.2.1

/ 17 de setembre 2007
Sistema operatiu Plataforma múltiple
Tipus còdec d'àudio
format d'àudio
Llicència GNU General Public License. GPL
BSD licenses. BSD
Lloc web flac.sf.net

FLAC és l'acrònim de Free Lossless Audio Codec (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 duur 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.


Visió general[modifica | modifica el codi]

Es pot considerar que el FLAC és un còdec d'àudio únic si es tenen en compte alguns aspectes ja que no és el fet de ser sense pèrdues l'única cosa que el caracteritza; sinó això juntament amb la seva accessibilitat donat 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, fet que a vegades no es té en compte. 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 | modifica el codi]

El projecte d'on va sorgir el FLAC no només inclou el format en sí, 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 codifcació i decodificació de les dades, així com la manera amb que 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 | modifica el codi]

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

  • sense perdues: 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 que 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 sí.

Programari útil[modifica | modifica el codi]

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 | modifica el codi]

Windows[modifica | modifica el codi]

MAC OS X[modifica | modifica el codi]

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

Dispositius que el suporten[modifica | modifica el codi]

Característiques tècniques[modifica | modifica el codi]

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 hagin 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 si és possible una compressió sense pèrdues. En el cas del FLAC i com és de suposar, aquest àmbit és la informació d'àudio, no vol dir això 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'ambit 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 | modifica el codi]

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 fluxe o contenidor. La mida del bloc que acabem triant tindrà una repercussió directe 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 canvii 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 esquerra 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 el format FLAC permet l'ús de més tipus. fins i tot de 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-ne pèrdues. Quant 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 cares 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 bloc


Format del FLAC[modifica | modifica el codi]

La informació dins dels contenidors FLAC es distribueix d'una determinada com en qualsevol tipus de format. El format actual reserva un determinat espai buit per a que les futures implementacions puguin emprar el mateix format 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 a menys que s'especifiqui, tots els nombres són codificants de maner unsigned. Un fluxe 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 de la informació més generals i després d'aquest una sèrie de blocs més que ens donen informació d'altre 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, actualment aquests són els que ens 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, clars exemples en són la freqüència de mostreig, nombre de canals, nombre total de mostres...

  • APPLICATION

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

  • PADDING

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

  • SEEKTABLE

Ens permet indexar els continguts de les trames per una instantània exploració. 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 en 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 | modifica el codi]

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 ens aporta; tanmateix, depenent de la nostra aplicació final i si es consideren els medis dels que disposa l'usuari no sempre ens convé el més ràpid ni el més compressor. 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.

-Dispostius i Programari: suport en els dos camps

-Exp.: contingut de la trama explorable a nivell de mostra

Enllaços d'interès[modifica | modifica el codi]




A Wikimedia Commons hi ha contingut multimèdia relatiu a: FLAC Modifica l'enllaç a Wikidata