Guida alla compressione DivX (versione 1.40)

Fixer in A.D. 2003

[Home Page]

 

 

 

 

 

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

Quinto Capitolo - 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.   

 

   +  

                                Campo ‘Dispari’                          ß                          Campo ‘Pari’

 

 

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

                        

 

1.2 Le Pellicole Cinematografiche

 

Per i film, in ambito cinematografico, sono usate pellicole da 35 mm (più di rado 70 mm) con aspect ratio 4:3 ad altissima risoluzione (nell’ordine dei 6000 pixel orizzontali), sulle quali sono impressi 24 fotogrammi al secondo. Il fotogramma della pellicola può ospitare video con differenti proporzioni, soprattutto 1,66:1 (‘Panoramico’ non anamorfico; usato per produzioni economiche, per lo più film italiani), 1,85:1 (‘Panoramico’ non anamorfico, per buone produzioni), 2,35:1 (‘CinemaScope’ anamorfico per film d’alto livello, per lo più americani). Questi ultimi hanno una disposizione particolare dei pixel nel fotogramma, fatta con una tecnica detta, appunto, anamorfosi: 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 con la lente deanamorfizzante.

 

Originario aspetto di un film anamorfico

 

 

 

 

Lo stesso video anamorfico ‘disteso’

 

La pellicola è percorsa lateralmente da due piste audio (o anche più) parallele, una analogica e l’altra digitale. In fase di lettura, tramite un processore del suono, viene smistato l’audio in sala su due o più canali (generalmente fino a dieci, secondo le potenzialità del processore) generando così l’audio Dolby Digital.

Non bisogna confondere l’aspect ratio degli schermi (4:3 , 16:9) con quello dei filmati (1,85:1 , 2,35:1 …).

Per vedere su TV NTSC un film girato a 24 fps bisogna modificare il suo framerate in 30 fps. Questo processo si chiama 3:2 pulldown e viene effettuato tramite una macchina chiamata Telecine che crea, con un particolare metodo, 4 fps aggiuntivi; per renderlo correttamente visibile su TV PAL, invece, il Telecine velocizza solo lievemente lo scorrimento video (2:2 pulldown) per raggiungere i 25 fps. Il procedimento inverso (NTSC/PAL à FILM) per creare video a 24 fps è detto Inverse Telecine. Se un filmato NTSC a 30 fps viene letto da un moderno dispositivo a 29.97 fps lo sfasamento induce l’Inverse Telecine a produrre un video a 23.976 fps. Nel prosieguo della nostra trattazione considereremo solo lo standard televisivo europeo PAL.

 

1.3 I Formati del DVD Video

 

Con l’avvento dei computer i mixer (miscelatori di immagini analogiche) sono stati sostituiti dai programmi di editing ed i supporti analogici, per lo più nastri, hanno lasciato il posto a CD e DVD, sui quali l’informazione video è ‘scritta’ in bit. Il video occupa una quantità immane di spazio in termini di MegaByte (1048576 bit) per cui si è pensato di creare metodi per ridurre la quantità di spazio occupata dai filmati. Il Motion Picture Experts Group (MPEG) ha creato sistemi di compressione video lossy (con perdita di dati rispetto all’originale) per inserire sempre più minuti di filmato, con qualità sempre maggiore, in spazi predefiniti come CD e DVD. Nacque così l’MPEG-1, che consentiva di mettere su un CD (650 MB) un’ora di filmato con qualità paragonabile ad una videocassetta VHS. Successivamente è nato MPEG-2, progettato per le trasmissioni televisive e adoperato per archiviare film su DVD (DVD Video), che offre qualità ed ingombri superiori rispetto al suo predecessore.

Con i computer è risultato coerente abbandonare la macchinosa modalità interlacciata per visualizzare un filmato, ricorrendo al più pratico sistema progressivo: ogni frame è visualizzato interamente tutto in una volta; i filmati progressivi sono gestibili sia da MPEG-2 che dal suo successore MPEG-4.   

Il frame del DVD Video ha risoluzione (numero di pixel per unità) 720x576. Come per le pellicole cinematografiche, seppur con qualche differenza, il fotogramma può contenere video con diversi aspect ratio: prevalentemente 1,85:1 (Flat), 1,33:1 , ma soprattutto 2,35:1 (CinemaScope o anche Panavision), più difficilmente 1,66:1.

 

Ratio 1,33:1

 

Ratio 1,85:1

 

 

Ratio 2,35:1

 

Ogni DVD Video è ottimizzato per essere visualizzato su TV classica (4:3) o su schermo panoramico (16:9). 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.

 

I formati 1,85:1 e 2,35:1 , quasi tutti anamorfici, sono quelli più usati per il DVD Video (che ha pixel rettangolari) e ottimizzati per gli schermi 16:9. Su questi ultimi il film, come accade per le pellicole, viene ‘disteso’ (con una funzione software) e visualizzato con le stesse proporzioni con le quali è stato prodotto (widescreen anamorfico). Per vedere correttamente lo stesso film su TV 4:3 è adoperato il widescreen letterbox: l’immagine originale anamorfica non è dilatata orizzontalmente, bensì compressa verticalmente e sono aggiunte in alto ed in basso delle bande nere (mattes).  

                                                    

                                                            Widescreen letterbox

 

Un altro sistema, fortunatamente poco usato, per mostrare film ottimizzati per 16:9 ai possessori di TV 4:3 è il Pan & Scan (‘Quadra e scorri’), che prevede uno zoom (ingrandimento) dell’immagine atto a riempire verticalmente lo schermo e lo spostamento orizzontale lungo il frame per inquadrare la parte più interessante per lo spettatore.

 

Pan & Scan: la parte delimitata dalla cornice rossa andrà a riempire lo schermo 4:3

 

Gli aspect ratio dei film sono comunque indicativi, quasi mai rispettati con assoluta precisione (molti film 1,85:1 sono in realtà 1,78:1).

 

 

II   LA COMPRESSIONE VIDEO MPEG-4

 

 

Il recente MPEG-4 offre la stessa qualità di MPEG-2 con una compressione circa tre volte superiore.

 

2.1 Processo di Riduzione e Compressione dei dati

 

Per ridurre le informazioni da memorizzare devono innanzitutto essere eliminate alcune di esse.

Nel dettaglio:

-         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 seguendo una certa quantizzazione; una maggiore quantizzazione eliminerà più informazioni à  peggiore qualità. Ci sono programmi come DRF Analyzer che calcolano il quantizer medio ed altri utili parametri dei video MPEG-4, derivandone quindi la qualità.

 

Dopo queste elisioni, i dati rimasti vengono compressi con procedimenti loseless (senza perdita di dati).

 

2.2 Tipologie di Frame

 

I fotogrammi del filmato compresso possono essere di tipo ‘I‘ (Key Frame), ‘P’ (Predicted Frame) e ‘B’ (Frame ‘Bidirectional’):

1)     Il key frame è un fotogramma memorizzato integralmente e compresso, dal quale sono ricreati i successivi p-frame o b-frame. I nuovi codec ne inseriscono uno ad ogni cambio di scena.

2)     Il predicted frame memorizza solamente le differenze rispetto al frame che lo precede, quindi userà poche informazioni.

3)     Il b-frame archivia le differenze rispetto al frame che lo precede e a quello che lo segue (quindi saranno utilizzati ancor meno dati rispetto al p-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

        

 

 

Due frame successivi archiviati in un file video compresso:

nel secondo è memorizzata solo la differente posizione della nuvola, più spostata verso destra

           

 

2.3 I Codec MPEG-4: DivX, il Principe 

 

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 altera un po’ i colori del filmato originale), 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. 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), che risulta essere anche più veloce rispetto alle ultime (per la scomparsa di un parametro importante, illustrato dopo). 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/ottima 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 operazioni contigue così sintetizzabili:     

    

 

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 contemplano 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 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

DVD2AVI SSE/MMX

Ottima

Eccellente

Fast Integer

Ottima

Buona

AMD

non testato

non testato

 

E’ semplice capire che con XMPEG va utilizzato 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 rende bene quando conosciamo o consideriamo un numero basso di punti (fino a 9); col crescere del numero di questi risulta molto più efficiente adoperare 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 pixel 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 omogeneamente 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 stessa tesi è sostenuta dai bravissimi programmatori di Avisynth: “If you are magnifying your video, you will get much better-looking results with BicubicResize than with BilinearResize. However, if you are shrinking it, you are probably just as well off, or even better off, with BilinearResize” ed aggiungono: “If you plan to encode your video at a low bitrate, I wouldn't be at all surprised if BilinearResize yields better quality” (estendendo la superiorità dell’algoritmo bilineare anche per forti rimpicciolimenti quando s’usano bassi bitrate, inferiori a 900). La teoria è suffragata dai fatti. Come si nota qui in basso, l’immagine rimpicciolita moderatamente con il ricampionamento bilineare ha qualità maggiore rispetto alla stessa riduzione fatta con il ricampionamento bicubico; analogamente con Adobe PhotoShop, con differenze però minori. Viceversa, la riduzione forte di un frame mostra la maggior virtù del ‘soffice’ resize bicubico.

 

           Riduzione moderata con resize bilineare                         Riduzione moderata con resize bicubico

   

 

 

    Frame ridotto al 40% (circa) con resize bilineare                Frame ridotto al 40% (circa) con resize bicubico          

 

 

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.

 

 

 

 

Ma, oltre ai due metodi di ricampionamento citati, esiste un efficiente algoritmo appartenente alla famiglia dei metodi incrementali 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 aver 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
 

 

Il resize Bressenham offre miglior qualità del bilineare e del bicubico fino a ridimensionamenti del 50% e qualità superiore al bilineare ed essenzialmente uguale al bicubico per fattori di scala tra il 50% ed il 35%. Per un calcolo (grossolano) del fattore di scala:

 

 

 

 

Poiché non ridimensioniamo filmati con risoluzione più bassa di 528x*** pixel (pena perdita di dettagli e artefatti nella visione a tutto schermo) adopereremo sempre il resize Bressenham.

 

 

Frame ridotto al 38% col resize bicubico

 

 

 

 

 

Frame ridotto al 38% col resize Bressenham

 

Come si può osservare, i due ridimensionamenti creano fotogrammi con qualità pressochè uguale anche se, come ci si aspetta, sugli sfondi è leggermente più omogeneo il resize bicubico, nella definizione di oggetti e persone lievemente più dettagliato il resize Bressenham; quest’ultimo, quindi, anche per il fatto che è più ‘levigante’ del bilineare per moderati ridimensionamenti (dove i dettagli non mancano), risulta essere il resize più equilibrato in tutte le occasioni! Tale qualità e duttilità è avvalorata dall’utilizzo dell’algoritmo Bressenham in moltissimi dispositivi hardware ed in software dedicati all’elaborazione grafica.    

 

Xmpeg adopera veloci resize bilineari e lenti resize bicubici smoothed (levigati). Sono inesatte le didascalie riguardanti la qualità dei resize bicubici poiché, come visto, la loro ‘very good quality’ esiste solo per fattori di scala inferiori al 50%.

 

 

 

 

 

Nel dettaglio:

 

XMPEG 4.5

Resize

Velocità

Qualità fatt. scala > 0.5

Qual. fatt. scala 0.5 - 0.35

Bressenham

Eccellente

Eccellente

Eccellente

SSE Bicubic

Buona

Buona

Eccellente

MMX Bilinear

Ottima

Ottima

Buona

Bicubic

Mediocre

Buona

Eccellente

Bilinear

Discreta

Ottima

Buona

Pseudo Bicubic

Buona

Mediocre

Mediocre

 

MPEG2AVI utilizza solo il resize Bressenham (con velocità e qualità quasi uguali a quello utilizzato da Xmpeg) e purtroppo gestisce in uscita solo l’aspect ratio del monitor del PC (5:4 con pixel quadrati); per questo motivo, adesso, si può affermare che Xmpeg risulta essere il miglior programma per convertire MPEG-2 in DivX ed opera, in un unico procedimento, anche la codifica dell’audio e la sua unione (mux) al video.

 

 

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 Fraunhofer e serve ad Xmpeg per codificare il flusso audio in ‘MP3’ a medi ed alti bitrate (quantità di bit dedicata ad ogni secondo). Non mi occuperò della creazione di filmati con audio ‘AC3’ (l’ingombrante audio multicanale del DVD Video) perché poco utile e poco interessante per la maggior parte degli utenti (me compreso).

Il DVD Video 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’ 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).

 

 

 

4.1 Opzioni Globali Progetto

 

All’apertura del programma apparirà la seguente schermata

 

 

Dal menu ‘File’ scegliete ‘Apri’ per selezionare i file ‘VOB’ da codificare

 

 

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.

 

 

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). Scegliamo il nostro iDCT ‘Optimized MMX’.

Il ‘Deinterlace’ va usato se nel nostro filmato appaiono gli effetti di una non perfetta sincronizzazione tra i campiodd’ ed ‘even’, come in questo caso

 

 

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 ed usatissimo VirtualDub che legge i ‘VOB’) poiché dispongono dei migliori filtri ‘deinterlace’ esistenti (che richiedono un resize bicubico antecedente o successivo).

 

 

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.   

 

Nel pannello ‘Post Trattamento’ selezioniamo il formato colore ‘YV12’, il filtro resize ‘Bressenham’.

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 dovremo vedere il film; 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). Naturalmente se si deve visualizzare il film su monitor e/o TV 16:9 è opportuno selezionare ‘Output’ 1:1’.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L’operazione di resize la faremo attraverso il ‘Pannello in uscita’. Ci apparirà questa interfaccia

 

 

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 (magari alle eventuali preesistenti) per ricreare la giusta proporzione del widescreen letterbox.

 

 

E’ vivamente suggerito ritagliare (‘croppare’) l’immagine per eliminare le eventuali bande nere che, in termini di spazio, occupano mediamente circa il 7,5% del film.

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.

 

 

L’immagine senza bande nere è la base per il calcolo del bitrate ideale, che tratteremo tra breve.

 

 

 

Nel pannello ‘Files’ si sceglie la cartella dove mettere il filmato codificato ed eventualmente la cartella dove riporre il flusso audio (AC3).

 

 

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 analizzeremo 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

 

 

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 VorbisOGG’ 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 buona 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

 

 

Qui 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 rispettare l’ingombro predeterminato.

 

Per conoscere lo spazio occupato da un filmato, fissando il bitrate, oppure calcolare quest’ultimo (fissando l’ingombro) lo strumento ottimale è DivX Bitrate Calculator 2.4 (stupenda calcolatrice per bitrate e proporzioni video, prelevabile direttamente), da usare in modalità ‘DivX 4.xx’.

 

 

 

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 quella 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 vedremo tra poco). Nelle ultime release il ‘file MV’ non c’è.

- 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 un 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 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.

 

 

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 EnhancementsLight’ (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 ne vengano più memorizzati, 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 fotogramma-chiave 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 10 secondi (pari a 250 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,..).

 

 

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 (eccetto ‘RC averaging period, frames’) 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”; ovviamente un più ampio intervallo di manovra giova alla qualità delle scene, in particolare quelle veloci (il valore ottimale da me constatato è circa 60000). ‘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à utilizzare 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).

 

 

Nella schermata principale troviamo due settaggi: ‘Film Effect’ applica al video un filtro 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.

 

 

 

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 selezionato 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à adoperato 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.

250

Se il video è NTSC: ‘300’

Scene change thresh.

General Par.

50%

 

TUTTI

Advanced Par.

PREDEFINITI

RC averaging period: 60000

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

 

 

 

V   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 i settagli consigliati sopra, calcolare il bitrate idoneo per ogni risoluzione (con il 2-pass) e, di converso, sapremo quale risoluzione usare dopo aver stabilito il bitrate. La misura finale in pixel del film, privato delle bande nere (croppato), è l’unico riferimento valido per questo calcolo. Per ogni risoluzione, il bitrate che garantisce la qualità ottimale di un film (poco/mediamente animato e con un giusto equilibrio di scene luminose e scure o una prevalenza di queste ultime) è dato dalla formula empirica

 

(Risoluz.Orizz.Crop. * Risoluz.Vert.Crop.)/130

 

(Regola Empirica Fixer)

 

Se viene compresso un video particolarmente dinamico (es. film d’azione) il divisore deve essere abbassato da ‘130’ a ‘115’. Questa formula è valida per tutte le versioni DivX 5.0.x, nasce da studi fatti su moltissimi video (analizzati con Enc e DRF Analyzer). Applicando la ‘R.E.F.’ si otterrà un quantizer medio complessivo pari a 2,9 (ovvero qualità 94%’) ed una affidabilità pari al 92%-98% nell’intervallo quantizer 2-4.

Se decidiamo di voler ingombrare un certo spazio prima calcoleremo il bitrate audio e video che ci consente ciò (con DivX Bitrate Calculator), poi imposteremo la risoluzione adeguata al bitrate video. Se non troviamo una risoluzione maggiore di 528*xxx per il bitrate calcolato o possiamo decidere di aumentare il rimpicciolimento (sconsigliato) o aumentiamo lo spazio da occupare. 

 

Esempio: ho un film di 91 minuti ottimizzato per 16:9 che voglio inserire in un solo CD (700 Mb).

Per archiviare un DivX su un solo CD devo utilizzare un bitrate audio non eccessivamente alto per il flusso ‘MP3’, 112 o 96 kbps; opto per quest’ultimo. Con DivX Bitrate Calculator trovo il bitrate video: 979 kbps. Ridimensionando e croppando l’immagine con Xmpeg trovo le risoluzioni finali del film e per ognuna di esse quale bitrate soddisfa i requisiti di qualità della Regola Empirica di Fixer.

Parto dalla risoluzione 720x576 che, croppata, dà una immagine priva di bande nere 720x328, indi il bitrate idoneo per questa è: (720x318)/130  = 1761 kbps..troppo alto.

……

Risoluzione 528x242 che, croppata, dà una immagine senza mattes 528x242 il cui bitrate ideale è 982 kbps, molto vicino a quello stabilito (979 kbps)..userò questo.

Dobbiamo fare attenzione a non scegliere, per ovvi motivi, un bitrate molto distante da quello calcolato (tolleranza consigliata non superiore a 10 kbps).

Se il film durasse 106 minuti il bitrate che dovrei utilizzare sarebbe 827 kbps, troppo basso per qualsiasi risoluzione accettabile, quindi adopererò due CD con risoluzione 720x318 e bitrate video 1761 kbps.

 

Così facendo otterrete DivX ‘REF 1.4 CompliantJ

  

Tutte le formule illustrate in questa guida sostituiscono quelle utilizzate nelle versioni precedenti e nel programma de DivX.

 

 

                                                                                    

Fixer in A.D. 2003

ritorna alla pagina principale...

Copyright © WorldDivX. Anno 2003/ 2004. Vietata la riproduzione anche parziale