SoftSharpen 8.8 - Script vidéo AviSynth

Modérateur : Modérateurs

Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Subbat a écrit :@leon : Et en mettant les dll et le avsi de softsharpen on a pas besoin d'ajouter les loadplugin des dll et l'import de l'avsi ?
Tous les dll et avsi présents dans le répertoire \AviSynth 2.5\Plugins\ sont chargés automatiquement par avisynth, et dans ce cas, inutile de mettre des loadplugin et import pour les charger. C'est pour cela que j'ai conseillé à ricou de décompresser le zip dans ce répertoire.
Avatar du membre
Subbat
Administrateur
Administrateur
Messages : 8836
Enregistré le : jeu. 11 déc., 2008 20:12
Localisation : Quelque part... dans le centre de la France...

Message par Subbat »

Ah... bah c'est bon à savoir... Du coup mon truc que je t'avais demander d'intégrer dans l'aide en ligne sur le repertoire des dll n'a pas plus d'intérêt que ça...
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Subbat a écrit :Ah... bah c'est bon à savoir... Du coup mon truc que je t'avais demander d'intégrer dans l'aide en ligne sur le repertoire des dll n'a pas plus d'intérêt que ça...
Si, si, dans le cas où on ne veut pas mélanger les différentes versions des dll et avsi (pour éviter des incompatibilités, etc.), on peut créer des répertoires spécifiques et il faut préciser le chemin d'accès.
Avatar du membre
Subbat
Administrateur
Administrateur
Messages : 8836
Enregistré le : jeu. 11 déc., 2008 20:12
Localisation : Quelque part... dans le centre de la France...

Message par Subbat »

Oui oui...
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Ce que j'ai d'ailleurs fait dans un souci de rangement.

J'ai donc tout lu et je trouve ça formidable, rapide d'utilisation et explications bien détaillées, je vais m'en servir souvent (dès que la prochaine maj de m4ng sortira !). :D


Il ne me reste qu'une seule question sur toutes ces options : est-ce que mettre la profondeur d'analyse de débruitage à 3 sur un film propre comme un dvd peut engendrer un débruitage intempestif amenant du flou, ou ça ne peut pas faire de mal et ce sera juste du temps perdu à l'encodage ?
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

ricou a écrit :Ce que j'ai d'ailleurs fait dans un souci de rangement.

J'ai donc tout lu et je trouve ça formidable, rapide d'utilisation et explications bien détaillées, je vais m'en servir souvent (dès que la prochaine maj de m4ng sortira !). :D
merci :)

Et si tu as des remarques ou des questions, n'hésite pas !

ricou a écrit :Il ne me reste qu'une seule question sur toutes ces options : est-ce que mettre la profondeur d'analyse de débruitage à 3 sur un film propre comme un dvd peut engendrer un débruitage intempestif amenant du flou, ou ça ne peut pas faire de mal et ce sera juste du temps perdu à l'encodage ?
Sur un DVD propre, je crois qu'une profondeur d'analyse 1 suffit et que mettre une profondeur 3 induit surtout une perte de temps pour un faible gain de compressibilité par rapport à 1.

Du coté des risques de floutage, je ne pense pas qu'il soit plus risqué de mettre 3 que 1.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Bon... nouvelle version 8.6 qui optimise la version précédente :
- la diminution de FPS se fait maintenant en utilisant la librairie FDecimate (plus rapide que le bout de script avs que j'avais écrit) ;
- l'option deblend a été améliorée (surtout concernant l'initialisation qui est maintenant d'une vitesse normale).


Subbat,
si tu es toujours sur ton manga "horrible", tu peux essayer de voir si la commande
softsharpen(preset="anim", debl=10, blend=5)
te donne (très petite...) satisfaction avec cette version 8.6 : sur certains passages de la vidéo d'origine, les blocs sont parfois sur des images "mélangées" (blend), mais ils disparaissent parfois lorsqu'on réduit le blend...
Avatar du membre
Subbat
Administrateur
Administrateur
Messages : 8836
Enregistré le : jeu. 11 déc., 2008 20:12
Localisation : Quelque part... dans le centre de la France...

Message par Subbat »

Ok merci j'essaierais... et je te dirais...
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

J'ai essayé pour la première fois ce soir votre softsharpen et j'ai un souci.

Quelque soit les paramètres que je choisisse, il y a une bande verte qui apparait en bas de l'image, qui clignote irrégulièrement. J'ai testé avec plusieurs vidéos.

Vous savez de quoi ça vient ?
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Le même phénomène m'est aussi arrivé (mais était-ce pour la même raison ?). Le souci venait apparemment de la version de la librairie avisynth.dll présente dans un des sous-répertoires de windows. Personnellement, j'utilise cette version d'avisynth (elle est en plus MultiThread, on en reparlera peut-être...) :
http://leon1789.perso.sfr.fr/avisynth/avisynth.dll (version 2.5.8.5 MT)

Il suffit de renommer l'ancienne avisynth.dll en avisynth.dll.old et de copier le nouveau fichier au même endroit, et enfin tester si tout va mieux.

(La version 2.6 MT pose ce souci de bande verte chez moi.)
Avatar du membre
Subbat
Administrateur
Administrateur
Messages : 8836
Enregistré le : jeu. 11 déc., 2008 20:12
Localisation : Quelque part... dans le centre de la France...

Message par Subbat »

leon1789 a écrit :Subbat,
si tu es toujours sur ton manga "horrible", tu peux essayer de voir si la commande
softsharpen(preset="anim", debl=10, blend=5)
te donne (très petite...) satisfaction avec cette version 8.6 : sur certains passages de la vidéo d'origine, les blocs sont parfois sur des images "mélangées" (blend), mais ils disparaissent parfois lorsqu'on réduit le blend...
J'ai essayé avec cette commande... et pour être honnête, vu la merde qu'est la source, j'ai du mal à faire la différence entre les différents tests... Je penses que je vais te faire confiance sur ce coup là... par contre, juste pour info, tu réduis le fps ou pas sur cette vidéo ?
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Effectivement j'utilise avisynth 2.6, qui me convenait jusqu'à présent.
J'essaierai ta dll, merci, d'autant plus que le multi thread était un sujet que je souhaitais aborder dans quelques jours.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

Subbat a écrit : J'ai essayé avec cette commande... et pour être honnête, vu la merde qu'est la source, j'ai du mal à faire la différence entre les différents tests... Je penses que je vais te faire confiance sur ce coup là... par contre, juste pour info, tu réduis le fps ou pas sur cette vidéo ?
J'avoue que je ne suis réellement satisfait d'aucun de mes tests, sinon je te l'aurai dit depuis longtemps !! :mrgreen:

Si on avait la "toute première version originale" du manga, elle serait probablement en 29.976 ips et entrelacée. Il aurait alors fallu la désentrelacer et faire une descente à 23.976 ips, les choses auraient claires et nettes.

Mais ta source est en 25 ips, donc on peut tenter de la mettre à 23.976 ips : on gagne un très petit poil en débit et/ou en qualité d'encodage, mais on peut se demander si cela vaut le coup...

Et vu qu'il y a souvent 2 images consécutives identiques sur la vidéo source, j'ai même tenté une version avec 18 images par seconde ! ici : http://leon1789.perso.sfr.fr/tmp/Subbat_FPS=18.mkv
Il est clair qu'avec 18 ips (des fois, 18 images par seconde permettent d’avoir une fluidité suffisante du mouvement, voir format Super8), on gagne significativement au niveau débit et/ou qualité d'encodage, mais le résultat est-il satisfaisant visuellement ?

Si tu veux diminuer le fps, utilise l'option de softsharpen, car elle est plus efficace qu'un simple changeFPS ou convertFPS. En effet, elle cherche à éliminer prioritairement les images répétées, alors que la commande changeFPS élimine bêtement de manière linéaire indépendamment du contenu, et la commande convertFPS mélange les images (et c'est pas le top pour ta vidéo qui a déjà beaucoup d'images mélangées !)



Pour ce qui est de l'option blend=5 ou 10, vu le nombre important d'images mélangées, je suis assez convaincu que cela gagne nettement en débit et/ou en qualité d'encodage, sans dégradation visuelle.
Modifié en dernier par leon1789 le sam. 04 août, 2012 8:45, modifié 1 fois.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

ricou a écrit :Effectivement j'utilise avisynth 2.6, qui me convenait jusqu'à présent.
J'essaierai ta dll, merci, d'autant plus que le multi thread était un sujet que je souhaitais aborder dans quelques jours.
humm... le problème vient peut-être d'ailleurs ! Avant d'essayer de remplacer la version 2.6 par une version antérieur (ce serait dommage), est-ce que tu utilises MPEG2Source pour lire le .d2v ? si oui, avec quelles options ?
Avatar du membre
Subbat
Administrateur
Administrateur
Messages : 8836
Enregistré le : jeu. 11 déc., 2008 20:12
Localisation : Quelque part... dans le centre de la France...

Message par Subbat »

Merci de ta réponse... je regarderais tout ça quand je me mettrais à encoder la série dans son intégralité...
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

leon1789 a écrit : humm... le problème vient peut-être d'ailleurs ! Avant d'essayer de remplacer la version 2.6 par une version antérieur (ce serait dommage), est-ce que tu utilises MPEG2Source pour lire le .d2v ? si oui, avec quelles options ?
Alors là aucune idée, je laisse m4ng se débrouiller pour ça.
Je peux te donner le script avisynth

Code : Tout sélectionner

# **** m4ng & AVIsynth 2.5x script **** pass 2+ 

LoadPlugin("C:\PROGRA~2\m4ng_v3\system\undot.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\FluxSmooth.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\Convolution3D.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\MaskTools.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\MVTools.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\Asharp.dll")
LoadPlugin("C:\PROGRA~2\m4ng_v3\system\MSharpen.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\ASharp.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\DctFilter.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\Deen.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\DGDecode.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\GradFun2db.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\MSharpen.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\mt_MaskTools")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\mvTools2.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\RemoveGrainSSE2.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\TDeint.dll")
Import("C:\Program Files (x86)\AviSynth 2.5\plugins\leon\SoftSharpen.avsi")

Source="i:\NOUVEA~1\NOUVEA~1\karajan1\vts_04_0.ifo"
Largeur=720
Hauteur=576
ratio  =1.250000
vratio =1.250000
real_l=704
real_l4=704
Crop_g=8
Crop_d=-8
Crop_h=2
Crop_b=-2
Borders_g=0
Borders_d=0
Borders_h=0
Borders_b=0
Indice=0.388787

LoadPlugin("C:\PROGRA~2\m4ng_v3\system\DGDecode.dll")
Video=MPEG2Source("i:\NOUVEA~1\NOUVEA~1\karajan1\vts_04_1.d2v")
Audio=DirectShowSource("i:\NOUVEA~1\NOUVEA~1\karajan1\VTS_04~1.WAV").DelayAudio(0.000000)
Import("C:\PROGRA~2\m4ng_v3\system\AudioMix.avsi") #(c) 2oo9 - Dirk Pitt
# ====================================================================
Audio=Audio.AudioChannels == 6 ? DownMix( Audio ) : Audio
Audio=Audio.AudioChannels == 1 ? MonoToStereo( Audio ) : Audio
Video=Audiodub(Video, Audio)
Video=BilinearResize(Video, Largeur, Hauteur)
Video=Crop(Video, crop_g, crop_h, crop_d, crop_b)

video = video.SoftSharpen(preset="film", sharp=25.0, deNoisT=7.2, move=11, blur=12, dct=4, deInt=true, aa=true)

Return(AssumeFrameBased(Video))
C'est ça que tu veux ? Le problème survenant uniquement lorsque j'insère la ligne softsharpen.

En tout cas avec ta dll 2.5 ça fonctionne. J'ai conservé la 2.6, on pourra faire des tests si tu veux.
Par contre avec ta dll j'ai toujours le processus avs2yuv.exe qui utilise un seul coeur du proc.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

ricou a écrit : C'est ça que tu veux ?
oui :mrgreen:
ricou a écrit :Le problème survenant uniquement lorsque j'insère la ligne softsharpen.
ok
ricou a écrit : En tout cas avec ta dll 2.5 ça fonctionne. J'ai conservé la 2.6, on pourra faire des tests si tu veux.
Par contre avec ta dll j'ai toujours le processus avs2yuv.exe qui utilise un seul coeur du proc.
<< j'ai toujours >> : tu veux dire qu'avec la version 2.6 ou la 2.5, tu n'as qu'un seul coeur utilisé ?

Si tu veux faire du multithreading avec la 2.5, il faut récupérer la librairie MT.dll :
http://leon1789.perso.sfr.fr/avisynth/mt.dll
et la placer dans répertoire avisynth2.5\plugins\ .

Ensuite, il faut par exemple utiliser la commande SetMTMode(2,0) en début de script avisynth. Quand tu vas lancer la lecture ou l'encodage du script, tous les coeurs vont être utilisés.
Cela dit, le monde du MT n'est pas sans souci ! C'est même un peu le bor... des fois. En ce qui concerne Softsharpen, les options de deblocking et debanding ne sont pas compatible avec MT (---> debl=0 et deban=0)
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Ton lien ne fonctionne pas mais je me suis débrouillé pour la trouver, et j'ai testé.

Résultat concluant dans la prévisualisation de M4NG, puisque la vidéo est presque fluide (un peu plus de 50% du proc utilisé) alors que je n'ai que quelques fps en temps normal.

Par contre une fois l'encodage lancé rien n'a changé, toujours 25% du proc utilisé par avs2yuv.exe et le même nombre de fps.

J'ai voulu tester différentes commandes MT (selon la doc) mais c'est au delà de mes compétences, je n'ai pas réussi.
J'ai également testé avec avisynth 2.5.7, 2.5.8 et 2.6 avec exactement les mêmes résultats pour les 3.

La solution serait donc d'utiliser cuda... :whi:


Sinon du nouveau pour cet avisynth 2.6 avec softsharpen ?
Avatar du membre
Underground78
Administrateur
Administrateur
Messages : 11272
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 »

Tu encodes en quoi aussi ? Parce qu'il est probable que le goulot d'étranglement soit l'encodage en lui même et non le script.

PS : Je ne suis pas sûr que Cuda donne de très bon résultat pour ce type d'usage. Le calcul en lui même pourrait sans doute être assez bien accéléré pour certains types de filtres mais l'aller-retour entre le CPU et le GPU est très coûteux.
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

en x264.

Je ne pense pas que ce soit l'encodage :

sans script avisynth : avs2yuv à 20-25% du proc et x264_64 à 60-70% (soit 160fps)

Avec softsharpen : avs2yuv à 25% et x264_64 à 8-10% d'utilisation du proc (soit 11fps)

Sur un quad-coeur sans hyperthread donc.


Vu la puissance de calcul des cartes graphiques, je pense réellement que l'utilisation de cuda pour avisynth en laissant l'encodage par le proc apporterait un réel gain, mais vu la vitesse de développement d'avisynth je ne rêve pas trop, c'était plutôt une boutade. :)
Avatar du membre
Underground78
Administrateur
Administrateur
Messages : 11272
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 »

ricou a écrit :en x264.

Je ne pense pas que ce soit l'encodage :

sans script avisynth : avs2yuv à 20-25% du proc et x264_64 à 60-70% (soit 160fps)

Avec softsharpen : avs2yuv à 25% et x264_64 à 8-10% d'utilisation du proc (soit 11fps)

Sur un quad-coeur sans hyperthread donc.
Effectivement visiblement il n'y a aucun multithreading visiblement..
ricou a écrit :Vu la puissance de calcul des cartes graphiques, je pense réellement que l'utilisation de cuda pour avisynth en laissant l'encodage par le proc apporterait un réel gain, mais vu la vitesse de développement d'avisynth je ne rêve pas trop, c'était plutôt une boutade. :)
Je travaille dans un labo qui fait du calcul haute performance et en ce moment je fais du calcul GPU avec Cuda justement donc je suis vraiment curieux de voir à quel point le transfert des données entre le CPU et le GPU serait rédhibitoire pour un tel cas d'utilisation. Je voulais essayer de faire un petit test pour simuler une situation similaire mais je n'ai pas eu le temps.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

ricou a écrit :Ton lien ne fonctionne pas mais je me suis débrouillé pour la trouver, et j'ai testé.
argh, je n'ai pas fait attention : il faut écrire MT.dll en majuscules http://leon1789.perso.sfr.fr/avisynth/MT.dll
(étrange que les minuscules ne soient pas équivalentes aux majuscules, non ?)
ricou a écrit : Sinon du nouveau pour cet avisynth 2.6 avec softsharpen ?
Oui, je pense avoir identifié les trucs qui posent problème : c'est le deringing et le deblocking. Si cela se confirme, il faudra que je change les choses.

Pour commencer, il faut qu'on ait la même version 2.6.0.3 MT 32 bits : http://leon1789.perso.sfr.fr/avisynth/avisynth.dll
C'est celle qui est disponible ici : http://forum.doom9.org/showpost.php?p=1 ... ostcount=1

Ensuite le même script (le plus simple possible) :

Code : Tout sélectionner

version
softsharpen(derin=10, debl=0)
est-ce que tu as des bandes vertes sur cette video d'une image fixe ? (probablement que oui)

Code : Tout sélectionner

version
softsharpen(derin=0, debl=10)
même chose ? (probablement que oui)

Code : Tout sélectionner

version
softsharpen(derin=0, debl=0)
même chose ? (j'espère que non)
ricou
Messages : 125
Enregistré le : dim. 29 juil., 2012 14:43

Message par ricou »

Il faut toujours respecter la casse dans les adresses web. (ou ne jamais utiliser de majuscule pour simplifier). ;)

Ensuite, ton script de test (version softsharpen) ne faisait rien, il n'est pas pris en compte, ne connaissant pas cette syntaxe j'ai testé avec l'habituel

Code : Tout sélectionner

video = video.SoftSharpen(derin=0, debl=0)
Donc à zéro pas de bande verte, si l'un des 2 est activé il y a des bandes vertes, tu as trouvé.

Ce qui m'amène à la prochaine question :
à quoi servent ces options qui ne sont pas expliquées sur ton site :
Deringing
Deblocking
Debanding


Underground78 a écrit : Je travaille dans un labo qui fait du calcul haute performance et en ce moment je fais du calcul GPU avec Cuda justement donc je suis vraiment curieux de voir à quel point le transfert des données entre le CPU et le GPU serait rédhibitoire pour un tel cas d'utilisation. Je voulais essayer de faire un petit test pour simuler une situation similaire mais je n'ai pas eu le temps.
Je suis curieux de connaître le résultat si tu as le temps

Au passage, j'étais curieux de voir le résultat de l'hyperthread, donc avec un 1/8ème du proc utilisé, soit 12.5% du proc semble-t-il, le nombre de fps est exactement le même que sans hyperthread pour avisynth.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

ricou a écrit :Il faut toujours respecter la casse dans les adresses web. (ou ne jamais utiliser de majuscule pour simplifier). ;)
ok
ricou a écrit :Ensuite, ton script de test (version softsharpen) ne faisait rien, il n'est pas pris en compte, ne connaissant pas cette syntaxe j'ai testé avec l'habituel

Code : Tout sélectionner

video = video.SoftSharpen(derin=0, debl=0)
Donc à zéro pas de bande verte, si l'un des 2 est activé il y a des bandes vertes, tu as trouvé.
ok
Donc maintenant, il faut que je trouve une correction du problème...
ricou a écrit : Ce qui m'amène à la prochaine question :
à quoi servent ces options qui ne sont pas expliquées sur ton site :
Deringing
Deblocking
Debanding
Le "De-" veut dire que l'on corrige un problème ;)
le ringing : http://www.cse.cuhk.edu.hk/~ttwong/pape ... dering.pdf (artefact sur les frontières brutes)
le blocking : http://leon1789.perso.sfr.fr/avisynth/S ... bl_explain (apparition de blocs)
le banding : http://img848.imageshack.us/img848/3285 ... anding.png (effet de vague sur le mur)

Il faut que je prenne le temps de les mentionner sur la page web.
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 14:09
Contact :

Message par leon1789 »

version 8.7 : révision du deringing et deblocking.

-- ces deux options fonctionnent maintenant normalement avec la version 2.6 d'avisynth (avisynth 2.6 et BlindPP sont compatibles seulement sur des vidéos de résolution multiple de 16 en hauteur et 32 en largeur ! :glups: )

-- algorithme de deblocking plus puissant que dans les versions précédentes.



Par ailleurs, j'ai complété un peu la page web sur le debanding.
Répondre