Codec Video pag. 1 1. Codec video 1.1 I codec in generale. Un codec è un programma o un dispositivo che si occupa di codificare e/o decodificare digitalmente un segnale (tipicamente audio o video) perché possa essere salvato su un supporto di memorizzazione o richiamato per la sua lettura. Tale programma può essere installabile/aggiornabile (su personal computer o apparecchiature multimediali predisposte) oppure essere integrato in un componente hardware dedicato (ad es. nei lettori CD o DVD casalinghi o in alcune schede video/audio per PC). I codec hanno due funzioni principali: • “digitalizzazione” del segnale, ovvero la trasformazione di un segnale analogico in un flusso di dati numerici (binari) • compressione (e/o decompressione in lettura) dei dati ad esso relativi, in modo da poter ridurre lo spazio di memorizzazione occupato a vantaggio della portabilità o della trasmissività del flusso codificato. La compressione dei dati segue due diversi approcci, a seconda dei dati da comprimere: a. con perdita di informazione (lossy) b. senza perdita di informazione (lossless) Per realizzare tale compressione con perdita di informazione (lossy) si fa ricorso: • alla riduzione della precisione dei colori dei singoli pixel (codec video) o delle frequenze da riprodurre (in alcuni codec audio vengono soppresse le frequenze non udibili dall'orecchio umano), • alla eliminazione delle ridondanze o alla scrittura delle sole differenze (codec video) rispetto ad una immagine di riferimento. Esistono vari tipi di codec, differenti tra loro per • il tipo di segnale su cui devono operare • l’algoritmo di codifica/compressione che utilizzano 1.2 I codec video Un codec video è un programma o un dispositivo sviluppato per descrivere un flusso video sotto forma di dati numerici adatti ad essere memorizzati su un supporto digitale. Usualmente i codec video effettuano anche una compressione dei dati in modo da ridurre l'elevata quantità di dati che compone un flusso video. La maggior parte dei codec video adottano tecniche di compressioni lossy (a perdita di informazioni) in modo da poter ridurre, anche di 20 volte, i dati necessari per trasmettere i flussi video. Esistono, tuttavia, codec utilizzati per applicazioni professionali che utilizzano compressioni lossless (senza perdita di informazione). Codec Video pag. 2 1.2.1. Codifica intraframe e codifica interframe A seconda della diversa tecnica di codifica del flusso video, i codec video si dividono in due grandi famiglie: • a codifica intraframe • a codifica interframe. La codifica intraframe contraddistingue i codec che codificano e decodificano un flusso video descrivendo ogni singolo fotogramma che compone la sequenza video, rispettando quindi un approccio tradizionale alla quantizzazione video come sequenza di immagini statiche. Nella codifica interframe invece i codec video si occupano di descrivere i cambiamenti che si verificano tra un fotogramma ed il successivo. La diversa dinamica dei due approcci fa si che la codifica intraframe è più adatta alla riproduzione di sequenze video particolarmente movimentate; descrivendo ogni singolo fotogramma infatti, un codec a codifica intraframe potrà degradare la qualità delle singole immagini all'aumentare del rapporto di compressione, ma tenderà comunque a lasciare inalterata la dinamica del movimento. I codec a codifica interframe risultano invece meno adatti alla codifica di sequenze movimentate con grandi cambiamenti tra i fotogrammi. Al contrario, in sequenze video statiche, ovvero con pochi elementi che cambiano nella scena, la codifica interframe risulta di notevole efficienza. 1.2.2. Approfondimenti sulla compressione La compressione dati lossy è quella classe di algoritmi di compressione che porta a perdita di informazioni durante la fase di compressione/decompressione delle informazioni. Decomprimendo un file compresso con un metodo "lossy" la copia ottenuta sarà peggiore dell'originale per quanto riguarda il livello di precisione delle informazioni codificate, ma in genere comunque abbastanza simile da non comportare perdita di informazioni irrinunciabili. Ciò è possibile poiché i metodi di compressione a perdita di informazioni in genere tendono a scartare le informazioni poco rilevanti, archiviando solo quelle essenziali: per esempio comprimendo un brano audio secondo la codifica dell'MP3 non vengono memorizzati i suoni non udibili, consentendo di ridurre le dimensioni dei file senza compromettere in modo sostanziale la qualità dell'informazione. La compressione dei dati con perdita di qualità è ampiamente usata in molti settori dell'informatica: su Internet, nell'ambito dello streaming dei media, nella telefonia, per la compressione di immagini o altri oggetti multimediali, ecc. La compressione dati lossless è quella classe di algoritmi di compressione che non porta a perdita di informazioni durante la fase di compressione/decompressione delle informazioni. Un esempio di questo tipo di compressione è dato dai formati Zip, Gzip, Bzip2, Rar, 7z. I file per cui non è accettabile una perdita di informazione, come i testi o i programmi, utilizzano questo metodo. Per le immagini fotografiche generalmente non si usano algoritmi lossless in quanto sarebbero veramente poco efficienti, ma per le immagini che contengono schemi o disegni realizzati al PC spesso la compressione lossless non solo è applicabile, ma anche conveniente (GIF, PNG, MNG, TIFF). Esistono diversi algoritmi di compressione lossless. Citiamo a titolo di esempio la codifica “Huffman”, le codifiche LZ77, LZ78, LZW, e la codifica mista “DEFLATE”