Newsgroup: it.comp.software.divx
Titolo: [TVRIP] Situazione bizzarra

L'altra notte ho registrato (im MPEG2) Mr Hula-Hoop da Rai1. Ora mi
sono messo a preparare GordianKnot per comprimerlo, ma ho scoperto che
il primo tempo č interlacciato, mentre il secondo non lo č!! 
Cioč se lo guardo nell'anteprima, fino alla scritta FINE PRIMO TEMPO,
le immagini sono *nettamente* interlacciate, con spaghetti enormi
ovunque, mentre da SECONDO TEMPO in avanti sono perfettamente
definite. C'č un modo per impostare GK in modo che fino a quel punto
deinterlacci e dopo no? E se sě, in che modo poi calcolo il comptest?
-- 
Paradoxally,
Jan AxHell

 deinterlacci e dopo no? E se sě, in che modo poi calcolo il comptest?
con GK non so, ma a mano č banale. Modifica il file .avs in modo che
interlacci solo il primo tempo, per farlo ti basta usare la funzione trim.
Vado a caso, č solo un esempio:
Originale
avisource("pippo.avi")
FieldDeinterlace()
crop(a,b,c,d)
resize(a,b)
Modificato:
avisource("pippo.avi")
Primotempo=trim(0,10000)
SecondoTempo=trim(10001,20000)
a=Primotempo.FieldDeinterlace().crop(a,b,c,d).resize(a,b)
b=Secondotempo.crop(a,b,c,d).resize(a,b)
return a+b
Per il test non so, ma probabilmente li puoi passare il avs modificato.
bye, giubbe
-- 
HomePage e FAQ: 
http://giubbe.altervista.org
Inutile scrivere in privato, non ricevo le email

 il primo tempo è interlacciato, mentre il secondo non lo è!! 
non so come aiutarti nell'impostare GK, ma credo di sapere qual e'
il problema: anche il primo tempo e' progressivo, ma lo hanno
trasmesso con i semiquadri disallineati di una posizione. Ai fini
della visualizzazione su televisore, e' equivalente.
Se esistesse un filtro in grado di disallineare i frame nel verso
opposto (e' molto facile scrivere una cosa del genere), potresti
riottenere il film progressivo. Purtroppo non so dirti ne' se
esista, ne' eventualmente come si chiami...
Mi piacerebbe averne un pezzettino per fare qualche esperimento.
Questo e' cio' che e' successo:
Normale trasmissione di un film:
(t1 b1)(t2 b2)(t3 b3)...
Espresso in parole: all'istante 0 viene trasmesso come semiquadro la
parte "top" del primo frame (righe pari); dopo 20 ms viene trasmesso
la parte "bottom" del primo frame (righe dispari); e cosi' via...
Trasmissione disallineata:
(t1 b2)(t2 b3)(t3 b4)...
Espresso in parole: all'istante 0 viene trasmesso come semiquadro la
parte "top" del primo frame (righe pari); dopo 20 ms viene trasmesso
la parte "bottom" del _secondo_ frame (righe dispari); e cosi' via...
La cosa interessante e' che entrambi i modi vanno bene quando si
visualizza su un televisore...
Naturalmente quando acquisisci, la trasmissione disallineata provoca
una creazione di frame costituiti dalle righe dispari di un fotogramma
e le righe pari del fotogramma successivo, quindi tra le righe pari
e dispari c'e' una differenza temporale di 40 ms (il doppio della
differenza di una normale trasmissione interlacciata), quindi hai
un effetto "seghettature" doppiamente piu' marcato del solito...

 interlacci solo il primo tempo, per farlo ti basta usare la funzione trim.
oops, abbiamo risposto insieme (avrai mica visto il film di Amelio
anche te?) ma almeno tu gli hai fornito una soluzione :-)

interlacci solo il primo tempo, per farlo ti basta usare la funzione trim.
Grazie, domani provo! Per stanotte il GK è già occupato con altra
pappa :-)
-- 
Paradoxally,
Jan AxHell

un effetto "seghettature" doppiamente piu' marcato del solito...
Ok, quanto e che parte/i vuoi?
-- 
Paradoxally,
Jan AxHell

 Ok, quanto e che parte/i vuoi?
mi basterebbe una sequenza di pochi frame (diciamo qualche decina,
basta che contengano un po' di movimento, in modo che si notino
le seghettature).
Puoi tagliare il file MPEG2 senza ricodificarlo?
Se riesci a ottenerne un segmento di pochi MB (anche solo video,
l'audio non mi serve) e puoi mandarmelo all'indirizzo (togliendo
"levami"), lo analizzerei volentieri. Poi ti faro' sapere... :-)

 pappa :-)
Tieni presente che il filtro di deinterlacciamento è puramente indicativo,
dovrai fare delle prove per trovare il migliore.
bye


 anche te?) ma almeno tu gli hai fornito una soluzione :-)
Siamo stati complementari, tu gli spiegato come č successo. Comunque la mia
soluzione č puramente indicativa, non avendo visto il film non posso essere
piů preciso.
bye


 più preciso.
non mi riferivo al film che gli ha dato problemi :-)
Ieri sera mi sono messo a vedere un film su raitre (di Gianni Amelio),
quando e' finito ho letto il suo post e ho risposto, quando ho visto
la tua risposta di due minuti prima, ho pensato: "vai a vedere che anche
Giubbe stava guardando lo stesso film!" :-)
Evidentemente si e' solo trattato di una coincidenza nei tempi...

"levami"), lo analizzerei volentieri. Poi ti faro' sapere... :-)
Ho preparato un file da circa 10 Mb, sono una dozzina di secondi: li
regge Yahoo?
-- 
Paradoxally,
Jan AxHell

 regge Yahoo?
yahoo mi dice che ho 1GB di spazio (non lo sapevo!)
-----------------------------------------
Yahoo! Mail - 1GB di spazio per i messaggi 
La tua Yahoo! Mail adesso ha 1 GB di memoria. E' gratis e non ti devi più
preoccupare di dover cancellare messaggi importanti. 
-----------------------------------------
tuttavia non conosco il limite massimo per messaggio.
Inoltre, quando lo alleghi, le dimensioni aumentano un po'...
Magari, se lo splittassi in due (anche con winrar, magari disabilitando
la compressione, se e' possibile) e mi mandassi due messaggi, aumenterebbe
la probabilita' di riuscita.
Grazie

 tuttavia non conosco il limite massimo per messaggio.
il limite e' proprio 10 MB

il limite e' proprio 10 MB
Ti sto inviando 2 mail da 5 Mb :-)
Lo sapevo che c'era qualche limite, ormai tutte le caselle tengono 1+
Gb, ma servono a ben poco, dato che i limiti dei messaggi sono come
prima.
-- 
Paradoxally,
Jan AxHell

 Ti sto inviando 2 mail da 5 Mb :-)
grazie mille.
Ho analizzato il file e ho verificato che la mia ipotesi e' corretta :-)
Raiuno ha trasmesso il primo tempo del film disallineando i semiquadri...
Anche se puo' sembrare strano e sbagliato, dal punto di vista di un
televisore PAL, cio' non fa alcuna differenza (bisogna ragionarci sopra
un po' per capirlo, ma neanche tanto).
Ho appena scritto un programmino che riallinea i semiquadri, e l'ho
applicato al filmato che mi hai mandato.
Ebbene, riallineando i semiquadri si riottiene il film progressivo!
Guarda queste immagini:
http://fsinapsi.altervista.org/tmp/frame-001.png
http://fsinapsi.altervista.org/tmp/frame-002.png
Questi sono i primi due frame dello spezzone che mi hai mandato
(la differenza temporale tra i semiquadri e' molto evidente).
Il mio programma mi ha creato una sequenza di frame, ottenuti
prendendo le righe dispari da un frame originale, e le pari da
un frame adiacente, ripristinando il corretto accoppiamento.
Ed ecco il frame ottenuto dai due precedenti:
http://fsinapsi.altervista.org/tmp/shifted-002.png
Come vedi, e' tornato progressivo.
Ti giuro che non ho applicato nessun filtro di deinterlacciamento :-)
Il cuore del programmino che ho scritto e' questo:
(defnet riallinea (pm1 pm2 pm)
        (deflocal w h row line)
        (set w (width pm))
        (set h (height pm))
        (for row in 0 .. (- h 1) do
                (set line (pix-get-box (if (= (% row 2) 1) pm1 pm2)
                        0 row (- w 1) row ))
                (pix-draw-pix pm 0 row line)
                (close line) ))
che non fa altro che creare un nuovo frame, prendendo le righe
dispari da uno e le pari da un altro (e' un po' farraginoso
perche' scritto nel mio linguaggio, che non e' adatto per queste
elaborazioni di basso livello...)
A questo punto, ti conviene cercare un filtro che faccia la
stessa cosa che ho fatto io (deve esistere per forza... e' talmente
semplice che l'ho scritto in pochi minuti...)
Forse esiste gia' per Avisynth, forse devi usare quei filtri...
SeparateFields e Weave, pero' ci vuole un filtro che "shifti" una
delle due sequenze di semiquadri... bisogna chiederlo a Giubbe o
altri utenti di Avisynth...
e naturalmente devi usare la tecnica "trim" che ti ha consigliato
Giubbe, in modo da shiftare solo i semiquadri del primo tempo...
Qui aggiungo il codice completo del programma che ho scritto
poc'anzi, nel caso tu o altri foste curiosi di vedere come ho
fatto:
----------------------------------------------------------------
(defstart a)
(defnet a ()
        (deflocal lav beg end pm pm-act pm-prv pm-shifted act n)
        (set lav (lav-open (argv 1)))
        (<> lav undef)
        (if (> argc 2)
        then    (set beg (str2num (argv 2)))
                (istypeof beg integer)
        else    (set beg 0) )
        (if (> argc 3)
        then    (set end (str2num (argv 3)))
                (istypeof end integer)
                (>= end beg)
        else    (set end 4) )
        (set pm (mkarray 2))
        (set (pm 0) (pix-pixmap-new (width lav) (height lav)))
        (set (pm 1) (pix-pixmap-new (width lav) (height lav)))
        (set pm-shifted (pix-pixmap-new (width lav) (height lav)))
        (set act 0)
        (for n in beg .. end do
                (set pm-act (pm act))
                (set pm-prv (pm (- 1 act)))
                (lav-read lav n)
                (lav-copy lav pm-act)
                (pix-save-png (sprintout "frame-"
                        (int2str n 3 '0') ".png") pm-act )
                (if (> n beg)
                then    (riallinea pm-prv pm-act pm-shifted)
                        (pix-save-png (sprintout "shifted-"
                                (int2str n 3 '0') ".png") pm-shifted ))
                (set act (- 1 act)) )
        (printout "ok" nl) )
(defnet riallinea (pm1 pm2 pm)
        (deflocal w h row line)
        (set w (width pm))
        (set h (height pm))
        (for row in 0 .. (- h 1) do
                (set line (pix-get-box (if (= (% row 2) 1) pm1 pm2)
                        0 row (- w 1) row ))
                (pix-draw-pix pm 0 row line)
                (close line) ))

 semplice che l'ho scritto in pochi minuti...)
ho fatto una veloce ricerca e per ora l'unico riferimento a questo
caso strambo l'ho trovato in questa pagina:
http://tinyurl.com/lfaxp
Si tratta della descrizione del filtro VDub "smart deinterlacing"
di Donald Graft.
Leggi attentamente cosa dice:
--------------------------
Advanced Processing is most often used for "deinterlacing" captured PAL video
originally made from films. If you have movies that seem to be interlaced, it
is worth trying the advanced processing first, because it may allow you to
recover the original progressive frames without quality loss. Because the
processing is sufficient to recover the original progressive frames, full
motion processing is usually disabled when Advanced Processing is enabled.
But some capture cards do weird things when they capture, and if you are
unlucky enough to have such a card, you may need to enable one or more of the
Advanced Processing options and perform Motion Processing. Hopefully, the
analysis below will help you to determine if you are so affected.
--------------------------
Lui accenna ad ulteriori problemi con qualche scheda di acquisizione, ma
non e' il tuo caso: a te basta riallineare i semiquadri (per colpa di
Raiuno che li ha trasmessi cosi') e sei a posto.
Ed ecco il caso che ti riguarda:
--------------------------
The problem is that there is an alternative form for the input stream!
Consider these two ways in which the original material may be telecined: 
1) b1t1b2t2b3t3b4t4... (as before)
2) b1t2b2t3b3t4b4t5... ('perverse' telecining) 
Note that both will appear fine when displayed on an interlaced display, but
a capture of telecine type 2 with capture pattern 1 will no longer give
deinterlaced output on a progressive display without filtering! 
--------------------------
Lui chiama il tuo caso "'perverse' telecining" e anche lui osserva che
appare ugualmente bene quando viene mostrato sul televisore.
Quindi, se ho capito bene, potresti usare questo "smart deinterlacing"
di Vdub, abilitando il modo "Advanced Processing" (e disabilitando la
"full motion processing", perche' non ne hai bisogno).
Pero' non ho capito gli ulteriori dettagli nelle impostazioni, questo
dovresti capirlo da te facendo qualche prova.
Comunque, suppongo che esista un analogo filtro per Avisynth, anche
se purtroppo non lo conosco...

Ti giuro che non ho applicato nessun filtro di deinterlacciamento :-)
Che genio del male :-)
-- 
Paradoxally,
Jan AxHell

se purtroppo non lo conosco...
Ok, proverò, ma non prima di domani, grazie sia a te che Giubbe dei
consigli. Appena ho fatto vi dico come è andata :-)
-- 
Paradoxally,
Jan AxHell

 consigli. Appena ho fatto vi dico come è andata :-)
stavo riguardando questa bella pagina:
http://www.benis.it/dvd/pal/pal.htm
e anche lui parla del caso in cui ti sei imbattuto.
Tra l'altro c'e' anche una schermatina delle impostazioni del filtro
"Smart Deinterlace" di VDub, dal quale si capisce cosa dovresti fare
(sul primo tempo del film): dovresti selezionare soltanto l'opzione
"Phase shift by one field" (e deselezionare tutto il resto). Tale
opzione fa la stessa cosa che ho fatto ieri.
------------------------------------
Ricordando come il preview funziona correttamente solo tramite
l'avanzamento in avanti step by step (non è un problema ovviamente
in fase di conversione in cui funziona sempre)
------------------------------------
Se avanzando step by step, vedi che non e' tornato progressivo,
riprova selezionando "with input field swap", ma non credo sia
necessario...

e anche lui parla del caso in cui ti sei imbattuto.
Grazie! Rispondo solo ora perchč ieri mi č morto il monitor (11 anni
di fedele servizio, ed era uno Smile a 4 canali) e sono rimasto al
buio fino ad un paio d'ore fa. Mi ci metterň verso il week-end, devo
recuperare alcune cose sospese.
-- 
Paradoxally,
Jan AxHell

necessario...
Mi sono messo a provare la cosa, ma ogni volta che tocco la barra di
avanzamento di Vdub *dopo* aver attivato il filtro, mi crasha tutto,
con un messaggio di Windows che accusa smart.vdf, che è proprio lo
Smart Deinterlace 2.0 appena caricato.  :-(
Ma anche se non mi crashasse Vdub, come potrei applicare questo filtro
all'AVS ottenuto da GordianKnot? Ho guardato l'esempio di Giubbe, che
però era pensato per il comando Deinterlace normale, quindi non so che
sintassi usare per lo Smart..
Questo è il mio AVS, come vedete al trim ho messo i frame di inizio e
fine delle due parti, ma poi non so come scrivere il resto, la pagina
di Benis non mostra esempi di script, e il sito di Avisynth non
contempla questo filtro nemmeno tra quelli esterni.
# Created with Gordian Knot
#
# 
http://gknot.doom9.org
#  PLUGINS
LoadPlugin("C:\Video\GordianKnot\DGMPGDec\DGDecode.dll")
#LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\decomb.dll")
#LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\KernelDeInt.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\UnDot.dll")
#LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\dgbob.dll")
#LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\Convolution3d.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\FluxSmooth.dll")
#LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\TomsMoComp.dll")
#LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\VSFilter.dll")
#LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\SimpleResize.dll")
#  SOURCE
mpeg2source("Y:\MISTER HULA-HOOP\Mister Hula-Hoop PAL 43 INT.d2v")
#  TRIM
Part1=trim(0,73200)
Part2=trim(73201,159314)
#  IVTC
#Telecide(order=1,guide=1).Decimate()
#  or use
#IVTC(44,11,95)
#GreedyHMA(1,0,4,0,0,0,0,0)
#  DEINTERLACING (1)
#FieldDeinterlace()
#FieldDeinterlace(blend=false)
#TomsMoComp(1,5,1)
#  DEINTERLACING (2)
#KernelDeInt(order=1,sharp=true)
#  or maybe
#DGBob(order=1,mode=0)
#  DEINTERLACING (3) - special requests
#GreedyHMA(1,0,0,0,0,0,0,0)
#Telecide()
#SeparateFields()
#  CROPPING
crop(6,4,692,568)
#  DENOISING: choose one combination (or none)
Undot()
#  1) little noise
#Temporalsoften(2,3,3,mode=2,scenechange=6)
#mergechroma(blur(1.3))
#FluxSmoothST(5,7)
#  2) medium noise
#Temporalsoften(3,5,5,mode=2,scenechange=10)
#Convolution3d("moviehq") 
FluxSmoothST(7,7)
#  3) heavy noise
#Temporalsoften(4,8,8,mode=2,scenechange=10)
#Convolution3d("movielq") 
#FluxSmoothST(10,15)
#  SUBTITLES
#VobSub("FileName")
#  RESIZING
LanczosResize(640,480)
#  BORDERS
#AddBorders(left,top,right,bottom)
#  COMPRESSIBILITY CHECK
#  !!!!Snip Size now has to be 14 for use in GKnot!
#SelectRangeEvery(280,14)
#  FOOL CCEnc
#empty = BlankClip()
#AudioDub(last,empty)
-- 
Paradoxally,
Jan AxHell

 Part2=trim(73201,159314)
ok. Part1 e' il filmato "interlacciato", Part2 quello progressivo.
Ho visto che hai attivato il filtro Undot... cosa fa?
Comunque, il resto del tuo AVS dovrebbe essere una cosa del genere
(copiando dal post di giubbe di qualche giorno fa):
------------
a=Part1.???.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
b=Part2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
return a+b
------------
dove, al posto di ??? ci va il famoso filtro che shifta un campo,
che pero' non conosciamo (a meno di non voler usare "smart.vdf" in modo
simile a quanto fatto da Xesdeeni).
Se non trovi come fare e nessun esperto di AviSynth ti aiuta, mi sa che
alla fine ti convenga mettere al posto di ??? un filtro di deinterlace
e amen.
Pero' e' un vero peccato, perche' in questo caso, come ti ho detto giorni
fa, i motion artifacts sono doppiamente marcati (la differenza temporale
tra i due campi e' di 40 ms, invece dei 20 ms del caso normale), e
sarebbe bello poterlo rimettere in progressivo senza dover
deinterlacciare...
ciao

 Smart Deinterlace 2.0 appena caricato.  :-(
qua pero' c'e' la versione 2.8 beta 1:
http://neuron2.net/smart/smart.html
inoltre afferma che a partire dalla versione 2.3 non dovrebbe piu'
crashare:
---------------------------------
Version 2.3
[...]
Two bugs were also fixed: 1) If Advanced
Processing was selected while field-only differencing was selected, the
filter crashed.
[...]
---------------------------------
mi pare che sia il tuo caso... :-)

deinterlacciare...
Se trovo le impostazioni ottimali, provo a fare tutto solo con VDub,
però prima devo studiare come si procede sull'interfaccia per lavorare
separatamente sulle due parti. Un divx normale lo so fare, la
divisione in due non l'ho mai fatta. Ci sono i marcatori di inizio e
fine segmento, ma non so se devo salvare ogni segmento come se fosse
un job a sè stante. Immagino sia spiegato nelle faq di giubbe, ma ora
sono troppo stanco, ci guarderò domani. ;-)
-- 
Paradoxally,
Jan AxHell

 del genere :-/
appunto... ci sara' da guardare come ha fatto Xesdeeni con quel suo
script, e confrontare con il codice sorgente... poi guardare il
codice dello smart e fare una cosa analoga :-)
Non dovrebbe essere difficile, roba da pochi minuti... il punto pero'
e' che va provato sotto windows...

 del genere :-/
Come ti ha detto Frank esiste uno script (piutosto lungo) che importa i
vari filtri per virtualdun dentro avisynth.
Ti basta copiare il file e caricarlo all'inizio dello script avs, poi
riprendendo il mio esempio:
a1=Part1.ConvertoRGB32
a2=a1.VD_SmartDeinterlace(???).ConvertToYuY2
a=a2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
Dove ??? sono i parametri del filro mostrati nella pagine indicata da Frank
L'unica cosa che non devi mettere è "clip" dato che è assunto
automaticamente.
La stessa cosa si può fare anche in avisynth. Mi sembra con due filtri
consecutivi, ma non ricordo quali, sorry. Se stasera ho un po' di tempo ci
guardo.


 Dove ??? sono i parametri del filro mostrati nella pagine indicata da Frank
si'.
Quella pagina che gli ho indicato usava un altro filtro (DeinterlaceAreaBased
di Gunnar Thalin), quindi va riadattato allo Smart di Donald Graft.
Credo di avere capito come funziona.
Per prima cosa occorre usare questa funzione:
LoadVirtualDubPlugin("...\Smart.vdf", "ShiftField", 2)
al posto dei puntini va completato il path dove si trova "Smart.vdf".
Al terzo argomento credo che in questo caso vada messo 2 (dato che si
vuole fare uno shift dei campi, occorre leggere due frame per poter
generare il primo frame).
Il secondo argomento e' il nome con cui verra' usato il filtro (ho
scelto il nome "ShiftField", sperando che cio' sia consentito).
La parte che hai scritto sopra, andrebbe quindi riscritta cosi':
a1=Part1.ConvertoRGB32
a2=a1.ShiftField(0,0,0,0,1,0,0,1,0,0,0).ConvertToYuY2
a=a2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
Mi pare ci sia tutto... non gli resta che fare qualche prova :-)

Mi pare ci sia tutto... non gli resta che fare qualche prova :-)
Ho letto entrambi i vostri post, ma rispondo qui, che è l'ultimo.
Premesso che mi sta fumando la testa, questo AVS ha senso, o devo
togliere l'ultima parte? La terza riga qui sopra contiene gli stessi
comandi, ma con una sintassi diversa...
(ho tolto tutte le righe che erano commentate, tranne i titoli di
sezione)
#  PLUGINS
LoadPlugin("C:\Video\GordianKnot\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\FluxSmooth.dll")
LoadVirtualDubPlugin("c:\Video\GordianKnot\VirtualDubMod\plugins\Smart.vdf",
"ShiftField", 2)
#  SOURCE
mpeg2source("Y:\MISTER HULA-HOOP\Mister Hula-Hoop PAL 43 INT.d2v")
#  TRIM
Part1=trim(0,73200)
Part2=trim(73201,159314)
a1=Part1.ConvertoRGB32
a2=a1.ShiftField(0,0,0,0,1,0,0,1,0,0,0).ConvertToYuY2
a=a2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
#  CROPPING
crop(6,4,692,568)
#  DENOISING: choose one combination (or none)
Undot()
#  2) medium noise
#Temporalsoften(3,5,5,mode=2,scenechange=10)
#Convolution3d("moviehq") 
FluxSmoothST(7,7)
#  RESIZING
LanczosResize(640,480)
-- 
Paradoxally,
Jan AxHell

 crop(6,4,692,568)
Qui lavori sull'intero filmato, quindi è sbagliato. Dovrebbe essere:
b=part2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
return a+b
bye

 togliere l'ultima parte?
devi togliere l'ultima parte.
Te lo riscrivo completo:
------------------- inizio
LoadPlugin("C:\Video\GordianKnot\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\FluxSmooth.dll")
LoadVirtualDubPlugin("C:\Video\GordianKnot\VirtualDubMod\plugins\Smart.vdf",
"ShiftField", 2)
mpeg2source("Y:\MISTER HULA-HOOP\Mister Hula-Hoop PAL 43 INT.d2v")
Part1=trim(0,73200)
Part2=trim(73201,159314)
a1=Part1.ConvertoRGB32
a2=a1.ShiftField(0,0,0,0,1,0,0,1,0,0,0).ConvertToYuY2
a=a2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
b=Part2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
return a+b
------------------- fine
Fai attenzione, se lo ritagli, che la riga "LoadVirtualDubPlugin" e'
stata spezzata in due (non so se il parser di avisynth la accetta...
nel dubbio, elimina il carattere di "accapo" e fallo diventare una
linea sola).
Non so se lo script sopra sia corretto, del resto non ho mai usato
AviSynth :-)
Comunque mi sono basato su quanto ha scritto giubbe e sugli script
che ho visto in giro; per la scelta dei parametri da passare allo
"smart" ho guardato il codice sorgente; ti risparmio i dettagli :-))
Anche se forse non funzionera', almeno una prova falla...

 a1=Part1.ConvertoRGB32
manca una 'T':
a1=Part1.ConvertToRGB32
inoltre non so se occorra mettere le parentesi tonde, cosi':
a1=Part1.ConvertToRGB32()
(lo stesso vale per ConvertToYuY2)

Anche se forse non funzionera', almeno una prova falla...
Grazie, proverò in ogni caso, ho letto anche l'altro post con le
correzioni.
-- 
Paradoxally,
Jan AxHell

 correzioni.
e' inutile che provi lo script avs se l'unico filtro che fa il
lavoro utile non funziona...

 lavoro utile non funziona...
mi sono dimenticato di aggiungere che, se dovesse funzionare
l'impostazione con entrambi gli swap occorre cambiare i
parametri nello script... (quelli della funzione "ShiftField")

parametri nello script... (quelli della funzione "ShiftField")
Non funziona nemmeno spuntando tutte 4 le voci. Non so che dire, non
ha senso. La preview è sempre rigata, molto o poco, ma mai pulita.
Inoltre, anche se volessi provare per vedere cosa esce, l'AVS ha
qualcosa che non va, perchè quando lo apro mi viene detto
"Splice: video formats don't match" 
alla riga 16, la quale però è il return...
LoadPlugin("C:\Video\GordianKnot\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\FluxSmooth.dll")
LoadVirtualDubPlugin("C:\Video\GordianKnot\VirtualDubMod\plugins\Smart.vdf","ShiftField",
2)
mpeg2source("Y:\MISTER HULA-HOOP\Mister Hula-Hoop PAL 43 INT.d2v")
Part1=trim(0,73200)
Part2=trim(73201,159314)
a1=Part1.ConvertToRGB32
a2=a1.ShiftField(0,0,0,0,1,0,0,1,0,0,0).ConvertToYuY2
a=a2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
b=Part2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
return a+b
Cmq dai, ringrazio moltissimo sia te che Giubbe, se non salta fuori
nient'altro, userò un semplice deinterlace.
-- 
Paradoxally,
Jan AxHell

 nient'altro, userò un semplice deinterlace.
per usare un deinterlace, puoi usare lo stesso script (in modo da
deinterlacciare solo il primo tempo), modificando la parte che ho
riportato sopra con questa:
----------
a=Part1.???.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
b=Part2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
return a+b
----------
dove al posto di ??? ci metti il filtro di deinterlace che vuoi tu.
A scrivere un programma che generi in uscita lo stream video dei
frame rimessi a posto, ci metterei davvero pochi minuti, ma il
problema e' che non ho idea di come interfacciarlo a programmi
diversi da mencoder...
Nell'ambito di windows e' tutto piu' complicato, le applicazioni
comunicano tramite dll modulari conformi a specifiche API (e ce ne
sono migliaia)...
Sotto linux (e sistemi sul tipo unix) e' tutto molto piu' semplice,
per comunicazioni di questo tipo si tende a usare delle "pipeline",
senza bisogno di specifiche API.
Quindi, ad esempio, e' banale scrivere un programma (pippo) che
genera sullo "standard output" uno stream "yuv4mpeg2", e poi
usarlo in questo modo:
pippo | mplayer -
(questo comando visualizza il filmato generato da "pippo").
Oppure:
pippo | mencoder - -o out.avi -ovc xvid ...
(questo comando codifica in xvid il filmato generato da "pippo").
Ciao

dove al posto di ??? ci metti il filtro di deinterlace che vuoi tu.
Ho provato cosě
LoadPlugin("C:\Video\GordianKnot\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\FluxSmooth.dll")
LoadVirtualDubPlugin("C:\Video\GordianKnot\VirtualDubMod\plugins\Smart.vdf","ShiftField",
2)
mpeg2source("Y:\MISTER HULA-HOOP\Mister Hula-Hoop PAL 43 INT.d2v")
Part1=trim(0,73200)
Part2=trim(73201,159314)
a=Part1.FieldDeinterlace(blend=false).crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
b=Part2.crop(6,4,692,568).Undot().FluxSmoothST(7,7).LanczosResize(640,480)
return a+b
ma a questo punto č pazzo VirtualDub! Mi dice 
Script error: there is noi function named "FieldDeinterlace"
Peccato che questa sia copiata/incollata da un altro AVS creato da
GordianKnot, e che sia una delle funzioni piů comuni, incluse peraltro
nella maschera delle impostazioni, e che ho usato mille volte. Bah.
-- 
Paradoxally,
Jan AxHell

 Script error: there is noi function named "FieldDeinterlace"
non ho mai usato AviSynth, ma la prima cosa che mi risalta agli occhi
e' che per usare alcuni filtri devi caricarli con "LoadPlugin"...
Il filtro "FieldDeinterlace" che vuoi usare e' interno? Sei sicuro
che tu non debba aggiungere in cima allo script questa riga? 
LoadPlugin("C:\Video\GORDIA~1\AviSynthPlugins\decomb.dll")


Maremma, c'hai ragione, me lo ero perso quando ho tolto tutte le righe
commentate, dato che ovviamente prima non avevo impostato quel filtro.
Qui sta la differenza tra il programmatore e il caotico utente :P
Adesso si carica perfettamente, ti dirò come è venuto, ma sappiamo già
che sarà semplicemente "discreto"...
-- 
Paradoxally,
Jan AxHell

 che sarą semplicemente "discreto"...
la previsione teorica e' che dovresti perdere un po' di definizione nelle
scene piu' movimentate. Il filtro di deinterlacciamento dovrebbe avere
un test di "edge detection" (presumo con qualche soglia impostabile),
e un metodo per rimuovere gli spigoli individuati da tale test; dato che
hai specificato "blend=false", presumo che il metodo sara' la sostituzione
dei segmenti spigolosi con un'interpolazione delle due linee sopra e sotto
(il "blend", invece, mescola due linee adiacenti, cioe' appartenenti a
campi diversi, e questo provoca spesso effetti "fantasma").
Se la cosa puo' consolarti, tempo addietro mi capito' piu' di una volta
di acquisire film che mi apparivano interlacciati e li codificai
semplicemente applicando un filtro di deinterlacciamento. Pero', adesso,
pensando che il film, in origine, e' stato ripreso a 24 fotogrammi al
secondo, sono quasi certo che quei casi erano del tipo in cui ti sei
imbattuto adesso.
Tra l'altro mi ricordo anche quali film erano! :-)
Uno era sicuramente "Cold comfort farm" (film inglese molto carino),
trasmesso da "La7", al quale applicai un "linear blend" e ottenni un
risultato scarso (oggi, in quel caso, non avrei usato il blend).
Un caso stranissimo (che riportai anche sul Ng) era quello di "Ovosodo",
trasmesso da un canale Sky. Quando lo editavo con il mio programma, mi
accorsi che l'inizio del film era progressivo, e alla fine aveva le
tipiche rigacce orizzontali... allora individuai il frame esatto in cui
il film diventava improvivsamente interlacciato. Dato che il film
veniva trasmesso il giorno seguente (tipico dei canali Sky), pensai che
doveva essere successo un pasticcio durante l'acquisizione, cosi' buttai
tutto e il giorno dopo lo riacquisii... Miiiiiiii! Era identico a quello
del giorno prima: all'inizio progressivo, e diventava interlacciato
nella stessa identica posizione. Adesso penso che, a partire da quella
posizione, il film era ancora progressivo, ma con i campi shiftati!
All'epoca non sapevo di questa cosa, e rimasi senza alcuna spiegazione...

 trasmesso da un canale Sky.
per curiosita', sono andato a controllare su "google gruppi";
ricordavo di averlo riacquisito piu' volte, ma addirittura tre! :-)
Guarda questo, dove avevo riportato l'esperienza che mi era
successa di fresco:
http://tinyurl.com/zuo7w

campi diversi, e questo provoca spesso effetti "fantasma").
Infatti, ed č venuto accettabile. Grazie dell'assistenza :-)
DivX DRF Analyzer v0.9.5 Report!
File Name: W:\Mister Hula-Hoop PAL 43 INT MOD4.avi
FourCC: XVID
Codec: XviD0045
Resolution: [ Width: 640 Height: 464 ]
Frame Rate: 25.000 frames per second
The Video has 159315 frames [ 01:46:12 ]
Average Frame quality is  HIGH	[Average DRF/quantizer is 3.00]
Standard Deviation: Quality is MEDIUM	[Std. Deviation is 0.99]
Image Resolution is HIGH
There are NO frame drops ( NO drops is better )
Recomended Resolution: [608x448] 	(Target DRF/quantizer=2.8)
Performance Caracteristics: 
Macroblocks per frame: 1160 ( Poor Playback in Slow Computers, PIII450
or better required ) 
The Width is multiple of 32
Kilobits per Second: 1540.73
Kilobits per Frame: 61.62
Kilobits per Macroblock: 0.053
Bits per Pixel: 0.21
Frame Type Statistics :
I Frames: 0.92%
P Frames: 50.20%
B Frames: 48.88%
S Frames: 0.00%
N Frames: 0.00%
(More Advanced Codecs use B and S frames)
Frame Quality Statistics :
DRF=1&2:	76939	48.7%
DRF=3:		3039	1.9%
DRF=4:		77868	49.3%
DRF=5:		0	0.0%
DRF=6:		0	0.0%
DRF=7:		0	0.0%
DRF=8:		0	0.0%
DRF=9:		0	0.0%
DRF>9:		0	0.0%
KeyF/DeltaF:		0.93%
KeyDRF<4:	1469
KeyDRF=4:	0
KeyDRF>4:	0
AverageKeyDRF:	2.04
MAXDRF:	4
AverageDRF:	3.00
Deviation:	0.99
-- 
Paradoxally,
Jan AxHell

 Deviation:    0.99
comunque il massimo e' 4, non e' affatto alto (meglio cosi').
La cosa strana e' che hai una deviazione vicina a 1, se non sbaglio
questo vuol dire che per circa meta' dei frame e' stato usato il
quantizer 2, e per l'altra meta' il quantizer 4.
Infatti, la media aritmetica dei quantizer usati e' 3, ma la
varianza (il quadrato della deviazione) e' circa 1. Il massimo e' 4.
La varianza e' la media aritmetica dei quadrati delle differenze
tra i quantizer usati e la media (3)... Se la varianza e' 1, ne segue
che il codec ha usato quasi sempre i valori 2 e 4...
Ti torna? :-)

Ti torna? :-)
Eh? :-)
Scherzi a parte, sì, guardando il grafico di DRFAnalyzer è
praticamente un pettine di stanghette da 2 e da 4.
-- 
Paradoxally,
Jan AxHell

 praticamente un pettine di stanghette da 2 e da 4.
era un caso davvero curioso. E' rarissimo che si possa dedurre la
distribuzione in modo preciso, basandosi solo su media, varianza
e valore massimo...
Il caso piu' facile e' quando la varianza e' 0, che e' quello in
cui tutti i valori sono uguali. Ma e' un caso banale.
In questo caso invece, la varianza era circa 1, e il massimo era
proprio a distanza 1 dalla media.

proprio a distanza 1 dalla media.
E' anche curioso che io sia riuscito a ottenere 3 di DRF: di solito
faccio i salti mortali con le impostazioni, e non ottengo mai meno di
3.3. ;-)
-- 
Paradoxally,
Jan AxHell

 3.3. ;-)
questo ha una spiegazione molto semplice: tendi a usare o una
risoluzione troppo alta o un bitrate troppo basso :-)
Ma del resto 3.3 come DRF medio non e' mica male...

Ma del resto 3.3 come DRF medio non e' mica male...
Ehh, ti garantisco che quel DRFAnalyzer non è mai contento, anche
quando riduco alla risoluzione che vuole lui (il mio bitrate è sempre
1500/2000), mi ridice che devo usare una risoluzione più bassa.
Pensa che i film di Totò su DVD, progressivi, visivamente eccellenti,
sono difficilissimi da rippare ottenendo un DRF inferiore a 4, anche
con 512x384 @ 1400 Mb. Ne ho fatti molti. Ciò non toglie che quel che
esce è sempre ottimo da vedere. Quindi spesso, quando mi accorgo che
sono più "bizze" matematiche che altro, faccio come pare a me, ovvero
arrivo fin dove IO vedo bene il film ;-)
-- 
Paradoxally,
Jan AxHell

 con 512x384 @ 1400 Mb. Ne ho fatti molti.
potevi fare una prova di codifica a quantizer costante q=2.
In quel caso DRF Analyzer ti deve dire che il DRF medio e' 2 (e
deviazione standard = 0).
Cosi' vedevi anche che dimensione del file ottenevi.
Ho appena iniziato a scrivere un parser AVI (lo riscrivo completamente
da zero), a cui probabilmente in seguito aggiungero' i calcoli effettuati
da DRF Analyzer (nel caso di codec di tipo MPEG-4).
Per ora ci sto mettendo le analisi effettuate da "MPEG4 Modifier".
Alla fine vorrei ottenere un unico programmino che ricavi da un AVI/divx
tutte le informazioni possibili :-)
Al momento sono arrivato all'inizio del parser MPEG-4, per estrarre le
informazioni che vorrei devo ancora scrivere un parser VOL (Video Object
Layer) e VOP (Video Object Plane)...
Questo e' il risultato di un parsing ottenuto allo stato attuale
(i chunk con startcode "0x120" sono i VOL, di cui mi accingo a scrivere
il parser):
RIFF AVI  (734113966)
    LIST hdrl (8830)
        avih (56)
            MicroSecPerFrame = 40000
            MaxBytesPerSec = 0
            PaddingGranularity = 0
            Flags = 272
            TotalFrames = 138550
            InitialFrames = 0
            Streams = 2
            SuggestedBufferSize = 0
            Width = 608
            Height = 352
        LIST strl (4244)
            strh (56)
                Type = video
                Handler = xvid
                Flags = 0
                Priority = 0
                Language = 0
                InitialFrames = 0
                Scale = 1
                Rate = 25
                Start = 0
                Length = 138550
                SuggestedBufferSize = 70154
                Quality = 10000
                SampleSize = 0
                Freq (Rate/Scale) = 25
            strf (40)
                Size = 40
                Width = 608
                Height = 352
                Planes = 1
                BitCount = 12
                Compression = XVID
                SizeImage = 1284096
                XPelsPerMeter = 0
                YPelsPerMeter = 0
                ClrUsed = 0
                ClrImportant = 0
            JUNK (4120)
        LIST strl (4234)
            strh (56)
                Type = audio
                Handler = 0
                Flags = 0
                Priority = 0
                Language = 0
                InitialFrames = 1
                Scale = 1152
                Rate = 48000
                Start = 0
                Length = 230917
                SuggestedBufferSize = 960
                Quality = 4294967295
                SampleSize = 0
                Freq (Rate/Scale) = 41.666666
            strf (30)
                AudioTag = 0x55
                Channels = 2
                SamplesPerSec = 48000
                AvgBytesPerSec = 23359
                BlockAlign = 1152
                BitsPerSample = 0
                Size = 12
            JUNK (4120)
        LIST odml (260)
            dmlh (248)
    LIST INFO (74)
        ISFT (43)
            "VirtualDubMod 1.5.4.1 (build 2178/release)"
        IAS1 (9)
            "Italiano"
    JUNK (1300)
    LIST movi (728192246)
        01wb (384)
        01wb (480)
        01wb (672)
        01wb (576)
        01wb (576)
        01wb (672)
        01wb (576)
        01wb (576)
        01wb (672)
        01wb (576)
        01wb (576)
        01wb (576)
        01wb (576)
        01wb (576)
        01wb (480)
        01wb (576)
        01wb (480)
        01wb (576)
        01wb (576)
        01wb (480)
        01wb (576)
        00dc (2590)
             start pos = 0, start code = 0x1b0
             start pos = 1, start code = 0x1b5
             start pos = 1, start code = 0x100
             start pos = 0, start code = 0x120
             start pos = 139, start code = 0x1b2
             start pos = 8, start code = 0x1b6
        01wb (576)
        01wb (576)
        00dc (328)
             start pos = 0, start code = 0x1b6
        01wb (480)
        01wb (576)
        00dc (23)
             start pos = 0, start code = 0x1b6
        01wb (576)
        00dc (222)
             start pos = 0, start code = 0x1b6
        skipping...
    idx1 (5911472)
JUNK (1858)

 Layer) e VOP (Video Object Plane)...
avrei bisogno di una documentazione che spieghi la struttura di questi
bitstream, ma non trovo nulla che non sia a pagamento, 'tacci loro :-)
L'unica mia fonte di info sono i sorgenti di "mpeg4 modifier" (in C##),
ma faccio fatica a dedurre la struttura dal solo codice (non c'e'
nemmeno un commento significativo)

Cosi' vedevi anche che dimensione del file ottenevi.
Ehh, quando hai diversi film da restituire, ti accontenti ;-)
Proverò col prossimo che mi fa richieste di bitrate esose.
-- 
Paradoxally,
Jan AxHell