Guida ai formati video e alla compressione DivX (con Xmpeg)
Fixer in A.D. 2003
_file/image001.jpg)
Introduzione
Primo
Capitolo: Gli Standard del Video
1.1 Gli Standard Televisivi
1.2 Le Pellicole
Cinematografiche
1.3 I Formati del DVD Video
Secondo
Capitolo: La Compressione Video MPEG-4
2.1 Processo
di Riduzione e Compressione dei dati
2.2 Tipologie di Frame
2.3 I Codec MPEG-4: DivX, il
Principe
Terzo
Capitolo: Da DVD a DivX
3.1 Il Decoding
3.2 La iDCT
3.3 Il Resize
Quarto
Capitolo: Xmpeg 4.5
4.1
Opzioni
Globali Progetto
4.2 Opzioni Formato
in Uscita
4.2.1 Settaggi del Codec
Audio
4.2.2 Settaggi del
Codificatore DivX
4.2.2.1 Postprocessing
Settings
4.3 Calcolo della Risoluzione
Ottimale: Regola Empirica di Fixer
INTRODUZIONE
Senza
scendere in dettagli superflui ed evitando informazioni inutili all’argomento,
parleremo degli standard, dei formati e della compressione video ed, in
particolare, del Codec (Codificatore-Decodificatore) MPEG-4 DivX
(ed il suo utilizzo tramite Xmpeg 4.5).
I GLI STANDARD DEL VIDEO
1.1 Gli Standard
Televisivi
Un qualsiasi filmato è costituito da molte
fotografie (fotogrammi o frame) messe in rapida sequenza. I classici televisori (ed
anche i monitor per PC) hanno un rapporto larghezza/altezza dell’immagine (aspect
ratio) 4:3. Ogni immagine trasmessa in TV è
costituita da 30 (o 29.97 per i dispositivi a colori) frame al
secondo (fps) se lo standard usato è NTSC (America del
Nord e Giappone) o 25 fps se lo standard è PAL (Europa, Africa
Orientale, India, Australia, Cina). Ogni singolo frame è interlacciato,
ovvero costituito da due ‘mezze immagini’ (half
frame o campi) che appaiono e si combinano molto velocemente
formando l’intero fotogramma; ogni half frame è costituito da righe
alternate, uno contenente le righe dispari, l’altro quelle pari.
+
_file/image005.jpg)
Campo ‘Dispari’ ß Campo ‘Pari’
_file/image007.jpg)
I recenti schermi panoramici hanno un rapporto
larghezza/altezza 16:9 ed una più ampia superfice
visiva orizzontale (1920 punti-immagine o pixel). Nelle TV 4:3 l’altezza dell’immagine è costituita da 480 linee
visibili (NTSC) o 576 (PAL).
Schermo panoramico TV tradizionale
_file/image011.jpg)
Ratio 1,33:1
_file/image012.jpg)
Ratio 1,85:1
_file/image013.jpg)
Ratio 2,35:1
_file/image014.jpg)
L’aspect ratio 1,33:1 è
ottimizzato ovviamente per TV 4:3 (4/3=1,33). I pixel sono disposti nel frame allo stesso
modo in cui sono visti.
Viene spontaneo domandarsi perché l’aspect ratio 1,33:1 viene pedissequamente e regolarmente visualizzato su TV 4:3 che ha risoluzione 720x576 (che corrisponde ad aspect ratio 5:4). La TV 4:3 ha pixel rettangolari con un rapporto larghezza/altezza pari a 0,9375:1; teoricamente la risoluzione (con pixel quadrati) dovrebbe essere 768x576 ma in concreto i pixel orizzontali sono 786*0,9375 = 720 pixel. Ciò accade solo per le televisioni tradizionali poiché gli schermi 16:9 ed i monitor PC hanno pixel quadrati.
_file/image015.gif)
I formati 1,85:1 (Flat) e 2,35:1 (CinemaScope o anche Panavision) sono quelli più usati per i DVD Video (e in ambito cinematografico) e sono ottimizzati per gli schermi 16:9. Questi, con poche eccezioni, hanno una disposizione particolare dei pixel nel fotogramma, fatta con una tecnica detta anamorfosi. D’ora in poi, verosimilmente, consideriamo anamorfici tutti i film ottimizzati per 16:9.
L’immagine orizzontale viene schiacciata per poter occupare tutti (o quasi) i pixel del fotogramma; ciò si traduce in una eccellente qualità in fase di lettura, quando l’immagine verrà nuovamente distesa e portata alle sue normali proporzioni.
Originario aspetto di un film anamorfico
_file/image016.jpg)
Lo stesso video ‘disteso’ su uno schermo panoramico
_file/image017.jpg)
_file/image018.jpg)
Oltre ai formati citati ne esistono altri due poco utilizzati: 1,66:1 (European) e 2,40:1 (variante del CinemaScope). Inoltre gli aspect ratio sono indicativi, quasi mai rispettati con assoluta precisione (moltissimi film 1,85:1 sono in realtà 1,78:1).
2.1 Processo di
Riduzione e Compressione dei dati
-
I dati ripetuti nello stesso frame: in un fotogramma pixel vicini hanno
caratteristiche di luminosità e colore simili. Il compressore sintetizzerà,
quindi, queste informazioni eliminando la ridondanza spaziale.
-
I dati ripetuti in fotogrammi adiacenti: in frame successivi
c’è buona possibilità, tranne se non si tratta di scene differenti o
particolarmente veloci, di trovare zone d’immagine con colori e luminosità
simili (o uguali), per cui il compressore video
accorperà questi dati, eliminando la ridondanza temporale.
-
I dati di componenti del filmato non
percepibili dall’occhio umano:
i valori di colore e
luminosità dell’immagine (che viene elaborata scomponendola in piccoli blocchi quadrati di
pixel, solitamente 16x16 o 8x8) vengono convertiti nei corrispondenti valori
di frequenza video attraverso una funzione matematica, la DTC
(quella inversa è detta iDTC). Poiché non sono percepibili
generalmente le alte frequenze nelle scene animate (ad es. spostamento
rapido di fumo, fronde, piccoli oggetti,..), queste
possono essere eliminate attraverso la quantizzazione; una
maggiore quantizzazione causerà più perdita di informazioni à peggiore qualità.
Dopo queste elisioni, i dati rimasti vengono compressi con procedimenti loseless (senza
perdita di dati).
2.2 Tipologie di Frame
Più key-frame in un video ne aumenteranno la qualità (e la dimensione), più b-frame
ne ridurranno l’ingombro.
Due fotogrammi
successivi archiviati in un file video non compresso
_file/image021.gif)
Due frame successivi archiviati in un file video compresso:
nel secondo è memorizzata solo la differente posizione della nuvola, più spostata verso destra
_file/image022.gif)
Il primo codec MPEG-4 che si
ricordi è stato MS MPEG-4 Codec, adoperato da Microsoft per la
trasmissione di video attraverso la rete, non utilizzabile per l’encoding
dall’utente. Questo fu modificato illegalmente e nacque il DivX 3.xx. Negli
ultimi anni sono stati prodotti altri compressori MPEG-4, più o meno aderenti
agli standard internazionali. Adoperandoli tutti per periodi abbastanza lunghi,
ragionevolmente si può affermare che globalmente in termini di qualità i
codec MPEG-4 migliori sono DivX e XviD, che primeggiano anche per
quantità di impostazioni. Entrambi hanno un ottimo post-processing (miglioramento
dell’immagine in fase di decodifica) ma in termini di velocità DivX è
più performante di XviD (che, peraltro, altera i colori del filmato originale).
Ne discende che il codec MPEG-4 ideale è DivX.
La versione 4 (legalmente sviluppata) del codec DivX era gratuita; con l’avvento della versione 5 sono state create tre distribuzioni: la prima (Free) non permette l’uso di alcune funzioni (ad es. i b-frame), la seconda (GAIN Bundle) offre tutte le funzioni ma installa un innocuo programma-spia, la terza (Pro) è a pagamento. Le ‘sperimentali’ versioni 5.0.0 e 5.0.1 hanno condotto alla robusta e performante release 5.0.2. La versione 5.0.3 ha introdotto profili standard, qualche leggero miglioramento e tanti bug (errori); la versione 5.0.4 ha aggiunto altri bug ed un meccanismo che consente all’utente (esperto, paziente ed interessato) di manipolare accuratamente la qualità di singole parti del filmato; la release 5.0.5 corregge un importante errore della versione precedente. Per tali considerazioni è unanime l’opinione di adoperare DivX versione 5.0.2 (userò la distribuzione GAIN Bundle per usufruire di tutti i settaggi). La DivXNetworks corre verso la realizzazione del fantomatico DivX 6 che dovrebbe offrire, a parità d’ingombro, una qualità doppia rispetto alle release attuali.
III DA DVD A DivX
Il Codec DivX si utilizza in tutti i casi in cui si vuole
stipare filmati di buona qualità in poco spazio, per archiviarli sui
diffusissimi CD o scambiarli attraverso Internet. Il processo di trasformazione
di un DVD Video in DivX richiede la conoscenza delle nozioni tecniche fin qui
spiegate. Il flusso video MPEG-2 viene convertito in
DivX tramite delle operazioni contigue così sintetizzabili:
_file/image023.gif)
Come è evidente, la
qualità del DivX dipenderà esclusivamente dal video originale, dalla qualità
degli strumenti atti a trasformarlo (decodificatore MPEG-2, iDCT, filtro di
ridimensionamento) e dai settaggi del codificatore. L’unico vincolo
che ci poniamo riguarda il metodo di rappresentazione del colore: utilizzeremo
la modalità YV12, che accelera la codifica e
non compromette la qualità.
L’occhio umano
non percepisce le variazioni di colore così come avverte quelle di luminosità per cui, invece di adoperare 24 bit per ogni pixel (formato RGB),
si può ‘approssimare’ l’informazione del colore utilizzando solo 12 bit per
pixel (formato YV12) senza intaccare la qualità video.
Considereremo quindi, tra i programmi più raffinati e
funzionanti, quelli che adoperano tale modalità. Tra
questi purtroppo scartiamo a priori Vidomi 0.4 che, in modalità YV12, non consente di impostare il filtro di
ridimensionamento (il resize e l’impostazione dei settaggi del Codec
DivX sono i passaggi più importanti).
3.1 Il Decoding
I tool che decodificano il flusso
video MPEG-2 (previa separazione da quello audio, demux) sono, come le
restanti funzioni che analizzeremo (iDCT, resize), per lo più compresi in
programmi più complessi che si occupano di più (a volte tutte) le fasi del
processo di codifica.
I Decoder MPEG-2 con più alta qualità sono:
1) Quello usato da XMPEG 4.5 (ottimizzazione del
mitico FlaskMPEG 0.6)
2) Quello usato da MPEG2AVI 0.1.6
by Iker Rodriguez (incluso in tanti all-in-one)
3) MPEG2Dec3 (per Avisynth)
|
Decoder MPEG-2 |
Qualità |
Velocità |
Note |
|
XMPEG 4.5 |
Eccellente |
Eccellente |
|
|
MPEG2AVI 0.1.6 |
Ottima |
Eccellente |
|
|
MPEG2Dec3 |
Buona |
Buona |
plugin per AviSynth |
Ragionevolmente nel prosieguo
della nostra analisi consideriamo solo XMPEG (con performance considerate
senza la visualizzazione del filmato in codifica) e MPEG2AVI.
3.2 La iDCT
Le iDCT usate dai due programmi sono:
XMPEG 4.5
|
IDCT |
Qualità |
Velocità |
|
Optimized
MMX |
Eccellente |
Eccellente |
|
MMX |
Eccellente |
Ottima |
|
Miha’s Fast |
Eccellente |
Ottima |
|
Miha’s Reference |
Eccellente |
Discreta |
|
Reference
|
Eccellente |
Mediocre |
|
Fast Integer |
Ottima |
Buona |
|
DVD2AVI
SSE/MMX |
Buona |
Eccellente |
|
AMD |
non testato |
non testato |
E’ semplice capire che con XMPEG va usato Optimized MMX iDCT; come seconda scelta abbiamo due iDCT lievemente
più lenti: MMX e Miha’s Fast.
MPEG2AVI 0.1.6 by Iker Rodriguez
|
IDCT |
Qualità |
Velocità |
|
32-bit
MMX |
Eccellente |
Ottima |
|
Miha’s Fast |
Eccellente |
Ottima |
|
SSE AP-922float |
Eccellente |
Buona |
|
64-bit
FPU |
Eccellente |
Discreta |
|
64-bit
D-FPU |
Eccellente |
Mediocre |
|
16-bit
Chen |
Ottima |
Eccellente |
|
16-bit
AAN |
non funzionante |
non funzionante |
|
AMD AP-922float |
non testato |
non testato |
Con MPEG2AVI vanno usati 32-bit MMX o Miha’s Fast
come iDCT.
3.3 Il Resize
Il
resize è quella operazione che permette di
rimpicciolire (ridurre la risoluzione) una immagine o ingrandirla (aumentare la
risoluzione); per ricrearla si riempie un’immagine vuota di dimensioni
opportune con dei pixel ricavati per interpolazione (calcolo di un punto
conoscendo le caratteristiche di quelli adiacenti) dall’immagine iniziale. Tale
ricampionamento si avvale di funzioni matematiche; nel nostro caso (escludendo
a priori nearest neighbour per la pessima precisione offerta) di interpolazione bilineare e bicubica.
Con
un numero di punti noti noi possiamo costruire una curva interpolante passante
per questi (interpolazione per punti) o una curva che si scosti poco da
questi, in modo da non perdere le informazioni in essi
contenute (interpolazione tra punti, smoothing). L’interpolazione
per punti usa funzioni lineari e funziona bene quando conosciamo
o consideriamo un numero basso di punti (fino a 9); col crescere del numero dei
punti risulta molto più efficiente usare le elaborate funzioni
polinomiali a tratti, tra cui spiccano le importanti cubiche.
Quando i punti sono in numero elevato non è
ragionevole forzare la funzione a passare esattamente per questi, ma è molto
più conveniente effettuare uno smoothing, cioè una ‘levigatura’, al fine
di minimizzare l'errore contenuto nei dati. E’ intuitivo che gli algoritmi (insiemi di regole
o direttive atte a fornire una risposta specifica ad uno o più dati in input) cubici compiono più calcoli
dei lineari, quindi sono più lenti. Quando l’immagine
deve essere ingradita, poiché devono essere inseriti punti completamente nuovi,
l’interpolazione bicubica (che usa 16 punti) è insostituibile. Viceversa, se
l’immagine deve essere ridotta moderatamente è
sufficiente la perequazione dei 4 pixel usati dal resize bilineare, mentre la
mediazione del resize bicubico risulta impropria, eccessiva ed altera le
caratteristiche del punto interpolato. Il resize bicubico torna ad
essere più qualitativo quando i rimpicciolimenti hanno fattore di scala
inferiore al 50% poiché s’adatta meglio quando il fine è stipare più dettagli possibili in poco spazio visuale.
Cito
– dalla guida di Paint Shop Pro (Jasc)
– “Ricampionamento bicubico… Utilizzare questo metodo quando si aumentano le
dimensioni di un’immagine.”. Inoltre: “Ricampionamento bilineare… Utilizzare
questo metodo quando si riducono immagini …”. La teoria è suffragata
dall’esperienza. Come si può notare qui in basso, l’immagine rimpicciolita
moderatamente con il ricampionamento bilineare ha qualità superiore rispetto
alla stessa riduzione fatta con il ricampionamento bicubico; lo stesso si verifica usando Adobe PhotoShop, con differenze
però inferiori. Viceversa, la riduzione forte di un frame esalta la qualità del
resize bicubico.
Riduzione moderata con resize
bilineare
Riduzione moderata con resize bicubico
Frame ridotto al 40%
con resize bilineare
Frame ridotto al 40% con resize bicubico
_file/image027.jpg)
Vediamo come funziona il metodo bilineare:
dato un triangolo con vertici P0, P1, P2, calcoliamo il valore Pa per interpolazione lineare
tra i valori P0 e P1, ed il valore Pb per interpolazione lineare tra i valori P1 e P2. Calcoliamo quindi il
valore Ps per interpolazione lineare
tra i valori Pa e
Pb.
Per
la riduzione moderata dell’immagine è più efficiente un particolare metodo
incrementale semplificato (che usa solo aritmetica intera): l’algoritmo
di Bresenham (o Bressenham). Partendo dal punto iniziale di una linea (uno
dei due estremi) si incrementa ad ogni passo lo
spostamento lungo la stessa fino al raggiungimento del punto
finale. Dopo
avere disegnato un pixel, l’algoritmo sceglie tra i suoi 8 vicini quale
‘accendere’ in base all’equazione della retta. La semplicità computazionale e l’uso della
sola aritmetica intera garantiscono ottime prestazioni in termini di velocità
ed è stata ampiamente dimostrata la sua precisione, soprattutto per la
definizione di segmenti ed anche circonferenze.
E’ qui schematizzato il funzionamento di un generico algoritmo incrementale
_file/image029.gif)
Per
un calcolo (grossolano) del fattore di scala:
_file/image031.gif)
Xmpeg
adopera veloci resize bilineari e lenti resize bicubici smoothed
(levigati). Sono abbozzate le didascalie riguardanti la
qualità di ogni singolo resize poiché, come visto, la ‘very good quality’ degli
algoritmi bicubici esiste solo per fattori di scala inferiori al 50%, la ‘very
good quality’ del filtro Bressenham è reale solo per riduzioni fino al 50%.
_file/image033.jpg)
Nel dettaglio:
XMPEG 4.5
|
Resize |
Velocità |
Qualità
fatt. scala > 0.5 |
Qualità
fatt. scala < 0.5 |
|
Bressenham |
Eccellente |
Eccellente |
Buona |
|
SSE Bicubic |
Buona |
Buona |
Eccellente |
|
MMX Bilinear |
Ottima |
Ottima |
Buona |
|
Bicubic |
Mediocre |
Buona |
Eccellente |
|
Bilinear |
Discreta |
Ottima |
Buona |
|
Pseudo Bicubic |
Buona |
Mediocre |
Mediocre |
Ovviamente i resize che si prestano al nostro uso sono Bressenham
per piccole/medie riduzioni, SSE Bicubic per forti rimpicciolimenti
(fattore di scala < 0.5).
MPEG2AVI sfortunatamente adopera solo il resize Bressenham
(con velocità e qualità quasi uguali a quello utilizzato da Xmpeg), risultando inadatto per riduzioni importanti; per questo
motivo, adesso, si può affermare che Xmpeg risulta essere il miglior
programma per convertire MPEG-2 in DivX. Elabora anche l’audio in un’unica
procedura.
Resta inteso che MPEG2AVI rimane
uno dei migliori programmi MPEG-1/2 à
AVI mai fatti.
E’ ottimamente implementato nel potente quanto facile all-in-one
SimpleDivX 1.1b.
IV XMPEG 4.5
La seguente versione prelevabile di Xmpeg dispone di un utile plugin che permette il concatenamento
dei file da codificare. Per effettuare l’encoding
si presume che nel sistema siano già installati correttamente i codec DivX
5.0.2 e Radium MP3;
quest’ultimo è una versione ‘particolare’ del codec della Fraunhofer e serve ad
Xmpeg per codificare il flusso audio in ‘MP3’ a medi ed alti bitrate. Non mi
occuperò della creazione di filmati con audio ‘AC3’ (ovvero l’ingombrante audio
multicanale del DVD Video) perché poco utile ed interessante per la maggior
parte degli utenti (me compreso).
Il DVD contiene essenzialmente file con estensione ‘IFO’
(che possiede l’indice dei video, le informazioni di gestione della
navigazione, delle lingue, dei sottotitoli, etc..) e
file ‘VOB’ (Video OBject) che incorporano un flusso video MPEG-2 ed uno o più
flussi audio (solitamente AC3 Dolby Digital o PCM, non compresso, per i video
musicali). Genericamente ogni file audio/video è un ‘contenitore’
nel quale vanno inseriti un flusso video ed uno o più simultanei flussi audio.
Ogni tipologia di ‘contenitore’ audio/video (VOB, AVI, OGM) ha proprie
caratteristiche tecniche e può ospitare solo determinati tipi di flussi video e
audio. Il ‘contenitore AVI’ (Audio Video
Interleave) è quello maggiormente utilizzato per la sua versatilità: può
ospitare tantissimi tipi di video (Indeo, Cinepak, RLE, M-JPEG, 3ivX, XviD,
DivX, ..) e di audio (GSM, ADPCM, Voxware, L&H, WMA, AC3, MP3, ..). Il
video DivX può essere contenuto, oltre che in un ‘AVI’,
anche in un ‘MP4’ (nel quale deve essere abbinato ad un flusso audio MPEG-4
AAC). Il DVD Video ha una chiave di protezione che si trova attraverso i decrypter,
programmi in grado poi di copiare i ‘VOB’ leggibili su disco rigido (HD).
Riassumendo le impostazioni da inserire
-
iDCT: Optimized MMX (seconda scelta ‘MMX’ o ‘Miha’s Fast’).
-
Resize: Bressenham se il fattore di scala >
0.5, SSE Bicubic se è minore.
4.1
Opzioni Globali Progetto
All’apertura del
programma apparirà la seguente schermata
_file/image034.gif)
Dal menu ‘File’ scegliete ‘Apri’ per selezionare i file ‘VOB’ da codificare
_file/image035.gif)
Selezionando il primo ‘VOB’ della sequenza il programma vi accoderà
anche i seguenti.
Dopo ciò, dal menu ‘Opzioni’
selezioniamo ‘Opzioni Globali Progetto’ per impostare i nostri
parametri.
_file/image036.gif)
Nel pannello ‘Video’ scegliamo la ‘Dimensione
della cornice’, ovvero larghezza e altezza del filmato che creeremo.
Lasciamo invariate le dimensioni classiche del DVD Video, cioè
720x576 ed il ‘Tempo Base’ originario (25 fps se è PAL, standard
europeo). Scegliamo il nostro iDCT ‘Optimized MMX’.
Il ‘Deinterlace’ va usato se nel nostro filmato
appaiono gli effetti di una non perfetta sincronizzazione dei campi ‘odd’
ed ‘even’, come in questo caso
_file/image038.jpg)
Il ‘Deinterlace’ di Xmpeg
non eccelle in efficienza. Quando si presenta un film con questo tipo di problema conviene caldamente cambiar strategia ed adoperare Avisynth
(con MPEG2Dec3.dll) o VirtualDubMod (versione modificata del mitico VirtualDub
che legge i ‘VOB’) poiché dispongono dei migliori filtri deinterlace esistenti
(che richiedono un resize bicubico antecedente o successivo).
_file/image039.gif)
Nel pannello ‘Audio’ scegliamo ‘Decodifica audio’
per convertire il flusso ‘AC3’ in audio ‘MP3’, che verrà poi automaticamente
legato (mux) al flusso video in un unico ‘AVI’. Impostando la ‘Frequenza
di campionamento’ a ‘44100 Hz’ si otterrà il duplice vantaggio di
avere il sonoro compatibile anche con vecchie schede audio e di ottenere una
maggior qualità poichè i bit ‘risparmiati’ per
campionare le frequenze non udibili (44100 Hz – 48000 Hz) saranno dedicati a
frequenze sensibili. Se si sceglie ‘Copia
direttamente il flusso’ viene salvato separatamente l’audio
multicanale.
_file/image040.gif)
Nel pannello ‘Post trattamento’ selezioniamo il formato colore ‘YV12’;
in ‘Aspect ratio’: ‘Mantieni
rapporto altezza/larghezza’ deve essere selezionato; il valore ‘Input’
è inerente al formato originario del DVD.‘Output’ dipende dallo schermo
sul quale dobbiamo vedere il video; considerando che la maggior parte dei DivX
sono visti su monitor o TV tradizionali, io suggerirei coerentemente di
selezionare ‘Output’ 4:3’. In tal modo non si modificano i film 1,33:1, mentre per i film 1,85:1 e 2,35:1 anamorfici si crea un
video letterbox, visualizzabile correttamente su TV 4:3, su monitor con un
lievissimo allungamento di personaggi ed oggetti (~ 6%) rettificabile con un
buon lettore (es. Zoom Player).
Tutta l’operazione di resize si farà attraverso il ‘Pannello in uscita’. Ci apparirà questa
interfaccia
_file/image041.gif)
Il valore ‘AR input’ resta invariato mentre l’aspect
ratio ‘output’ viene modificato variando ‘Altezza’ e ‘Larghezza’
(nel campo ‘Dimensioni di uscita’) che dovranno essere nominalmente
multiple di 16 pixel (poiché 16x16 o 8x8 pixel sono le dimensioni di ogni
blocco elaborabile in cui viene scomposta l’immagine). Ne consegue che l’aspect
ratio d’output quasi mai sarà esattamente uguale a quello prefissato (1,250), per cui ci accontenteremo del valore più prossimo. Xmpeg,
con i film ottimizzati per 16:9, compie
automaticamente lo ‘schiacciamento’ verticale ed aggiunge le mattes (che
si aggiungono alle eventuali preesistenti) per ricreare la giusta proporzione
1,25:1 del widescreen letterbox, quindi non conosciamo esattamente le misure
reali del fotogramma ridimensionato privo di bande nere e non sappiamo, quindi,
il reale rimpicciolimento. Nella tabella seguente sono
esposti la grandezza del frame generata da Xmpeg ed il reale fattore di
scala del rimpicciolimento (se > 50% dovrà essere usato il resize
Bressenham, se < 50% SSE Bicubic).
|
Dimensioni Frame |
Input
4:3 - Dimensioni in percentuale rispetto
all’originale |
Input
16:9 Dimensioni in percentuale rispetto
all’originale |
|
720x576 |
100% |
70% |
|
704x560 |
95% |
68% |
|
688x544 |
90% |
64% |
|
656x528 |
83% |
58% |
|
640x512 |
79% |
55% |
|
624x496 |
74% |
53% |
|
608x480 |
70% |
50% |
|
576x464 |
64% |
45% |
|
560x448 |
60% |
43% |
|
544x432 |
56% |
40% |
|
528x416 |
53% |
38% |
|
496x400 |
48% |
33% |
|
480x384 |
44% |
32% |
E’ vivamente suggerito ritagliare (‘croppare’)
l’immagine per eliminare le eventuali bande nere che, in termini di spazio,
occupano mediamente circa il 7% del filmato. Per farlo bisogna selezionare la
voce ‘Ritaglio’ (posta sotto le ‘Dimensioni di uscita’)
e, muovendo le righe di contorno con il mouse, delimitare la parte dell’immagine
da codificare.
_file/image043.jpg)
L’immagine senza bande nere è la base per il calcolo del
bitrate ideale, che tratteremo tra breve.
_file/image044.gif)
Nel pannello ‘Files’ si sceglie la cartella dove
mettere il filmato codificato e, se si è deciso di copiare direttamente il
flusso audio (AC3), la cartella dove riporlo.
_file/image045.gif)
Nel pannello ‘Generali’ si può decidere, nel campo ‘Tempo
di Compilazione’ quanti secondi o frame codificare
(se integralmente il film si seleziona ‘Compila l’intero file’). Nel
campo ‘DivX 4 2-Passes encoding (VBR)’ si attiva ‘2nd Pass Enabled
(for DivX4)’ se si decide di compiere l’encoding a doppia passata, che come
vedremo, è quello da usare quasi sempre. Accanto c’è ‘2nd
Pass Plugin Settings’, tramite il quale saranno impostati i parametri da
applicare per il secondo passaggio della codifica; sono uguali a quelli scelti
per la prima passata con la sola eccezione della voce ‘2-pass, second pass’
nel campo ‘Variable bitrate mode’ del pannello ‘DivX Codec’ del
Compressore DivX, che vedremo tra pochi righi.
4.2 Opzioni Formato in Uscita
Chiuse le ‘Opzioni
Globali Progetto’, apriamo dal menu ‘Opzioni’ di Xmpeg ‘Opzioni
formato in uscita’. Apparirà la seguente schermata
_file/image046.gif)
4.2.1 Settaggi del Codec Audio
Nel campo ‘Audio Codec’ selezioniamo MPEG Layer-3.
Il formato audio compresso (con sistemi simili a quelli visti per il video) ‘MP3’ ha un’ottima qualità, è attualmente il più comodo da
usare, affidabile e compatibile: il Windows Media Audio (‘WMA’)
per bitrate tra 96 e 192 kpbs ha medesima o peggiore qualità e dà problemi di
sincronizzazione, il Vorbis ‘OGG’ ha qualità migliore ma è
scarsamente supportato (con anche il suo ‘contenitore OGM’), ‘AAC’
(audio MPEG-4) ha qualità superiore ma è ‘work in progress’, quindi per nulla
considerato (nonostante sia ufficialmente il successore di ‘MP3’). I migliori
codificatori ‘MP3’ sono Fraunhofer (da cui deriva Radium) e Lame,
con qualità quasi identica sotto i 192 kbps. Il codec Fraunhofer ha un bug
(errore) che Xmpeg corregge selezionando la voce ‘Compensate Fraunhofer-IIS’s
MP3 codec bugs’; suggerisco inoltre di attivare ‘High quality
compression’, che migliora lievemente la qualità rallentando minimamente la
codifica.
L’audio ‘MP3’ a 96 kbps ha qualità ‘radiofonica’, a 112
kbps una buona qualità per 44.100 Hz, a 128 kbps una buona qualità per 48.000
Hz; naturalmente gli audiofili s’accontenteranno di un bitrate non inferiore a
160 kbps o adopereranno il flusso audio originale del DVD Video. Naturalmente se abbiamo scelto di copiare direttamente il flusso
‘AC3’, per poi unirlo (mux) al video con VirtualDubMod (che
‘lega’ anche ‘MP3’ e ‘WAV’) o codificarlo separatamente con BeSweet (il
miglior convertitore VOB/AC3 à MP3/OGG/WAV/MP2), queste impostazioni saranno
ignorate.
4.2.2 Settaggi del Codificatore
DivX
Selezionando nel campo ‘Video Codec’ il DivX Pro 5.0.2 ci apparirà questa schermata
_file/image047.gif)
Questa è la schermata principale del codec, nella quale si impostano i parametri principali relativi alla codifica:
Bitrate (quantità di bit dedicata ad ogni secondo di video): in realtà esso è variabile. Questo valore è solo indicativo per il compressore e teoricamente, considerando l’intero filmato, dovrebbe essere il valore medio impiegato per ogni secondo. Per i fondamenti teorici prima esposti è naturale dire che scene animate richiederanno più informazioni rispetto a quelle statiche, così come le scene luminose rispetto a quelle scure. Considerando che in un filmato vi sia un’equa distribuzione di scene animate/statiche e luminose/scure, alla fine il video dovrebbe avere l’ingombro predeterminato.
Per determinare lo spazio occupato in MegaByte di un filmato, conoscendo la durata dello stesso ed il bitrate, è sufficiente usare la seguente formula:
MegaByte
= [(Bitrate + bitrate audio) / 138] * N.ro Minuti
Quindi per conoscere il bitrate da adoperare per il video, fissando la quantità di MegaByte e conoscendo quanti minuti dura il filmato:
Bitrate
= [(MegaByte / N.ro Minuti)
* 138] – bitrate audio
Per
comodità si può usare DivX Bitrate Calculator
2.4 (prelevabile direttamente), una stupenda calcolatrice per bitrate e
proporzioni video.
Variable bitrate mode: il DivX contempla tre modalità di codifica :
- 1-pass: il video è processato una sola volta; il bitrate impostato, come detto, è orientativo e la dimensione finale del video non sempre è uguale a quello stimata.
- 2-pass: il video è processato due volte: durante il primo passaggio il codec analizza la struttura del video (scene luminose/scure e dinamicità) e può decidere con estrema precisione come e dove distribuire le informazioni, ottimizzando la qualità e rispettando il bitrate dato; il secondo passo scrive il file video compresso.
Use
MV file (in Two-pass encoding log
files): come facilmente desumibile, questo ‘log file’ (file che conserva informazioni)
è adoperato quando si sceglie di codificare col ‘2-pass’ e viene creato
durante il primo passaggio (tiene memoria della complessità di ogni frame).
Se si seleziona questa opzione non occorrerà che il secondo
passaggio ricalcoli la complessità delle immagini, risparmiando tempo nella
codifica. Il ‘file MV’ (motion vector)
deve essere riscritto solo se tra primo e secondo passaggio vengono
modificati i parametri del codec (eccetto il ‘bitrate’ ed il ‘pre processing’,
che analizzeremo tra poco).
- 1-Pass Quality Based Mode: è la modalità più veloce tra le
tre; il video è processato una sola volta adoperando la stessa
compressione per ogni frame, in accordo con il quantizer impostato. In
altri termini ogni frame del video avrà la stessa qualità.
E’ quindi ovvio usare la modalità
‘2-pass’ per archiviare video in uno dato spazio e la modalità ‘1-pass quality based’ se
non si è vincolati allo spazio da occupare.
MPEG4 Tools:
- Use Quarter Pixel: migliora la precisione nel
calcolo degli spostamenti fino ad ¼ di pixel; rallenta molto la codifica,
appesantisce la decodifica e se si adopera a bassi/medi bitrate peggiora la
qualità poiché devono essere sintetizzate molto le tante informazioni
dettagliate a disposizione, col risultato di ottenere degli artefatti.
- Use GMC (Global Motion Compensation): migliora la qualità in scene
complesse con ‘zooming’ (ingrandimenti) e ‘panning’
(panoramiche); rallenta poco la codifica per cui, se si è certi che vi siano
molte scene di questo tipo nel video, può essere utilizzato senza problema.
- Use Bidirectional Encoding: consente l’uso dei b-frame
che, a parità di spazio occupato, garantiscono una qualità del filmato
superiore; rallenta la codifica ma vale quasi sempre
la pena utilizzarlo (non serve se non interessa lo spazio che sarà occupato dal
video).
E’
bene usare il ‘Bidirectional Encoding’,
sconsigliato il ‘Quarter Pixel’.
_file/image048.gif)
Nel pannello ‘General Parameters’ sono presenti settaggi più
specifici riguardanti l’elaborazione del filmato. Il ‘Crop’ ed il ‘Resize’ conviene farli, per più motivi,
tramite il programma di editing che si adopera. Il ‘Pre Processing Source’, che non appesantisce molto la
compressione, risulta utile qualora il filmato abbia delle imperfezioni (graffi,
punti, macchie) che saranno parzialmente o totalmente eliminate.
Psychovisual Enhancements: i ‘miglioramenti psicovisuali’ poggiano sulla consapevolezza che in una scena
l’occhio umano ‘cade’ su zone dell’immagine, oggetti o personaggi con
particolari caratteristiche (ad es. primi piani). Selezionando questa funzione
la codifica rallenterà pochissimo ed il DivX sottrarrà dei bit alle parti meno
‘osservate’, per poi aggiungerli alle zone più sensibili all’occhio umano. E’
consigliato impostare, se si vuole usare, Psychovisual Enhancements ‘Light’ (massimo ‘Normal’) per evitare il
degrado dell’immagine e/o artefatti.
Max Keyframes Interval: Come detto, il keyframe (fotogramma chiave) è l’immagine dalla quale vengono poi calcolate le differenze (archiviate nei frame successivi). Il DivX automaticamente pone un keyframe all’inizio di ogni nuova scena. Può succedere che per la staticità della stessa non vengano più memorizzati keyframe, costringendo il codec a numerosi p-frame o b-frame, il cui abuso può portare ad una caduta della qualità (poiché questi contengono meno informazioni rispetto al keyframe); in tal caso possiamo arbitrariamente inserire un keyframe ogni qual volta, per un numero determinato di fotogrammi consecutivi, non ne sia presente uno. Come soluzione di compromesso è suggerito collocare un keyframe minimo ogni 20 secondi (pari a 500 fotogrammi se il video è PAL). La ‘sensibilità’ per individuare una scena nuova è data dal valore di ‘Scene change threshold’ (il settaggio ottimale è quello predefinito, ovvero ‘50%’).
Source
Interlace: Consente di selezionare il
modo di visualizzazione del video originario, solitamente progressivo (interlacciato
se la sorgente è una immagine TV, da telecamera,..).
_file/image049.gif)
Nel pannello ‘Advanced Parameters’ è possibile impostare il ‘Maximum quantizer’ ed il ‘Minimum quantizer’ (i quantizzatori discussi sopra). Il DivX farà oscillare oculatamente la qualità tra i quantizzatori minimo e massimo, secondo le caratteristiche del video da comprimere. I valori impostati di default nelle opzioni di questo pannello sono quelli che danno migliori risultati in ogni occasione (nel caso della codifica ‘1-pass quality based’ sarà impostato un solo quantizer col quale sarà compresso il filmato, quindi con qualità costante). ‘RC averaging period, frames’ “controlla quanto velocemente il rate control non considera più i valori prima utilizzati”, ovvero “il numero di fotogrammi che il codec considera per allinearsi al bitrate impostato”. L’autore afferma che valori più alti migliorano le scene veloci. ‘Performance/quality’ regola la velocità d’encoding, inversamente proporzionale alla qualità. Si deve incrementare la velocità solo nel caso in cui si debba acquisire direttamente in DivX e non si disponga di un PC veloce. Per ottenere la massima qualità adoperare sempre ‘slowest’.
4.2.2.1 Postprocessing Settings
Sono
i settaggi riguardanti la decodifica del filmato compresso (visione). Vi si può
accedere da qualsiasi lettore multimediale (Proprietà
dei Filtri).
_file/image051.jpg)
Nella schermata principale troviamo due setteggi: ‘Film
Effect’ applica al
video un effetto che rende la visione più ‘cinematografica’.
Quality Level migliora l’immagine aggiungendo
particolari filtri:
passando da ‘MIN’ a ‘MAX’, prima viene inserito il ‘De-blocking’ che sfuma i contorni dei
macro-blocchi (in cui è scomposta ed elaborata l’immagine); successivamente
(livello 5 e 6) viene inserito il ‘De-ringing’ che tende ad eliminare il disturbo granuloso sui contorni
dettagliati di oggetti o persone, aumentando ancor più la qualità. Il valore
consigliato del ‘Quality Level’ è quindi ‘MAX’
(level 6) o comunque il più alto che garantisca fluidità al filmato nel
caso in cui il PC sia non velocissimo.
_file/image053.jpg)
Nel pannello ‘Quality settings’ ci sono quattro importanti quanto sottovalutate impostazioni,
tralasciando ‘Aspect Ratio’
(Maintain Original), settabile comodamente dal lettore.
Smooth Playback: se attivato saranno utilizzate più risorse per la
decodifica dei b-frame con uno scorrimento visuale più
fluido; il suo uso è quindi raccomandato.
YUV Extended Mode:
se selezionato il
codec tenterà d’adoperare per la decodifica la veloce
modalità colore YV12; deve essere sempre attivato.
Overlay
Extended Mode: se attivato verrà usato l’overlay (sfumatura) hardware della scheda video
anziché l’overlay software (lento perché richiede molti calcoli del
processore); quindi va usato sempre.
Double
Buffering: selezionandolo verrà usato un doppio buffer (memoria tampone nella
quale vengono conservate informazioni) che favorisce la fluidità del filmato; è
bene attivare sempre il Double Buffering.
Nella
tabella che segue riepilogo sinotticamente i settaggi da operare (quelli in
rosso sono i parametri più rilevanti):
|
Settaggio Encoder |
Pannello |
Consigliato |
Note |
|
Variab. Bitrate Mode |
DivX Codec |
2-pass |
Se non importa lo spazio 1-pass qb |
|
Use MV File |
DivX Codec |
ON |
Funziona
solo con il 2-pass |
|
Use Quarter Pel |
DivX Codec |
OFF |
|
|
Use GMC |
DivX
Codec |
OFF |
Se ci sono ‘zoom’ e ‘panoramiche’ ON |
|
Use Bidirect. Encod. |
DivX Codec |
ON |
|
|
Psychovisual
Enhanc. |
General Par. |
OFF o Light |
Mai
superare ‘Normal’, pena degrado |
|
Max Keyframes Inter. |
General
Par. |
500
|
Se
il video è NTSC: ‘600’ |
|
Scene change thresh. |
General
Par. |
50% |
|
|
TUTTI |
Advanced
Par. |
PREDEFINITI |
Alcuni
esperti usano ½ dei frame totali |
|
Settaggio Decoder |
Pannello |
Consigliato |
Note |
|
Quality
Level |
Postprocessing |
Level
6 |
Se il PC è lento il livello max possibile |
|
TUTTI |
Quality Sett. |
ON |
Lasciare
‘Aspect Ratio’ invariato |
4.3
Calcolo della Risoluzione Ottimale: Regola Empirica di
Fixer
E' intuitivo che bisogna impiegare risoluzioni proporzionali al bitrate usato (più punti-immagine stipati à più dati da immagazzinare per frame). Ne discende che quanti più minuti bisogna inserire in un determinato spazio più bisogna ridurre il bitrate, e quindi la risoluzione. Il codec DivX utilizza in fase di decodifica (visione), quando è ingrandita l'immagine per riempire lo schermo, una tecnica, detta overlay (sfumatura), che attenua la differenza di qualità tra risoluzioni non molto diverse ed offre una buona visione anche a medie risoluzioni. Per non perdere molti dettagli e non visualizzare artefatti è sconsigliato scendere sotto i 528x*** pixel.
Illustrerò come, con il ‘Bilinear Encoding’ attivo, calcolare il bitrate idoneo ad ogni risoluzione (con il 2-pass) e, di converso, sapremo quale risoluzione usare dopo aver stabilito il bitrate. La risoluzione finale del film, privato delle bande nere (croppato), è l’unico riferimento valido per questo calcolo. Per ogni risoluzione, il bitrate oltre il quale la qualità di un film (mediamente animato e con un giusto equilibrio di scene luminose e scure) non migliora (considerando video più lunghi di 20 minuti) è dato dalla formula empirica
(Risoluz.Orizz.Crop.
* Risoluz.Vert.Crop.)/150
(Regola Empirica Fixer)
Film con prevalenti scene scure e/o poco animate risulteranno avere una qualità lievemente superiore;
viceversa, se viene compresso un video particolarmente dinamico e/o con molte
scene luminose la qualità sarà solo impercettibilmente più bassa, per la
capacità della impareggiabile modalità 2-pass di bilanciare egregiamente
il bitrate in modo da non penalizzare le parti sensibili. Questa formula è
valida per tutte le versioni DivX 5.0.X.
Se decidiamo di voler ingombrare un certo
spazio prima calcoleremo il bitrate audio e video che ci consente ciò
(con la formula esposta qualche paragrafo più su o con DivX Bitrate
Calculator), poi imposteremo la risoluzione adeguata al bitrate. Se non troviamo una risoluzione maggiore di 528*xxx per il bitrate
video calcolato o possiamo decidere di aumentare il rimpicciolimento
(sconsigliato) o aumentiamo lo spazio da occupare.
Esempio: ho un film di 94 minuti ottimizzato per 16:9 che voglio inserire in un solo CD (700 Mb). Per
archiviare un DivX su un solo CD devo usare un bitrate audio non eccessivamente
alto per il flusso ‘MP3’, 96 o 112 kbps. Opto per
quest’ultimo. Con DivX Bitrate Calculator trovo il bitrate video: 929
kbps.
Seguendo la tabella dei ridimensionamenti illustrata nel
paragrafo 4.1 e ‘croppando’ l’immagine mi trovo
le risoluzioni del film e per ognuna di esse quale bitrate soddisfa i requisiti
di qualità della Regola Empirica di Fixer:
Parto dalla risoluzione 720x576 (scale factor = 70%, quindi
uso resize Bressenham): croppata dà una immagine
priva di bande nere 720x318, indi il bitrate idoneo per questa è: (720x318)/150
= 1526 kbps..troppo alto.
……
Risoluzione 560x448 (scale factor = 43%, quindi uso resize SEE Bicubic):
croppata dà una immagine senza mattes 560x248
il cui bitrate ideale è 926 kbps, il più vicino per difetto a quello stabilito
(929 kbps)..userò questo.
Non sceglieremo il bitrate più vicino per eccesso
altrimenti otterremo un filmato che ingombra più spazio del riservatogli.
Se il film durasse 115 minuti il
bitrate che dovrei utilizzare sarebbe 739 kbps, troppo basso per qualsiasi
risoluzione accettabile, quindi adopererò due CD con risoluzione 720x576 e
bitrate video 1526 kbps.
Tutte le formule illustrate in questa guida sostituiscono quelle adoperate nelle versioni precedenti del
programma da me scritto de DivX.
Fixer in A.D. 2003