L'ABC dei media digitali per geek.
Le workstation ed i computer di fascia alta già da 15 anni
sono capaci di manipolare l'audio digitale molto facilmente.
Ed è da 5 anni che anche le normali workstation son capaci
di manipolare video grezzo senza la necessità di hardware dedicato.
Ma oggi anche il più economico dei PC domestici ha la potenza di calcolo
e la capacità d'immagazzinamento per produrre e pubblicare
contenuti video senza nemmeno troppo sforzo.
Ed ora che chiunque ha a disposizione l'hardware a basso costo,
sempre più persone, ovviamente, cercano di creare
contenuti multimediali interessanti, anche per lo streaming.
Youtube per primo ha raggiunto il successo, ed ora tutti cercano di imitarlo.
Ed è un bene! Perché questa roba è molto divertente!
Non è affatto difficile trovare un pubblico per i media digitali
ma io oggi mi rivolgo agli ingegneri, ai matematici,
agli hacker, alle persone che si appassionano a scoprire
e creare, e sviluppare essi stessi la tecnologia.
Sono queste le persone che mi stanno a cuore.
Il campo dei media digitali (e soprattutto la compressione) viene percepito come specialistico,
qualcosa di incredibile difficoltà che non ha eguali in informatica.
Agli industriali del settore non importa molto di questa percezione
che, anzi, li aiuta a giustificare i numeri impressionanti che realizzano grazie ai loro brevetti.
Sono fieri di pensare che i loro ricercatori siano il meglio del meglio,
talmente intelligenti che le loro idee geniali
non possano essere comprese dai comuni mortali.
Ma questa è solo fuffa.
Audio e video digitali, lo streaming e la compressione
pongono numerose problematiche profonde e stimolanti
proprio come ogni altra disciplina.
Questa sembra specialistica perché poche persone ne sono a conoscenza.
Forse se ne sono interessati in pochi perché erano in pochi
a potersi permettere le costose apparecchiature dedicate necessarie fino a poco tempo fa.
Ma oggi tutti coloro che sono capaci di guardare questo video
hanno un PC economico e general-purpose, abbastanza potente per fare ciò che prima era riservato alle workstation.
Lo scontro di oggi si combatte sul terreno dell'HTML5, dei browser,
dei video, delle soluzioni libere contro quelle proprietarie.
Questo è un buon momento per farsi coinvolgere
e il punto migliore per cominciare è probabilmente
comprendere la tecnologia che abbiamo di fronte oggi.
Questo video è un'introduzione
e, proprio per questo, sorvoleremo su molti dettagli
in modo da rendere più semplice il quadro generale.
Ci sarà qualcuno di voi che conoscerà già molti degli aspetti
di cui parlerò adesso, almeno all'inizio.
E d'altro canto, andrò inevitabilmente troppo veloce per coloro
che non hanno mai sentito parlare di queste cose; se è così non preoccupatevi.
L'importante è afferrare l'idea, un concetto che catturi l'attenzione.
In particolare, prestate attenzione ai termini che useremo nella descrizione
perché basteranno questi, insieme a Google e Wikipedia, per approfondire
ogni argomento al livello che desiderate.
E adesso passiamo immediatamente
a presentare il vostro nuovo hobby.
Audio analogico ed audio digitale
Il suono è la propagazione, attraverso un mezzo, di onde
che si allontanano dalla sorgente come le onde generate da un sasso in uno stagno.
Il ricevitore, che sia un microfono o il nostro orecchio,
trasforma queste variazioni di pressione in segnale elettrico.
Beh, questo lo sapevamo già ai tempi della scuola.
Ma andiamo avanti.
Il segnale audio è una funzione, un valore che varia col tempo.
Se rallentiamo un pochino l'oscilloscopio...
sarà più semplice vederlo.
Ci sono altri aspetti del segnale audio che vale la pena osservare.
È continuo nei valori e nel tempo;
e ciò vuol dire che in ogni istante può assumere ogni valore reale,
e che questo valore può variare in modo uniforme nel tempo.
A prescindere dal nostro livello di zoom
non troverete mai discontinuità, mai punti singolari, mai gradini
né tantomeno istanti in cui il segnale risulti assente.
Il segnale è una funzione definita ovunque e la matematica classica può andarci a nozze.
D'altro canto, un segnale digitale è discreto sia nel valore sia nel tempo.
Nella sua forma più semplice, chiamata Pulse Code Modulation (PCM),
l'ampiezza del segnale in un certo istante è rappresentata da solo uno dei possibili valori,
rilevati in istanti temporali rigorosamente cadenzati. Il risultato è una sequenza di cifre.
Questi grafici appaiono incredibilmente simili, vero?
Risulta intuitivo pensare di poter passare da una forma all'altra
e la buona notizia è che il teorema del campionamento ci dice che si può fare, e anche come.
Nella sua forma più nota è stato reso pubblico nel 1949 da Claude Shannon
che si basò sui lavori di Nyquist, Hartley e molti altri.
Il teorema dice non solo che possiamo trasformare la forma analogica in quella digitale e viceversa,
ma ci indica anche le condizioni per cui la trasformazione
risulta senza perdite e le due rappresentazioni diventano equivalenti ed intercambiabili.
Quando non sussistono le condizioni per la trasformazione lossless, il teorema
ci dice quanta informazione viene perduta o come viene alterata.
Fino a tempi recenti la tecnologia analogica veniva usata per tutte le elaborazioni audio
ma non certo perché le sorgenti audio fossero di tipo analogico.
Si potrebbe pensare che, visto che i computer sono un'invenzione recente,
la tecnologia analogica sia per forza nata prima.
Niente affatto. Il digitale è arrivato prima.
Il telegrafo ha preceduto il telefono di mezzo secolo
ed era già completamente meccanizzato nel 1860; si mandavano segnali digitali,
codificati e multiplexati anche su lunghissime distanze. Ricordate i nastri per telescrivente?
Harry Nyquist dei laboratori Bell stava facendo ricerche sulle trasmissioni a impulsi del telegrafo
quando pubblicò la descrizione di quella che in seguito
fu chiamata frequenza di Nyquist, il concetto cardine del teorema del campionamento.
Ok, a quei tempi il telegrafo trasmetteva simboli per testo,
non certo segnali analogici digitalizzati, ma l'avvento di radio e telefono
diede impulso alle tecnologie analogica e digitale che crebbero di pari passo.
L'audio è sempre stato elaborato in analogico perché, perbacco, è più facile.
Un filtro passa-basso, per esempio, richiede due componenti passivi.
Un circuito per la trasformata di Fourier a tempo breve, un centinaio.
Beh, magari un migliaio se vogliamo farlo bene.
L'elaborazione digitale dei segnali richiede milioni o miliardi di transistor
che funzionano ad elevata frequenza, hardware dedicato che si occupi
di campionare e riconvertire i segnali, un ambiente software completo
che controlli e sfrutti questa enorme potenza a disposizione,
parecchio spazio di memorizzazione per conservare il lavoro per il futuro...
Verrebbe da pensare che quella analogica sia la strada più semplice per l'elaborazione audio,
a meno che uno non abbia già miliardi di transistor e tutta quella roba a portata di mano.
E visto che oggi ce l'abbiamo, l'elaborazione digitale è divenuta più interessante.
Innanzitutto, i circuiti analogici non hanno la flessibilità di un computer.
Aggiungere una funzionalità a questo mostro
beh... è praticamente impossibile.
Invece, su un sistema di elaborazione digitale basta scrivere
un nuovo programma. Scrivere software non è banale, ma è di sicuro più semplice.
Un'altra importante considerazione è che ogni componente analogico è imperfetto.
Non esistono un transistor perfetto, un induttore perfetto, un condensatore perfetto,
quindi ogni componente introduce rumore e distorsione, generalmente non molto ma lo fa.
Già solo la trasmissione di un segnale analogico, specie se su lunghe distanze,
lo rovina progressivamente e irreversibilmente.
Inoltre la componentistica analogica è ingombrante.
Con due righe di codice sul mostro a transistor possiamo realizzare
un filtro che richiederebbe un induttore grande come un frigorifero.
I sistemi digitali non presentano quegli svantaggi.
Nella forma digitale, i nostri segnali possono essere copiati, elaborati e trasmessi senza alterazioni.
È anche vero che ogni tanto usiamo algoritmi lossy
ma le uniche fasi non ideali restano il campionamento e la riconversione,
quando è inevitabile interfacciarsi col mondo analogico.
In ogni caso, oggi la qualità delle conversioni è veramente elevata
e il nostro sistema uditivo le percepisce come se fossero lossless.
L'hardware necessario oggi è diventato economico ed ha dimensioni ridotte,
quindi chi decide di fare elaborazione audio sceglie ovviamente la via digitale.
Ora iniziamo a parlare di memorizzazione, copia, elaborazione e trasmissione.
L'audio digitale "nudo e crudo"
La forma più comune per l'audio grezzo è la Pulse Code Modulation (PCM).
Ci sono anche altre rappresentazioni, come la modulazione sigma-delta usata nei SACD
che si basa sulla densità degli impulsi ed è detta PDM.
Comunque la PCM è di gran lunga più usata,
anche perché è matematicamente più comoda.
Un ingegnere audio potrebbe lavorare una vita e utilizzare solo la PCM.
Questa codifica si caratterizza con tre parametri fondamentali,
rendendo relativamente semplice la gestione di ogni possibile variante.
Il primo parametro è la frequenza di campionamento.
La frequenza più alta che una codifica può rappresentare è detta frequenza di Nyquist.
Nella PCM la frequenza di Nyquist è esattamente la metà della frequenza di campionamento.
Quindi la frequenza di campionamento influenza direttamente la frequenza più alta che troveremo nel segnale digitale.
Le vecchie linee telefoniche analogiche limitavano la voce ad una banda sotto i 4 kHz,
quindi la telefonia digitale e le applicazioni vocali usano un campionamento ad 8 kHz,
la minima frequenza di campionamento necessaria a catturare una intera banda ampia 4 kHz.
Ecco l'effetto della mia voce campionata ad 8 kHz: è un po' smorzata ma resta intelligibile.
Questa resta la più bassa frequenza di campionamento mai usata nella pratica.
E quando la potenza, la memoria e i dischi crebbero, l'hardware per computer
riuscì a salire a campionamenti di 11, poi a 16, poi a 22 e anche a 32 kHz.
Ovviamente, con l'incremento nella frequenza di campionamento e nella frequenza di Nyquist,
le alte frequenze si sentivano più chiaramente ed il suono divenne più naturale.
I Compact Disc usano un campionamento a 44.1 kHz, che è un po' meglio di 32 kHz,
anche se le differenze sono meno evidenti.
La scelta di 44.1 kHz è un po' insolita, soprattutto se considerate che questa frequenza non era
mai stata utilizzata prima, ma l'enorme successo dei CD l'ha resa molto comune.
La frequenza di campionamento più comune, a parte il settore dei CD, è di 48 kHz.
E non ci sono differenze percepibili tra le due.
Ad esempio, questo video (o almeno l'originale) è stato girato e prodotto con audio a 48 kHz,
perché è questo lo standard per l'audio ad alta fedeltà nel settore video.
Sono in uso anche frequenze di campionamento a super-alta fedeltà di 88, 96 e 192 kHz.
L'introduzione di queste frequenze di campionamento non è legata all'estensione del campo uditivo.
Il motivo è un altro.
Facciamo un passo indietro: il matematico francese Jean Baptiste Joseph Fourier ci ha dimostrato
che possiamo scomporre i segnali (anche l'audio) nell'insieme di frequenze che li compongono.
Questa rappresentazione nel dominio della frequenza è equivalente a quella nel dominio del tempo:
il segnale è lo stesso ma lo descriviamo in maniera diversa.
Qui osserviamo la rappresentazione nel dominio della frequenza di un segnale analogico che vogliamo campionare.
Il teorema del campionamento ci dice due cose fondamentali del processo di campionamento.
Primo: il segnale digitale non può catturare le frequenze più elevate di quella di Nyquist.
Secondo (è questa la novità): se non tagliamo via quelle frequenze con un filtro passa-basso,
il campionamento le riporterà tra le frequenze catturate in forma di distorsioni da aliasing.
E, detto in breve, l'aliasing suona malissimo.
Quindi è essenziale rimuovere ogni frequenza più elevata di quella di Nyquist prima del campionamento e dopo la riconversione.
L'orecchio umano percepisce i suoni fino a circa 20 kHz.
Nei campionamenti a 44.1 o 48 kHz il filtro passa-basso deve essere estremamente preciso
per evitare di alterare le frequenze udibili, sotto i 20 kHz,
ma comunque tagliare le frequenze sopra quella di Nyquist che rovinerebbero il campionamento.
Un filtro così è difficile da realizzare e non ci riesce completamente.
Invece, se il campionamento avviene a 96 o 192 kHz
il filtro passa-basso può agire su un'altra ottava (o due) per filtrare. E questo filtro è più semplice.
Le frequenze di campionamento oltre i 48 kHz sono dovute proprio all'origine analogica del segnale.
Il secondo parametro fondamentale è il formato del campione, cioè il formato di ogni valore rilevato.
Un numero è sempre un numero ma in informatica un numero si può rappresentare in un gran numero di modi.
All'inizio i file PCM usavano una codifica lineare ad 8 bit, senza segno.
La gamma dinamica era limitata a 50 dB ed il rumore di quantizzazione, come state sentendo, era decisamente percepibile.
Infatti l'audio ad 8 bit è quasi svanito ai nostri giorni.
La telefonia digitale utilizza una tra due codifiche ad 8 bit non lineari, dette A-law e mu-law.
Queste codifiche offrono la gamma dinamica di 14 bit usandone 8
grazie alla maggior ampiezza (non lineare, appunto) dei valori maggiori.
Le codifiche A-law e mu-law sono certamente migliori sul fronte del rumore di quantizzazione,
e nascondono altri artefatti grazie alla miglior resa della voce.
Troverete queste 3 codifiche ad 8 bit, lineare, A-law e mu-law,
generalmente in uso con campionamenti ad 8 kHz, anche se qui li abbiamo provati a 48 kHz.
Le codifiche PCM di oggi usano 16 o 24 bit interi in complemento a due ed offrono
la gamma dinamica da meno infinito a zero decibel nei loro 16 o 24 bit.
I loro valore massimo coincide con zero decibel.
In tutti i formati visti finora, i segnali più forti di zero decibel,
e dunque maggiori del massimo rappresentabile, vengono tagliati. Persi.
Negli studi di missaggio è consueto l'uso di numeri reali per la PCM, al posto degli interi.
Un numero reale a 32 bit, come da standard IEEE 754, è lo stesso usato dai computer
ed, oltre a 24 bit di risoluzione, ha anche 7 bit dedicati all'esponente per estendere i valori rappresentabili.
Nei numeri reali il valore di zero decibel è su +/- 1.0
ma un numero reale può anche assumere valori decisamente più elevati di 1
quindi, se durante il missaggio certi segnali superano la soglia di zero decibel, non saranno perduti.
I campionamenti PCM con numeri reali occupano parecchio spazio e quindi si usano solo durante le elaborazioni intermedie.
Un ultimo punto: i PC leggono e scrivono dati in ottetti di bit, i byte,
dunque bisogna tener presente che i campioni più grandi di 8 bit possono essere immagazzinati
con ordine little endian o con il big endian, e sono entrambi utilizzati normalmente.
Per esempio, i file Wav di Microsoft sono in little endian e gli AIFC di Apple in big endian.
Sappiatelo.
Il terzo parametro della codifica PCM è il numero di canali.
Per convenzione, la codifica multicanale prevede l'inserimento dei campioni da ogni canale
in sequenza nello stesso stream, una soluzione immediata e scalabile.
Ed è tutto! Con questi parametri si descrive ogni stream PCM.
Chiuso. L'audio digitale è proprio semplice!
Ci sarebbe anche altro da dire, ovvio, ma adesso che sappiamo cosa c'è in un blocco di dati audio
vediamo di parlare anche del video.
Video digitale: piantiamo le basi (e facciamole attecchire)
Possiamo pensare al segnale video come se fosse l'audio, notando che esso ha le dimensioni X e Y
oltre alla dimensione temporale. Matematicamente è valido.
Allora possiamo applicare lo stesso teorema del campionamento alle sue tre dimensioni, come facevamo con l'audio.
Siamo d'accordo, audio e video sono molto diversi. I dati richiesti per il video sono molti, molti di più.
L'audio da CD richiede circa 1.4 megabit per secondo.
Il video grezzo 1080i HD richiede oltre 700 megabit per secondo,
quindi più di 500 volte tanto. Tutta roba da catturare, elaborare ed immagazzinare ogni secondo.
Secondo la legge di Moore... vediamo... più o meno 8 raddoppi, ciascuno in 2 anni...
e quindi i computer dovrebbero richiedere circa 15 anni in più per maneggiare il video grezzo
dal momento in cui riuscissero a gestire l'audio grezzo.
Il video è però più complesso dell'audio.
La mole di dati video deve essere rappresentata
in un modo più efficiente rispetto alla semplicità della PCM lineare.
In più, considerate che il video digitale viene in gran parte dal segnale televisivo
e l'industria della televisione ha da sempre un occhio di riguardo per la compatibilità col passato.
Proprio fino all'anno scorso, negli USA, i vecchi televisori in bianco e nero
erano ancora capaci di funzionare con la TV analogica.
È un bel trucco, no?
Lo svantaggio della retrocompatibilità è questo: una volta che uno standard si impone,
dopo non puoi più liberartene.
Il video digitale non ha la storia dell'audio ma non puoi crearlo dal niente con idee nuove.
Dopo una storia di oltre sessant'anni, i trucchi introdotti nella TV
sono diventati un bel po' e poiché la TV digitale è ancora il motore del video digitale,
tutti quegli accrocchi ce li siamo ritrovati anche negli standard per il video digitale.
Sarò breve, perché i dettagli del video digitale sono molti di più rispetto all'audio
e sarebbe impossibile discuterli tutti in questo episodio, quindi parleremo dei fondamentali.
I parametri più ovvi sono certamente la larghezza e l'altezza dell'immagine in pixel.
Purtroppo non è così semplice, perché la dimensione in pixel in sé non ci dice nulla riguardo ad
altezza e larghezza del fotogramma, visto che il segnale broadcast non usa pixel quadrati.
Mentre le righe verticali sono in numero fisso,
i pixer orizzontali dipendono dalla larghezza di banda a disposizione.
E quindi capita che le righe orizzontali siano costituite da pixel
più stretti o più larghi di quanto siano alti.
Generalmente negli standard si richiede che il video digitale
conservi la risoluzione originale della fonte analogica,
quindi è facile imbattersi in video digitali che usano pixel non quadrati.
Per esempio, un DVD NTSC con rapporto d'aspetto 4:3 ha in realtà
una risoluzione di 704 x 480 punti, ben più largo di 4:3.
In questo caso, i pixel hanno un rapporto d'aspetto 10:11 e quindi sono più alti che larghi:
l'effetto è di ridurre la larghezza dell'immagine per avere il rapporto d'aspetto 4:3.
Un'immagine così dovrà essere corretta per essere mostrata correttamente sui display con pixel quadrati.
Il secondo parametro è ovviamente il frame rate, il numero di fotogrammi al secondo.
Nell'uso comune sono diffusi diversi frame rate standard e il video digitale, in qualche modo,
può usarli un po' tutti, o anche altri fuori standard. Esistono perfino frame rate variabili
in cui la velocità di aggiornamento varia lungo la durata del video.
Con frame rate più elevati otteniamo movimenti più fluidi, e quindi niente interlacciamento.
Nei primi tempi delle trasmissioni TV i tecnici cercavano il maggior frame rate possibile
per avere movimenti fluidi e ridurre lo sfarfallio sui monitor CRT.
Un'altra pressante richiesta era quella di usare la minor banda possibile
mantenendo un'alta risoluzione ed un alto frame rate.
La loro idea fu di creare la scansione interlacciata: con questa tecnologia
le linee pari e le linee dispari venivano mandate in due passi successivi.
Ogni passo fu chiamato semiquadro e due semiquadri costituivano all'incirca un fotogramma.
Si, "all'incirca", perché i semiquadri pari e dispari non venivano mica dalla stessa immagine.
In una trasmissione a 60 semiquadri al secondo, la sorgente è effettivamente ripresa 60 volte al secondo
ma metà del fotogramma (le righe dispari o le righe pari) viene scartata, non serve.
Ecco perché non si può ricostruire il fotogramma semplicemente ricombinando due semiquadri:
essi non provengono dallo stesso fotogramma!
La tecnologia a tubo catodico, o CRT, è stata l'unica per buona parte della storia del video.
La luminosità di un vecchio CRT non era lineare,
bensì legata alla tensione di controllo da un esponente di 2.5.
Questo esponente si chiama gamma e da qui nasce l'espressione "correzione gamma di un display".
Al contrario, la videocamera ha una luminosità lineare e collegandole direttamente un CRT si vedrebbe questo.
Poiché in origine c'erano ben poche telecamere, tra l'altro costosissime,
e parallelamente molte TV, che dovevano essere prodotte a costi contenuti,
i tecnici decisero di applicare la correzione del gamma agli apparati di ripresa, invece che alle TV.
Dunque il segnale video trasmesso via etere viaggiava con una luminosità che usava l'inverso
dell'esponente gamma, così che, una volta giunto sul display,
veniva ripristinato alla luminosità lineare originale.
Beh, quasi.
Ci sono ancora un paio di dettagli...
Una telecamera televisiva in realtà usa un esponente gamma che risulta inverso di 2.2, non 2.5.
È stato scelto questo valore per migliorare la visione negli ambienti oscuri.
Inoltre la curva esponenziale diventa lineare in prossimità del nero:
è un espediente per evitare il rumore dovuto alla sensibilità del sensore della videocamera.
La correzione del gamma aveva però un effetto positivo:
Si dà il caso che l'occhio umano abbia un gamma percettivo pari a 3,
il che è molto, molto simile al gamma di un CRT di 2.5.
Un'immagine che sfrutta la correzione gamma riserva maggior risoluzione alle basse intensità,
di cui gli occhi possono apprezzare meglio i dettagli,
e quindi usa il segnale visivo con maggiore efficienza.
Sebbene i CRT siano ormai in estinzione, un normale monitor sRGB
usa ancora una curva di intensità non lineare simile alla TV, con la rampa lineare nella zona del nero,
seguita dalla zona esponenziale con esponente gamma di 2.4,
il che gli permette di racchiudere una scala di valori che richiederebbe 16 bit in soli 8.
L'occhio umano distingue tre colori principali: il rosso, il verde ed il blu.
Molti display usano una combinazione additiva di questi tre colori per produrre tutti gli altri.
I colori principali delle stampanti sono invece il ciano, il magenta ed il giallo ma l'idea di base è la stessa.
questi pigmenti funzionano per via sottrattiva: ciascuno toglie un colore dalla luce riflessa.
Il ciano toglie il rosso, il magenta toglie il verde ed il giallo toglie il blu.
I video si possono rappresentare con le informazioni su rosso, verde e blu
ma è una soluzione atipica. L'occhio umano è più sensibile alla luminosità che al colore
e la codifica RGB distribuisce la luminosità dell'immagine sui tre canali colore.
Voglio dire che il canale rosso appare come una versione rossa dell'originale,
il canale verde come una versione verde dell'originale
ed il canale blu come una versione blu dell'originale.
Insomma, il bianco e nero moltiplicato per tre: no, non è efficiente.
Per questo motivo e per lo strano caso che la TV è nata in bianco e nero,
il video si rappresenta generalmente con un canale luma ad alta risoluzione,
che poi è il bianco e nero, con l'aggiunta di altri canali croma a minore risoluzione, i colori.
Il canale luma, detto Y, si ottiene tramite la somma pesata dei tre canali colore.
I canali croma U e V sono quindi calcolati sottraendo il segnale luma dal blu
e poi il luma dal rosso.
La terna di valori YUV, elaborata per il video digitale, andrebbe chiamata più correttamente Y'CbCr
ma la sua denominazione generica YUV è tuttavia molto usata
in tutti gli ambiti, analogici e digitali.
I canali croma U e V potrebbero usare la stessa risoluzione del canale luma Y
ma, dato che l'occhio umano è meno sensibile alla distribuzione spaziale del colore,
la risoluzione dei canali croma è generalmente ridotta a metà o anche un quarto, in orizzontale
e/o in verticale, senza una perdita di qualità apprezzabile.
Questa riduzione (subsampling) è stata applicata in ogni sua possibile variante
ma le più comuni oggi sono
4:4:4, che non subisce alcun subsampling,
4:2:2, in cui la risoluzione orizzontale dei canali U e V è dimezzata,
e 4:2:0, la più comune, in cui sia la risoluzione orizzontale sia quella verticale
dei canali croma è dimezzata, col risultato di avere piani U e V di dimensione un quarto di quello Y.
Usare le abbreviazioni 4:2:2, 4:2:0 o 4:1:1 o anche altre non descrive puntualmente i canali croma
e il loro subsampling perchè ci sono molti modi di intercalare le informazioni rispetto al canale luma
e, ancora una volta, molte varianti sono comunemente usate.
Per esempio il motion JPEG, il video MPEG-1, il video MPEG-2, DV, Theora e WebM usano
o possono usare il subsampling 4:2:0 ma piazzano i pixel dei canali croma in modi diversi.
Le codifiche motion JPEG, video MPEG-1, Theora e WebM piazzano i pixel croma
tra i pixel luma in orizzontale e in verticale.
L'MPEG-2 inserisce i pixel croma tra due linee, allineandoli orizzontalmente coi pixel luma.
La modalità interlacciata complica le cose, portando a strategie di piazzamento un po' strane.
Infine c'è il PAL-DV, che è sempre interlacciato, che inserisce i pixel croma
nelle stesse posizioni dei pixel luma in orizzontale
ma verticalmente alterna i canali croma, riga per riga.
E questo è sono il video 4:2:0. Potete scoprire da soli gli altri subsampling.
Una volta compresa l'idea di base... Beh, passiamo ad altro.
Nei file audio a più canali abbiamo inserito i campionamenti di ciascuno di essi in ordine.
I file video usano sia formati a pacchetti, che alternano i canali colore,
sia formati planari che racchiudono i pixel in diversi piani da sovrapporre
per realizzare l'intero fotogramma. Queste due tipologie raggruppano in realtà più di 50 formati
con più di una dozzina di uso comune. Ogni combinazione di subsampling croma e profondità di colore
porta con sé una organizzazione particolare, un nuovo formato di pixel. Per ciascun subsampling
ci sono poi varianti che si differenziano banalmente per l'ordine dei canali
o un impacchettamento dei dati un po' diverso perché fu utile in una particolare piattaforma
e talvolta perfino per semplice puntiglio.
I diversi formati di pixel si indicano con un nome unico detto codice FOURCC,
ne esistono numerosi ma non avrebbe senso fermarsi a descriverli tutti.
Google può darvi una mano ma attenti: per il video grezzo il codice FOURCC vi indica solo l'organizzazione
dei pixel ed il subsampling croma, ma nulla su dove stanno le informazioni, né sugli spazi colore.
Il video YV12, ad esempio, può piazzare le informazioni croma secondo le regole JPEG, MPEG-2 o DV
o anche secondo altre specifiche degli spazi colore YUV.
Questo sintetizza un po' il nostro breve (ed incompleto) viaggio nel video grezzo.
La buona notizia è che tutto questo basta per fare già un sacco di cose.
In moltissime situazioni un fotogramma di dati video è solo un fotogramma di dati video.
I dettagli diventano rilevanti quando parliamo di scrivere software ma per adesso
sono lieto di aver dato ai cordiali spettatori una ampia panoramica dei concetti più importanti.
Formati contenitori (e tutto il resto)
Quindi, abbiamo dati audio ed abbiamo dati video.
Ci resta da conoscere la parte più familiare ma non legata ai segnali, una parte di tecnologia
che gli sviluppatori conoscono bene. E ce n'è in abbondanza!
I blocchi di dati audio e video non hanno strutture esterne a contenerli
ma spesso mostrano una dimensione uniforme. Potremmo concatenarli insieme
secondo un ordine ben definito, anche se rigido, per conservarli o mandarli in streaming
e ci sono soluzioni che effettivamente lavorano così.
Tuttavia i frame compressi non sempre hanno una dimensione prevedibile
e per i nostri scopi sarebbe preferibile una certa flessibilità nei formati da stipare in un flusso dati.
Concatenando a casaccio dati di cui non conosciamo la dimensione, perdiamo i confini che separano i pacchetti
finendo col non riconoscere da quale stream provengono certi dati.
Una sequenza audio video deve avere una certa struttura per rimanere utilizzabile.
In aggiunta ai nostri dati, c'è bisogno anche dei parametri per l'audio PCM e per il video,
e probabilmente molti altri metadati che vogliamo far viaggiare insieme allo stream,
come etichette per l'audio o capitoli e sottotitoli per il video, per una visione più confortevole.
Ha dunque senso inserire i metadati (dati che riguardano i dati) nello stesso mezzo che viaggia.
Conservare ed organizzare dati informi e vari metadati è il compito del contenitore.
I contenitori organizzano i blocchi di dati,
alternano ed identificano gli stream multipli,
conservano le temporizzazioni e tutti i metadati importanti
per interpretare, scorrere, manipolare e presentare i contenuti multimediali.
In generale, ogni contenitore gestisce qualsiasi tipo di dati
e ogni tipo di dato può finire in ogni tipo di contenitore.
In conclusione...
In questi trenta minuti abbiamo presentato audio e video digitali,
visto un po' di storia, un po' di matematica e di ingegneria,
ma abbiamo appena grattato in superficie ed è già il momento di fermarci.
C'è davvero tanto altro di cui parlare, quindi spero vogliate seguirmi anche nel prossimo episodio.
Fino ad allora... alla salute!