]> git.sesse.net Git - vlc/blobdiff - modules/video_filter/ball.c
Contrib: Android simplifications
[vlc] / modules / video_filter / ball.c
index 383b1380b069c1832e911dc04d60faa22e760c1b..a272fe0d2206ac0b4ddb9101b832a64985646432 100644 (file)
@@ -38,8 +38,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_sout.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
 
 enum { RED, GREEN, BLUE, WHITE };
 
-typedef struct
-{
-    uint8_t comp1;
-    uint8_t comp2;
-    uint8_t comp3;
-}COLOR;
-
-static COLOR colorList[4];
-
 #define COLORS_RGB \
-    colorList[RED].comp1 = 255; colorList[RED].comp2 = 0;        \
-                                colorList[RED].comp3 = 0;        \
-    colorList[GREEN].comp1 = 0; colorList[GREEN].comp2 = 255;    \
-                               colorList[GREEN].comp3 = 0;       \
-    colorList[BLUE].comp1 = 0; colorList[BLUE].comp2 = 0;        \
-                               colorList[BLUE].comp3 = 255;      \
-    colorList[WHITE].comp1 = 255; colorList[WHITE].comp2 = 255;  \
-                                  colorList[WHITE].comp3 = 255;
+    p_filter->p_sys->colorList[RED].comp1 = 255; p_filter->p_sys->colorList[RED].comp2 = 0;        \
+                                p_filter->p_sys->colorList[RED].comp3 = 0;        \
+    p_filter->p_sys->colorList[GREEN].comp1 = 0; p_filter->p_sys->colorList[GREEN].comp2 = 255;    \
+                               p_filter->p_sys->colorList[GREEN].comp3 = 0;       \
+    p_filter->p_sys->colorList[BLUE].comp1 = 0; p_filter->p_sys->colorList[BLUE].comp2 = 0;        \
+                               p_filter->p_sys->colorList[BLUE].comp3 = 255;      \
+    p_filter->p_sys->colorList[WHITE].comp1 = 255; p_filter->p_sys->colorList[WHITE].comp2 = 255;  \
+                                  p_filter->p_sys->colorList[WHITE].comp3 = 255;
 
 #define COLORS_YUV \
-    colorList[RED].comp1 = 82; colorList[RED].comp2 = 240;        \
-                                colorList[RED].comp3 = 90;        \
-    colorList[GREEN].comp1 = 145; colorList[GREEN].comp2 = 34;    \
-                               colorList[GREEN].comp3 = 54 ;      \
-    colorList[BLUE].comp1 = 41; colorList[BLUE].comp2 = 146;      \
-                               colorList[BLUE].comp3 = 240;       \
-    colorList[WHITE].comp1 = 255; colorList[WHITE].comp2 = 128;   \
-                                  colorList[WHITE].comp3 = 128;
+    p_filter->p_sys->colorList[RED].comp1 = 82; p_filter->p_sys->colorList[RED].comp2 = 240;        \
+                                p_filter->p_sys->colorList[RED].comp3 = 90;        \
+    p_filter->p_sys->colorList[GREEN].comp1 = 145; p_filter->p_sys->colorList[GREEN].comp2 = 34;    \
+                               p_filter->p_sys->colorList[GREEN].comp3 = 54 ;      \
+    p_filter->p_sys->colorList[BLUE].comp1 = 41; p_filter->p_sys->colorList[BLUE].comp2 = 146;      \
+                               p_filter->p_sys->colorList[BLUE].comp3 = 240;       \
+    p_filter->p_sys->colorList[WHITE].comp1 = 255; p_filter->p_sys->colorList[WHITE].comp2 = 128;   \
+                                  p_filter->p_sys->colorList[WHITE].comp3 = 128;
 
 
 /*****************************************************************************
@@ -107,7 +96,6 @@ static int getBallColor( vlc_object_t *p_this, char const *psz_newval );
  * Module descriptor
  *****************************************************************************/
 #define BALL_COLOR_TEXT N_("Ball color")
-#define BALL_COLOR_LONGTEXT N_("Ball color, one of \"red\", \"blue\" and \"green\".")
 
 #define EDGE_VISIBLE_TEXT N_("Edge visible")
 #define EDGE_VISIBLE_LONGTEXT N_("Set edge visibility.")
@@ -139,20 +127,20 @@ vlc_module_begin ()
     set_category( CAT_VIDEO )
     set_subcategory( SUBCAT_VIDEO_VFILTER )
 
-    add_string( FILTER_PREFIX "ball-color", "ball-color", NULL,
-                BALL_COLOR_TEXT, BALL_COLOR_LONGTEXT, false )
+    add_string( FILTER_PREFIX "color", "red",
+                BALL_COLOR_TEXT, BALL_COLOR_TEXT, false )
     change_string_list( mode_list, mode_list_text, 0 )
 
-    add_integer_with_range( FILTER_PREFIX "ball-speed", 4, 1, 15, NULL,
+    add_integer_with_range( FILTER_PREFIX "speed", 4, 1, 15,
                             BALL_SPEED_TEXT, BALL_SPEED_LONGTEXT, false )
 
-    add_integer_with_range( FILTER_PREFIX "ball-size", 10, 5, 30, NULL,
+    add_integer_with_range( FILTER_PREFIX "size", 10, 5, 30,
                             BALL_SIZE_TEXT, BALL_SIZE_LONGTEXT, false )
 
-    add_integer_with_range( FILTER_PREFIX "gradient-threshold", 40, 1, 200, NULL,
+    add_integer_with_range( FILTER_PREFIX "gradient-threshold", 40, 1, 200,
                             GRAD_THRESH_TEXT, GRAD_THRESH_LONGTEXT, false )
 
-    add_bool( FILTER_PREFIX "edge-visible", true, NULL,
+    add_bool( FILTER_PREFIX "edge-visible", true,
               EDGE_VISIBLE_TEXT, EDGE_VISIBLE_LONGTEXT, true )
 
     add_shortcut( "ball" )
@@ -160,7 +148,7 @@ vlc_module_begin ()
 vlc_module_end ()
 
 static const char *const ppsz_filter_options[] = {
-    "ball-color", "ball-speed", "ball-size",
+    "color", "speed", "size",
     "gradient-threshold", "edge-visible", NULL
 };
 
@@ -216,6 +204,12 @@ struct filter_sys_t
     void ( *drawingPixelFunction )( filter_sys_t *, picture_t *,
                                     uint8_t, uint8_t, uint8_t,
                                     int, int, bool );
+    struct
+    {
+        uint8_t comp1;
+        uint8_t comp2;
+        uint8_t comp3;
+    } colorList[4];
 };
 
 
@@ -270,10 +264,10 @@ static int Create( vlc_object_t *p_this )
 
     if( !(psz_method =
         var_CreateGetNonEmptyStringCommand( p_filter,
-                                            FILTER_PREFIX "ball-color" ) ) )
+                                            FILTER_PREFIX "color" ) ) )
     {
         msg_Err( p_filter, "configuration variable "
-                 FILTER_PREFIX "ball-color empty" );
+                 FILTER_PREFIX "color empty" );
         p_filter->p_sys->ballColor = RED;
     }
     else
@@ -282,9 +276,9 @@ static int Create( vlc_object_t *p_this )
     free( psz_method );
 
     p_filter->p_sys->i_ballSize =
-            var_CreateGetIntegerCommand( p_filter, FILTER_PREFIX "ball-size" );
+            var_CreateGetIntegerCommand( p_filter, FILTER_PREFIX "size" );
     p_filter->p_sys->i_ballSpeed =
-            var_CreateGetIntegerCommand( p_filter, FILTER_PREFIX "ball-speed" );
+            var_CreateGetIntegerCommand( p_filter, FILTER_PREFIX "speed" );
     p_filter->p_sys->b_edgeVisible =
             var_CreateGetBoolCommand( p_filter, FILTER_PREFIX "edge-visible" );
     p_filter->p_sys->i_gradThresh =
@@ -292,11 +286,11 @@ static int Create( vlc_object_t *p_this )
 
     vlc_mutex_init( &p_filter->p_sys->lock );
 
-    var_AddCallback( p_filter, FILTER_PREFIX "ball-color",
+    var_AddCallback( p_filter, FILTER_PREFIX "color",
                      ballCallback, p_filter->p_sys );
-    var_AddCallback( p_filter, FILTER_PREFIX "ball-size",
+    var_AddCallback( p_filter, FILTER_PREFIX "size",
                      ballCallback, p_filter->p_sys );
-    var_AddCallback( p_filter, FILTER_PREFIX "ball-speed",
+    var_AddCallback( p_filter, FILTER_PREFIX "speed",
                      ballCallback, p_filter->p_sys );
     var_AddCallback( p_filter, FILTER_PREFIX "edge-visible",
                      ballCallback, p_filter->p_sys );
@@ -325,11 +319,11 @@ static void Destroy( vlc_object_t *p_this )
     filter_t *p_filter = (filter_t *)p_this;
     filter_sys_t *p_sys = p_filter->p_sys;
 
-    var_DelCallback( p_filter, FILTER_PREFIX "ball-color",
+    var_DelCallback( p_filter, FILTER_PREFIX "color",
                      ballCallback, p_sys );
-    var_DelCallback( p_filter, FILTER_PREFIX "ball-size",
+    var_DelCallback( p_filter, FILTER_PREFIX "size",
                      ballCallback, p_sys );
-    var_DelCallback( p_filter, FILTER_PREFIX "ball-speed",
+    var_DelCallback( p_filter, FILTER_PREFIX "speed",
                      ballCallback, p_sys );
     var_DelCallback( p_filter, FILTER_PREFIX "edge-visible",
                      ballCallback, p_sys );
@@ -399,9 +393,9 @@ static void drawBall( filter_sys_t *p_sys, picture_t *p_outpic )
                 && j >= 0 && j < i_height )
             {
                 ( *p_sys->drawingPixelFunction )( p_sys, p_outpic,
-                                    colorList[ p_sys->ballColor ].comp1,
-                                    colorList[ p_sys->ballColor ].comp2,
-                                    colorList[ p_sys->ballColor ].comp3,
+                                    p_sys->colorList[ p_sys->ballColor ].comp1,
+                                    p_sys->colorList[ p_sys->ballColor ].comp2,
+                                    p_sys->colorList[ p_sys->ballColor ].comp3,
                                     i, j, b_skip );
             }
             b_skip = !b_skip;
@@ -553,6 +547,7 @@ static void FilterBall( filter_t *p_filter, picture_t *p_inpic,
 
     picture_t *p_converted;
     video_format_t fmt_comp;
+    memset( &fmt_comp, 0, sizeof(fmt_comp) );
 
     switch( p_filter->fmt_in.video.i_chroma )
     {
@@ -648,9 +643,9 @@ static void FilterBall( filter_t *p_filter, picture_t *p_inpic,
                     > p_sys->i_gradThresh )
                 {
                     ( *p_sys->drawingPixelFunction )( p_sys, p_outpic,
-                                                      colorList[ WHITE ].comp1,
-                                                      colorList[ WHITE ].comp2,
-                                                      colorList[ WHITE ].comp3,
+                                                      p_filter->p_sys->colorList[ WHITE ].comp1,
+                                                      p_filter->p_sys->colorList[ WHITE ].comp2,
+                                                      p_filter->p_sys->colorList[ WHITE ].comp3,
                                                       x, y, 0 );
                 }
             }
@@ -820,15 +815,15 @@ static int ballCallback( vlc_object_t *p_this, char const *psz_var,
     msg_Err( p_this, "Test" );
 
     vlc_mutex_lock( &p_sys->lock );
-    if( !strcmp( psz_var, FILTER_PREFIX "ball-color" ) )
+    if( !strcmp( psz_var, FILTER_PREFIX "color" ) )
     {
         p_sys->ballColor = getBallColor( p_this, newval.psz_string );
     }
-    else if( !strcmp( psz_var, FILTER_PREFIX "ball-size" ) )
+    else if( !strcmp( psz_var, FILTER_PREFIX "size" ) )
     {
         p_sys->i_ballSize = newval.i_int;
     }
-    else if( !strcmp( psz_var, FILTER_PREFIX "ball-speed" ) )
+    else if( !strcmp( psz_var, FILTER_PREFIX "speed" ) )
     {
         p_sys->i_ballSpeed = newval.i_int;
     }