[vlc-devel] [PATCH 5/7] filters: use macro to set the typed Open callback for subtitle filters

Steve Lhomme robux4 at ycbcr.xyz
Mon Oct 12 15:59:13 CEST 2020


---
 include/vlc_filter.h    | 9 +++++++++
 modules/spu/subsdelay.c | 8 +++-----
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/include/vlc_filter.h b/include/vlc_filter.h
index 6b3c395d7d4..4517d28cb46 100644
--- a/include/vlc_filter.h
+++ b/include/vlc_filter.h
@@ -144,6 +144,7 @@ typedef int (*vlc_open_deinterlace)(filter_t *);
 typedef int (*vlc_video_converter_open)(filter_t *);
 typedef int (*vlc_video_filter_open)(filter_t *);
 typedef int (*vlc_video_text_renderer_open)(filter_t *);
+typedef int (*vlc_video_sub_filter_open)(filter_t *);
 
 
 #define set_deinterlace_callback( activate )     \
@@ -179,6 +180,14 @@ typedef int (*vlc_video_text_renderer_open)(filter_t *);
     }                                                      \
     set_capability( "text renderer", priority )
 
+#define set_callback_sub_filter( activate )                \
+    {                                                      \
+        vlc_video_sub_filter_open open__ = activate;       \
+        (void) open__;                                     \
+        set_callback(activate)                             \
+    }                                                      \
+    set_capability( "sub filter", 0 )
+
 /** Structure describing a filter
  * @warning BIG FAT WARNING : the code relies on the first 4 members of
  * filter_t and decoder_t to be the same, so if you have anything to add,
diff --git a/modules/spu/subsdelay.c b/modules/spu/subsdelay.c
index 61a82158fe3..0d191f62335 100644
--- a/modules/spu/subsdelay.c
+++ b/modules/spu/subsdelay.c
@@ -184,7 +184,7 @@ typedef struct
  * Filter functions
  *****************************************************************************/
 
-static int SubsdelayCreate( vlc_object_t * );
+static int SubsdelayCreate( filter_t * );
 
 static void SubsdelayDestroy( filter_t * );
 
@@ -265,8 +265,7 @@ vlc_module_begin()
         set_shortname( N_("Subsdelay") )
         set_description( N_("Subtitle delay") )
         set_help( SUBSDELAY_HELP )
-        set_capability( "sub filter", 0 )
-        set_callback( SubsdelayCreate )
+        set_callback_sub_filter( SubsdelayCreate )
         set_category( CAT_VIDEO )
         set_subcategory( SUBCAT_VIDEO_SUBPIC )
 
@@ -300,9 +299,8 @@ static const struct vlc_filter_operations filter_ops = {
 /*****************************************************************************
  * SubsdelayCreate: Create subsdelay filter
  *****************************************************************************/
-static int SubsdelayCreate( vlc_object_t *p_this )
+static int SubsdelayCreate( filter_t *p_filter )
 {
-    filter_t *p_filter = (filter_t *) p_this;
     filter_sys_t *p_sys;
 
     /* allocate structure */
-- 
2.26.2



More information about the vlc-devel mailing list