Newsgroup: it.comp.macintosh
Titolo: Per uno che conosce D-Vision...

... perchè nella lista dei codec che posso usare non mi appare il Divx5 ma
solo fino al 4? i codec sono installati però sul sistema operativo...
Marco

 Marco

 vi sia la possibilità di farlo.
che mi dici di questi? sembrano i migliori fino ad ora, o mi sbaglio?
-- 
Herik
elimina bill per rispondere

Intanto grazie per l'attenta risposta... ma quindi alla fine D-Vision non
utilizza una compressione DivX5... ma quan OpenDivX... ma in termini di
qualità è compressione come siamo messi? Confrontandoli intendo...
Marco


 che mi dici di questi? sembrano i migliori fino ad ora, o mi sbaglio?
Molto dipende dal tipo di filmato da codificare... al di là degli
sbandieramenti di qualche produttore, non esiste il codec che lavora
bene su qualsiasi materiale a qualunque bitrate e per di più facendo
tutto da solo :-)
XviD, rispetto al DivX, ha qualcosa in più nella stima del movimento con
materiale sorgente molto movimentato ma perde qualcosa su sequenze
lunghe piuttosto statiche. Entrambi hanno una perdita cromatica notevole
ma DivX se la cava un pochino meglio.
Indubbiamente, di quelli a nostra disposizione, sono i due più
appetibili (personalmente preferisco l'XviD perchè più configurabile).
Marco

 Marco
Dipende... dal manico :-) In effetti si trovano degli ottimi filmati in
DivX 3.11 ;-) rispetto a certi DivX 5 fatti coi piedi...
La risposta breve e immediata è che sarebbe preferibile usare il DivX 5
o l'XviD quando possibile perchè nettamente superiori in certe
condizioni piuttosto semplici da riscontrare. Ciononostante, un OpenDivX
applicato su certi materiali video può produrre risultati identici ad un
DivX 5 se non superiori, non fosse altro per il fatto che è più
"leggero" da decodificare e da codificare.
Fine della parte breve e sopportabile. Puoi fermarti qui.
Io proseguo per i fatti miei :-)
L'OpenDivX è un codec MPEG4 Simple Profile. Cos'è il Simple Profile?
Poichè l'MPEG4 è uno standard vastissimo e piuttosto complicato, per
aiutare i produttori a sviluppare soluzioni che avessero delle
caratteristiche comuni in ordine alla interoperabilità, il Comitato di
standardizzazione ha messo assieme alcune combinazioni di bitrate,
dimensioni del quadro video, tool di compressione, elementi di
interattività ricavandone un certo numero di "profili". Essere
compatibili con un "profilo" implica il rispettare e supportare tutte le
tecnologie che ne fanno parte e, sostanzialmente, poter leggere/essere
letti i contenuti di tutti i propri concorrenti. Simple Profile
significa che il codec è ottimizzato (meglio in questo caso sarebbe dire
"ha limitazioni per...") per determinate combinazioni di
risoluzione/bitrate. In particolare, il range operativo è su quadri CIF
(352x288 per il PAL) con un massimo di 1.5 Mbit/s di bitrate. Questo
codec è in grado di stimare il movimento di un blocco di pixel con una
precisione di 1/2 pixel e,sempre per ciascun macroblocco (la codifica
MPEG, e tutte quelle basate sulla trasformata discreta del coseno - DCT
- partono da una divisione arbitraria del quadro video in blocchi di
pixel di dimensione 8x8, a loro volta organizzati in macroblocchi di
16x16 pixel), associa un vettore che ne "riassume" l'entità dello
spostamento previsto, la direzione, ecc. Ovviamente è possibile
codificare anche a risoluzioni e bitrate superiori, ma la compatibilità
con lo standard viene meno. Non vorrei scendere troppo nei dettagli, ma
penso che un esempio possa servire a capire meglio.
Le caratteristiche che abbiamo visto determinano alcuni problemi. Ne
descrivo solo uno, per . Ho detto che a ciascun macroblocco viene
associato un vettore che ne descrive lo spostamento rispetto alla
posizione dello stesso macroblocco in un frame di riferimento (quello
che nella terminologia comune si chiama keyframe, nella terminologia
MPEG1/2 si chiama I-Frame e che in MPEG4 andrebbe chiamato I-VOP). Ciò
implica che per ciascun macroblocco si ha una descrizione "locale" del
movimento, sostanzialmente di tipo traslativo e indipendente dai
macroblocchi circostanti. Funziona, sia chiaro, funziona molto bene
quando si descrive un qualunque movimento traslativo (quale che sia la
direzione). I problemi arrivano quando si deve descrivere un movimento
rotativo, un movimento di zoom o, peggio che mai, un roto-zooming, cioè
una combinazione dei due. In questo l'MPEG1 e l'MPEG2 fanno
assolutamente schifo e l'MPEG4 simple profile non si discosta dalla
regola.
Il DivX5 (e solo in decodifica, per ora, l'XviD) appartengono invece al
profilo "Advanced Simple" il quale introduce tutta una serie di tool di
codifica che realmente fanno la differenza. Intanto la risoluzione di
quadro sale al Full D1 (quadri PAL completi), la precisione con cui si
stima il movimento ad 1/4 di pixel, quattro sono i vettori che
descrivono il movimento per ciascun macroblocco e, calzante con il
nostro esempio, implementa la cosiddetta Global Motion Compensation. In
pratica, questo profilo prevede che l'analisi del movimento non sia
fatta solo sulla base locale di ciascun blocchetto ma che si debba
valutare se non esiste anche un movimento "globale" del quadro video. I
due casi sono proprio quelli di uno zoom (in cui tutto lo schermo si
espande o si contrae a seconda della direzione del movimento... pensa a
"Balle Spaziali" e a quando l'astronave entra nella "zona plaid"...) o
di una rotazione (come durante una puntata della "Ruota della Fortuna"
in cui si abbia un primo piano a pieano schermo della ruota che gira) o,
ancora, di una combinazione dei due (un'astronave che entra nel Wormhole
di Star Trek - Deep Space Nine). Se il sistema rileva che l'intero
quadro sta subendo una rototraslazione, calcolerà un vettore che
descrive questo movimento generale dello schermo e lo trasmetterà al
decoder (il player dell'utente) assieme ai singoli vettori che
descrivono in modo tradizionale il movimento dei singoli macroblocchi.
Quando il player elaborerà i dati, farà un confronto tra quando è
precisa la ricostruzione del blocchetto usando il vettore globale e
quanto sarà precisa utilizzando quello locale, scegliendo poi quello che
produce un errore minore. Di fatto, ciascun macroblocco avrà applicata o
la stima globale o quella locale indipendentemente dagli altri
blocchetti ma con una forte correlazione con il movimento su grande
scala. Traduco con un esempio: un'astronave entra nel Wormhole e mentre
tutto gira e zooma, Italia Uno ci informa con dei sottotitoli alle tre e
mezza del mattino che il giorno dopo Studio Aperto sembrerà un vero
telegiornale... Ecco, questo è il genere di cose che fa impazzire un
encoder MPEG2 mentre con un DivX 5 con la GMC attiva, i macroblocchi di
tutto il video risponderanno ad un vettore globale mentre sul testo che
trasla da destra a sinistra sarà applicato un vettore locale, con somma
gioia per i nostri occhi.
Ci sarebbero molte, moltissime altre componenti da valutare nella
descrizione precedente (ad esempio quanto è grande l'area sulla quale si
fa la stime del movimento di ciascun macroblocco... fattore
importanetissimo per determinare la sensibilità della ricerca e,
soprattutto, la pesantezza dei calcoli da eseguire) ma al momento quel
che abbiamo detto basta e avanza.
A che livello sta la qualità della codifica, quindi? Sta al livello che
le differenze su un film tutto sommato normale saranno minime: potrai
noterle nelle scene fisse perchè su un OpenDivX, a causa della
precisione di calcolo a 1/2 pixel, vedrai le texture "assestarsi" di
quando in quando... più trascorreranno i secondi di un'inquadratura e
più le texture perderanno dettaglio e "tremoleranno" per mantenere una
posizione mediamente corretta. In un DivX 5 che ha precisione 1/4 di
pixel, questi assestamenti sono di entità inferiore ma solo se la
risoluzione è full PAL,  altrimenti lo "spazio" del quadro video sarà
comunque insufficiente a produrre vettori precisi e forse l'OpenDivX,
tarato per risoluzioni CIF, si comporterà meglio. In un film di
fantascienza, che tende ad avere molti effetti di rotozooming, queste
differenze qualitative le noterai molto di più, indipendentemente dalla
risoluzione del quadro video.
Come vedi, alla fine conta sempre il fatto di scegliere il codec
migliore per un determinato contenuto e la scelta la fa "il manico".
Marco  

 La risposta breve e immediata è che sarebbe preferibile usare il DivX 5
[mega cut]
