Newsgroup: it.comp.software.divx
Titolo: DVD recorder Amstrad DR300 e avidemux

Salve a tutti,
possiedo un economico DVD recorder Amstrad DR300 con cui ho registrato
alcuni film, prevalentemente da digitale terrestre.  Ho poi
trasformato questi film da formato DVD a DIVX con mencoder, usando
l'encoder video XVID con opzioni standard.  Infine ho usato avidemux2
su Linux per rimuovere la pubblicita'.  Il risultato e' accettabile,
anche dopo le ripetute decodifiche e riconversioni in digitale compresso.
Ho tuttavia una curiosita'.  Osservando i frame in sequenza con
avidemux2, e anche facendo preview sempre con avidemux2, i frame
appaiono essere in ordine sbagliato, col risultato che ogni movimento
appare tremolante.  Se la sequenza corretta e' 1-2-3-4-5-6, la
sequenza che osservo con avidemux2 (versione 2.0.40) e' 1-3-2-5-4-6.
La cosa stupefacente e' che sia prima che dopo l'editing con
avidemux2, se osservo anche frame per frame il file DIVX con mplayer
(o con xine) i quadri appaiono essere nella sequenza corretta.
Insomma, il problema sembra circoscritto ad avidemux2, e sembra
circoscritto alla visualizzazione dei frame.  Tutto il resto funziona
correttamente.  Nessun altro ha osservato lo stesso fenomeno?
C'e' una spiegazione?
Saluti.

 sequenza che osservo con avidemux2 (versione 2.0.40) e' 1-3-2-5-4-6.
non sono sicuro al 100%, ma mi sa che si tratta dei B-frame: nel
tuo caso la sequenza logica sarebbe: IBPBP...
pero', ho letto che fin dall'introduzione dei B-frames (B sta per
"bidirectional", P sta per "forward predictive", I per "intra"),
lo standard MPEG prevede una codifica in ordine diverso da quello
logico, e cioe': IPBPB...
questo perche', se inviassi i B-frame prima dei P-frame successivi,
il decoder che riceve lo stream non saprebbe decodificarli... dovrebbe
appilare i B-frame (che possono essere piu' di uno) e la cosa sarebbe
complessa...
invece, se la sequenza logica e' IBBPBBPBBP..., codificando in
questo ordine: IPBBPBBPBB..., il decoder puo' funzionare seguendo
questo semplice algoritmo:
t=0: viene letto e decodificato il frame I (non visualizza niente)
t=1: viene letto e decodificato il frame P; visualizza il frame I
t=2: viene letto e decodificato il frame B; visualizza il frame B
t=3: viene letto e decodificato il frame B; visualizza il frame B
t=4: viene letto e decodificato il frame P; visualizza il frame P
t=5: viene letto e decodificato il frame B; visualizza il frame B
e cosi' via...
va notato che all'istante t=2, il frame B e' decodificabile perche'
e' gia' stato decodificato il successivo frame P (all'istante t=1);
stessa cosa per il frame B dell'istante t=3;
infine va notato che, nell'istante t=4, quando arriva un frame P,
quello visualizzato e' il P-frame precedente...
in questo modo, viene visualizzata la corretta sequenza logica,
indipendentemente dal numero di B-frames inseriti tra frame I e P.

 se/quando l'avro daro' un'occhiata al codice di avidemux2.
una prova veloce che potresti fare:
generi un xvid senza b-frames (con l'opzione "max_bframes=0" di
di "-xvidencopts")
controlli se avidemux visualizza i frame nell'ordine giusto.
se l'ordine continua a essere sbagliato, allora i B-frames non
c'entrano niente, e deve esserci un'altra spiegazione.
se l'ordine e' giusto, allora, per qualche motivo che non so,
avidemux visualizza i frames nell'ordine in cui sono memorizzati,
che e' diverso da quello in cui vanno visualizzati...
ciao

 wrote:
[...]
Frank> una prova veloce che potresti fare:
Frank> generi un xvid senza b-frames (con l'opzione "max_bframes=0" di
Frank> di "-xvidencopts")
Frank> controlli se avidemux visualizza i frame nell'ordine giusto.
Frank> se l'ordine continua a essere sbagliato, allora i B-frames non
Frank> c'entrano niente, e deve esserci un'altra spiegazione.
Frank> se l'ordine e' giusto, allora, per qualche motivo che non so,
Frank> avidemux visualizza i frames nell'ordine in cui sono
Frank> memorizzati, che e' diverso da quello in cui vanno
Frank> visualizzati...
Ho fatto la prova: i fatti confermano la tua teoria!  Avidemux2
ripdroduce alla perfezione se non ci sono b-frames.
Ciao e grazie,