Newsgroup: it.comp.software.divx
Titolo: Quale di questi 2 filmati è il migliore?

Ciao.
Sto facendo delle prove per determinare in linea di massima quale 
codifica, tra Xvid (v.1.1.2) e Divx (v. 6.8), è migliore.
A tale scopo ho provato a codificare lo stesso filmato con i due codec 
e, a occhio, il Divx mi sembra "solo" più luminoso.
Per entrambi ho usato gli stessi parametri:
risoluzione 1280x720
quantizer 2
matrice MPEG
Qpel
Se non ci fossero sostanziali differenze sceglierei l'Xvid in quanto il 
filmato finale è venuto ben 110 Mb più piccolo!
------ Questo è il filmato Divx:
[ Info sul file ]
Nome: Brisighella_Modigliana_720p_DivX6.8_Q2.avi
Data: 11/12/2007 16:26:22
Dimensione: 264,761,344 bytes (252.496 MB)
[ Info generiche ]
Durata: 00:03:43 (222.64 s)
Tipo di contenitore: AVI OpenDML
Streams totali: 2
Tipo stream n. 0: video
Tipo stream n. 1: audio
Audio streams: 1
ISFT: VirtualDubMod 1.6.0.0 SURROUND (build 2560/release)
JUNK: VirtualDubMod build 2560/release
[ Dati rilevanti ]
Risoluzione: 1280 x 720
Larghezza: multipla di 32
Altezza: multipla di 16
DRF medio: 2
Deviazione standard: 0
Media pesata dev. std.: 0
[ Traccia video ]
FourCC: divx/DX50
Risoluzione: 1280 x 720
Frame aspect ratio: 16:9 = 1.777777
Pixel aspect ratio: 1:1 = 1
Display aspect ratio: 16:9 = 1.777777
Vprp aspect ratio: 4:3 = 1.333333
Framerate: 25 fps
Frames totali: 5566
Stream size: 259,136,451 bytes
Bitrate: 9311.406791 kbps
Qf: 0.404140
Key frames: 92 (0; 169; 170; 285; 345; ... 5525)
Null frames: 0
Min key int: 1
Max key int: 250
Key int medio: 60.5
Ritardo: 0 ms
[ Traccia audio ]
Audio tag: 0x2000 (AC3)
Bitrate (contenitore): 192 kbps CBR
Canali (contenitore): 2
Frequenza (contenitore): 48000 Hz
Chunks: 5554
Stream size: 5,342,976 bytes
Preload: 512 ms
Max A/V diff: 536 ms
AC-3 frames: 6957
Durata: 00:03:43 (222.624 s)
Chunk-aligned: Sì
Mode: stereo
Ritardo: 0 ms
[ Info sulla codifica MPEG4 ]
User data: DivX503b2510p
Packed bitstream: No
QPel: Sì (*)
GMC: No
Interlaced: No
Aspect ratio: Square pixels
Quant type: MPEG
Frames totali: 5566
Drop/delay frames: 0
Frames corrotti: 0
I-VOPs:   92 (  1.653 %)
P-VOPs: 5474 ( 98.347 %) #########################
B-VOPs:    0 (  0.000 %)
S-VOPs:    0 (  0.000 %)
N-VOPs:    0 (  0.000 %)
[ Analisi DRF ]
DRF medio: 2
Deviazione standard: 0
DRF max: 2
DRF<2:    0 (  0.000 %)
DRF=2: 5566 (100.000 %) #########################
DRF>2:    0 (  0.000 %)
I-VOPs DRF medio: 2
I-VOPs deviazione std.: 0
I-VOPs DRF max: 2
P-VOPs DRF medio: 2
P-VOPs deviazione std.: 0
P-VOPs DRF max: 2
[ Profile compliancy ]
Profilo da testare: MTK PAL 6000
Risoluzione: 1280 x 720 > 720 x 576
Framerate: Ok
Buffer underflow: 00:00:10 (frame 253)
Buffer underflow: 00:00:12 (frame 290)
Buffer underflow: 00:00:14 (frame 340)
Buffer underflow: 00:00:14 (frame 357)
Buffer underflow: 00:00:36 (frame 897)
Buffer underflow: 00:00:36 (frame 907)
Buffer underflow: 00:00:37 (frame 915)
Buffer underflow: 00:00:37 (frame 922)
Buffer underflow: 00:00:37 (frame 930)
Buffer underflow: 00:00:38 (frame 938)
Buffer underflow: 00:00:38 (frame 946)
Buffer underflow: 00:00:38 (frame 954)
Buffer underflow: 00:00:38 (frame 962)
Buffer underflow: 00:00:39 (frame 969)
Buffer underflow: 00:00:39 (frame 977)
Buffer underflow: 00:00:39 (frame 985)
Buffer underflow: 00:00:40 (frame 993)
Buffer underflow: 00:00:40 (frame 1001)
Buffer underflow: 00:00:40 (frame 1009)
Buffer underflow: 00:00:41 (frame 1017)
Errore: Troppe violazioni
Rapporto generato da AVInaptic (18-11-2007) in data 11 dic 2007, h 16:32:04
****************************************
----- Questo è il filmato Xvid:
[ Info sul file ]
Nome: Brisighella_Modigliana_720p_Xvid_Q2.avi
Data: 12/10/2007 10:27:59
Dimensione: 149,213,184 bytes (142.301 MB)
[ Info generiche ]
Durata: 00:03:43 (222.64 s)
Tipo di contenitore: AVI OpenDML
Streams totali: 2
Tipo stream n. 0: video
Tipo stream n. 1: audio
Audio streams: 1
ISFT: VirtualDubMod 1.6.0.0 SURROUND (build 2560/release)
JUNK: VirtualDubMod build 2560/release
[ Dati rilevanti ]
Risoluzione: 1280 x 720
Larghezza: multipla di 32
Altezza: multipla di 16
DRF medio: 2.985627
Deviazione standard: 0.999896
Media pesata dev. std.: 0
[ Traccia video ]
FourCC: xvid/XVID
Risoluzione: 1280 x 720
Frame aspect ratio: 16:9 = 1.777777
Pixel aspect ratio: 1:1 = 1
Display aspect ratio: 16:9 = 1.777777
Vprp aspect ratio: 4:3 = 1.333333
Framerate: 25 fps
Frames totali: 5566
Stream size: 143,589,708 bytes
Bitrate: 5159.529572 kbps
Qf: 0.223937
Key frames: 39 (0; 300; 600; 900; 1200; ... 5381)
Null frames: 0
Min key int: 6
Max key int: 300
Key int medio: 142.717948
Ritardo: 0 ms
[ Traccia audio ]
Audio tag: 0x2000 (AC3)
Bitrate (contenitore): 192 kbps CBR
Canali (contenitore): 2
Frequenza (contenitore): 48000 Hz
Chunks: 5554
Stream size: 5,342,976 bytes
Preload: 512 ms
Max A/V diff: 536 ms
AC-3 frames: 6957
Durata: 00:03:43 (222.624 s)
Chunk-aligned: Sì
Mode: stereo
Ritardo: 0 ms
[ Info sulla codifica MPEG4 ]
User data: XviD0046
Packed bitstream: No
QPel: Sì (*)
GMC: No
Interlaced: No
Aspect ratio: Square pixels
Quant type: MPEG
Frames totali: 5566
Drop/delay frames: 0
Frames corrotti: 0
I-VOPs:   39 (  0.701 %)
P-VOPs: 2784 ( 50.018 %) #############
B-VOPs: 2743 ( 49.281 %) ############
S-VOPs:    0 (  0.000 %)
N-VOPs:    0 (  0.000 %)
Max consecutive B-VOPs: 1
[ Analisi DRF ]
DRF medio: 2.985627
Deviazione standard: 0.999896
DRF max: 4
DRF<2:    0 (  0.000 %)
DRF=2: 2823 ( 50.719 %) #############
DRF=3:    0 (  0.000 %)
DRF=4: 2743 ( 49.281 %) ############
DRF>4:    0 (  0.000 %)
I-VOPs DRF medio: 2
I-VOPs deviazione std.: 0
I-VOPs DRF max: 2
P-VOPs DRF medio: 2
P-VOPs deviazione std.: 0
P-VOPs DRF max: 2
B-VOPs DRF medio: 4
B-VOPs deviazione std.: 0
B-VOPs DRF max: 4
[ Profile compliancy ]
Profilo da testare: MTK PAL 6000
Risoluzione: 1280 x 720 > 720 x 576
Framerate: Ok
Buffer underflow: 00:00:37 (frame 925)
Buffer underflow: 00:00:39 (frame 973)
Buffer underflow: 00:00:41 (frame 1021)
Buffer underflow: 00:00:43 (frame 1083)
Buffer underflow: 00:00:47 (frame 1169)
Buffer underflow: 00:00:49 (frame 1225)
Buffer underflow: 00:00:51 (frame 1283)
Buffer underflow: 00:01:43 (frame 2581)
Buffer underflow: 00:01:44 (frame 2600)
Buffer underflow: 00:01:45 (frame 2613)
Buffer underflow: 00:01:45 (frame 2627)
Buffer underflow: 00:01:46 (frame 2641)
Buffer underflow: 00:01:46 (frame 2655)
Buffer underflow: 00:01:47 (frame 2669)
Buffer underflow: 00:01:47 (frame 2683)
Buffer underflow: 00:01:48 (frame 2697)
Buffer underflow: 00:01:48 (frame 2711)
Buffer underflow: 00:01:49 (frame 2735)
Buffer underflow: 00:02:44 (frame 4093)
Buffer underflow: 00:02:45 (frame 4127)
Errore: Troppe violazioni
Rapporto generato da AVInaptic (18-11-2007) in data 11 dic 2007, h 16:32:24
Quale è il migliore secondo questa analisi?
Grazie mille, ciao.
-- 
Michele

 filmato finale č venuto ben 110 Mb piů piccolo!
in questo caso specifico l'analisi di avinaptic non ti e' utile,
perche' gia' sai quali quantizer hai usato (e sai anche gli altri
parametri di codifica).
Tuttavia e' utile a me :-) per farti notare che i parametri usati
nelle due codifiche non sono proprio gli stessi.
(Visto che ci sono ti consiglio di disabilitare il controllo
della "profile compliancy" quando fai questi test:
Misc->Preferenze->ProfileComliancy->disabilitata )
Le differenze nei parametri di codifica sono:
1) in DivX hai un max keyint impostato a 250, mentre in XviD e'
   impostato a 300;
2) in DivX hai usato solo P frames, mentre in XviD hai attivato
   anche l'uso dei B-frames e questi sono stati codificati usando
   un quantizer 4 (e' possibile forzare l'uso del quantizer 2
   anche per i B-frames)
Il punto 1) vuol dire che permetti a XviD di sfruttare piu' a
fondo la "motion compensation" e quindi ottieni una maggiore
compressione.
Tuttavia bisogna porre un limite allo sfruttamento della
motion compensation, un po' perche' keyframes troppo lontani
rendono difficoltoso il "seeking" all'interno del filmato,
e un po' perche' in certi decoder si hanno "degradi" che
aumentano via via che ci si allontana dall'ultimo I-frame
(alcuni lettori da tavolo producono sullo schermo delle
"scie" che scompaiono improvvisamente appena arriva il
successivo I-frame...).
Tipicamente il valore di "max keyint" per una codifica di
tipo MPEG-4 ASP viene impostato in modo che una "scena" avente
un solo I-frame sia lunga al massimo 10 secondi, quindi, se il
framerate e' 25 fps, viene impostato a 25*10=250.
Per quanto riguarda il punto 2), anche i B-frames consentono
di sfruttare meglio la ridondanza temporale, sfruttando meglio
le informazioni che sono state codificate in precedenza.
Mentre i P-frames possono sfruttare informazioni relative
a un solo frame, i B-frames possono sfruttare informazioni
relative a due frames, quindi questo in genere porta a una
maggiore compressione. Inoltre, come gia' osservato, per i
B-frames e' stato usato il quantizer 4, e questo aumenta
ancora di piu' la compressione.
Se vuoi fare un confronto piu' accurato dovresti usare le
stesse condizioni per entrambi i codec.
Ad ogni modo, avinaptic non ti serve per questo tipo di test.
Dovresti valutare i risultati confrontandoli con il filmato
in ingresso al codec per vedere quale risulta piu' simile e
quale piu' deteriorato.
Altrimenti, se proprio vuoi un test automatizzato, dovresti
usare qualche metrica che si usa per valutare il degrado
delle codifiche lossy: la metrica piu' usata e' il PSNR, ma
ce ne sono altri che molti ritengono piu' affini allo "HVS"
(sistema visivo umano); in realta', allo stato attuale
nessun modello e' realmente soddisfacente...
-- 
Home page di Frank: 
http://fsinapsi.altervista.org
Home page di Giubbe e FAQ: 
http://giubbe.altervista.org

On 11-Dec-07 Frank Sinapsi wrote:
mi sono dimenticato di chiederti una cosa...
hai provato a visualizzare il "grafico del bitrate parziale"
per entrambi i filmati che hai generato?
Questi ti danno un'idea di come ciascuno dei due codec ha
"percepito" il filmato in termini di "comprimibilita'".
Un po' di differenza e' normale anche considerando le
differenze nelle condizioni di cui ho parlato nel post
precedente.
Magari sarebbe interessante se venisse fuori che tali curve
sono molto diverse...


 nessun modello e' realmente soddisfacente...
Scusa la mia demenza ma la PSNR è un sistema di test o è una sorta di 
categoria di programmi?
Grazie mille, gentilissimo come al solito.
Ciao.
-- 
Michele

 sono molto diverse...
Ho cercato ma non ho capito come si fa? C'è la voce "grafico del bitrate 
parziale?
Grazie, ciao.
-- 
Michele

 categoria di programmi?
PSNR = Peak signal-to-noise ratio
http://en.wikipedia.org/wiki/PSNR
e' una funzione matematica.
Nel tuo caso, per ogni frame del filmato con codifica lossless
prendi lo stesso frame di uno dei due con codifica lossy (divx e
xvid) e calcoli il PSNR sulla coppia di frame (per ogni pixel
calcoli il quadrato del valore assoluto della differenza, fai
la media per ogni pixel e cio' che ottieni si chiama MSE =
Mean Squared Error = errore quadratico medio, da cui ricavi
il PSNR mediante la formula che trovi nella pagina che ti ho
indicato).
Osserva che MSE=0 se e solo se i due frame che confronti sono
esattamente identici, cioe' solo in caso di codifica lossless.
Piu' e' alto il MSE e piu' informazione hai perso, cioe' piu'
e' alta la distorsione del segnale...
Comunque secondo me adesso dovresti ignorare questi metodi
matematici, e basarti invece di cio' che vedi con gli occhi :-)


 lossless puoi renderti conto di quanto siano degradati...
Ok, farò questa prova e poi controllerò "a occhio" il risultato... ;)
Grazie Frank, ciao.
-- 
Michele

 Tu come setti la tua codifica Xvid?
dipende da caso a caso.
Non faccio molte codifiche e non sono molto esigente, ma una
esigenza ce l'ho: i film che codifico devo poterli dare e/o
vedere inseme ad altri (parenti, amici) quindi dato che ognuno
della cerchia possiede un lettore dvd/divx da salotto, bisogna
che usi un codec leggibile da tale tipologia di lettori. Quindi
niente x264 finche' non saranno ampiamente diffusi lettorini da
salotto in grado di leggerli...
A volte uso xvid, altre volte uso "lavc" (un altro codec MPEG-4
open source, che secondo me per un uso generale non e' inferiore
a xvid, e anzi in certi casi lo preferisco).
Quella che ormai ho abbandonato da molto tempo e' la codifica
in doppia passata. Praticamente da quando comprai un
masterizzatore dvd e non ho piu' masterizzato cd.
Infatti, non avendo la necessita' di ottenere un file lungo
esattamente 700 MB (o il doppio), non ho alcun motivo per
codificare a target bitrate, e quindi uso sempre una codifica
a quantizer costante, in una sola passata: risparmio un bel
po' di tempo e ottengo il risultato alla qualita' che mi
aspetto... Soltanto una volta ottenni un file piu' grande di
2 GB, e lo splittai a circa meta' per non avere problemi con
i lettori da tavolo :-)


 e mi dicessi se avinaptic continua a funzionare senza intoppi.
Provato con file di diverse dimensioni (anche >2gb), diversi codec audio 
e video, funziona senza problemi.
Ti volevo solo dire che ho provato a codificare il filmato oggetto di 
questo thread impostando il quantizer dei B-frames a 2: il file è 
lievitato di 80 mb!!!
A questo punto non so come fare anche perchè a occhio sembrano uguali e 
sembra che non esistano strumenti in grado di determinare quale sia 
migliore... :(
Forse dovrei disabilitare i B-frames, fose dovrei lasciare tutto così 
com'è, forse...
Ciao.
-- 
Michele

 migliore... :(
probabilmente in casi come questi, in cui i codec sono abbastanza
lasciati "a briglia sciolta", non noterai grosse differenze nei
risultati.
Se proprio sei interessato a scoprire quando uno si comporta
meglio dell'altro dovresti sottoporli a test specifici in cui
siano presenti difficolta' di vario tipo (ad esempio, codificando
a target bitrate bassi, oppure con scene particolarmente movimentate,
oppure con sequenze caratterizzate da continui "cambi di scena",
ecc)


 ecc)
Mi sono studiato delle guide su internet ed ho imparato a gestire il 
quantizer ratio e l'offset dei B-frames per impostare il valore che 
voglio: che figata!
Grazie, ciao.
-- 
Michele