X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_filter%2Falphamask.c;h=c8a1f917a19368385ca887305ebfd5ccc5f283d7;hb=9427bb62cc89999ceee5e9fbd6a98c78db84ea8d;hp=b9ddcd9445fe63b5dd012e7bd71485effab168ec;hpb=7f12470415d98e9e0ac725f2bb96b5fa74ef27f1;p=vlc diff --git a/modules/video_filter/alphamask.c b/modules/video_filter/alphamask.c index b9ddcd9445..c8a1f917a1 100644 --- a/modules/video_filter/alphamask.c +++ b/modules/video_filter/alphamask.c @@ -34,6 +34,7 @@ #include #include +#include #define ALPHAMASK_HELP N_( \ "Use an image's alpha channel as a transparency mask." ) @@ -65,8 +66,7 @@ vlc_module_begin () set_category( CAT_VIDEO ) set_subcategory( SUBCAT_VIDEO_VFILTER ) set_capability( "video filter2", 0 ) - add_shortcut( "alphamask" ) - add_shortcut( "mask" ) + add_shortcut( "alphamask", "mask" ) set_callbacks( Create, Destroy ) add_string( CFG_PREFIX "mask", NULL, NULL, MASK_TEXT, @@ -92,7 +92,7 @@ static int Create( vlc_object_t *p_this ) if( p_filter->fmt_in.video.i_chroma != VLC_CODEC_YUVA ) { msg_Err( p_filter, - "Unsupported input chroma \"%4s\". " + "Unsupported input chroma \"%4.4s\". " "Alphamask can only use \"YUVA\".", (char*)&p_filter->fmt_in.video.i_chroma ); return VLC_EGENERIC; @@ -107,7 +107,8 @@ static int Create( vlc_object_t *p_this ) config_ChainParse( p_filter, CFG_PREFIX, ppsz_filter_options, p_filter->p_cfg ); - p_sys->p_mask = NULL; + psz_string = + var_CreateGetStringCommand( p_filter, CFG_PREFIX "mask" ); if( psz_string && *psz_string ) { LoadMask( p_filter, psz_string ); @@ -115,11 +116,11 @@ static int Create( vlc_object_t *p_this ) msg_Err( p_filter, "Error while loading mask (%s).", psz_string ); } + else + p_sys->p_mask = NULL; free( psz_string ); vlc_mutex_init( &p_sys->mask_lock ); - psz_string = - var_CreateGetStringCommand( p_filter, CFG_PREFIX "mask" ); var_AddCallback( p_filter, CFG_PREFIX "mask", MaskCallback, p_filter ); p_filter->pf_video_filter = Filter; @@ -181,8 +182,10 @@ static void LoadMask( filter_t *p_filter, const char *psz_filename ) if( p_filter->p_sys->p_mask ) picture_Release( p_filter->p_sys->p_mask ); p_image = image_HandlerCreate( p_filter ); + char *psz_url = make_URI( psz_filename, NULL ); p_filter->p_sys->p_mask = - image_ReadUrl( p_image, psz_filename, &fmt_in, &fmt_out ); + image_ReadUrl( p_image, psz_url, &fmt_in, &fmt_out ); + free( psz_url ); image_HandlerDelete( p_image ); }