Hay una tarea: cambiar el video "sobre la marcha" durante la reproducción, intercambiar las partes derecha e izquierda. No reflexionar, es decir, cambiar, es decir corta la imagen en dos partes e intercambialas. Por supuesto, puede hacerlo utilizando un servidor de trama como
AviSynth , pero ya no está "sobre la marcha": debe escribir un script para cada archivo de video. Quiero hacerlo rápido y sin esfuerzo.
En un higo? Para que
el curso de conferencias sobre aprendizaje automático de Yandex sea más conveniente para la visualización. El profesor señala los puntos de la presentación en vivo, y tienes que saltar constantemente a través de la pantalla con los ojos para comprender de qué se trata:

Solución
Utilizamos la herramienta de sombreado disponible en
Media Player Classic . En el conjunto estándar hay varios sombreadores listos para editar imágenes: "Relieve", "Escala de grises", "16-235 a 0-255" y similares. No lo necesitamos allí, así que creamos un nuevo sombreador (un pequeño programa en el lenguaje
HLSL ):
sampler s0 : register(s0); float4 main(float2 tex : TEXCOORD0) : COLOR {
Lo guardamos en la carpeta
\ Shaders del reproductor multimedia (por ejemplo, C: \ Archivos de programa \ MPC-HC \ Shaders) con el nombre
Shift.hlsl . A continuación, vaya a la configuración de Media Player Classic (
Opciones / Reproducción / Sombreadores ) y agregue el nuevo sombreador de sombreadores a la lista de
sombreadores de pre-cambio de tamaño activo .
Este método de procesamiento de video no carga la CPU, ya que todo el trabajo lo realiza la tarjeta gráfica, en cualquier caso, si es real y no emulada.
¿Qué pasa, Barimore?
Este es un sombreador de píxeles que debería generar el color de un punto dependiendo de las coordenadas que se pasan a través del parámetro
tex . La variable
s0 contiene la textura con el cuadro actual del video.
La nueva coordenada horizontal se calcula como el resto del módulo de división 1 de la suma de la coordenada actual y el desplazamiento de la línea de
intercambio . Por lo tanto, movemos el punto hacia la derecha y lo reorganizamos hacia el lado izquierdo cuando va más allá de las dimensiones.
Finalmente, el
comando tex2D (s0, tex) devuelve el color del punto con la coordenada deseada del marco original.
PS