X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_filter%2Falphamask.c;h=bdc6132fad53885e955d98a29ccb0a7ed745959a;hb=b42755d7fd2a64ad8c9d4c881388685abee9c463;hp=cd6a3b02cce49a84f6b33050d009ee79d6693a3b;hpb=2e7f9cf4d64267a8ea4b822bd007e487d6db9828;p=vlc diff --git a/modules/video_filter/alphamask.c b/modules/video_filter/alphamask.c index cd6a3b02cc..bdc6132fad 100644 --- a/modules/video_filter/alphamask.c +++ b/modules/video_filter/alphamask.c @@ -2,7 +2,7 @@ * alphamask.c : Alpha layer mask video filter for vlc ***************************************************************************** * Copyright (C) 2007 the VideoLAN team - * $Id: invert.c 18062 2006-11-26 14:20:34Z zorglub $ + * $Id$ * * Authors: Antoine Cellerier * @@ -24,10 +24,13 @@ /***************************************************************************** * Preamble *****************************************************************************/ -#include /* malloc(), free() */ -#include -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include #include #include @@ -38,7 +41,7 @@ #define MASK_TEXT N_("Transparency mask") #define MASK_LONGTEXT N_( \ - "Alpha blending transparency mask. Use's a png alpha channel.") + "Alpha blending transparency mask. Uses a png alpha channel.") #define CFG_PREFIX "alphamask-" @@ -56,22 +59,22 @@ static int MaskCallback( vlc_object_t *, char const *, /***************************************************************************** * Module descriptor *****************************************************************************/ -vlc_module_begin(); - set_description( _("Alpha mask video filter") ); - set_shortname( _("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, VLC_FALSE ); -vlc_module_end(); + MASK_LONGTEXT, false ) +vlc_module_end () -static const char *ppsz_filter_options[] = { +static const char *const ppsz_filter_options[] = { "mask", NULL }; @@ -99,16 +102,13 @@ static int Create( vlc_object_t *p_this ) /* Allocate structure */ p_filter->p_sys = malloc( sizeof( filter_sys_t ) ); if( p_filter->p_sys == NULL ) - { - msg_Err( p_filter, "out of memory" ); return VLC_ENOMEM; - } p_sys = p_filter->p_sys; config_ChainParse( p_filter, CFG_PREFIX, ppsz_filter_options, p_filter->p_cfg ); - vlc_mutex_init( p_filter, &p_sys->mask_lock ); + vlc_mutex_init( &p_sys->mask_lock ); psz_string = var_CreateGetStringCommand( p_filter, CFG_PREFIX "mask" ); var_AddCallback( p_filter, CFG_PREFIX "mask", MaskCallback, @@ -135,7 +135,7 @@ static void Destroy( vlc_object_t *p_this ) vlc_mutex_destroy( &p_sys->mask_lock ); if( p_filter->p_sys->p_mask ) - p_filter->p_sys->p_mask->pf_release( p_filter->p_sys->p_mask ); + picture_Release( p_filter->p_sys->p_mask ); free( p_filter->p_sys ); } @@ -152,7 +152,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) || p_mask->i_visible_lines != p_apic->i_visible_lines ) { - msg_Warn( p_filter, + msg_Err( p_filter, "Mask size (%d x %d) and image size (%d x %d) " "don't match. The mask will not be applied.", p_mask->i_visible_pitch, @@ -162,33 +162,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) } else { - if( p_mask->i_pitch != p_apic->i_pitch - || p_mask->i_lines != p_apic->i_lines ) - { - /* visible plane sizes match ... but not the underlying - * buffer. I'm not sure that this can happen, - * but better safe than sorry. */ - int i_line; - int i_lines = p_mask->i_visible_lines; - uint8_t *p_src = p_mask->p_pixels; - uint8_t *p_dst = p_apic->p_pixels; - int i_src_pitch = p_mask->i_pitch; - int i_dst_pitch = p_apic->i_pitch; - int i_visible_pitch = p_mask->i_visible_pitch; - for( i_line = 0; i_line < i_lines; i_line++, - p_src += i_src_pitch, p_dst += i_dst_pitch ) - { - p_filter->p_libvlc->pf_memcpy( - p_dst, p_src, i_visible_pitch ); - } - } - else - { - /* plane sizes match */ - p_filter->p_libvlc->pf_memcpy( - p_apic->p_pixels, p_mask->p_pixels, - p_mask->i_pitch * p_mask->i_lines ); - } + plane_CopyPixels( p_apic, p_mask ); } vlc_mutex_unlock( &p_sys->mask_lock ); return p_pic; @@ -203,7 +177,7 @@ static void LoadMask( filter_t *p_filter, const char *psz_filename ) memset( &fmt_out, 0, sizeof( video_format_t ) ); fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A'); if( p_filter->p_sys->p_mask ) - p_filter->p_sys->p_mask->pf_release( p_filter->p_sys->p_mask ); + picture_Release( p_filter->p_sys->p_mask ); p_image = image_HandlerCreate( p_filter ); p_filter->p_sys->p_mask = image_ReadUrl( p_image, psz_filename, &fmt_in, &fmt_out ); @@ -217,6 +191,7 @@ static int MaskCallback( vlc_object_t *p_this, char const *psz_var, vlc_value_t oldval, vlc_value_t newval, void *p_data ) { + VLC_UNUSED(p_this); VLC_UNUSED(oldval); filter_t *p_filter = (filter_t *)p_data; filter_sys_t *p_sys = p_filter->p_sys; int i_ret = VLC_SUCCESS; @@ -237,7 +212,7 @@ static int MaskCallback( vlc_object_t *p_this, char const *psz_var, } else if( p_sys->p_mask ) { - p_sys->p_mask->pf_release( p_sys->p_mask ); + picture_Release( p_sys->p_mask ); p_sys->p_mask = NULL; } vlc_mutex_unlock( &p_sys->mask_lock );