Cadence vidéo sur PC
Si vous utilisez un PC pour lire des vidéos et que vous voulez lire des films/séries dans de bonnes conditions, vous devriez lire cette page.
Sommaire
- 1 TL;DR
- 2 Les problèmes à résoudre
- 3 Les solutions
- 3.1 Utiliser 24 Hz au lieu de 60 Hz
- 3.2 Utiliser un multiple de 24 Hz (48/72/96/120/144) au lieu de 60 Hz
- 3.3 Écran capable de détecter 24p@60 Hz (inverse telecine)
- 3.4 Ajuster la vitesse audio (ReClock)
- 3.5 Frame blending (Smooth Motion)
- 3.6 Ajustement avancé de la fréquence de rafraîchissement (Custom Mode)
- 4 Récapitulatif des solutions
TL;DR
Si vous n'avez pas le temps ou l'envie de rentrer dans les détails, suivez cette procédure simple pour obtenir d'excellents résultats dans la majorité des cas :
- Utilisez un lecteur vidéo DirectShow, tel que MPC-HC par exemple.
- Installez madVR et configurez votre lecteur pour l'utiliser.
- Dans les options de madVR, activez la fonctionnalité appelée "Smooth Motion".
- Vous êtes paré !
Les problèmes à résoudre
Il y en a deux, qui sont assez proches mais peuvent être traités de manière plus ou moins indépendante. Notez qu'il faut éliminer les deux problèmes simultanément pour obtenir un résultat acceptable, et qu'une solution pour l'un n'est pas forcément une solution pour l'autre.
Telecine judder (saccades continues - 24p@60Hz, "3:2 pull down")
Le framerate normal d'une série TV ou d'un film est ~23.976 FPS (24/1.001 précisément), soit une frame toutes les ~41.7 millisecondes.
La fréquence de rafraîchissement par défaut d'un PC est de 60 Hz, soit une frame toutes les ~16.7 millisecondes.
Comme la fréquence de rafraîchissement est plus élevée que le framerate, le lecteur vidéo sur le PC (ou le framebuffer du GPU, selon les cas) va compenser en répétant des frames, de telle sorte que la vitesse de lecture soit correcte. (Si c'était le contraire - un cas très rare - on compenserait en éliminant des frames.) En pratique, et en simplifiant un peu, le comportement consiste à envoyer la frame suivante au GPU lorsque le temps indiqué par l'horloge dépasse la marque temporelle (le timestamp) de la frame en question. Par exemple, la troisième frame d'une vidéo à 24 FPS commence à ~124.9 ms, donc dès que l'horloge affiche ~124.9 ms depuis le début de la lecture, on envoie la frame au GPU, qui l'affichera au rafraîchissement suivant.
Si la fréquence de rafraîchissement est égale au framerate (24 Hz), alors le comportement décrit ci-dessus va simplement afficher une frame par rafraîchissement. (C'est le comportement d'un lecteur Blu-ray de salon, par exemple.) Dans ce cas le problème décrit dans cette section ne s'applique pas.
Si la fréquence de rafraîchissement est un multiple du framerate (par exemple : 48, 72, 96, 120, 144 Hz), alors le comportement décrit ci-dessus a pour effet de répéter chaque frame un certain nombre de fois (respectivement : 2, 3, 4, 5, ou 6 fois) de manière constante et régulière. Là encore le problème ne se pose pas.
Par contre, si vous êtes en 60 Hz comme l'immense majorité des gens, alors ce n'est pas si simple, car 60 n'est pas un multiple de 24. Il faudrait répéter chaque frame 2.5 fois, mais ça n'a pas de sens. Au lieu de ça, le comportement décrit ci-dessus va avoir le résultat suivant : la première frame va être répétée 3 fois, puis la frame suivante 2 fois, puis la frame suivante 3 fois, etc. (Ce processus est souvent appelé "3:2 pull down", mais ce terme n'est pas tout à fait correct ici car le flux n'est pas entrelacé.) Par exemple, une série de frames 24 FPS "A B C D E" va être convertie en 60 FPS sous la forme "AAA BB CCC DD EEE".
Ce comportement est correct dans la mesure où il permet à la vidéo d'être lue à la bonne vitesse. Mais cette approche présente un gros problème : la vidéo finale une fois convertie ne respecte pas la cadence d'origine. Normalement, dans la vidéo 24 FPS d'origine, chaque frame est affichée pendant ~41 ms. Mais dans la vidéo 60 FPS finale, ce n'est pas le cas : une frame sur deux est affichée pendant ~50 ms, tandis que l'autre est affichée pendant ~33 ms. C'est une dégradation - la vidéo parait saccadée car le rythme de présentation des frames est incorrect. Il s'agit du "Telecine judder".
Un objet qui bouge de manière constante à l'écran, par exemple, donnera l'impression de tressauter au lieu de présenter un mouvement constant, doux et fluide. L'effet n'est pas catastrophique parce que la cadence reste plus ou moins régulière (dans le sens où la procession 3:2:3:2, elle, reste constante), mais néanmoins visible dans certaines scènes, en particulier lorsque les objets sont nets et la caméra est en mouvement. Un générique défilant peut également servir d'exemple. Un œil initié qui sait ce qu'il cherche peut remarquer le problème après seulement quelques secondes de lecture, en fonction du contenu.
Horloge désynchronisée (discontinuités)
Dans un appareil dédié à la vidéo, tel qu'un lecteur Blu-ray de salon, la cadence de lecture est sous le contrôle d'un seul et unique signal d'horloge. Lors de la lecture d'une vidéo à 24 FPS, ce signal d'horloge donne le « top » toutes les ~41.7 ms pour envoyer la frame suivante.
Le son d'une vidéo est typiquement échantillonné à 48 kHz. Dans l'exemple d'un lecteur dédié, la cadence sonore est gérée par le même signal d'horloge. Cet arrangement garantit que la vidéo et le son progressent à la même vitesse. Il y aura précisément 2002 échantillons audio entre chaque frame (48000 / 23.976), parce que la vidéo et le son sont régis par le même « top ». Ils avancent de manière parfaitement synchronisée. (Ou, du moins, s'il y a décalage il sera constant.)
Le Seigneur des PC : les Deux Horloges
Fort malheureusement, dans le cas d'un PC, la situation est plus compliquée. Un PC dispose d'un certain nombre de signaux d'horloge divers et variés : le CPU bien sûr, mais également l'horloge de la sortie du GPU (qui contrôle le rafraîchissement vidéo) et l'horloge de la sortie son (qui contrôle la vitesse de la sortie audio).
Dans un monde parfait, ces horloges seraient parfaitement précises - une fréquence de rafraîchissement « nominale » de 60 Hz a pour effet d'envoyer très précisément 60 images par seconde à l'écran, et une fréquence d’échantillonnage audio « nominale » de 48 kHz a pour effet d'envoyer très précisément 48000 échantillons audio via la sortie (analogique ou numérique). Mais nous ne vivons pas dans un monde parfait, les composants électroniques ont leurs limites, et une horloge censée débiter du 60 Hz pourrait en réalité débiter 59.99 Hz, ou bien 60.01 Hz. Même chose pour l'horloge audio.
Pour l'horloge vidéo, il y a un problème supplémentaire lié à la configuration. Les paramètres standards (CTA) pour du 1080p24 (~23.9760 Hz) nécessitent une pixel clock de ~74.1759 MHz. Mais en pratique le GPU n'acceptera pas une configuration aussi fine ; la pixel clock n'est ajustable que par paliers de 0.01 MHz. Du coup, on se retrouve forcé de régler la pixel clock à 74.1700 MHz (fréquence de rafraîchissement ~23.9741 Hz, une déviation de ~0.007%) ou à 74.1800 MHz (fréquence de rafraîchissement ~23.9773 Hz, une déviation de ~0.005%). L'horloge audio, elle, n'accepte que précisément 48000 Hz et rien d'autre.
Si il n'y avait qu'une seule horloge, comme dans un appareil dédié, une telle déviation ne serait pas un problème. Après tout, il s'agit là de déviations minimes - de l'ordre de 0.01%, soit moins d'une seconde sur un film de 2 heures. La vidéo sera lue trop vite ou trop lentement, mais la différence est imperceptible. À moins que vous ne vérifiez la longueur du film chronomètre en main (et de bons réflexes), vous ne remarquerez rien.
En revanche, si les horloges audio et vidéo sont séparées et indépendantes, comme dans un PC, le lecteur vidéo va faire face à un gros problème : si une des deux horloges est seulement 0.01% plus lente que l'autre, alors au bout de seulement ~17 minutes, l'audio sera décalé de ~100 ms par rapport à la vidéo !
Audio ou vidéo : It's Time To Choose
Cela est bien sûr inacceptable, donc le lecteur vidéo va devoir choisir une des deux horloges et « imposer » sa cadence au reste du système. Le problème, c'est qu'il n'est pas possible dans un PC de choisir quel signal d'horloge est utilisé pour gouverner la fréquence de rafraîchissement vidéo ou la sortie audio. Du coup, le lecteur vidéo se retrouve face à un choix cornélien :
- Si le lecteur choisit de suivre l'horloge vidéo, alors la sortie audio va débiter plus vite que le lecteur ne lui fournit le son (buffer underrun), ou bien se retrouver en trop-plein de données parce que le lecteur lui fournit le son trop vite (buffer overflow). Dans les deux cas, cela produit des discontinuités audio (craquements) fort désagréables.
- Si le lecteur choisit de suivre l'horloge audio, alors la sortie vidéo va se retrouver à répéter une frame parce que lecteur ne lui a pas fourni la frame suivante à temps pour le rafraîchissement (frame repeat), ou bien une frame va passer à la trappe parce que le lecteur est déjà passé à la suivante avant que la précédente n'ait été affichée pour le temps prévu (frame drop). Dans les deux cas, la cadence va souffrir et une saccade va apparaître.
C'est choisir entre la peste et le choléra. En pratique, tous les lecteurs (du moins dans leur configuration par défaut) optent pour la seconde option : le son est parfait, mais la vidéo sera potentiellement saccadée. C'est un choix judicieux, parce qu'une saccade peut parfois passer inaperçue s'il n'y a pas trop de mouvement ; un craquement audio est beaucoup plus difficile à cacher en comparaison. Mais soyons clairs : le problème reste entier, et le résultat est inacceptable pour un vidéophile qui se respecte.
Quelles conséquences ?
La gravité du problème dépend de la différence de vitesse (déviation) entre les horloges audio et vidéo. Cette différence est plus ou moins imprévisible et dépend du matériel utilisé. (Elle peut même varier en fonction de la température.) Théoriquement, pour quelqu'un de chanceux elle peut être tellement faible qu'elle ne pose pas de vrai problème, mais ça revient à gagner la loterie.
En pratique, la déviation peut être de l'ordre de 0.01%. Avec cette valeur d'exemple, et une fréquence rafraîchissement de 60 Hz, le décalage entre l'audio et la vidéo atteindra la durée d'une frame (~16.6 ms) au bout de ~3 minutes ; on aura donc une discontinuité vidéo (saccade) toutes les ~3 minutes pour compenser. À 24 Hz, une frame dure ~41.7 ms ; on aura donc une discontinuité toutes les ~7 minutes. Une partie de ces discontinuités passeront inaperçues parce qu'elles se produiront lors de scènes avec peu ou pas de mouvement. Les autres seront visibles.
Ce problème peut paraître moins grave que le problème du telecine judder décrit plus haut, mais ce n'est pas le cas ; en réalité, le résultat visuel peut parfois être pire. En effet, le telecine judder a au moins le bon goût de présenter une cadence relativement régulière avec un motif constant auquel on peut tenter de s'habituer ; ces discontinuités ponctuelles, en revanche, agissent par surprise et sont donc particulièrement remarquables. Bien sûr, ces deux problèmes étant relativement indépendants, il est tout à fait possible de se retrouver avec les deux problèmes à la fois : une mauvaise cadence qui par dessus le marché souffre de discontinuités ponctuelles. C'est même la situation par défaut pour un PC standard, non configuré spécialement pour la lecture vidéo.
Plus la fréquence de rafraîchissement est basse, moins les discontinuités sont fréquentes, mais plus elles durent longtemps (parce que l'intervalle entre deux frames est plus élevé), donc au final le résultat n'est pas forcément meilleur ou pire. Cela dit, à 24 Hz, une discontinuité est tellement longue et flagrante qu'elle peut à elle seule ruiner l'immersion dans une scène à fort mouvement.
Questions ouvertes
- Si la fréquence de rafraîchissement est très élevée (120 Hz ou plus), alors les discontinuités deviennent très fréquentes mais également très courtes. Logiquement, il devrait y avoir un seuil à partir duquel les discontinuités deviennent tellement fréquentes et tellement courtes qu'elles ne sont plus remarquables. Ce seuil est-il atteint à 120 Hz ? 144 Hz ? 200 Hz ?
Les solutions
Utiliser 24 Hz au lieu de 60 Hz
Il est très facile d'éliminer le problème du Telecine judder : sous Windows, dans les propriétés de votre moniteur, choisissez 24 Hz (ou plutôt 23 - voir ci-dessous) au lieu de 60 Hz.
Cependant, notez bien que cette solution ne fera rien pour éliminer le problème des horloges. En fait, elle peut même l'empirer, parce que les discontinuités, bien que moins fréquentes, seront plus longues donc plus sévères.
Par ailleurs, certains écrans ne supportent pas une fréquence de rafraîchissement de 24 Hz, en particulier les moniteurs PC. Pire : certains écrans accepteront un tel signal mais sont incapables de faire du "vrai" 24 Hz - ils appliqueront un 3:2 pulldown en interne, ce qui nous ramène à la case départ. Les écrans capables de produire du "vrai" 24 Hz sont désignés par la mention "Judder-Free 24p" sur Rtings.
Le piège du 24.000 Hz vs. 23.976 Hz
Une erreur typique de débutant consiste à régler la fréquence de rafraîchissement sur 24.000 Hz (ou 60.000 Hz), au lieu de 23.976 Hz (ou 59.940 Hz). Mais l'horloge audio, elle, est toujours configurée pour 48000 Hz - pas 48048 Hz. Cela revient donc à faire tourner l'horloge vidéo légèrement trop vite par rapport à l'horloge audio… et on retombe sur le problème ci-dessus.
La différence entre 24.000 Hz et 23.976 Hz peut paraître ridicule, mais rendez-vous compte qu'il s'agit d'une déviation de 0.1% - une discontinuité toutes les 42 secondes ! Un excellent moyen de transformer un film en festival des saccades.
Faites attention à ça lorsque vous choisissez une fréquence de rafraîchissement. En fonction du matériel utilisé, Windows vous donne parfois le choix entre "23 Hz" et "24 Hz", ou entre "59 Hz" et "60 Hz". De manière assez obscure, ces fréquences correspondent à 23.976, 24.000, 59.940, et 60.000 Hz, respectivement.
Encore une fois, gardez bien en tête que même si votre fréquence de rafraîchissement nominale est correcte, cela ne veut pas dire que vos horloges audio et vidéo seront parfaitement synchronisées pour autant (voir ci-dessus). Cela diminue la fréquence des discontinuités, mais il faut utiliser une solution plus sophistiquée parmi celles décrites ci-dessous pour les éliminer totalement.
Utiliser un multiple de 24 Hz (48/72/96/120/144) au lieu de 60 Hz
Une variante de la solution précédente.
Certains écrans ne supportent pas 24 Hz, mais supportent 50 Hz (le framerate de la TV en Europe). Dans ce cas il y a fort à parier que l'écran acceptera 48 Hz, puisque c'est suffisamment proche de 50 Hz (dans les 5% de tolérance permise par le standard VESA DMT). Attention, comme dans la solution précédente rien ne garantit que l'écran produira du "vrai" 48 Hz dans ce cas : méfiez-vous. Aussi, comme 48 Hz n'est pas une fréquence standard, il vous faudra la créer manuellement à l'aide d'un logiciel adéquat, tel que l'assistant de madVR (voir ci-dessous) ou l'outil intégré aux drivers nVidia ("résolutions personnalisées").
Et bien sûr, n'oublions pas que beaucoup d'écrans PC "gaming" supportent des fréquences très élevées, telles que 120 ou 144 Hz. Coup de bol, il s'agit de multiples de 24 ! Par ailleurs, avec une fréquence aussi élevée les discontinuités liées aux différences d'horloge deviennent tellement courtes qu'elles pourraient potentiellement devenir indistinguables (corrigeant ainsi les deux problèmes à la fois), mais ça reste à démontrer.
Encore une fois, n'oubliez pas qu'il faut choisir ~47.952, ~119.880 ou ~143.856 Hz, pas les chiffres ronds.
À noter qu'en utilisant un multiple le signal est moins « propre » qu'en 24 Hz parce que chaque frame est répétée plusieurs fois. Normalement ça ne devrait faire aucune différence, mais certains algorithmes temporels utilisés dans certaines TVs (par exemple, motion interpolation) peuvent théoriquement donner des résultats erratiques avec un tel signal.
Écran capable de détecter 24p@60 Hz (inverse telecine)
Certains TV et projecteurs sont capables de détecter une cadence 3:2 dans le signal d'entrée. Si un tel motif est détecté, l'écran passera automatiquement en 24p et sautera les frames dupliquées, éliminant ainsi le telecine judder de manière transparente.
Malheureusement, cette solution souffre d'un certain nombre de contraintes :
- Il faut disposer d'un écran proposant cette fonctionnalité. Ils sont désignés par la mention "Judder-Free 24p via 60p" sur Rtings. Cette fonctionnalité semble être apparue en 2017 sur les TVs, et n'est généralement pas proposée sur les moniteurs PC.
- Ces solutions ne fonctionneront probablement pas si l'écran est en mode "low input lag", "gaming" ou "PC", car ces modes ont tendance à désactiver ce genre de traitement pour gagner en latence et/ou « pureté ».
- La fiabilité de cette solution dépend beaucoup de la qualité du traitement interne effectué par l'écran. Un algorithme mal branlé peut causer des discontinuités supplémentaires.
- Ces solutions peuvent avoir des implications concernant la qualité d'image, en fonction des traitements effectués par l'écran.
- Il est impossible d'utiliser madVR dans ce cas, car il ne permet pas d'obtenir une cadence stable en 24p@60Hz pour le moment.
Pour plus d'informations sur cette solution, vous pouvez lire les discussions sur le forum NoFrag et le forum madVR.
À l'instar des solutions précédentes, cette solution ne fait rien pour résoudre le problème des horloges. Assurez-vous au moins de choisir ~59.940 Hz, pas 60 Hz, pour diminuer la fréquence des discontinuités.
Ajuster la vitesse audio (ReClock)
Frame blending (Smooth Motion)
Ajustement avancé de la fréquence de rafraîchissement (Custom Mode)
Récapitulatif des solutions
Solutions ne reposant pas sur le support 24p@60Hz de l'écran
Ces solutions sont utilisables sur tout type d'écran, sauf indication contraire dans la section « compatibilité ».
24p@60Hz | 24p@24Hz | Audio resampling (ReClock) |
Frame blending (Smooth Motion) |
Custom mode | ||
---|---|---|---|---|---|---|
Résultat final | ||||||
Qualité du rendu vidéo | Très mauvais | Très mauvais | Excellent | Bon/excellent | Excellent | |
Qualité du rendu audio | Parfait | Parfait | Excellent | Parfait | Parfait | |
Cadence | ||||||
Variance continue | Très mauvais | Parfait | Parfait | Excellent | Parfait | |
Discontinuités | Très fréquentes, visibles |
Très fréquentes, très visibles |
Très rares, très visibles |
Inexistantes | Rares, très visibles | |
Netteté des mouvements | Parfait | Parfait | Parfait | Bon/excellent | Parfait | |
Compatibilité | ||||||
Nécessite un écran supportant 24 Hz (ou un multiple) |
Non | Oui | Oui | Non | Oui | |
Prend des libertés avec les normes DVI/HDMI/DP | Non | Non | Non | Non | Oui | |
Peut interférer avec du post-traitement temporel effectué par l'écran |
Oui | Non | Non | Oui | Non | |
Peut buter contre les limites de HDMI <2.2 (10-bit 2160p@60Hz) |
Oui | Non | Non | Oui | Non | |
Support par les drivers GPU | Parfait | Excellent | Excellent | Parfait | Mauvais | |
Nécessite un lecteur vidéo DirectShow (MPC-HC, etc.) |
Non | Non | Oui | Oui | Non | |
Nécessite de décoder l'audio côté PC (pas de bitstreaming) |
Non | Non | Oui | Non | Non | |
Divers | ||||||
Fréquence de rafraîchissement utilisée | 60 Hz | 24 Hz | 24 Hz | 60 Hz | 24 Hz | |
Simplicité de mise en place | Rien à faire | Très facile | Facile | Facile | Laborieux | |
Stabilité de la configuration | Parfait | Parfait | Parfait | Parfait | Moyen |
Solutions reposant sur le support 24p@60Hz de l'écran
24p@60Hz | Audio resampling (ReClock) |
Custom mode | ||||
---|---|---|---|---|---|---|
Résultat final | ||||||
Qualité du rendu vidéo | Moyen | Excellent | Excellent | |||
Qualité du rendu audio | Parfait | Excellent | Parfait | |||
Cadence | ||||||
Variance continue | Parfait | Parfait | Parfait | |||
Discontinuités | Très fréquentes, visibles |
Très rares, visibles |
Rares, visibles | |||
Netteté des mouvements | Parfait | Parfait | Parfait | |||
Compatibilité | ||||||
Nécessite un écran supportant 24 Hz (ou un multiple) |
Non | Non | Non | |||
Prend des libertés avec les normes DVI/HDMI/DP | Non | Non | Oui | |||
Peut interférer avec du post-traitement temporel effectué par l'écran |
Non | Non | Non | |||
Peut buter contre les limites de HDMI <2.2 (10-bit 2160p@60Hz) |
Oui | Oui | Oui | |||
Support par les drivers GPU | Parfait | Parfait | Mauvais | |||
Nécessite un lecteur vidéo DirectShow (MPC-HC, etc.) |
Non | Oui | Non | |||
Nécessite de décoder l'audio côté PC (pas de bitstreaming) |
Non | Oui | Non | |||
Divers | ||||||
Fréquence de rafraîchissement utilisée | 60 Hz | 60 Hz | 60 Hz | |||
Simplicité de mise en place | Rien à faire | Facile | Laborieux | |||
Stabilité de la configuration | Parfait | Parfait | Moyen |