
Il codec FLAC è uno dei più importanti codec LossLess utilizzati a livello mondiale.
La pagina ufficiale con le caratteristiche di questo codec si trova qui.
E’ totalmente in Inglese, o in Russo. Non c’è purtroppo il tempo e lo spazio per potere descrivere l’intero algoritmo di compressione in questa sede, mentre sarò disponibilissimo a discutere su domande puntuali inerenti il formato inviate tramite commento a questo post, comprese chiarificazioni sulla stessa documentazione ufficiale.
Sostanzialmente FLAC:
1) permette di avere files compressi fino anche al 40, 50% rispetto al PCM originario, mantenendo tutti i dati del file originario, esattamente come avviene con i formati ZIP o RAR, che sono palesemente lossless.
2) opera seguendo questi passaggi:
* Suddivisione in blocchi: L’input viene diviso in più parti contingue, anche variabili in grandezza (e qui c’è un po di controversia, perchè in teoria si dice anche che i blocchi devono essere fissi)
* Compattamento del flusso multicanale: In questo step l’encoder FLAC si occupa di calcolare, nel caso di input stereo e surround, la media dei canali e la loro differenza. Il segnale a qualità migliore, viene passato al processo successivo.
* Predizione: Partendo dal primo blocco, avviene la previsione di quale possa essere il successivo con degli algoritmi matematici che tentano di ricostruire il segnale. In questo caso, verranno codificati solo i parametri, dato che gli algoritmi matematici devono essere presenti sia sull’encoder che sul decoder.
* Codifica residua: La codifica residua permette a FLAC di essere effettivamente un codec lossless. Si codifica senza perdita tutta la parte di segnale che si differenzia dalla ricostruzione matematica di predizione, e viene incorporata nel file finale. Il guadagno si ha sul fatto che il segnale residuo, proprio per la scrematura matematica, sarà minore in bytes rispetto al corrispettivo PCM
