• Sabato 14 febbraio da Audio Quality partirà un roadshow che porterà il nuovo proiettore DLP 4K trilaser Valerion VisionMaster Max in giro per l'Italia e che toccherà Roma, Genova, Milano, Napoli, Padova e Udinee forse anche Bari e Torino. Maggiori info a questo indirizzo

HTPC, aiuto per la guida di ffdshow

stealth82 ha detto:
Dipende da quella che è la risoluzione d'origine. Tale resize ha un rapporto 2.00:1. Sicuramente non stai guardando un DVD ma un file prodotto da chissà chi :D

E` una mia copia di backup in formato Divx di un DVD regolarmente posseduto... preferisco non rovinare i DVD originali e avere la comodita` di avere tutto su HDD :D

Quindi non era di certo anamorfico, ma tutte le barre sopra e sotto sono state diligentemente asportate dal sottoscritto :D

Per portare una cosa del genere a una risoluzione FullHd (discorso inizio a temere solo accademico :( mi sa che mi conviene farlo fare alla scheda video!) cosa dovrei fare?

Io mi aspetterei una cosa di 1920*800 e le bande nere dovrebbe aggiungerle il TV (come accade con il Divx originale, del resto)...
mi sembra invece che accadesse l'incontrario (cioe` e` l'altezza ad essere aumentata portandola ad un AR 2.35:1 e non la larghezza ad essere diminuita).

Da notare comunque che il filmato a parte il fatto che andava in slowmotion aveva l'AR corretto alla fine... pero` avevo avuto un duplice intervento di "degradazione" dell'immagine: ffdshow + avisinth la portavano a 2160*1080 e poi la scheda grafica lo ritrasformava in 1920*1080.

stealth82 ha detto:
Ma guarda che non è la macchina che fa quello che vuole, ma chi ha scritto che si debba comportare in tale modo - salvo bugs :D

Mah a volte ho proprio l'impressione che sia Lui a far quello che le pare...
per esempio son tutto pronto per fare le mie prove, attizzo il task manager, faccio partire Mediaportal poi mi viene in mente "avro` settato accurate rounding in ffdshow?" faccio start, scelgo ffdshow e il menu` e` bianco :eek: si e` freezato il PC... vabbeh riavviamo spegnendo l'alimentatore e ringranziando sempre la Cooler Master per aver risparmiato sul case e non averci messo il Reset :(

Vabbhe anch'io forse una formattata dovrei provare a farla... si e` straticata troppa bratta su sta povera installazione.

fanoI
 
fanoI ha detto:
Quindi non era di certo anamorfico, ma tutte le barre sopra e sotto sono state diligentemente asportate dal sottoscritto :D
Ecco, questa è la risposta che andavo cercando :D
Ma scusa, che ti aspettavi?!?

fanoI ha detto:
Per portare una cosa del genere a una risoluzione FullHd (discorso inizio a temere solo accademico :( mi sa che mi conviene farlo fare alla scheda video!) cosa dovrei fare?

> SUPER CUT
A questo punto lo fai sulla larghezza, se per te è la cosa più importante. Ma io, le guide, che le scrivo a fare :rolleyes:

Dall'argomento resize:

stealth82 ha detto:
Consigli:
  • h: rappresenta la variabile - nel contesto dinamico - sulla quale intervenire per determinare il valore di upsampling finale, ovvero il numero di linee di scansione verticali. E' naturalmente possibile intervenire sullo script per "bloccare" la larghezza e calcolare invece dinamicamente l'altezza.
    Codice:
    w = 1280
    ar = float(ffdshow_dar_x) / float(ffdshow_dar_y)
    ffdshow_setDAR(ffdshow_dar_x, ffdshow_dar_y)
    Spline16Resize(w, int(float(w) / ar))

fanoI ha detto:
Mah a volte ho proprio l'impressione che sia Lui a far quello che le pare...

> HYPER CUT
Io so solo che voglio molto bene al mio HTPC, e lui lo sa :D
 
Ultima modifica:
La tua guida stai tranquillo che l'ho letta tutta... e quell'istruzione l'avevo vista pero` io vorrei tentare di sfruttare i mie 2 core e la parte multithread della guida e` - per tua stessa ammissione - ancora Work in progress, giusto?

Quindi come si traduce in un contesto multicore... ci ho pure provato, ma di dava un errore di qualche genere...

Ahh io e il mio HTPC ci odiamo cordialmente... e lui lo sa :D
 
Vaaaaaaaa bene....

Codice:
w = 1920
ar = float(ffdshow_dar_x) / float(ffdshow_dar_y)
ffdshow_setDAR(ffdshow_dar_x, ffdshow_dar_y)
MT("Spline16Resize(w, last.height)", threads=4)
MT("Spline16Resize(last.width, int(float(w) / ar))", splitvertical=true, threads=4)
 
Grazie, stealth82 sei davvero gentilissimo :D

Vorrei essere a casa per lavorare con il mio HTPC invece che essere in questo postaccio inospitale... che sarebbe il mio posto di lavoro :D

Vabbeh dai ancora 4 ore di pazienza e poi mi godro` il mio HTPCche va a scatti :eek:
 
Allora ho provato la versione suggeritami e in effetti con un filmato alla mitica risoluzione di 656*272 ottengo un filmato in effetti fluido a 1080p...
e sono solo al 57% :eek: così ho aggiunto il HQ3Den() e reggeva... poi però ci ho schiaffato il limited sharpen fasten e buum 80% e tutto bello che scatta come un filmino dei fratelli Lumiere :D

Son soddisfazioni :D

Inoltre l'ho provato su un altro fimato e il resize ha tornato errore dicendo che uno di 2 valori non è divisibile per 2... e mi sa che a questo non si può porre rimedio:cry:
 
Ultima modifica:
Ciao Stealth!

Ho provato il tuo nuovo Stealth Pack e funziona, tranne la riduzione a finestra di TheaterTek (almeno sul mio HTPC), che se effettuata blocca la riproduzione con segnalazione "unable to create filter graph".

Dopo svariati test incrociati, ho determinato che il problema è la famosa AviSynth.ddl 1.5.7.0 che va dentro alla cartella System32: se si utilizza la vecchia versione 1.5.6.0, tutto continua a funzionare regolarmente, ma in più TheaterTek può essere ridotto a finestra - con conseguente possibilità di verificare grafici, consumi, ecc. ecc..

Se il problema fosse capitato anche ad altri, oppure fosse già noto ed irrisolto, posso fornirti la vecchia versione della .ddl funzionante per inserirla nel tuo pack e renderlo perfetto!!!

E comunque un grazie per l'immenso lavoro che stai facendo (mi dispiace non poter provare le ultime configurazione a causa dell'HTPC obsoleto - ma fra un po'...)!!!
 
fanoI ha detto:
Son soddisfazioni :D
:D

fanoI ha detto:
Inoltre l'ho provato su un altro fimato e il resize ha tornato errore dicendo che uno di 2 valori non è divisibile per 2... e mi sa che a questo non si può porre rimedio:cry:
In realtà si potrebbe, ma un po' per pigrizia, un po' per altri argomenti più interessanti non ho ancora sperimentato come fare. Alla fine avevo creato un profilo MEDIA per far rientrare quelle sorgenti che non sono nè 16:9 nè 4:3, insomma, i castroni che trovi in giro. Purtroppo il resize è molto rigido ca. le regole di dimensionamento. Se l'asse calcolato sulla base del rapporto non è divisibile per un dato moltiplicatore va in errore. Per risolverlo credo basti giocare sulle funzioni di round che mette a disposizione AviSynth.
Vediamo se riesco a tirare fuori qualcosa adesso così poi mi dici :D

YGPMOLE ha detto:
Dopo svariati test incrociati, ho determinato che il problema è la famosa AviSynth.ddl 1.5.7.0 che va dentro alla cartella System32: se si utilizza la vecchia versione 1.5.6.0, tutto continua a funzionare regolarmente, ma in più TheaterTek può essere ridotto a finestra - con conseguente possibilità di verificare grafici, consumi, ecc. ecc..
Quella del mio pack serve per abilitare la funzione multi-thread. Hai un processore multi-thread? Se no mi sembra strano in quanto non ho alcun problema a ridurre in finestra TT e fare qualche controllo consumo o aprire le proprietà di ffdshow per esempio.

YGPMOLE ha detto:
E comunque un grazie per l'immenso lavoro che stai facendo (mi dispiace non poter provare le ultime configurazione a causa dell'HTPC obsoleto - ma fra un po'...)!!!
Grazie a te per l'apprezzamento ;)
 
fanoI ha detto:
Inoltre l'ho provato su un altro fimato e il resize ha tornato errore dicendo che uno di 2 valori non è divisibile per 2... e mi sa che a questo non si può porre rimedio:cry:
OK risolto.
Vi ringrazio per costringermi ad occupare il mio tempo libero cercando di risolvere i vostri problemi... ma son contento quando una volta tanto sono anche i miei :D

Con questa dovresti essere in una botte di ferro:

Codice:
ar = float(ffdshow_dar_x) / float(ffdshow_dar_y)
w = 1920
h = round(int(float(w) / ar) / 16) * 16
ffdshow_setDAR(ffdshow_dar_x, ffdshow_dar_y)
MT("Spline16Resize(w, last.height)", threads=4)
MT("Spline16Resize(last.width, h)", splitvertical=true, threads=4)

Adesso aggiorno la guida con questa novità.
 
Ok, per la gioia di grandi e piccini, ovvero per semplificare le cose, mi sono premurato di scrivere due piccole functions in modo da raccogliere meglio il codice di resize dinamico. Perchè queste funzionino è importante che riscarichiate lo stealth pack, in particolar modo copiate il file common.avsi nella vostra cartella plugins di AviSynth.

Dinamica su base orizzontale (per aggiustare variare entrambi i valori 1280)

Codice:
ffdshow_setDAR(ffdshow_dar_x, ffdshow_dar_y)
Spline16Resize(1280, DynamicHeight(1280, ffdshow_dar_x, ffdshow_dar_y))

Dinamica su base verticale (per aggiustare variare entrambi i valori 720)

Codice:
ffdshow_setDAR(ffdshow_dar_x, ffdshow_dar_y)
Spline16Resize(DynamicWidth(720, ffdshow_dar_x, ffdshow_dar_y), 720)

Multi-thread dinamica su base orizzontale (per aggiustare variare entrambi i valori 1280)

Codice:
ffdshow_setDAR(ffdshow_dar_x, ffdshow_dar_y)
MT("Spline16Resize(1280, last.height)", threads=4)
MT("Spline16Resize(last.width, DynamicHeight(1280, ffdshow_dar_x, ffdshow_dar_y))", splitvertical=true, threads=4)

Multi-thread dinamica su base verticale (per aggiustare variare entrambi i valori 720)

Codice:
ffdshow_setDAR(ffdshow_dar_x, ffdshow_dar_y)
MT("Spline16Resize(DynamicWidth(720, ffdshow_dar_x, ffdshow_dar_y), last.height)", threads=4)
MT("Spline16Resize(last.width, 720)", splitvertical=true, threads=4)

Ho già anche aggiornato la guida, tranne lo ss (lo farò domani :D)
 
Ultima modifica:
stealth82 ha detto:
Quella del mio pack serve per abilitare la funzione multi-thread. Hai un processore multi-thread? Se no mi sembra strano in quanto non ho alcun problema a ridurre in finestra TT e fare qualche controllo consumo o aprire le proprietà di ffdshow per esempio.

Ho il vecchio Pentium4 3.2 GHz con abilitata la funzione di Hyper-Threading, ma è un mono-core: non so se sia questa la causa del problema (che, ripeto, non è un crash di TheaterTek, ma un blocco della riproduzione con segnalazione di impossibilità di ricostruire il filter graph - cosa che a finestra intera non succede...).
 
Allora stealth82 ho provato il resize dinamico e funziona beni con "i castroni che trovi in giro" come li chiami tu :D ed ora sembra funzionare bene ho provato con i filamti in cui dava errori di divisibilità ed ora vengono resizati a 1920*x :D

Lo script MT mancava però di una tonda, questa è la versione corretta:

Codice:
ffdshow_setDAR(ffdshow_dar_x, ffdshow_dar_y)
MT("Spline16Resize(1920, last.height)", threads=4)
MT("Spline16Resize(last.width, DynamicHeight(1920, ffdshow_dar_x, ffdshow_dar_y)[B])[/B]", splitvertical=true, threads=4)
Ho comunque notato che su invece un filmato esattamente a 1280*720 (vero 16:9) lo resizava a 1920*1072 beh immagino sia dovuto alle approsimazioni del round... beh credo sia meglio usare quella versione solo per i filmati con AR non 16:9 o non divisibili per i valori che piaccino a Spline :D.. i profili esistono proprio per questo!

Ciao e grazie,
fanoI
 
Non era il round ma l'int che avevo lasciato... fare queste cose ad ora tarda non è che sia il massimo - compresa la tonda che ho dimenticato ( :D ).
L'ho aggiustato e ora funziona perfettamente, non dovrebbe più bacarti la dimensione corretta.

Riscarica il pack e sovrascrivi il precedente common.avsi ;)
 
E' il bello di scrivere codice a notte fonda :D

Mi sa che stanotte però mi conviene andare a dormire ad un'ora decente... non fare lo zombie anche oggi :D

fanoI
 
chi mi fa un grande favore?

chi mi fa questo favore :fiufiu: :rolleyes: ?
chi mi scriverebbe un'istruzione completa "All Avisynth" per materiale 16:9 con queste caratteristiche:

- denoiser in testa
- resize dinamico (fisso per larghezza a 1360/1366/1368 a scelta) metodo spline
- sharpen
- istruzioni per il MT e colormetrix
- possibilmente tenendo conto dell' HW in firma :D

Grazie
ciao
massimo
 
Ho provato la nuova versione ora sembra funzionare con tutti i filmati solo in uno mi da un risultato anomalo ha risoluzione di input 656*384 e come output riscalato ottengo questo valore: 1920*1120 che è più dei 1080 che il mio schermo può mostare... ovviamente l'immagine non è tagliata visto che "qualcuno" (immagino la scheda video) alla fine aggiunge due bandine ai lati... comunque mi sa che forse con sto rip ho fatto casino con l'AR :D 1.70:1 non l'ho mai visto... sembra una via di mezzo tra 16:9 e 4:3!

In ogni caso con filmati a 4:3 l'altezza aumenta ancora fino ad arrivare a 1440 :eek:

A pensarci forse è pure giusto non mi viene in mente un altro modo per far stare un frame < 16:9 in uno schermo 16:9... non so se sarebbe più giusto fare 1080 e aggiungere dei bordi in qualche modo o farlo fare alla scheda video come in questo caso :confused:

Ho provato anche il ColorMatrix() non è mi è però chiara la chiamata ovvero non è che sta facendo l'incontrario di quello che vorremmo?

Mi spiego nella tua preziosa guida dici:

qualunque sorgente SD - naturalmente candidata alla rappresentazione mediante BT.601 - "upscalata" fino alla 720a linee verticale o più, verrà inevitabilmente rappresentata mediante il profilo BT.709, falsando di conseguenza il risultato.

Però nella chiamata che consigli di usare è scritto:
ColorMatrix(mode="Rec.601->Rec.709")

Non dovrebbe essere l'incontrario?
Noi abbiamo un qualcosa che avrebbe dovuto essere visualizzato in 601, ma qualcuno (la scheda video?) vuol portarlo a 709... io avevo capito che questo lo riportasse a 601 anche se poi era riscalato... a me a vedere la chiamata sembra il contrario, ma forse è solo la chiamata a non essere chiara e fa ciò che vogliamo :D

Ho provato a far anche ColorMatrix() multithreaded con l'istruzione MT, ma dice che manca una parentesi...

A me però anche con tutto l'impegno la parentesi mancante no la vedo stasera:

Codice:
MT("ColorMatrix(mode="Rec.601->Rec.709")",threads=4)")

E' un modo carino pe dire che Colormatrix non può essere fatta multithreaded?
Così però mi confondono le idee :D

Secondo te un bel deblocking ce lo potrei ficcare?
Per fonti di bassa qualità potrebbe di certe aiutare forse pure più di denoise e sharpening...
ho provato l'SPP di ffdshow nella sezione postprocessing, ma ho poca CPU a disposizione... non se con avisinth in modalità MT ce la farei... ho anche paura a spingere troppo sull'acceleratore poi magari quando è il momento che voglio davvero vedermi il film scopro che in alcuni punti va a scatti o perché gli ho chiesto troppo o perché l'antivirus (MCAffee) ha deciso di fare una bella scansione di tutti i drive proprio in quel momento :mad:
Avresti da consigliarne qualcuno per avisinth di qualità buona e che magari non ciucci troppa CPU?

@spinmar
I plugin li trovi qui: http://www.webalice.it/volpato.s/htpc/avisynth/plugins_v2.zip

Ciao e grazie,
fanoI
 
fanoI ha detto:
Ho provato la nuova versione ora sembra funzionare con tutti i filmati solo in uno mi da un risultato anomalo ha risoluzione di input 656*384 e come output riscalato ottengo questo valore: 1920*1120 che è più dei 1080 che il mio schermo può mostare... ovviamente l'immagine non è tagliata visto che "qualcuno" (immagino la scheda video) alla fine aggiunge due bandine ai lati... comunque mi sa che forse con sto rip ho fatto casino con l'AR :D 1.70:1 non l'ho mai visto... sembra una via di mezzo tra 16:9 e 4:3!
Agli AR che puoi trovare in giro non c'è limite :D
Cmq tornando al riscorso del resize la tua interpretazione è corretta. Semplicemente la scheda video effettua un piccolo downscaling per iscrivere correttamente l'immagine secondo la tua risoluzione.

Il discorso è che è un po' difficile da gestire la cosa. AviSynth mi sembre principalmente un linguaggio scriptato. Se fosse più OO (object oriented) potrei gestire più facilmente il calcolo della risoluzione e ritornare i due valori - larghezza e altezza - secondo determinate regole, ovvero:

se il calcolo dinamico dell'asse mi porta a sforare la dimesione della mia reale risoluzione devo obbligatoriamente correggere il fisso al ribasso. In questo modo l'immagine viene dimensionata sulla dimensione massima consentita di uno dei due assi.

Cmq cerco di studiarmi meglio AviSynth. Son sicuro che se mi metto riesco a risolvere la questione :D

fanoI ha detto:
Ho provato anche il ColorMatrix() non è mi è però chiara la chiamata ovvero non è che sta facendo l'incontrario di quello che vorremmo?
> ma forse è solo la chiamata a non essere chiara e fa ciò che vogliamo :D
E' la tua seconda supposizione ad essere corretta, e c'è anche uno screenshot a dimostrare che le cose stanno così. A leggerla sembra tutta un'altra cosa ma è l'unico modo nel quale funziona il colormatrix. Se inverti i valori non funziona un tubo :D

fanoI ha detto:
Ho provato a far anche ColorMatrix() multithreaded con l'istruzione MT, ma dice che manca una parentesi...

A me però anche con tutto l'impegno la parentesi mancante no la vedo stasera:

Codice:
MT("ColorMatrix(mode="Rec.601->Rec.709")",threads=4)")
Per chi non sviluppa codice la chiamata non sembrerebbe avere errori di sintassi particolari. In realtà questa chiamata agli occhi di uno sviluppatore è dichiaratamente errata :D

Il problema sta nei doppi apici della chiamata interna ;)
Come fa il codice a sapere che chiudi dopo 709 invece che dopo mode=?
Quando degli apici sono contenuti all'interno di altri per skipparli devi raddoppiarli, capito?

Cmq non credo che il colormatrix avrà chissà quale giovamento dall'essere eseguito in MT. Io MT oramai non lo uso neache più. Mi limito ad usare il SetMTMode.

fanoI ha detto:
Secondo te un bel deblocking ce lo potrei ficcare?
Non ne conosco alcuno. Se ho un po' di tempo faccio qualche ricerca al riguardo per AviSynth.
 
stealth82 ha detto:
Agli AR che puoi trovare in giro non c'è limite :D
Cmq tornando al riscorso del resize la tua interpretazione è corretta. Semplicemente la scheda video effettua un piccolo downscaling per iscrivere correttamente l'immagine secondo la tua risoluzione.

Lo immaginavo... di per se questo non credo sia un gran problema.. non si dovrebbe perdere moltissima qualità (anzi alcune guide dicono di eseguire il resampling a valori più dell'uscita video e poi fare il downsampling alla scheda video) è solo un po' uno spreco di CPU :D

stealth82 ha detto:
Cmq cerco di studiarmi meglio AviSynth. Son sicuro che se mi metto riesco a risolvere la questione :D

Ottimo! Ma poi quale dei 2 metodi darebbe una miglior qualità?
Certo avere un vero linguaggio di programmazione sarebbe meglio... questo è un linguaggio di scripting per lo più interpretato con tutti gli svantaggi che questo comporta :D

stealth82 ha detto:
Per chi non sviluppa codice la chiamata non sembrerebbe avere errori di sintassi particolari. In realtà questa chiamata agli occhi di uno sviluppatore è dichiaratamente errata :D

Il problema sta nei doppi apici della chiamata interna ;)

Come fa il codice a sapere che chiudi dopo 709 invece che dopo mode=?
Quando degli apici sono contenuti all'interno di altri per skipparli devi raddoppiarli, capito?

Ok devo escaparli... non sembra funzionare lo stesso... comunque hai ragione anche tu l'occupazione di CPU è irrisoria non ha senso farla MT...

stealth82 ha detto:
Io MT oramai non lo uso neache più. Mi limito ad usare il SetMTMode.

Quindi le chiamate per il resize non le circondi con la chiamata MT?
A me sembrava che i 2 core non fossero molto bilanciati senza MT...
però ero ancora nella fase in cui volevo fare lo sborone e convertire un filmato 720 a 1080p e avrò fatto chissà quante prove... figurati che ora nello script che uso SetMtMode() non ce l'ho neanche :D
Dovrei riprovare...

stealth82 ha detto:
Non ne conosco alcuno. Se ho un po' di tempo faccio qualche ricerca al riguardo per AviSynth.

Se me ne trovi uno ti faccio una statua equestre :p

Ciao,
fanoI
 
Top