X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_filter%2Ferase.c;h=33f507bf2ef86099b7b04d6bfd7d046dc9bd2d3f;hb=7686840e5c2b384eab661455a5e532a97c669e96;hp=74de94d83eeac682b0b6c9f499a80a777366b06f;hpb=806cf5165824be921bf2402ecf11fd3ee6501f9c;p=vlc diff --git a/modules/video_filter/erase.c b/modules/video_filter/erase.c index 74de94d83e..33f507bf2e 100644 --- a/modules/video_filter/erase.c +++ b/modules/video_filter/erase.c @@ -25,12 +25,18 @@ * Preamble *****************************************************************************/ -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include #include #include #include "vlc_image.h" #include "vlc_filter.h" +#include "filter_picture.h" /***************************************************************************** * Local prototypes @@ -57,25 +63,22 @@ static int EraseCallback( vlc_object_t *, char const *, #define CFG_PREFIX "erase-" vlc_module_begin(); - set_description( _("Erase video filter") ); - set_shortname( _( "Erase" )); + set_description( N_("Erase video filter") ); + set_shortname( N_( "Erase" )); set_capability( "video filter2", 0 ); set_category( CAT_VIDEO ); set_subcategory( SUBCAT_VIDEO_VFILTER ); add_file( CFG_PREFIX "mask", NULL, NULL, - MASK_TEXT, MASK_LONGTEXT, VLC_FALSE ); - change_safe(); - add_integer( CFG_PREFIX "x", 0, NULL, POSX_TEXT, POSX_LONGTEXT, VLC_FALSE ); - change_safe(); - add_integer( CFG_PREFIX "y", 0, NULL, POSY_TEXT, POSY_LONGTEXT, VLC_FALSE ); - change_safe(); + MASK_TEXT, MASK_LONGTEXT, false ); + add_integer( CFG_PREFIX "x", 0, NULL, POSX_TEXT, POSX_LONGTEXT, false ); + add_integer( CFG_PREFIX "y", 0, NULL, POSY_TEXT, POSY_LONGTEXT, false ); add_shortcut( "erase" ); set_callbacks( Create, Destroy ); vlc_module_end(); -static const char *ppsz_filter_options[] = { +static const char *const ppsz_filter_options[] = { "mask", "x", "y", NULL }; @@ -104,7 +107,7 @@ static void LoadMask( filter_t *p_filter, const char *psz_filename ) if( p_filter->p_sys->p_mask ) { if( p_old_mask ) - p_old_mask->pf_release( p_old_mask ); + picture_Release( p_old_mask ); } else if( p_old_mask ) { @@ -143,10 +146,7 @@ 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; p_filter->pf_video_filter = Filter; @@ -173,7 +173,7 @@ static int Create( vlc_object_t *p_this ) var_AddCallback( p_filter, CFG_PREFIX "y", EraseCallback, p_sys ); var_AddCallback( p_filter, CFG_PREFIX "mask", EraseCallback, p_sys ); - vlc_mutex_init( p_filter, &p_sys->lock ); + vlc_mutex_init( &p_sys->lock ); return VLC_SUCCESS; } @@ -186,7 +186,7 @@ static void Destroy( vlc_object_t *p_this ) filter_t *p_filter = (filter_t *)p_this; filter_sys_t *p_sys = p_filter->p_sys; if( p_sys->p_mask ) - p_sys->p_mask->pf_release( p_sys->p_mask ); + picture_Release( p_sys->p_mask ); vlc_mutex_destroy( &p_sys->lock ); @@ -202,28 +202,17 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) if( !p_pic ) return NULL; - p_outpic = p_filter->pf_vout_buffer_new( p_filter ); + p_outpic = filter_NewPicture( p_filter ); if( !p_outpic ) { - msg_Warn( p_filter, "can't get output picture" ); - if( p_pic->pf_release ) - p_pic->pf_release( p_pic ); + picture_Release( p_pic ); return NULL; } /* Here */ FilterErase( p_filter, p_pic, p_outpic ); - p_outpic->date = p_pic->date; - p_outpic->b_force = p_pic->b_force; - p_outpic->i_nb_fields = p_pic->i_nb_fields; - p_outpic->b_progressive = p_pic->b_progressive; - p_outpic->b_top_field_first = p_pic->b_top_field_first; - - if( p_pic->pf_release ) - p_pic->pf_release( p_pic ); - - return p_outpic; + return CopyInfoAndRelease( p_outpic, p_pic ); } /***************************************************************************** @@ -258,7 +247,7 @@ static void FilterErase( filter_t *p_filter, picture_t *p_inpic, int i_height = i_mask_visible_lines; int i_width = i_mask_visible_pitch; - const vlc_bool_t b_line_factor = ( i_plane /* U_PLANE or V_PLANE */ && + const bool b_line_factor = ( i_plane /* U_PLANE or V_PLANE */ && !( p_inpic->format.i_chroma == VLC_FOURCC('I','4','2','2') || p_inpic->format.i_chroma == VLC_FOURCC('J','4','2','2') ) ); @@ -276,7 +265,7 @@ static void FilterErase( filter_t *p_filter, picture_t *p_inpic, i_width = __MIN( i_visible_pitch - i_x, i_width ); /* Copy original pixel buffer */ - p_filter->p_libvlc->pf_memcpy( p_outpix, p_inpix, i_pitch * i_lines ); + vlc_memcpy( p_outpix, p_inpix, i_pitch * i_lines ); /* Horizontal linear interpolation of masked areas */ p_outpix = p_outpic->p[i_plane].p_pixels + i_y*i_pitch + i_x; @@ -410,6 +399,7 @@ static void FilterErase( filter_t *p_filter, picture_t *p_inpic, static int EraseCallback( vlc_object_t *p_this, char const *psz_var, vlc_value_t oldval, vlc_value_t newval, void *p_data ) { + VLC_UNUSED(oldval); filter_sys_t *p_sys = (filter_sys_t *)p_data; if( !strcmp( psz_var, CFG_PREFIX "x" ) )