#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_image.h>
#include <vlc_filter.h>
/*****************************************************************************
* Module descriptor
*****************************************************************************/
-vlc_module_begin();
- set_description( N_("Alpha mask video filter") );
- set_shortname( N_("Alpha mask" ));
- set_help( ALPHAMASK_HELP );
- set_category( CAT_VIDEO );
- set_subcategory( SUBCAT_VIDEO_VFILTER );
- set_capability( "video filter2", 0 );
- add_shortcut( "alphamask" );
- add_shortcut( "mask" );
- set_callbacks( Create, Destroy );
+vlc_module_begin ()
+ set_description( N_("Alpha mask video filter") )
+ set_shortname( N_("Alpha mask" ))
+ set_help( ALPHAMASK_HELP )
+ set_category( CAT_VIDEO )
+ set_subcategory( SUBCAT_VIDEO_VFILTER )
+ set_capability( "video filter2", 0 )
+ add_shortcut( "alphamask" )
+ add_shortcut( "mask" )
+ set_callbacks( Create, Destroy )
add_string( CFG_PREFIX "mask", NULL, NULL, MASK_TEXT,
- MASK_LONGTEXT, false );
-vlc_module_end();
+ MASK_LONGTEXT, false )
+vlc_module_end ()
static const char *const ppsz_filter_options[] = {
"mask", NULL
filter_sys_t *p_sys;
char *psz_string;
- if( p_filter->fmt_in.video.i_chroma != VLC_FOURCC('Y','U','V','A') )
+ 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;
config_ChainParse( p_filter, CFG_PREFIX, ppsz_filter_options,
p_filter->p_cfg );
- 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_sys->p_mask = NULL;
if( psz_string && *psz_string )
{
LoadMask( p_filter, psz_string );
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 );
+ var_AddCallback( p_filter, CFG_PREFIX "mask", MaskCallback,
+ p_filter );
p_filter->pf_video_filter = Filter;
return VLC_SUCCESS;
filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
+ var_DelCallback( p_filter, CFG_PREFIX "mask", MaskCallback,
+ p_filter );
+
vlc_mutex_destroy( &p_sys->mask_lock );
- if( p_filter->p_sys->p_mask )
- picture_Release( p_filter->p_sys->p_mask );
+ if( p_sys->p_mask )
+ picture_Release( p_sys->p_mask );
- free( p_filter->p_sys );
+ free( p_sys );
}
static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
video_format_t fmt_in, fmt_out;
memset( &fmt_in, 0, sizeof( video_format_t ) );
memset( &fmt_out, 0, sizeof( video_format_t ) );
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
if( p_filter->p_sys->p_mask )
picture_Release( p_filter->p_sys->p_mask );
p_image = image_HandlerCreate( p_filter );