vlc | branch: master | Steve Lhomme <[email protected]> | Fri Oct 9 11:24:26 2020 +0200| [b027f1a6c792da764bec4290b2510bbc14dc18a3] | committer: Steve Lhomme
filters: use macro to set the typed Open callback for text renderer filters > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b027f1a6c792da764bec4290b2510bbc14dc18a3 --- include/vlc_filter.h | 11 ++++++++++- modules/text_renderer/freetype/freetype.c | 12 +++++------- modules/text_renderer/nsspeechsynthesizer.m | 8 +++----- modules/text_renderer/sapi.cpp | 18 ++++++++---------- modules/text_renderer/svg.c | 9 +++------ modules/text_renderer/tdummy.c | 8 +++----- 6 files changed, 32 insertions(+), 34 deletions(-) diff --git a/include/vlc_filter.h b/include/vlc_filter.h index 63763e0231..6b3c395d7d 100644 --- a/include/vlc_filter.h +++ b/include/vlc_filter.h @@ -100,7 +100,7 @@ struct vlc_filter_operations /** Filter a subpicture (sub filter) */ subpicture_t *(*filter_sub)(filter_t *, subpicture_t *); - /** Render text (text render) */ + /** Render text (text renderer) */ int (*render)(filter_t *, subpicture_region_t *, subpicture_region_t *, const vlc_fourcc_t *); }; @@ -143,6 +143,7 @@ struct vlc_filter_operations 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 *); #define set_deinterlace_callback( activate ) \ @@ -170,6 +171,14 @@ typedef int (*vlc_video_filter_open)(filter_t *); } \ set_capability( "video converter", priority ) +#define set_callback_text_renderer( activate, priority ) \ + { \ + vlc_video_text_renderer_open open__ = activate; \ + (void) open__; \ + set_callback(activate) \ + } \ + set_capability( "text renderer", priority ) + /** 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/text_renderer/freetype/freetype.c b/modules/text_renderer/freetype/freetype.c index a866b99d72..d9044ca54c 100644 --- a/modules/text_renderer/freetype/freetype.c +++ b/modules/text_renderer/freetype/freetype.c @@ -53,7 +53,7 @@ /***************************************************************************** * Module descriptor *****************************************************************************/ -static int Create ( vlc_object_t * ); +static int Create ( filter_t * ); static void Destroy( filter_t * ); #define FONT_TEXT N_("Font") @@ -204,9 +204,8 @@ vlc_module_begin () change_safe() #endif - set_capability( "text renderer", 100 ) add_shortcut( "text" ) - set_callback( Create ) + set_callback_text_renderer( Create, 100 ) vlc_module_end () /* */ @@ -1169,9 +1168,8 @@ static const struct vlc_filter_operations filter_ops = ***************************************************************************** * This function allocates and initializes a Clone vout method. *****************************************************************************/ -static int Create( vlc_object_t *p_this ) +static int Create( filter_t *p_filter ) { - filter_t *p_filter = ( filter_t * ) p_this; filter_sys_t *p_sys = NULL; /* Allocate structure */ @@ -1193,8 +1191,8 @@ static int Create( vlc_object_t *p_this ) p_sys->p_stroker = NULL; } - p_sys->ftcache = vlc_ftcache_New( p_this, p_sys->p_library, - var_InheritInteger( p_this, "freetype-cache-size" ) ); + p_sys->ftcache = vlc_ftcache_New( VLC_OBJECT(p_filter), p_sys->p_library, + var_InheritInteger( p_filter, "freetype-cache-size" ) ); if( !p_sys->ftcache ) goto error; diff --git a/modules/text_renderer/nsspeechsynthesizer.m b/modules/text_renderer/nsspeechsynthesizer.m index f3b7d7e151..5d8a683ec4 100644 --- a/modules/text_renderer/nsspeechsynthesizer.m +++ b/modules/text_renderer/nsspeechsynthesizer.m @@ -35,7 +35,7 @@ #import <Cocoa/Cocoa.h> -static int Create (vlc_object_t *); +static int Create (filter_t *); static void Destroy(filter_t *); static int RenderText(filter_t *, subpicture_region_t *, @@ -47,8 +47,7 @@ set_description(N_("Speech synthesis for Mac OS X")) set_category(CAT_VIDEO) set_subcategory(SUBCAT_VIDEO_SUBPIC) -set_capability("text renderer", 0) -set_callback(Create) +set_callback_text_renderer(Create, 0) vlc_module_end () typedef struct filter_sys_t @@ -62,9 +61,8 @@ static const struct vlc_filter_operations filter_ops = { .render = RenderText, .close = Destroy, }; -static int Create (vlc_object_t *p_this) +static int Create (filter_t *p_filter) { - filter_t *p_filter = (filter_t *)p_this; filter_sys_t *p_sys; p_filter->p_sys = p_sys = malloc(sizeof(filter_sys_t)); diff --git a/modules/text_renderer/sapi.cpp b/modules/text_renderer/sapi.cpp index f12961ecef..d735b8c512 100644 --- a/modules/text_renderer/sapi.cpp +++ b/modules/text_renderer/sapi.cpp @@ -44,7 +44,7 @@ #include <sapi.h> #include <sphelper.h> -static int Create (vlc_object_t *); +static int Create (filter_t *); static void Destroy(filter_t *); static int RenderText(filter_t *, subpicture_region_t *, @@ -57,8 +57,7 @@ vlc_module_begin () set_category(CAT_VIDEO) set_subcategory(SUBCAT_VIDEO_SUBPIC) - set_capability("text renderer", 0) - set_callback(Create) + set_callback_text_renderer(Create, 0) add_integer("sapi-voice", -1, "Voice Index", "Voice index", false) vlc_module_end () @@ -102,13 +101,12 @@ static const struct FilterOperationInitializer { }; } filter_ops; -static int Create (vlc_object_t *p_this) +static int Create (filter_t *p_filter) { - filter_t *p_filter = (filter_t *)p_this; filter_sys_t *p_sys; HRESULT hr; - if (TryEnterMTA(p_this)) + if (TryEnterMTA(p_filter)) return VLC_EGENERIC; p_filter->p_sys = p_sys = (filter_sys_t*) malloc(sizeof(filter_sys_t)); @@ -131,7 +129,7 @@ static int Create (vlc_object_t *p_this) hr = cpEnum->GetCount(&ulCount); if (SUCCEEDED (hr)) { - int voiceIndex = var_InheritInteger(p_this, "sapi-voice"); + int voiceIndex = var_InheritInteger(p_filter, "sapi-voice"); if (voiceIndex > -1) { if ((unsigned)voiceIndex < ulCount) { @@ -139,17 +137,17 @@ static int Create (vlc_object_t *p_this) if (SUCCEEDED(hr)) { hr = p_sys->cpVoice->SetVoice(cpVoiceToken); if (SUCCEEDED(hr)) { - msg_Dbg(p_this, "Selected voice %d", voiceIndex); + msg_Dbg(p_filter, "Selected voice %d", voiceIndex); } else { - msg_Err(p_this, "Failed to set voice %d", voiceIndex); + msg_Err(p_filter, "Failed to set voice %d", voiceIndex); } cpVoiceToken->Release(); cpVoiceToken = NULL; } } else - msg_Err(p_this, "Voice index exceeds available count"); + msg_Err(p_filter, "Voice index exceeds available count"); } } cpEnum->Release(); diff --git a/modules/text_renderer/svg.c b/modules/text_renderer/svg.c index fbb55f6beb..39907a39e7 100644 --- a/modules/text_renderer/svg.c +++ b/modules/text_renderer/svg.c @@ -47,7 +47,7 @@ /***************************************************************************** * Local prototypes *****************************************************************************/ -static int Create ( vlc_object_t * ); +static int Create ( filter_t * ); static void Destroy ( filter_t * ); static int RenderText( filter_t *p_filter, subpicture_region_t *p_region_out, subpicture_region_t *p_region_in, @@ -73,10 +73,9 @@ typedef struct vlc_module_begin () set_category( CAT_INPUT ) set_subcategory( SUBCAT_INPUT_SCODEC ) - set_capability( "text renderer", 99 ) add_shortcut( "svg" ) add_string( "svg-template-file", "", TEMPLATE_TEXT, TEMPLATE_LONGTEXT, true ) - set_callback( Create ) + set_callback_text_renderer( Create, 99 ) vlc_module_end () static void svg_RescaletoFit ( filter_t *, int *width, int *height, float * ); @@ -179,10 +178,8 @@ static const struct vlc_filter_operations filter_ops = { * This function allocates and initializes a vout method. *****************************************************************************/ -static int Create( vlc_object_t *p_this ) +static int Create( filter_t *p_filter ) { - filter_t *p_filter = ( filter_t * )p_this; - filter_sys_t *p_sys = calloc( 1, sizeof(*p_sys) ); if( !p_sys ) return VLC_ENOMEM; diff --git a/modules/text_renderer/tdummy.c b/modules/text_renderer/tdummy.c index 4fd996674c..dc330605f1 100644 --- a/modules/text_renderer/tdummy.c +++ b/modules/text_renderer/tdummy.c @@ -28,13 +28,12 @@ #include <vlc_plugin.h> #include <vlc_filter.h> -static int OpenRenderer( vlc_object_t * ); +static int OpenRenderer( filter_t * ); vlc_module_begin () set_shortname( N_("Dummy") ) set_description( N_("Dummy font renderer") ) - set_capability( "text renderer", 1 ) - set_callback( OpenRenderer ) + set_callback_text_renderer( OpenRenderer, 1 ) vlc_module_end () @@ -51,9 +50,8 @@ static const struct vlc_filter_operations filter_ops = { .render = RenderText, }; -static int OpenRenderer( vlc_object_t *p_this ) +static int OpenRenderer( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; p_filter->ops = &filter_ops; return VLC_SUCCESS; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
