Newsgroup: it.comp.software.divx
Titolo: Google Video e lettori stand-alone

Il mio lettore sa non legge gli AVI/divx scaricati da Google Video.
Il motivo e' lo stesso per cui pare non vengano letti nemmeno da
Windows Media Player, ed e' spiegato da "bottomap" in questo thread:
http://www.masterdrive.it/archive/index.php?t-12779.html
Il problema e' dato dalla presenza di un chunk aggiuntivo, che
confonde il parser AVI di alcuni lettori (tra cui quello nel
firmware del mio stand-alone).
Cosi' ho pensato di aggiungere al mio programma la visualizzazione
della struttura completa dell'AVI esaminato; e questo e' cio' che
risulta su un AVI scaricato da Google:
http://fsinapsi.altervista.org/tmp/goog.png
Si puo' notare la presenza del chunk "LIST goog", che contiene un
chunk con id "GDAT".
Chissa' che roba e'... si tratta di qualche informazione inserita
da Google, ma non credo che ne abbiano pubblicato una descrizione.
Ad ogni modo, la soluzione e' banale: basta rimuxare con un
qualsiasi programma (VDubMod, mencoder, avidemux...).
Dato che c'ero, ho migliorato la rilevazione delle estensioni
OpenDML e del "DivX Media Format".
Con l'aggiunta della visualizzazione della struttura, ho potuto
vedere meglio come sono fatti i "DivX 6"; ecco una schermatina:
http://fsinapsi.altervista.org/tmp/dmf.png
Come potete notare, dopo il canonico "RIFF AVI ", hanno aggiunto
un chunk "RIFF MENU", contenente a sua volta una lista, che
contiene due chunks con id "MENU" e "MRIF".
Naturalmente non ho alcuna descrizione del formato di tali
chunks (altrimenti potrei farne il parsing ed estrarne ulteriori
informazioni).
Ad ogni modo, adesso il mio programmino mostra tra le informazioni
un campo "Tipo di contenitore" molto dettagliato, che puo' essere
utile per prevedere se sara' letto dal proprio lettore stand-alone;
accanto ad "AVI" potrebbero comparire le seguenti indicazioni:
1) OpenDML
2) indexes
3) multi-chunks
4) DivX Media Format
5) DivX Media Format (con menu)
Se c'e' scritto solo "AVI" o solo "AVI OpenDML", allora e' molto
probabile che il lettore lo legga (il mio li legge); vuol dire che
e' presente qualche estensione OpenDML, ma in genere possono essere
ignorate.
Se c'e' scritto "indexes", e' un caso dubbio. Vuol dire che sono
presenti indici ODML, e non e' detto che quelli normali siano
completi e corretti; in caso contrario, non e' detto che il lettore
legga quelli ODML.
Se c'e' scritto "multi-chunks" e' quasi certo che si avranno
problemi: anche se sembra che la riproduzione avvenga bene, si
potra' fare il seeking solo all'interno del primo chunk (stessa
cosa per gli avanzamenti veloci). Quando finisce la riproduzione
del primo chunk, potra' succedere di tutto... ad esempio,
bloccarsi.
Se c'e' scritto "DivX Media Format" (con o senza menu), e' un
altro caso dubbio.
Nei casi dubbi, conviene sempre rimuxare, operazione che richiede
al massimo pochi minuti. Quando si rimuxa, si disabiliti la
generazione di estensioni OpenDML (in mencoder c'e' l'opzione
"-noodml", negli altri ci sara' da spuntare una casellina), e si
controlli il risultato.
-- 
Home page: 
http://fsinapsi.altervista.org

 OpenDML e del "DivX Media Format".
Visto che ho scaricato l'ultimo aggiornamento,
mi collego qui per farti alcune domande.
Mi scuso per la lunghezza del testo e spero
di non aver scritto troppe "cavolate".
Per prima cosa vado ai suggerimenti di utilizzatore:
 - sarebbe possibile "allontanare" l'icona di uscita dal
    programma da quella di apertura file? (te lo chiedo
    in quanto utilizzando un portatile senza mouse, mi
    e' capitato spesso di cliccare erroneamente sulla
    icona di uscita)
 - sarebbe utile inserire nel log la versione del
    programma usato (ho notato una leggera differenza
    tra i dati di versioni differenti).
Di seguito ho inserito alcune parti prelevate dai
file di log di AVInaptic e DRF Analyzer.
AVInaptic
-------------------------------------
[ Info sul file ]
Nome: [DivX - mp3(ITA)] - Cartoni Animati - Piuma Il Piccolo Orsetto 
Polare.avi
Data: 21/10/2006 19:19:30
Dimensione: 733,370,368 bytes
...
[ Info sulla codifica MPEG4 ]
User data: DivX503b1031p
Packed bitstream: yes
QPel: no
GMC: no
Interlaced: no
Aspect ratio: Square pixels
Quant type: H.263
I-VOPs: 2602 (2.342983 %)
P-VOPs: 56309 (50.703705 %)
B-VOPs: 52144 (46.953311 %)
S-VOPs: 0 (0 %)
N-VOPs: 0 (0 %)
Max consecutive B-VOPs: 1
[ Analisi DRF ]
DRF max: 30
DRF medio: 4.841231
Deviazione standard: 5.316660
DRF<3: 1990 (1.791904 %)
DRF=3: 50816 (45.757507 %)
DRF=4: 48442 (43.619828 %)
DRF=5: 49 (0.044122 %)
DRF=6: 2898 (2.609517 %)
DRF=7: 43 (0.038719 %)
DRF=8: 0 (0 %)
DRF=9: 37 (0.033316 %)
DRF>9: 6780 (6.105083 %)
...
-------------------------------------
DRF Analyzer
-------------------------------------
DivX DRF Analyzer v0.9.5 Report!
File Name: C:\Documenti\filmati\cartoons\[DivX - mp3(ITA)] - Cartoni 
Animati - Piuma Il Piccolo Orsetto Polare.avi
FourCC: DX50
Codec: DivX503b1031p
...
Frame Type Statistics :
I Frames: 2.34%
P Frames: 50.70%
B Frames: 46.95%
S Frames: 0.00%
N Frames: 0.00%
(More Advanced Codecs use B and S frames)
Frame Quality Statistics :
DRF=1&2: 1380 1.3%
DRF=3:  49362 45.5%
DRF=4:  47935 44.2%
DRF=5:  44 0.0%
DRF=6:  2897 2.7%
DRF=7:  43 0.0%
DRF=8:  0 0.0%
DRF=9:  37 0.0%
DRF>9:  6754 6.2%
KeyF/DeltaF:  2.40%
KeyDRF<4: 2064
KeyDRF=4: 507
KeyDRF>4: 31
AverageKeyDRF: 3.13
MAXDRF: 30
AverageDRF: 4.84
Deviation: 5.32
-------------------------------------
Come puoi notare trovo delle differenze sulle suddivisioni
dei valori 'DRF' ; e' normale ?
Ti informo inoltre che l'acquisizione dei dati da parte
di DRF Analyzer è durata 1'35" (95 sec.), mentre quella
ottenuta da tuo programma nell'analisi DRF e' stata di 27".
Saluti,
    Walter 

 OpenDML e del "DivX Media Format".
Visto che ho scaricato l'ultimo aggiornamento,





...
[ Info sulla codifica MPEG4 ]


Max consecutive B-VOPs: 1
[ Analisi DRF ]







di DRF Analyzer č durata 1'35" (95 sec.), mentre quella
ottenuta da tuo programma nell'analisi DRF e' stata di 27".
Ciao,
    Walter

 ottenuta da tuo programma nell'analisi DRF e' stata di 27".
ah, questo mi fa molto piacere.
Non hai sbagliato a scrivere, vero? Intendi proprio che il
mio e' stato tre volte piu' veloce? :-)
Avrei scommesso sul contrario
Ciao e grazie



 Grazie a te,
    Walter 


Ho trovato, ho dovuto cambiare una impostazione nel file .ini
associato a DRF Analyzer, ma il risultato non e' cambiato...
I valori visualizzati sono gli stessi.
----------------------------------------------
DivX DRF Analyzer v0.9.5 Report!
File Name: C:\Documenti\filmati\cartoons\[DivX - mp3(ITA)] - Cartoni 
Animati - Piuma Il Piccolo Orsetto Polare.avi
FourCC: DX50
Codec: DivX503b1031p
Resolution: [ Width: 640 Height: 352 ]
Frame Rate: 25.000 frames per second
The Video has 111054 frames [ 01:14:02 ]
Average Frame quality is  MEDIUM [Average DRF/quantizer is 4.84]
Standard Deviation: Quality is LOW [Std. Deviation is 5.32]
Image Resolution is HIGH
The file has Packeted Frames!
There are NO frame drops ( NO drops is better )
This video may have some frames with VERY POOR Quality!
Recomended Resolution: [480x256]  (Target DRF/quantizer=2.8)
The filesize should be larger!
Performance Caracteristics:
Macroblocks per frame: 880
The Width is multiple of 32
Kilobits per Second: 1092.88
Kilobits per Frame: 43.71
Kilobits per Macroblock: 0.050
Bits per Pixel: 0.20
Frame Type Statistics :
I Frames: 2.34%
P Frames: 50.70%
B Frames: 46.95%
S Frames: 0.00%
N Frames: 0.00%
(More Advanced Codecs use B and S frames)
Frame Quality Statistics :
DRF=1&2: 1380 1.3%
DRF=3:  49362 45.5%
DRF=4:  47935 44.2%
DRF=5:  44 0.0%
DRF=6:  2897 2.7%
DRF=7:  43 0.0%
DRF=8:  0 0.0%
DRF=9:  37 0.0%
DRF>9:  6754 6.2%
KeyF/DeltaF:  2.40%
KeyDRF<4: 2064
KeyDRF=4: 507
KeyDRF>4: 31
AverageKeyDRF: 3.13
MAXDRF: 30
AverageDRF: 4.84
Deviation: 5.32
----------------------------------------------
Ciao,
    Walter 

 KeyDRF>4: 31
e' identico a quello di oggi...
Questo sembra proprio sbagliato.
Infatti:
1) il bitstream contiene solo frame di tipo I, P, e B;
2) ognuno di tali frame e' stato codificato usando un certo DRF (un
   numero compreso tra 1 e 31);
3) il numero dei frames e' 111054 (o 111055, come sembrerebbe dai VOP
   codificati)
Da questi tre punti segue che la somma di tutti i frames che compaiono
nella distribuzione riportata deve coincidere con il numero totale dei
frames, ma la somma riportata da DRFAnalyzer e':
1380+49362+47935+44+2897+43+37+6754 = 108452
Questo e' un numero sicuramente inferiore di 111054 (o 111055), quindi
sembra che gliene siano sfuggiti circa 2600.
Non so perche' sia accaduto questo, ma se sei certo che non e' una
feature desiderata (cioe', non ha escluso quei 2600 frame
deliberatamente, per quella opzione "15k Frames End Credits Correction"),
allora dev'essere un bug...
Andrebbe segnalato all'autore portoghese di DRFAnalyzer, e chiedere lumi
a lui del perche' la somma della distribuzione e' nettamente inferiore
al totale, ma non so se sia ancora interessato al progetto (i link sulla
sua pagina non sono piu' validi).


 allora dev'essere un bug...
ah, che bischero! Non mi ero accorto di una coincidenza rivelatrice!
Oggi, quando hai riportato per la prima volta i dati, tra i dati di
avinaptic c'era riportato il numero di I-VOP, che e' proprio 2602,
quindi ora e' chiaro perche' le distribuzioni riportate dai due
programmi sono differenti:
- DRFAnalyzer riporta solo i conteggi relativi ai frame P e B;
- il mio riporta i conteggi totali (compresi i frame I)
Quando pero' riporta il DRF medio e la deviazione, entrambi si
riferiscono al totale di tutti i frames.
Non avevo mai capito che DRFAnalyzer escludesse dalla distribuzione
i frames I, e non capisco perche' faccia cosi'...
In conclusione, non si trattava di un bug, ma di una differenza
nelle scelte di cosa mostrare...
A questo punto non so se lasciare com'e' o fare come fa lui (a
togliere gli I-frame dal conteggio ci metto un secondo)...
Se avete una preferenza, fatemi sapere, altrimenti lascio com'e'...


 Se avete una preferenza, fatemi sapere, altrimenti lascio com'e'...
Io direi che ha più senso ciò che gli fai contare tu, cioè tutto.
-- 
Saluti, Kap - 
www.lordkap.it
 - ¥'s Fan #01 - 
www.pianetalibri.com
 - VCC
Maladetta sie tu, antica lupa, / che più di tutte l'altre bestie hai
preda / per la tua fame senza fine cupa! - Dante Alighieri

 Io direi che ha più senso ciò che gli fai contare tu, cioè tutto.
lo sai che non mi ero mai accorto che non include i frame I?
Adesso ho cercato sul web un altro rapporto di DRFAnalyzer, e ho
fatto la verifica:
------------------------------------------------
DivX DRF Analyzer v0.9.5 Report!
[...]
The Video has 156801 frames [ 01:44:32 ]
[...]
Frame Quality Statistics :
DRF=1&2: 27315 17.6%
DRF=3:  108032 69.5%
DRF=4:  20132 12.9%
DRF=5:  0 0.0%
[...]
KeyDRF<4: 1322
KeyDRF=4: 0
KeyDRF>4: 0
------------------------------------------------
la somma della distribuzione dei valori DRF e':
27315 + 108032 + 20132 = 155479
piu' sopra, pero', riporta il numero di frames: 156801.
Il numero di frames I e' riportato a parte (KeyDRF<4): 1322.
Facendo la somma: 155479 + 1322 = 156801
Quindi e' proprio cosi': alla voce "Frame Quality Statistics",
lui esclude dal conteggio i frames I.
Pero' ce lo poteva almeno scrivere, perche' cosi' sembra che
comprenda tutti i frames; o, perlomeno, io lo avevo sempre
interpretato cosi'...
Se non fosse stato per Walter non mi sarei mai messo a fare
le somme delle righe, e non me ne sarei mai accorto.
Tra l'altro ho scoperto una specie di bug nel mio programma:
nel rapporto che ha riportato Walter, la somma dei VOPs
rilevati e' piu' grande del totale dei frames, di una unita'.
Incrociando i dati che ha riportato, e guardando il mio
codice sorgente ho capito perche' e' successo:
nel suo film c'e' un frame che ha due VOP; e' normale che
accada cio' in un packed bitstream, pero' normalmente uno dei
due non e' "codificato"; invece nel suo caso, c'e' un frame
con due VOP codificati, e il mio programma li conteggia
entrambi (e per entrambi recupera un DRF). Questo e' davvero
strano! :-)
Adesso ho messo un controllo che evita il doppio conteggio,
che penso debba equivalere a quanto fa DRFAnalyzer.
Domani sera mettero' online una nuova versione con alcune
piccole modifiche (quelle suggerite da Walter: l'aggiunta di
una riga al rapporto, l'eliminazione del bottone di uscita,
e l'aggiunta di un paio di informazioni; e qualche piccolo
miglioramento).
La distribuzione dei DRF la lascio com'e'...
Ciao e grazie


> della struttura completa dell'AVI esaminato;
Ehi Frank, ma si pagano questi video?
E ancora...tu sai l'indirizzo del link :-)
Grazie 

 E ancora...tu sai l'indirizzo del link :-)
mi riferivo ai video che possono essere scaricati (gratuitamente),
ad esempio, da 
http://video.google.it
("scarica per windows/mac")
questi sono tutti codificati a bassa qualita' (con lavc) e hanno
quella struttura ("LIST goog") nell'AVI che da' fastidio a molti
lettori...
