]> git.sesse.net Git - vlc/blobdiff - modules/video_filter/transform.c
Use var_InheritString for --decklink-video-connection.
[vlc] / modules / video_filter / transform.c
index 82913ecab8f2f57eeb4e03a5370ccece0ace5343..c5dff9d3aab5c28c377d3c5b327eb7c9bc6eb1ec 100644 (file)
@@ -33,7 +33,6 @@
 #include <vlc_plugin.h>
 #include <vlc_vout.h>
 
-#include "filter_common.h"
 #include "filter_picture.h"
 
 #define TRANSFORM_MODE_HFLIP   1
@@ -325,59 +324,47 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
  * Forward mouse event with proper conversion.
  */
 static int MouseEvent( vlc_object_t *p_this, char const *psz_var,
-                       vlc_value_t oldval, vlc_value_t newval, void *p_data )
+                       vlc_value_t oldval, vlc_value_t val, void *p_data )
 {
     vout_thread_t *p_vout = p_data;
     VLC_UNUSED(p_this); VLC_UNUSED(oldval);
 
     /* Translate the mouse coordinates
      * FIXME missing lock */
-    if( !strcmp( psz_var, "mouse-x" ) )
+    if( !strcmp( psz_var, "mouse-button-down" ) )
+        return var_SetChecked( p_vout, psz_var, VLC_VAR_INTEGER, val );
+
+    int x = val.coords.x, y = val.coords.y;
+
+    switch( p_vout->p_sys->i_mode )
     {
-        switch( p_vout->p_sys->i_mode )
-        {
-        case TRANSFORM_MODE_270:
-            newval.i_int = p_vout->p_sys->p_vout->output.i_width
-                             - newval.i_int;
         case TRANSFORM_MODE_90:
-            psz_var = "mouse-y";
+            x = p_vout->p_sys->p_vout->output.i_height - val.coords.y;
+            y = val.coords.x;
             break;
 
         case TRANSFORM_MODE_180:
-        case TRANSFORM_MODE_HFLIP:
-            newval.i_int = p_vout->p_sys->p_vout->output.i_width
-                             - newval.i_int;
+            x = p_vout->p_sys->p_vout->output.i_width - val.coords.x;
+            y = p_vout->p_sys->p_vout->output.i_height - val.coords.y;
             break;
 
-        case TRANSFORM_MODE_VFLIP:
-        default:
-            break;
-        }
-    }
-    else if( !strcmp( psz_var, "mouse-y" ) )
-    {
-        switch( p_vout->p_sys->i_mode )
-        {
-        case TRANSFORM_MODE_90:
-            newval.i_int = p_vout->p_sys->p_vout->output.i_height
-                             - newval.i_int;
         case TRANSFORM_MODE_270:
-            psz_var = "mouse-x";
+            x = val.coords.y;
+            y = p_vout->p_sys->p_vout->output.i_width - val.coords.x;
+            break;
+
+        case TRANSFORM_MODE_HFLIP:
+            x = p_vout->p_sys->p_vout->output.i_width - val.coords.x;
             break;
 
-        case TRANSFORM_MODE_180:
         case TRANSFORM_MODE_VFLIP:
-            newval.i_int = p_vout->p_sys->p_vout->output.i_height
-                             - newval.i_int;
+            y = p_vout->p_sys->p_vout->output.i_height - val.coords.y;
             break;
 
-        case TRANSFORM_MODE_HFLIP:
         default:
             break;
-        }
     }
-
-    return var_Set( p_vout, psz_var, newval );
+    return var_SetCoords( p_vout, psz_var, x, y );
 }
 
 static void FilterPlanar( vout_thread_t *p_vout,
@@ -477,7 +464,7 @@ static void FilterPlanar( vout_thread_t *p_vout,
             }
             break;
 
-        case TRANSFORM_MODE_HFLIP:
+        case TRANSFORM_MODE_VFLIP:
             for( i_index = 0 ; i_index < p_pic->i_planes ; i_index++ )
             {
                 uint8_t *p_in = p_pic->p[i_index].p_pixels;
@@ -496,7 +483,7 @@ static void FilterPlanar( vout_thread_t *p_vout,
             }
             break;
 
-        case TRANSFORM_MODE_VFLIP:
+        case TRANSFORM_MODE_HFLIP:
             for( i_index = 0 ; i_index < p_pic->i_planes ; i_index++ )
             {
                 uint8_t *p_in = p_pic->p[i_index].p_pixels;
@@ -688,7 +675,7 @@ static void FilterYUYV( vout_thread_t *p_vout,
 
     switch( p_vout->p_sys->i_mode )
     {
-        case TRANSFORM_MODE_HFLIP:
+        case TRANSFORM_MODE_VFLIP:
             /* Fall back on the default implementation */
             FilterPlanar( p_vout, p_pic, p_outpic );
             return;
@@ -815,7 +802,7 @@ static void FilterYUYV( vout_thread_t *p_vout,
             }
             break;
 
-        case TRANSFORM_MODE_VFLIP:
+        case TRANSFORM_MODE_HFLIP:
             for( i_index = 0 ; i_index < p_pic->i_planes ; i_index++ )
             {
                 uint8_t *p_in = p_pic->p[i_index].p_pixels;