From 7fbd1ca82e806a44e23510f35a70c4e87cde0998 Mon Sep 17 00:00:00 2001 From: Antoine Cellerier Date: Sat, 31 Mar 2007 21:52:33 +0000 Subject: [PATCH] Make it possible to change sharpen sigma after filter launch. --- modules/video_filter/sharpen.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/modules/video_filter/sharpen.c b/modules/video_filter/sharpen.c index 23bd6f8b49..a1287fcb24 100644 --- a/modules/video_filter/sharpen.c +++ b/modules/video_filter/sharpen.c @@ -50,6 +50,8 @@ static int Create ( vlc_object_t * ); static void Destroy ( vlc_object_t * ); static picture_t *Filter( filter_t *, picture_t * ); +static int SharpenCallback( vlc_object_t *, char const *, + vlc_value_t, vlc_value_t, void * ); #define FILTER_PREFIX "sharpen-" @@ -114,10 +116,10 @@ static int Create( vlc_object_t *p_this ) config_ChainParse( p_filter, FILTER_PREFIX, ppsz_filter_options, p_filter->p_cfg ); - var_Create( p_filter, FILTER_PREFIX "sigma", - VLC_VAR_FLOAT | VLC_VAR_DOINHERIT ); - - p_filter->p_sys->f_sigma = var_GetFloat(p_this, FILTER_PREFIX "sigma"); + p_filter->p_sys->f_sigma = + var_CreateGetFloatCommand( p_filter, FILTER_PREFIX "sigma" ); + var_AddCallback( p_filter, FILTER_PREFIX "sigma", + SharpenCallback, p_filter->p_sys ); return VLC_SUCCESS; } @@ -145,7 +147,6 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) { picture_t *p_outpic; int i, j; - vlc_value_t val; uint8_t *p_src = NULL; uint8_t *p_out = NULL; int i_src_pitch; @@ -172,7 +173,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) if( !p_src || !p_out ) { msg_Warn( p_filter, "can't get Y plane" ); - if( p_pic->pf_release ) + if( p_pic->pf_release ) p_pic->pf_release( p_pic ); return NULL; } @@ -232,3 +233,13 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) return p_outpic; } + +static int SharpenCallback( vlc_object_t *p_this, char const *psz_var, + vlc_value_t oldval, vlc_value_t newval, + void *p_data ) +{ + filter_sys_t *p_sys = (filter_sys_t *)p_data; + if( !strcmp( psz_var, FILTER_PREFIX "sigma" ) ) + p_sys->f_sigma = __MIN( 2., __MAX( 0., newval.f_float ) ); + return VLC_SUCCESS; +} -- 2.39.5