Il y a une tâche: changer la vidéo «à la volée» pendant la lecture - permuter les parties droite et gauche. Ne reflètent pas, à savoir le changement, c.-à-d. couper l'image en deux parties et les échanger. Bien sûr, vous pouvez le faire en utilisant un serveur d'images comme
AviSynth , mais ce n'est plus tout à fait à la volée - vous devez écrire un script pour chaque fichier vidéo. Je veux le faire rapidement et sans forcer.
Sur une figue? Pour rendre
le cours magistral sur l'apprentissage automatique à partir de Yandex plus pratique pour la visualisation. Le conférencier pointe les points de la présentation en direct, et vous devez constamment sauter à travers l'écran avec vos yeux pour comprendre de quoi il s'agit:

Solution
Nous utilisons l'outil de shader disponible dans
Media Player Classic . Dans le kit standard, il existe plusieurs shaders prêts à l'emploi pour l'édition d'images - "Emboss", "Niveaux de gris", "16-235 à 0-255" et similaires. Nous n'en avons pas besoin là-bas, nous créons donc un nouveau shader (un petit programme en langage
HLSL ):
sampler s0 : register(s0); float4 main(float2 tex : TEXCOORD0) : COLOR {
Nous l'enregistrons dans le dossier
\ Shaders du lecteur multimédia (par exemple, C: \ Program Files \ MPC-HC \ Shaders) sous le nom
Shift.hlsl . Ensuite, accédez aux paramètres de Media Player Classic (
Options / Lecture / Shaders ) et ajoutez le nouveau shader Shader à la liste
Active pre-Resize shaders .
Cette méthode de traitement vidéo ne charge pas le CPU, puisque tout le travail est effectué par la carte graphique, en tout cas, si elle est réelle et non émulée.
Qu'est-ce, Barimore?
Il s'agit d'un pixel shader qui devrait afficher la couleur d'un point en fonction des coordonnées transmises via le paramètre
tex . La variable
s0 contient la texture avec l'image actuelle de la vidéo.
La nouvelle coordonnée horizontale est calculée comme le reste de la division modulo 1 de la somme des coordonnées actuelles et du décalage
swapLine . Ainsi, nous déplaçons le point vers la droite et le réorganisons vers la gauche lorsqu'il dépasse les dimensions.
Enfin, la commande
tex2D (s0, tex) renvoie la couleur du point avec les coordonnées souhaitées à partir du cadre d'origine.
PS