par lapinou » 07 Sep 2006 15:05
bonjour,
le pulldown que l'on fait dans convertxtodvd est adaptif. Le pulldown telecine est pour passer une source de 24000/1001 (23.97602) fpsà 30000/1001 (29.97002) fps. Dès lors que l'on a ces 2 framerates très précis, le pulldown à appliquer est constant, et la répartition des champs est telle que avec 12 images, on en refabriques 15 suivant un rythme périodique constant.
Cependant, si la destination a bien exactement le FPS demandé, la source elle a souvent un FPS pas exactement égal à 24000/1001. Pour éviter de devoir dupliquer ou supprimer des images entières, on adaptes en fait légèrement le pulldown de manière à générer de çi de là un champ supplémentaire, ou un champ de moins - de sorte que de temps en temps, 12 images vont se transformer en 14,5 images, ou 15,5 ...
Et c'est le 0,5 qui pose problème, car effectivement cela introduit d'une part un changement d'entrelacement, et d'autre les warning dans virtualdubmod, car en effet les VOBU peuvent se retrouver avec un nombre de champs impairs, ce qui n'est pas vraiment dans la spécification.
Alors pourquoi fait-on cela ? Parce que c'est la solution qui produit visuellement le meilleur effet. D'une part on ne peut pas tricher sur le samplerate audio, car le framerate réel de la vidéo n'est découvert que au moment où on la décode, et que ce framerate exact doit être connu pour pouvoir appliquer sa compensation exacte sur le samplerate audio. D'autre part, si on fixes un pulldown conforme à la norme, on augmente le nombre de fois ou une image devra être dupliquée/supprimée, et là effectivement, les saccades seront très visibles.
Toute la difficulté tient au fait qu'il nous faille être très robuste et tolérant par rapport à la source. Le pulldown est initialisé en fonction des elements contenu dans l'entête du fichier vidéo - notamment son framerate - puis dynamiquement adapté au framerate réel de la source, quel qu'il soit.
Ceci n'est pas à confondre avec d'autres problèmes de saccades qui provient d'un timing non monotone de la source. Dans ce cas, le fichier log doit contenir un grand nombre de frames dupliquées ET supprimées en même temps. Pour ce dernier problème, la version 2.1 de convertx devrait apporter une amélioration sensible.