From 2ec43b29667c1c814f1ff793db25d9f94cf872f8 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Kempf <jb@videolan.org> Date: Sun, 29 Sep 2013 19:31:05 +0200 Subject: [PATCH] hqdn3d: allow live modification of params --- modules/video_filter/hqdn3d.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/modules/video_filter/hqdn3d.c b/modules/video_filter/hqdn3d.c index a332cc235288..0899388b08eb 100644 --- a/modules/video_filter/hqdn3d.c +++ b/modules/video_filter/hqdn3d.c @@ -43,6 +43,9 @@ static int Open (vlc_object_t *); static void Close (vlc_object_t *); static picture_t *Filter (filter_t *, picture_t *); +static int DenoiseCallback( vlc_object_t *p_this, char const *psz_var, + vlc_value_t oldval, vlc_value_t newval, + void *p_data ); /***************************************************************************** * Module descriptor @@ -162,6 +165,11 @@ static int Open(vlc_object_t *this) PrecalcCoefs(cfg->Coefs[2], sys->chroma_spat); PrecalcCoefs(cfg->Coefs[3], sys->chroma_temp); + var_AddCallback( filter, FILTER_PREFIX "luma-spat", DenoiseCallback, cfg ); + var_AddCallback( filter, FILTER_PREFIX "chroma-spat", DenoiseCallback, cfg ); + var_AddCallback( filter, FILTER_PREFIX "luma-temp", DenoiseCallback, cfg ); + var_AddCallback( filter, FILTER_PREFIX "chroma-temp", DenoiseCallback, cfg ); + return VLC_SUCCESS; } @@ -219,3 +227,24 @@ static picture_t *Filter(filter_t *filter, picture_t *src) return CopyInfoAndRelease(dst, src); } + + +static int DenoiseCallback( 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); + + struct vf_priv_s *cfg = (struct vf_priv_s *)p_data; + + if( !strcmp( psz_var, FILTER_PREFIX "luma-spat" ) ) + PrecalcCoefs(cfg->Coefs[0], newval.f_float); + else if( !strcmp( psz_var, FILTER_PREFIX "luma-temp" ) ) + PrecalcCoefs(cfg->Coefs[1], newval.f_float); + else if( !strcmp( psz_var, FILTER_PREFIX "chroma-spat") ) + PrecalcCoefs(cfg->Coefs[2], newval.f_float); + else if( !strcmp( psz_var, FILTER_PREFIX "chroma-temp") ) + PrecalcCoefs(cfg->Coefs[3], newval.f_float); + + return VLC_SUCCESS; +} -- GitLab