[vlc-commits] video_filters: use a typed close callback in the operations structure
Steve Lhomme
git at videolan.org
Mon Oct 12 15:56:07 CEST 2020
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Thu Jan 1 01:00:00 1970 +0100| [f0f50648126077de7280b4e5197e4a6ea2689567] | committer: Steve Lhomme
video_filters: use a typed close callback in the operations structure
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f0f50648126077de7280b4e5197e4a6ea2689567
---
modules/hw/d3d11/d3d11_filters.c | 59 ++++++++++++++--------------
modules/hw/d3d9/d3d9_filters.c | 29 +++++++-------
modules/hw/vaapi/chroma.c | 7 ++--
modules/hw/vaapi/filters.c | 69 ++++++++++++++++-----------------
modules/hw/vaapi/filters.h | 2 +-
modules/hw/vdpau/adjust.c | 31 +++++++--------
modules/hw/vdpau/sharpen.c | 19 +++++----
modules/spu/audiobargraph_v.c | 9 ++++-
modules/spu/logo.c | 8 +++-
modules/video_chroma/chain.c | 11 +++---
modules/video_chroma/cvpx.c | 30 +++++++-------
modules/video_chroma/swscale.c | 9 ++---
modules/video_filter/adjust.c | 11 +++---
modules/video_filter/alphamask.c | 9 ++---
modules/video_filter/antiflicker.c | 9 ++---
modules/video_filter/ball.c | 9 ++---
modules/video_filter/blendbench.c | 9 ++---
modules/video_filter/bluescreen.c | 9 ++---
modules/video_filter/canvas.c | 9 ++---
modules/video_filter/ci_filters.m | 50 ++++++++++++------------
modules/video_filter/colorthres.c | 10 ++---
modules/video_filter/edgedetection.c | 9 ++---
modules/video_filter/erase.c | 9 ++---
modules/video_filter/extract.c | 9 ++---
modules/video_filter/freeze.c | 8 ++--
modules/video_filter/gaussianblur.c | 9 ++---
modules/video_filter/gradfun.c | 9 ++---
modules/video_filter/gradient.c | 9 ++---
modules/video_filter/grain.c | 9 ++---
modules/video_filter/hqdn3d.c | 9 ++---
modules/video_filter/magnify.c | 8 ++--
modules/video_filter/mirror.c | 9 ++---
modules/video_filter/motionblur.c | 9 ++---
modules/video_filter/motiondetect.c | 9 ++---
modules/video_filter/oldmovie.c | 9 ++---
modules/video_filter/opencv_example.cpp | 8 ++--
modules/video_filter/opencv_wrapper.c | 9 ++---
modules/video_filter/posterize.c | 9 ++---
modules/video_filter/postproc.c | 9 ++---
modules/video_filter/psychedelic.c | 9 ++---
modules/video_filter/puzzle.c | 8 ++--
modules/video_filter/rotate.c | 11 +++---
modules/video_filter/scene.c | 9 ++---
modules/video_filter/sepia.c | 10 ++---
modules/video_filter/sharpen.c | 9 ++---
modules/video_filter/vhs.c | 9 ++---
46 files changed, 301 insertions(+), 331 deletions(-)
diff --git a/modules/hw/d3d11/d3d11_filters.c b/modules/hw/d3d11/d3d11_filters.c
index abd43d7ae1..a887fc131a 100644
--- a/modules/hw/d3d11/d3d11_filters.c
+++ b/modules/hw/d3d11/d3d11_filters.c
@@ -335,8 +335,35 @@ static int AdjustCallback( vlc_object_t *p_this, char const *psz_var,
return VLC_SUCCESS;
}
+static void D3D11CloseAdjust(filter_t *filter)
+{
+ filter_sys_t *sys = filter->p_sys;
+
+ var_DelCallback( filter, "contrast", AdjustCallback, sys );
+ var_DelCallback( filter, "brightness", AdjustCallback, sys );
+ var_DelCallback( filter, "hue", AdjustCallback, sys );
+ var_DelCallback( filter, "saturation", AdjustCallback, sys );
+ var_DelCallback( filter, "gamma", AdjustCallback, sys );
+ var_DelCallback( filter, "brightness-threshold",
+ AdjustCallback, sys );
+
+ for (int i=0; i<PROCESSOR_SLICES; i++)
+ {
+ if (sys->procInput[i])
+ ID3D11VideoProcessorInputView_Release(sys->procInput[i]);
+ if (sys->procOutput[i])
+ ID3D11VideoProcessorOutputView_Release(sys->procOutput[i]);
+ }
+ ID3D11Texture2D_Release(sys->out[0].texture);
+ ID3D11Texture2D_Release(sys->out[1].texture);
+ D3D11_ReleaseProcessor( &sys->d3d_proc );
+ vlc_video_context_Release(filter->vctx_out);
+
+ free(sys);
+}
+
static const struct vlc_filter_operations filter_ops = {
- .filter_video = Filter,
+ .filter_video = Filter, .close = D3D11CloseAdjust,
};
static int D3D11OpenAdjust(vlc_object_t *obj)
@@ -537,40 +564,12 @@ error:
return VLC_EGENERIC;
}
-static void D3D11CloseAdjust(vlc_object_t *obj)
-{
- filter_t *filter = (filter_t *)obj;
- filter_sys_t *sys = filter->p_sys;
-
- var_DelCallback( filter, "contrast", AdjustCallback, sys );
- var_DelCallback( filter, "brightness", AdjustCallback, sys );
- var_DelCallback( filter, "hue", AdjustCallback, sys );
- var_DelCallback( filter, "saturation", AdjustCallback, sys );
- var_DelCallback( filter, "gamma", AdjustCallback, sys );
- var_DelCallback( filter, "brightness-threshold",
- AdjustCallback, sys );
-
- for (int i=0; i<PROCESSOR_SLICES; i++)
- {
- if (sys->procInput[i])
- ID3D11VideoProcessorInputView_Release(sys->procInput[i]);
- if (sys->procOutput[i])
- ID3D11VideoProcessorOutputView_Release(sys->procOutput[i]);
- }
- ID3D11Texture2D_Release(sys->out[0].texture);
- ID3D11Texture2D_Release(sys->out[1].texture);
- D3D11_ReleaseProcessor( &sys->d3d_proc );
- vlc_video_context_Release(filter->vctx_out);
-
- free(sys);
-}
-
vlc_module_begin()
set_description(N_("Direct3D11 adjust filter"))
set_capability("video filter", 0)
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
- set_callbacks(D3D11OpenAdjust, D3D11CloseAdjust)
+ set_callback(D3D11OpenAdjust)
add_shortcut( "adjust" )
add_float_with_range( "contrast", 1.0, 0.0, 2.0,
diff --git a/modules/hw/d3d9/d3d9_filters.c b/modules/hw/d3d9/d3d9_filters.c
index 7c36d3e3ad..8f211a3e2c 100644
--- a/modules/hw/d3d9/d3d9_filters.c
+++ b/modules/hw/d3d9/d3d9_filters.c
@@ -259,8 +259,20 @@ static int AdjustCallback( vlc_object_t *p_this, char const *psz_var,
return VLC_SUCCESS;
}
+static void D3D9CloseAdjust(filter_t *filter)
+{
+ filter_sys_t *sys = filter->p_sys;
+
+ IDirect3DSurface9_Release( sys->hw_surface );
+ IDirectXVideoProcessor_Release( sys->processor );
+ FreeLibrary( sys->hdecoder_dll );
+ vlc_video_context_Release(filter->vctx_out);
+
+ free(sys);
+}
+
static const struct vlc_filter_operations filter_ops = {
- .filter_video = Filter,
+ .filter_video = Filter, .close = D3D9CloseAdjust,
};
static int D3D9OpenAdjust(vlc_object_t *obj)
@@ -472,25 +484,12 @@ error:
return VLC_EGENERIC;
}
-static void D3D9CloseAdjust(vlc_object_t *obj)
-{
- filter_t *filter = (filter_t *)obj;
- filter_sys_t *sys = filter->p_sys;
-
- IDirect3DSurface9_Release( sys->hw_surface );
- IDirectXVideoProcessor_Release( sys->processor );
- FreeLibrary( sys->hdecoder_dll );
- vlc_video_context_Release(filter->vctx_out);
-
- free(sys);
-}
-
vlc_module_begin()
set_description(N_("Direct3D9 adjust filter"))
set_capability("video filter", 0)
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VFILTER)
- set_callbacks(D3D9OpenAdjust, D3D9CloseAdjust)
+ set_callback(D3D9OpenAdjust)
add_shortcut( "adjust" )
add_float_with_range( "contrast", 1.0, 0.0, 2.0,
diff --git a/modules/hw/vaapi/chroma.c b/modules/hw/vaapi/chroma.c
index 7ea95254d4..dfd573ef1e 100644
--- a/modules/hw/vaapi/chroma.c
+++ b/modules/hw/vaapi/chroma.c
@@ -317,11 +317,11 @@ static int CheckFmt(const video_format_t *in, const video_format_t *out,
}
static const struct vlc_filter_operations filter_upload_ops = {
- .filter_video = UploadSurface,
+ .filter_video = UploadSurface, .close = vlc_vaapi_CloseChroma,
};
static const struct vlc_filter_operations filter_download_ops = {
- .filter_video = DownloadSurface,
+ .filter_video = DownloadSurface, .close = vlc_vaapi_CloseChroma,
};
int
@@ -413,9 +413,8 @@ vlc_vaapi_OpenChroma(vlc_object_t *obj)
}
void
-vlc_vaapi_CloseChroma(vlc_object_t *obj)
+vlc_vaapi_CloseChroma(filter_t *filter)
{
- filter_t *filter = (filter_t *)obj;
filter_sys_t *const filter_sys = filter->p_sys;
if (filter_sys->dest_pics)
diff --git a/modules/hw/vaapi/filters.c b/modules/hw/vaapi/filters.c
index 8337081f42..f75ca6d330 100644
--- a/modules/hw/vaapi/filters.c
+++ b/modules/hw/vaapi/filters.c
@@ -567,8 +567,23 @@ OpenAdjust_InitFilterParams(filter_t * filter, void * p_data,
return VLC_SUCCESS;
}
+static void
+CloseAdjust(filter_t *filter)
+{
+ filter_sys_t *const filter_sys = filter->p_sys;
+
+ for (unsigned int i = 0; i < NUM_ADJUST_MODES; ++i)
+ {
+ var_DelCallback(filter, adjust_params_names[i],
+ FilterCallback, filter_sys->p_data);
+ var_Destroy(filter, adjust_params_names[i]);
+ }
+ free(filter_sys->p_data);
+ Close(filter, filter_sys);
+}
+
static const struct vlc_filter_operations Adjust_ops = {
- .filter_video = Adjust,
+ .filter_video = Adjust, .close = CloseAdjust,
};
static int
@@ -602,22 +617,6 @@ error:
return VLC_EGENERIC;
}
-static void
-CloseAdjust(vlc_object_t * obj)
-{
- filter_t *const filter = (filter_t *)obj;
- filter_sys_t *const filter_sys = filter->p_sys;
-
- for (unsigned int i = 0; i < NUM_ADJUST_MODES; ++i)
- {
- var_DelCallback(obj, adjust_params_names[i],
- FilterCallback, filter_sys->p_data);
- var_Destroy(obj, adjust_params_names[i]);
- }
- free(filter_sys->p_data);
- Close(filter, filter_sys);
-}
-
/***************************
* Basic filters functions *
***************************/
@@ -688,8 +687,20 @@ OpenBasicFilter_InitFilterParams(filter_t * filter, void * p_data,
return VLC_SUCCESS;
}
+static void
+CloseBasicFilter(filter_t *filter)
+{
+ filter_sys_t *const filter_sys = filter->p_sys;
+ struct basic_filter_data *const p_data = filter_sys->p_data;
+
+ var_DelCallback(filter, p_data->sigma.psz_name, FilterCallback, p_data);
+ var_Destroy(filter, p_data->sigma.psz_name);
+ free(p_data);
+ Close(filter, filter_sys);
+}
+
static const struct vlc_filter_operations BasicFilter_ops = {
- .filter_video = BasicFilter,
+ .filter_video = BasicFilter, .close = CloseBasicFilter
};
static int
@@ -740,19 +751,6 @@ OpenSharpenFilter(vlc_object_t * obj)
&vlc_sharpen_sigma_range);
}
-static void
-CloseBasicFilter(vlc_object_t * obj)
-{
- filter_t *const filter = (filter_t *)obj;
- filter_sys_t *const filter_sys = filter->p_sys;
- struct basic_filter_data *const p_data = filter_sys->p_data;
-
- var_DelCallback(obj, p_data->sigma.psz_name, FilterCallback, p_data);
- var_Destroy(obj, p_data->sigma.psz_name);
- free(p_data);
- Close(filter, filter_sys);
-}
-
/*************************
* Deinterlace functions *
*************************/
@@ -1144,7 +1142,7 @@ vlc_module_begin()
set_capability("video filter", 0)
add_submodule()
- set_callbacks(OpenAdjust, CloseAdjust)
+ set_callback(OpenAdjust)
add_shortcut("adjust")
add_submodule()
@@ -1152,7 +1150,7 @@ vlc_module_begin()
add_shortcut("deinterlace")
add_submodule()
- set_callbacks(OpenDenoiseFilter, CloseBasicFilter)
+ set_callback(OpenDenoiseFilter)
add_float_with_range("denoise-sigma", 1.f, .0f, .0f,
"Denoise strength (0-2)",
"Set the Denoise strength, between 0 and 2. "
@@ -1161,10 +1159,9 @@ vlc_module_begin()
add_shortcut("denoise")
add_submodule()
- set_callbacks(OpenSharpenFilter, CloseBasicFilter)
+ set_callback(OpenSharpenFilter)
add_shortcut("sharpen")
add_submodule()
- set_capability("video converter", 10)
- set_callbacks(vlc_vaapi_OpenChroma, vlc_vaapi_CloseChroma)
+ set_video_converter_callback(vlc_vaapi_OpenChroma, 10)
vlc_module_end()
diff --git a/modules/hw/vaapi/filters.h b/modules/hw/vaapi/filters.h
index aafb1383f4..83a51811cf 100644
--- a/modules/hw/vaapi/filters.h
+++ b/modules/hw/vaapi/filters.h
@@ -29,6 +29,6 @@
/* chroma filters callbacks */
int vlc_vaapi_OpenChroma(vlc_object_t *obj);
-void vlc_vaapi_CloseChroma(vlc_object_t *obj);
+void vlc_vaapi_CloseChroma(filter_t *);
#endif /* VLC_VAAPI_FILTERS_H */
diff --git a/modules/hw/vdpau/adjust.c b/modules/hw/vdpau/adjust.c
index 3a4d5a5387..7552bfc4e3 100644
--- a/modules/hw/vdpau/adjust.c
+++ b/modules/hw/vdpau/adjust.c
@@ -135,12 +135,25 @@ static picture_t *Adjust(filter_t *filter, picture_t *pic)
return pic;
}
+static void Close(filter_t *filter)
+{
+ filter_sys_t *sys = filter->p_sys;
+
+ var_DelCallback(filter, "hue", HueCallback, &sys->hue);
+ var_DelCallback(filter, "saturation", SaturationCallback,
+ &sys->saturation);
+ var_DelCallback(filter, "contrast", ContrastCallback, &sys->contrast);
+ var_DelCallback(filter, "brightness", BrightnessCallback,
+ &sys->brightness);
+ free(sys);
+}
+
static const char *const options[] = {
"brightness", "contrast", "saturation", "hue", NULL
};
static const struct vlc_filter_operations filter_ops = {
- .filter_video = Adjust,
+ .filter_video = Adjust, .close = Close,
};
static int Open(vlc_object_t *obj)
@@ -190,25 +203,11 @@ static int Open(vlc_object_t *obj)
return VLC_SUCCESS;
}
-static void Close(vlc_object_t *obj)
-{
- filter_t *filter = (filter_t *)obj;
- filter_sys_t *sys = filter->p_sys;
-
- var_DelCallback(filter, "hue", HueCallback, &sys->hue);
- var_DelCallback(filter, "saturation", SaturationCallback,
- &sys->saturation);
- var_DelCallback(filter, "contrast", ContrastCallback, &sys->contrast);
- var_DelCallback(filter, "brightness", BrightnessCallback,
- &sys->brightness);
- free(sys);
-}
-
vlc_module_begin()
set_description(N_("VDPAU adjust video filter"))
set_category(CAT_VIDEO)
set_subcategory(SUBCAT_VIDEO_VFILTER)
set_capability("video filter", 0)
add_shortcut("adjust")
- set_callbacks(Open, Close)
+ set_callback(Open)
vlc_module_end()
diff --git a/modules/hw/vdpau/sharpen.c b/modules/hw/vdpau/sharpen.c
index 718eedddb1..e02efd86ca 100644
--- a/modules/hw/vdpau/sharpen.c
+++ b/modules/hw/vdpau/sharpen.c
@@ -77,10 +77,18 @@ static picture_t *Sharpen(filter_t *filter, picture_t *pic)
return pic;
}
+static void Close(filter_t *filter)
+{
+ filter_sys_t *sys = filter->p_sys;
+
+ var_DelCallback(filter, "sharpen-sigma", SharpenCallback, sys);
+ free(sys);
+}
+
static const char *const options[] = { "sigma", NULL };
static const struct vlc_filter_operations filter_ops = {
- .filter_video = Sharpen,
+ .filter_video = Sharpen, .close = Close,
};
static int Open(vlc_object_t *obj)
@@ -142,15 +150,6 @@ static int Open(vlc_object_t *obj)
return VLC_SUCCESS;
}
-static void Close(vlc_object_t *obj)
-{
- filter_t *filter = (filter_t *)obj;
- filter_sys_t *sys = filter->p_sys;
-
- var_DelCallback(filter, "sharpen-sigma", SharpenCallback, sys);
- free(sys);
-}
-
vlc_module_begin()
set_description(N_("VDPAU sharpen video filter"))
set_category(CAT_VIDEO)
diff --git a/modules/spu/audiobargraph_v.c b/modules/spu/audiobargraph_v.c
index 9fdc78c7e4..1f7225bbe8 100644
--- a/modules/spu/audiobargraph_v.c
+++ b/modules/spu/audiobargraph_v.c
@@ -94,7 +94,7 @@ vlc_module_begin ()
/* video output filter submodule */
add_submodule ()
set_capability("video filter", 0)
- set_callbacks(OpenVideo, Close)
+ set_callback(OpenVideo)
set_description(N_("Audio Bar Graph Video sub source"))
add_shortcut("audiobargraph_v")
vlc_module_end ()
@@ -491,8 +491,13 @@ static const struct vlc_filter_operations filter_sub_ops = {
.source_sub = FilterSub,
};
+static void CloseVideo( filter_t *p_filter )
+{
+ Close( VLC_OBJECT(p_filter) );
+}
+
static const struct vlc_filter_operations filter_video_ops = {
- .filter_video = FilterVideo,
+ .filter_video = FilterVideo, .close = CloseVideo,
};
/**
diff --git a/modules/spu/logo.c b/modules/spu/logo.c
index 9a713cb240..f4b3d23ab2 100644
--- a/modules/spu/logo.c
+++ b/modules/spu/logo.c
@@ -107,7 +107,7 @@ vlc_module_begin ()
/* video output filter submodule */
add_submodule ()
set_capability( "video filter", 0 )
- set_callbacks( OpenVideo, Close )
+ set_callback( OpenVideo )
set_description( N_("Logo video filter") )
add_shortcut( "logo" )
vlc_module_end ()
@@ -219,9 +219,15 @@ static const struct vlc_filter_operations filter_sub_ops = {
.source_sub = FilterSub,
};
+static void CloseVideo( filter_t *p_filter )
+{
+ Close( VLC_OBJECT(p_filter) );
+}
+
static const struct vlc_filter_operations filter_video_ops = {
.filter_video = FilterVideo,
.video_mouse = Mouse,
+ .close = CloseVideo,
};
/**
diff --git a/modules/video_chroma/chain.c b/modules/video_chroma/chain.c
index 630526016d..f303b98795 100644
--- a/modules/video_chroma/chain.c
+++ b/modules/video_chroma/chain.c
@@ -39,15 +39,15 @@
*****************************************************************************/
static int ActivateConverter ( vlc_object_t * );
static int ActivateFilter ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
vlc_module_begin ()
set_description( N_("Video filtering using a chain of video filter modules") )
set_capability( "video converter", 1 )
- set_callbacks( ActivateConverter, Destroy )
+ set_callback( ActivateConverter )
add_submodule ()
set_capability( "video filter", 0 )
- set_callbacks( ActivateFilter, Destroy )
+ set_callback( ActivateFilter )
vlc_module_end ()
/*****************************************************************************
@@ -155,7 +155,7 @@ static const struct filter_video_callbacks filter_video_chain_cbs =
};
static const struct vlc_filter_operations filter_ops = {
- .filter_video = Chain, .flush = Flush,
+ .filter_video = Chain, .flush = Flush, .close = Destroy,
};
/*****************************************************************************
@@ -259,9 +259,8 @@ static int ActivateFilter( vlc_object_t *p_this )
return i_ret;
}
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
if (p_sys->p_video_filter)
diff --git a/modules/video_chroma/cvpx.c b/modules/video_chroma/cvpx.c
index 062b1ef0f9..f6a929df43 100644
--- a/modules/video_chroma/cvpx.c
+++ b/modules/video_chroma/cvpx.c
@@ -38,14 +38,14 @@
#include "../video_chroma/copy.h"
static int Open(vlc_object_t *);
-static void Close(vlc_object_t *);
+static void Close(filter_t *);
#if !TARGET_OS_IPHONE
static int Open_CVPX_to_CVPX(vlc_object_t *);
-static void Close_CVPX_to_CVPX(vlc_object_t *);
+static void Close_CVPX_to_CVPX(filter_t *);
static int Open_chain_CVPX(vlc_object_t *);
-static void Close_chain_CVPX(vlc_object_t *);
+static void Close_chain_CVPX(filter_t *);
#endif
typedef struct
@@ -67,16 +67,16 @@ typedef struct
vlc_module_begin ()
set_description("Conversions from/to CoreVideo buffers")
set_capability("video converter", 10)
- set_callbacks(Open, Close)
+ set_callback(Open)
#if !TARGET_OS_IPHONE
add_submodule()
set_description("Conversions between CoreVideo buffers")
- set_callbacks(Open_CVPX_to_CVPX, Close_CVPX_to_CVPX)
+ set_callback(Open_CVPX_to_CVPX)
set_capability("video converter", 10)
add_submodule()
set_description("Fast CoreVideo resize+conversion")
- set_callbacks(Open_chain_CVPX, Close_chain_CVPX)
+ set_callback(Open_chain_CVPX)
set_capability("video converter", 11)
#endif
vlc_module_end ()
@@ -234,9 +234,8 @@ static picture_t *SW_TO_CVPX_Filter(filter_t *p_filter, picture_t *src)
return dst;
}
-static void Close(vlc_object_t *obj)
+static void Close(filter_t *p_filter)
{
- filter_t *p_filter = (filter_t *)obj;
filter_sys_t *p_sys = p_filter->p_sys;
if (p_sys->pool != NULL)
@@ -249,10 +248,10 @@ static void Close(vlc_object_t *obj)
}
static const struct vlc_filter_operations CVPX_TO_SW_ops = {
- .filter_video = CVPX_TO_SW_Filter,
+ .filter_video = CVPX_TO_SW_Filter, .close = Close,
};
static const struct vlc_filter_operations SW_TO_CVPX_ops = {
- .filter_video = SW_TO_CVPX_Filter,
+ .filter_video = SW_TO_CVPX_Filter, .close = Close,
};
static int Open(vlc_object_t *obj)
@@ -377,7 +376,7 @@ static int Open(vlc_object_t *obj)
p_filter->fmt_out.i_codec = p_filter->fmt_out.video.i_chroma;
return VLC_SUCCESS;
error:
- Close(obj);
+ Close(filter);
p_filter->p_sys = NULL;
assert(ret != VLC_SUCCESS);
@@ -440,7 +439,7 @@ static vlc_fourcc_t const supported_chromas[] = { VLC_CODEC_CVPX_BGRA,
VLC_CODEC_CVPX_UYVY };
static const struct vlc_filter_operations filter_ops = {
- .filter_video = Filter,
+ .filter_video = Filter, .close = Close_CVPX_to_CVPX,
};
static int
@@ -498,9 +497,8 @@ Open_CVPX_to_CVPX(vlc_object_t *obj)
}
static void
-Close_CVPX_to_CVPX(vlc_object_t *obj)
+Close_CVPX_to_CVPX(filter_t *filter)
{
- filter_t *filter = (filter_t *)obj;
filter_sys_t *p_sys = filter->p_sys;
VTPixelTransferSessionInvalidate(p_sys->vttransfer);
@@ -566,6 +564,7 @@ static const vlc_fourcc_t supported_sw_chromas[] = {
static const struct vlc_filter_operations chain_CVPX_ops = {
.filter_video = chain_CVPX_Filter, .flush = chain_CVPX_Flush,
+ .close = Close_chain_CVPX,
};
static int
@@ -686,9 +685,8 @@ error:
}
static void
-Close_chain_CVPX(vlc_object_t *obj)
+Close_chain_CVPX(filter_t *filter)
{
- filter_t *filter = (filter_t*)obj;
filter_chain_t *chain = filter->p_sys;
filter_chain_Delete(chain);
var_Destroy(filter, "cvpx-chroma-chain");
diff --git a/modules/video_chroma/swscale.c b/modules/video_chroma/swscale.c
index b96dde00dc..6f623cde48 100644
--- a/modules/video_chroma/swscale.c
+++ b/modules/video_chroma/swscale.c
@@ -52,7 +52,7 @@
* Module descriptor
*****************************************************************************/
static int OpenScaler( vlc_object_t * );
-static void CloseScaler( vlc_object_t * );
+static void CloseScaler( filter_t * );
#define SCALEMODE_TEXT N_("Scaling mode")
#define SCALEMODE_LONGTEXT N_("Scaling mode to use.")
@@ -70,7 +70,7 @@ vlc_module_begin ()
set_capability( "video converter", 150 )
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
- set_callbacks( OpenScaler, CloseScaler )
+ set_callback( OpenScaler )
add_integer( "swscale-mode", 2, SCALEMODE_TEXT, SCALEMODE_LONGTEXT, true )
change_integer_list( pi_mode_values, ppsz_mode_descriptions )
vlc_module_end ()
@@ -139,7 +139,7 @@ static int GetSwsCpuMask(void);
#define OFFSET_A (3)
static const struct vlc_filter_operations filter_ops = {
- .filter_video = Filter,
+ .filter_video = Filter, .close = CloseScaler,
};
/*****************************************************************************
@@ -212,9 +212,8 @@ static int OpenScaler( vlc_object_t *p_this )
/*****************************************************************************
* CloseFilter: clean up the filter
*****************************************************************************/
-static void CloseScaler( vlc_object_t *p_this )
+static void CloseScaler( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t*)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
Clean( p_filter );
diff --git a/modules/video_filter/adjust.c b/modules/video_filter/adjust.c
index 9ce531b1fa..8218ddcc48 100644
--- a/modules/video_filter/adjust.c
+++ b/modules/video_filter/adjust.c
@@ -45,7 +45,7 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void FilterPlanar( filter_t *, picture_t *, picture_t * );
static picture_t *FilterPacked( filter_t *, picture_t * );
@@ -96,7 +96,7 @@ vlc_module_begin ()
change_safe()
add_shortcut( "adjust" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -141,11 +141,11 @@ static int BoolCallback( vlc_object_t *obj, char const *varname,
return VLC_SUCCESS;
}
-VIDEO_FILTER_WRAPPER( FilterPlanar )
+VIDEO_FILTER_WRAPPER_CLOSE( FilterPlanar, Destroy )
static const struct vlc_filter_operations packed_filter_ops =
{
- .filter_video = FilterPacked,
+ .filter_video = FilterPacked, .close = Destroy,
};
/*****************************************************************************
@@ -231,9 +231,8 @@ static int Create( vlc_object_t *p_this )
/*****************************************************************************
* Destroy: destroy adjust video filter
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, "contrast", FloatCallback, &p_sys->f_contrast );
diff --git a/modules/video_filter/alphamask.c b/modules/video_filter/alphamask.c
index 9b894f9f76..2793f634f5 100644
--- a/modules/video_filter/alphamask.c
+++ b/modules/video_filter/alphamask.c
@@ -49,7 +49,7 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static picture_t *Filter( filter_t *, picture_t * );
static void LoadMask( filter_t *, const char * );
@@ -67,7 +67,7 @@ vlc_module_begin ()
set_subcategory( SUBCAT_VIDEO_VFILTER )
set_capability( "video filter", 0 )
add_shortcut( "alphamask", "mask" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
add_loadfile(CFG_PREFIX "mask", NULL, MASK_TEXT, MASK_LONGTEXT)
vlc_module_end ()
@@ -84,7 +84,7 @@ typedef struct
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter,
+ .filter_video = Filter, .close = Destroy,
};
static int Create( vlc_object_t *p_this )
@@ -132,9 +132,8 @@ static int Create( vlc_object_t *p_this )
return VLC_SUCCESS;
}
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- 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,
diff --git a/modules/video_filter/antiflicker.c b/modules/video_filter/antiflicker.c
index f469e1d22a..b43cda21c2 100644
--- a/modules/video_filter/antiflicker.c
+++ b/modules/video_filter/antiflicker.c
@@ -46,8 +46,8 @@ static int AntiFlickerCallback( vlc_object_t *p_this, char const *psz_var,
void *p_data );
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
-VIDEO_FILTER_WRAPPER( Filter )
+static void Destroy ( filter_t * );
+VIDEO_FILTER_WRAPPER_CLOSE( Filter, Destroy )
#define WINDOW_TEXT N_("Window size")
#define WINDOW_LONGTEXT N_("Number of frames (0 to 100)")
@@ -78,7 +78,7 @@ vlc_module_begin ()
SFTN_TEXT, SFTN_LONGTEXT, false )
add_shortcut( "antiflicker" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
/*****************************************************************************
@@ -158,9 +158,8 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method created by DistortCreateOutputMethod
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback(p_filter,FILTER_PREFIX "window-size",
diff --git a/modules/video_filter/ball.c b/modules/video_filter/ball.c
index 3e5df31b24..a1429423a1 100644
--- a/modules/video_filter/ball.c
+++ b/modules/video_filter/ball.c
@@ -73,10 +73,10 @@ enum { RED, GREEN, BLUE, WHITE };
typedef struct filter_sys_t filter_sys_t;
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE( Filter, Destroy )
static void drawBall( filter_sys_t *p_sys, picture_t *p_outpic );
static void drawPixelRGB24( filter_sys_t *p_sys, picture_t *p_outpic,
@@ -148,7 +148,7 @@ vlc_module_begin ()
EDGE_VISIBLE_TEXT, EDGE_VISIBLE_LONGTEXT, true )
add_shortcut( "ball" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -318,9 +318,8 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method created by DistortCreateOutputMethod
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter)
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, FILTER_PREFIX "color",
diff --git a/modules/video_filter/blendbench.c b/modules/video_filter/blendbench.c
index 1787620447..0e432b1036 100644
--- a/modules/video_filter/blendbench.c
+++ b/modules/video_filter/blendbench.c
@@ -41,7 +41,7 @@
* Local prototypes
*****************************************************************************/
static int Create( vlc_object_t * );
-static void Destroy( vlc_object_t * );
+static void Destroy( filter_t * );
static picture_t *Filter( filter_t *, picture_t * );
@@ -95,7 +95,7 @@ vlc_module_begin ()
add_string( CFG_PREFIX "blend-chroma", "YUVA", BLEND_CHROMA_TEXT,
BLEND_CHROMA_LONGTEXT, false )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -146,7 +146,7 @@ static int blendbench_LoadImage( vlc_object_t *p_this, picture_t **pp_pic,
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter,
+ .filter_video = Filter, .close = Destroy,
};
/*****************************************************************************
@@ -218,9 +218,8 @@ static int Create( vlc_object_t *p_this )
/*****************************************************************************
* Destroy: destroy video thread output method
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
picture_Release( p_sys->p_base_image );
diff --git a/modules/video_filter/bluescreen.c b/modules/video_filter/bluescreen.c
index d624ddf2df..94807ce45c 100644
--- a/modules/video_filter/bluescreen.c
+++ b/modules/video_filter/bluescreen.c
@@ -64,7 +64,7 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static picture_t *Filter( filter_t *, picture_t * );
static int BluescreenCallback( vlc_object_t *, char const *,
@@ -81,7 +81,7 @@ vlc_module_begin ()
set_subcategory( SUBCAT_VIDEO_VFILTER )
set_capability( "video filter", 0 )
add_shortcut( "bluescreen" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
add_integer_with_range( CFG_PREFIX "u", 120, 0, 255,
BLUESCREENU_TEXT, BLUESCREENU_LONGTEXT, false )
@@ -108,7 +108,7 @@ typedef struct
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter,
+ .filter_video = Filter, .close = Destroy,
};
static int Create( vlc_object_t *p_this )
@@ -153,9 +153,8 @@ static int Create( vlc_object_t *p_this )
return VLC_SUCCESS;
}
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, CFG_PREFIX "u", BluescreenCallback, p_sys );
diff --git a/modules/video_filter/canvas.c b/modules/video_filter/canvas.c
index 18a0c065cd..c1afb71c76 100644
--- a/modules/video_filter/canvas.c
+++ b/modules/video_filter/canvas.c
@@ -39,7 +39,7 @@
* Local and extern prototypes.
*****************************************************************************/
static int Activate( vlc_object_t * );
-static void Destroy( vlc_object_t * );
+static void Destroy( filter_t * );
static picture_t *Filter( filter_t *, picture_t * );
static void Flush( filter_t * );
@@ -106,7 +106,7 @@ vlc_module_begin ()
set_description( N_("Canvas video filter") )
set_capability( "video filter", 0 )
set_help( CANVAS_HELP )
- set_callbacks( Activate, Destroy )
+ set_callback( Activate )
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
@@ -147,7 +147,7 @@ static const struct filter_video_callbacks canvas_cbs =
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter, .flush = Flush,
+ .filter_video = Filter, .flush = Flush, .close = Destroy,
};
/*****************************************************************************
@@ -387,9 +387,8 @@ static int Activate( vlc_object_t *p_this )
/*****************************************************************************
*
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
filter_chain_Delete( p_sys->p_chain );
free( p_sys );
diff --git a/modules/video_filter/ci_filters.m b/modules/video_filter/ci_filters.m
index 1b0d0f41b3..ee56ef33b3 100644
--- a/modules/video_filter/ci_filters.m
+++ b/modules/video_filter/ci_filters.m
@@ -572,10 +572,28 @@ CVPX_to_CVPX_converter_Create(filter_t *filter, bool to_rgba)
return converter;
}
+static void
+Close(filter_t *filter)
+{
+ filter_sys_t *p_sys = filter->p_sys;
+ struct ci_filters_ctx *ctx = p_sys->ctx;
+ enum filter_type filter_types[NUM_MAX_EQUIVALENT_VLC_FILTERS];
+
+ filter_desc_table_GetFilterTypes(p_sys->psz_filter, filter_types);
+ for (unsigned int i = 0;
+ i < NUM_MAX_EQUIVALENT_VLC_FILTERS && filter_types[i] != FILTER_NONE;
+ ++i)
+ filter_chain_RemoveFilter(&ctx->fchain, filter_types[i]);
+
+ vlc_video_context_Release(filter->vctx_out);
+ free(p_sys);
+}
+
static const struct vlc_filter_operations filter_ops =
{
.filter_video = Filter,
.video_mouse = Mouse,
+ .close = Close,
};
static int
@@ -740,24 +758,6 @@ OpenCustom(vlc_object_t *obj)
return Open(obj, "custom");
}
-static void
-Close(vlc_object_t *obj)
-{
- filter_t *filter = (filter_t *)obj;
- filter_sys_t *p_sys = filter->p_sys;
- struct ci_filters_ctx *ctx = p_sys->ctx;
- enum filter_type filter_types[NUM_MAX_EQUIVALENT_VLC_FILTERS];
-
- filter_desc_table_GetFilterTypes(p_sys->psz_filter, filter_types);
- for (unsigned int i = 0;
- i < NUM_MAX_EQUIVALENT_VLC_FILTERS && filter_types[i] != FILTER_NONE;
- ++i)
- filter_chain_RemoveFilter(&ctx->fchain, filter_types[i]);
-
- vlc_video_context_Release(filter->vctx_out);
- free(p_sys);
-}
-
#define CI_CUSTOM_FILTER_TEXT N_("Use a specific Core Image Filter")
#define CI_CUSTOM_FILTER_LONGTEXT N_( \
"Example: 'CICrystallize', 'CIBumpDistortion', 'CIThermal', 'CIComicEffect'")
@@ -769,31 +769,31 @@ vlc_module_begin()
set_description(N_("Mac OS X hardware video filters"))
add_submodule()
- set_callbacks(OpenAdjust, Close)
+ set_callback(OpenAdjust)
add_shortcut("adjust")
add_submodule()
- set_callbacks(OpenInvert, Close)
+ set_callback(OpenInvert)
add_shortcut("invert")
add_submodule()
- set_callbacks(OpenPosterize, Close)
+ set_callback(OpenPosterize)
add_shortcut("posterize")
add_submodule()
- set_callbacks(OpenSepia, Close)
+ set_callback(OpenSepia)
add_shortcut("sepia")
add_submodule()
- set_callbacks(OpenSharpen, Close)
+ set_callback(OpenSharpen)
add_shortcut("sharpen")
add_submodule()
- set_callbacks(OpenPsychedelic, Close)
+ set_callback(OpenPsychedelic)
add_shortcut("psychedelic")
add_submodule()
- set_callbacks(OpenCustom, Close)
+ set_callback(OpenCustom)
add_shortcut("ci")
add_string("ci-filter", "CIComicEffect", CI_CUSTOM_FILTER_TEXT, CI_CUSTOM_FILTER_LONGTEXT, true);
vlc_module_end()
diff --git a/modules/video_filter/colorthres.c b/modules/video_filter/colorthres.c
index 37f60196ff..90c5536cdc 100644
--- a/modules/video_filter/colorthres.c
+++ b/modules/video_filter/colorthres.c
@@ -43,11 +43,11 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
static picture_t *FilterPacked( filter_t *, picture_t * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE( Filter, Destroy )
/*****************************************************************************
* Module descriptor
@@ -79,7 +79,7 @@ vlc_module_begin ()
N_("Saturation threshold"), "", false )
add_integer( CFG_PREFIX "similaritythres", 15,
N_("Similarity threshold"), "", false )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -105,7 +105,7 @@ typedef struct
static const struct vlc_filter_operations packed_filter_ops =
{
- .filter_video = FilterPacked,
+ .filter_video = FilterPacked, .close = Destroy,
};
/*****************************************************************************
@@ -166,7 +166,7 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method created by adjustCreateOutputMethod
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_this )
{
filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
diff --git a/modules/video_filter/edgedetection.c b/modules/video_filter/edgedetection.c
index 70dd1a8291..cd68f46125 100644
--- a/modules/video_filter/edgedetection.c
+++ b/modules/video_filter/edgedetection.c
@@ -46,7 +46,7 @@
* Local prototypes
*****************************************************************************/
static int Open( vlc_object_t * );
-static void Close( vlc_object_t * );
+static void Close( filter_t * );
static picture_t *new_frame( filter_t * );
static picture_t *Filter( filter_t *, picture_t * );
static uint8_t sobel( const uint8_t *, const int, const int, int, int);
@@ -73,7 +73,7 @@ vlc_module_begin ()
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
set_capability( "video filter", 0 )
- set_callbacks( Open, Close )
+ set_callback( Open )
vlc_module_end ()
@@ -90,7 +90,7 @@ static void Flush( filter_t *p_filter )
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter, .flush = Flush,
+ .filter_video = Filter, .flush = Flush, .close = Close,
};
/*****************************************************************************
@@ -142,9 +142,8 @@ static int Open( vlc_object_t *p_this )
/******************************************************************************
* Closes the filter and cleans up all dynamically allocated data.
******************************************************************************/
-static void Close( vlc_object_t *p_this )
+static void Close( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_chain_Delete( (filter_chain_t *)p_filter->p_sys );
}
diff --git a/modules/video_filter/erase.c b/modules/video_filter/erase.c
index 14567b46a0..83e0114d1b 100644
--- a/modules/video_filter/erase.c
+++ b/modules/video_filter/erase.c
@@ -40,13 +40,13 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
static void FilterErase( filter_t *, picture_t *, picture_t * );
static int EraseCallback( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE( Filter, Destroy )
/*****************************************************************************
* Module descriptor
@@ -76,7 +76,7 @@ vlc_module_begin ()
add_integer( CFG_PREFIX "y", 0, POSY_TEXT, POSY_LONGTEXT, false )
add_shortcut( "erase" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -186,9 +186,8 @@ static int Create( vlc_object_t *p_this )
/*****************************************************************************
* Destroy
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
if( p_sys->p_mask )
picture_Release( p_sys->p_mask );
diff --git a/modules/video_filter/extract.c b/modules/video_filter/extract.c
index 41a619bee9..8bf4fe13ae 100644
--- a/modules/video_filter/extract.c
+++ b/modules/video_filter/extract.c
@@ -40,12 +40,12 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
static int ExtractCallback( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
static void make_projection_matrix( filter_t *, int color, int *matrix );
static void get_custom_from_yuv( picture_t *, picture_t *, int const, int const, int const, int const * );
@@ -75,7 +75,7 @@ vlc_module_begin ()
COMPONENT_TEXT, COMPONENT_LONGTEXT, false )
change_integer_list( pi_component_values, ppsz_component_descriptions )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -151,9 +151,8 @@ static int Create( vlc_object_t *p_this )
/*****************************************************************************
* Destroy
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, FILTER_PREFIX "component", ExtractCallback,
diff --git a/modules/video_filter/freeze.c b/modules/video_filter/freeze.c
index 719a762619..c296923a3a 100644
--- a/modules/video_filter/freeze.c
+++ b/modules/video_filter/freeze.c
@@ -72,7 +72,7 @@ static void freeze_free_allocated_data( filter_t * );
#define CFG_PREFIX "freeze-"
static int Open ( vlc_object_t * );
-static void Close( vlc_object_t * );
+static void Close( filter_t * );
vlc_module_begin()
set_description( N_("Freezing interactive video filter") )
@@ -81,7 +81,7 @@ vlc_module_begin()
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
- set_callbacks( Open, Close )
+ set_callback( Open )
vlc_module_end()
/*****************************************************************************
@@ -92,6 +92,7 @@ static const struct vlc_filter_operations filter_ops =
{
.filter_video = Filter,
.video_mouse = freeze_mouse,
+ .close = Close,
};
/**
@@ -135,8 +136,7 @@ static int Open( vlc_object_t *p_this )
/**
* Close the filter
*/
-static void Close( vlc_object_t *p_this ) {
- filter_t *p_filter = (filter_t *)p_this;
+static void Close( filter_t *p_filter ) {
filter_sys_t *p_sys = p_filter->p_sys;
/* Free allocated memory */
diff --git a/modules/video_filter/gaussianblur.c b/modules/video_filter/gaussianblur.c
index ff6870609b..472b9304ba 100644
--- a/modules/video_filter/gaussianblur.c
+++ b/modules/video_filter/gaussianblur.c
@@ -39,7 +39,7 @@
* Module descriptor
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
#define SIGMA_MIN (0.01)
#define SIGMA_MAX (4096.0)
@@ -65,14 +65,14 @@ vlc_module_begin ()
SIGMA_TEXT, SIGMA_LONGTEXT,
false )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
/*****************************************************************************
* Local prototypes
*****************************************************************************/
static void Filter( filter_t *, picture_t *, picture_t * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
static const char *const ppsz_filter_options[] = {
"sigma", NULL
@@ -174,9 +174,8 @@ static int Create( vlc_object_t *p_this )
return VLC_SUCCESS;
}
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
free( p_sys->pt_distribution );
diff --git a/modules/video_filter/gradfun.c b/modules/video_filter/gradfun.c
index 880769a209..4deb9f4bc0 100644
--- a/modules/video_filter/gradfun.c
+++ b/modules/video_filter/gradfun.c
@@ -40,7 +40,7 @@
* Module descriptor
*****************************************************************************/
static int Open (vlc_object_t *);
-static void Close(vlc_object_t *);
+static void Close(filter_t *);
#define CFG_PREFIX "gradfun-"
@@ -66,7 +66,7 @@ vlc_module_begin()
add_float_with_range(CFG_PREFIX "strength", 1.2, STRENGTH_MIN, STRENGTH_MAX,
STRENGTH_TEXT, STRENGTH_LONGTEXT, false)
- set_callbacks(Open, Close)
+ set_callback(Open)
vlc_module_end()
/*****************************************************************************
@@ -100,7 +100,7 @@ vlc_module_end()
static void Filter(filter_t *, picture_t *, picture_t *);
static int Callback(vlc_object_t *, char const *, vlc_value_t, vlc_value_t, void *);
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Close)
typedef struct
{
@@ -162,9 +162,8 @@ static int Open(vlc_object_t *object)
return VLC_SUCCESS;
}
-static void Close(vlc_object_t *object)
+static void Close(filter_t *filter)
{
- filter_t *filter = (filter_t *)object;
filter_sys_t *sys = filter->p_sys;
var_DelCallback(filter, CFG_PREFIX "radius", Callback, NULL);
diff --git a/modules/video_filter/gradient.c b/modules/video_filter/gradient.c
index 7b433a6a50..62c2b81437 100644
--- a/modules/video_filter/gradient.c
+++ b/modules/video_filter/gradient.c
@@ -44,13 +44,13 @@ enum { GRADIENT, EDGE, HOUGH };
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
static int GradientCallback( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t,
void * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
static void FilterGradient( filter_t *, picture_t *, picture_t * );
static void FilterEdge ( filter_t *, picture_t *, picture_t * );
@@ -95,7 +95,7 @@ vlc_module_begin ()
CARTOON_TEXT, CARTOON_LONGTEXT, false )
add_shortcut( "gradient" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -213,9 +213,8 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method created by DistortCreateOutputMethod
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, FILTER_PREFIX "mode",
diff --git a/modules/video_filter/grain.c b/modules/video_filter/grain.c
index 3aaa89abde..7638c48910 100644
--- a/modules/video_filter/grain.c
+++ b/modules/video_filter/grain.c
@@ -41,9 +41,9 @@
* Module descriptor
*****************************************************************************/
static int Open (vlc_object_t *);
-static void Close(vlc_object_t *);
+static void Close(filter_t *);
static void Filter(filter_t *filter, picture_t *src, picture_t *dst);
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Close)
#define BANK_SIZE (64)
@@ -74,7 +74,7 @@ vlc_module_begin()
PERIOD_MIN_TEXT, PERIOD_MIN_LONGTEXT, false)
add_integer_with_range(CFG_PREFIX "period-max", 3*PERIOD_MAX/4, PERIOD_MIN, PERIOD_MAX,
PERIOD_MAX_TEXT, PERIOD_MAX_LONGTEXT, false)
- set_callbacks(Open, Close)
+ set_callback(Open)
vlc_module_end()
/*****************************************************************************
@@ -416,9 +416,8 @@ static int Open(vlc_object_t *object)
return VLC_SUCCESS;
}
-static void Close(vlc_object_t *object)
+static void Close(filter_t *filter)
{
- filter_t *filter = (filter_t *)object;
filter_sys_t *sys = filter->p_sys;
var_DelCallback(filter, CFG_PREFIX "variance", Callback, NULL);
diff --git a/modules/video_filter/hqdn3d.c b/modules/video_filter/hqdn3d.c
index 0dcbca718e..b1413a2ff7 100644
--- a/modules/video_filter/hqdn3d.c
+++ b/modules/video_filter/hqdn3d.c
@@ -41,7 +41,7 @@
* Local protypes
*****************************************************************************/
static int Open (vlc_object_t *);
-static void Close (vlc_object_t *);
+static void Close (filter_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,
@@ -76,7 +76,7 @@ vlc_module_begin()
add_shortcut("hqdn3d")
- set_callbacks(Open, Close)
+ set_callback(Open)
vlc_module_end()
static const char *const filter_options[] = {
@@ -156,7 +156,7 @@ static int Open(vlc_object_t *this)
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter,
+ .filter_video = Filter, .close = Close,
};
filter->p_sys = sys;
@@ -173,9 +173,8 @@ static int Open(vlc_object_t *this)
/*****************************************************************************
* Close
*****************************************************************************/
-static void Close(vlc_object_t *this)
+static void Close(filter_t *filter)
{
- filter_t *filter = (filter_t *)this;
filter_sys_t *sys = filter->p_sys;
struct vf_priv_s *cfg = &sys->cfg;
diff --git a/modules/video_filter/magnify.c b/modules/video_filter/magnify.c
index b5d2fe042c..ebeaec5876 100644
--- a/modules/video_filter/magnify.c
+++ b/modules/video_filter/magnify.c
@@ -42,7 +42,7 @@
* Module descriptor
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
vlc_module_begin ()
set_description( N_("Magnify/Zoom interactive video filter") )
@@ -51,7 +51,7 @@ vlc_module_begin ()
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
@@ -133,6 +133,7 @@ static int Create( vlc_object_t *p_this )
{
.filter_video = Filter,
.video_mouse = Mouse,
+ .close = Destroy,
};
p_filter->ops = &filter_ops;
return VLC_SUCCESS;
@@ -141,9 +142,8 @@ static int Create( vlc_object_t *p_this )
/*****************************************************************************
* Destroy:
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
image_HandlerDelete( p_sys->p_image );
diff --git a/modules/video_filter/mirror.c b/modules/video_filter/mirror.c
index b92bde98ea..14ec5517d4 100644
--- a/modules/video_filter/mirror.c
+++ b/modules/video_filter/mirror.c
@@ -41,7 +41,7 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
static void VerticalMirror( picture_t *, picture_t *, int plane, bool );
@@ -52,7 +52,7 @@ static void RV24VerticalMirror( picture_t *, picture_t *, int plane, bool );
static void RV32VerticalMirror( picture_t *, picture_t *, int plane, bool );
static void YUV422Mirror2Pixels( uint8_t *, uint8_t *, bool );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
static const char *const ppsz_filter_options[] = {
"split", "direction", NULL
@@ -90,7 +90,7 @@ vlc_module_begin ()
add_integer( CFG_PREFIX "direction", 0, DIRECTION_TEXT,
DIRECTION_LONGTEXT, false )
change_integer_list( pi_direction_values, ppsz_direction_descriptions )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
/*****************************************************************************
@@ -166,9 +166,8 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method created by MirrorCreateOutputMethod
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, CFG_PREFIX "split", FilterCallback, p_sys );
diff --git a/modules/video_filter/motionblur.c b/modules/video_filter/motionblur.c
index 1008596f84..c99d2495b6 100644
--- a/modules/video_filter/motionblur.c
+++ b/modules/video_filter/motionblur.c
@@ -43,12 +43,12 @@
typedef struct filter_sys_t filter_sys_t;
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter ( filter_t *, picture_t *, picture_t * );
static void RenderBlur ( filter_sys_t *, picture_t *, picture_t * );
static int MotionBlurCallback( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
/*****************************************************************************
* Module descriptor
@@ -70,7 +70,7 @@ vlc_module_begin ()
add_shortcut( "blur" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -130,9 +130,8 @@ static int Create( vlc_object_t *p_this )
/*****************************************************************************
* Destroy
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, FILTER_PREFIX "factor",
diff --git a/modules/video_filter/motiondetect.c b/modules/video_filter/motiondetect.c
index c2c3796613..ce6d35396d 100644
--- a/modules/video_filter/motiondetect.c
+++ b/modules/video_filter/motiondetect.c
@@ -39,7 +39,7 @@
* Module descriptor
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
#define FILTER_PREFIX "motiondetect-"
@@ -51,7 +51,7 @@ vlc_module_begin ()
set_capability( "video filter", 0 )
add_shortcut( "motion" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
@@ -118,7 +118,7 @@ static int Create( vlc_object_t *p_this )
}
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter, .flush = Flush,
+ .filter_video = Filter, .flush = Flush, .close = Destroy,
};
p_filter->ops = &filter_ops;
@@ -145,9 +145,8 @@ static int Create( vlc_object_t *p_this )
/*****************************************************************************
* Destroy
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
free( p_sys->p_buf2 );
diff --git a/modules/video_filter/oldmovie.c b/modules/video_filter/oldmovie.c
index dd2a701d8f..730fb7ef25 100644
--- a/modules/video_filter/oldmovie.c
+++ b/modules/video_filter/oldmovie.c
@@ -173,7 +173,7 @@ static int oldmovie_sliding_offset_apply( filter_t *p_filter, picture_t *p_pic_
*****************************************************************************/
static int Open ( vlc_object_t * );
-static void Close( vlc_object_t * );
+static void Close( filter_t * );
vlc_module_begin()
set_description( N_("Old movie effect video filter") )
@@ -182,7 +182,7 @@ vlc_module_begin()
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
- set_callbacks( Open, Close )
+ set_callback( Open )
vlc_module_end()
/**
@@ -218,7 +218,7 @@ static int Open( vlc_object_t *p_this ) {
/* init data */
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter,
+ .filter_video = Filter, .close = Close,
};
p_filter->ops = &filter_ops;
p_sys->i_start_time = p_sys->i_cur_time = p_sys->i_last_time = vlc_tick_now();
@@ -229,8 +229,7 @@ static int Open( vlc_object_t *p_this ) {
/**
* Close the filter
*/
-static void Close( vlc_object_t *p_this ) {
- filter_t *p_filter = (filter_t *)p_this;
+static void Close( filter_t *p_filter ) {
filter_sys_t *p_sys = p_filter->p_sys;
/* Free allocated memory */
diff --git a/modules/video_filter/opencv_example.cpp b/modules/video_filter/opencv_example.cpp
index ed4e8cba26..3a4a30e101 100644
--- a/modules/video_filter/opencv_example.cpp
+++ b/modules/video_filter/opencv_example.cpp
@@ -66,7 +66,7 @@ struct filter_sys_t
* Local prototypes
****************************************************************************/
static int OpenFilter ( vlc_object_t * );
-static void CloseFilter( vlc_object_t * );
+static void CloseFilter( filter_t * );
static picture_t *Filter( filter_t *, picture_t * );
@@ -81,7 +81,7 @@ vlc_module_begin ()
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
- set_callbacks( OpenFilter, CloseFilter )
+ set_callback( OpenFilter )
add_string( "opencv-haarcascade-file", "c:\\haarcascade_frontalface_alt.xml",
N_("Haar cascade filename"),
@@ -113,6 +113,7 @@ static int OpenFilter( vlc_object_t *p_this )
FilterOperationInitializer()
{
ops.filter_video = Filter;
+ ops.close = CloseFilter;
};
} filter_ops;
p_filter->ops = &filter_ops.ops;
@@ -138,9 +139,8 @@ static int OpenFilter( vlc_object_t *p_this )
/*****************************************************************************
* CloseFilter: clean up the filter
*****************************************************************************/
-static void CloseFilter( vlc_object_t *p_this )
+static void CloseFilter( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t*)p_this;
filter_sys_t *p_sys = static_cast<filter_sys_t *>(p_filter->p_sys);
if( p_sys->p_cascade )
diff --git a/modules/video_filter/opencv_wrapper.c b/modules/video_filter/opencv_wrapper.c
index f4c8d770dd..0b6e77c630 100644
--- a/modules/video_filter/opencv_wrapper.c
+++ b/modules/video_filter/opencv_wrapper.c
@@ -46,7 +46,7 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static picture_t* Filter( filter_t*, picture_t* );
@@ -72,7 +72,7 @@ vlc_module_begin ()
set_subcategory( SUBCAT_VIDEO_VFILTER )
set_capability( "video filter", 0 )
add_shortcut( "opencv_wrapper" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
add_float_with_range( "opencv-scale", 1.0, 0.1, 2.0,
N_("Scale factor (0.1-2.0)"),
N_("Amount by which to scale the picture before sending it to the internal OpenCV filter"),
@@ -251,7 +251,7 @@ static int Create( vlc_object_t *p_this )
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter,
+ .filter_video = Filter, .close = Destroy,
};
p_filter->ops = &filter_ops;
p_filter->p_sys = p_sys;
@@ -264,9 +264,8 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method created by opencv_wrapperCreateOutputMethod
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t* p_filter )
{
- filter_t* p_filter = (filter_t*)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
ReleaseImages( p_filter );
diff --git a/modules/video_filter/posterize.c b/modules/video_filter/posterize.c
index 5ffa53fe0a..0d97459314 100644
--- a/modules/video_filter/posterize.c
+++ b/modules/video_filter/posterize.c
@@ -41,7 +41,7 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
static void PlanarYUVPosterize( picture_t *, picture_t *, int);
@@ -49,7 +49,7 @@ static void PackedYUVPosterize( picture_t *, picture_t *, int);
static void RVPosterize( picture_t *, picture_t *, bool, int );
static void YuvPosterization( uint8_t *, uint8_t *, uint8_t *, uint8_t *,
uint8_t, uint8_t, uint8_t, uint8_t, int );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
static const char *const ppsz_filter_options[] = {
"level", NULL
@@ -74,7 +74,7 @@ vlc_module_begin ()
add_integer_with_range( CFG_PREFIX "level", 6, 2, 256,
POSTERIZE_LEVEL_TEXT, POSTERIZE_LEVEL_LONGTEXT,
false )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
/*****************************************************************************
@@ -145,9 +145,8 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method created by PosterizeCreateOutputMethod
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, CFG_PREFIX "level", FilterCallback, p_sys );
diff --git a/modules/video_filter/postproc.c b/modules/video_filter/postproc.c
index 452609da0b..0015598126 100644
--- a/modules/video_filter/postproc.c
+++ b/modules/video_filter/postproc.c
@@ -54,10 +54,10 @@
* Local prototypes
*****************************************************************************/
static int OpenPostproc( vlc_object_t * );
-static void ClosePostproc( vlc_object_t * );
+static void ClosePostproc( filter_t * );
static void PostprocPict( filter_t *, picture_t *, picture_t * );
-VIDEO_FILTER_WRAPPER( PostprocPict )
+VIDEO_FILTER_WRAPPER_CLOSE(PostprocPict, ClosePostproc)
static int PPQCallback( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * );
@@ -88,7 +88,7 @@ vlc_module_begin ()
set_capability( "video filter", 0 )
- set_callbacks( OpenPostproc, ClosePostproc )
+ set_callback( OpenPostproc )
add_integer_with_range( FILTER_PREFIX "q", PP_QUALITY_MAX, 0,
PP_QUALITY_MAX, Q_TEXT, Q_LONGTEXT, false )
@@ -261,9 +261,8 @@ static int OpenPostproc( vlc_object_t *p_this )
/*****************************************************************************
* ClosePostproc
*****************************************************************************/
-static void ClosePostproc( vlc_object_t *p_this )
+static void ClosePostproc( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
/* delete the callback before destroying the mutex */
diff --git a/modules/video_filter/psychedelic.c b/modules/video_filter/psychedelic.c
index d4ec4afca1..0c0b010fa3 100644
--- a/modules/video_filter/psychedelic.c
+++ b/modules/video_filter/psychedelic.c
@@ -41,10 +41,10 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
/*****************************************************************************
* Module descriptor
@@ -57,7 +57,7 @@ vlc_module_begin ()
set_subcategory( SUBCAT_VIDEO_VFILTER )
add_shortcut( "psychedelic" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
/*****************************************************************************
@@ -116,9 +116,8 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method created by DistortCreateOutputMethod
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
if( p_sys->p_image )
diff --git a/modules/video_filter/puzzle.c b/modules/video_filter/puzzle.c
index 80b5775c74..15f7a9e677 100644
--- a/modules/video_filter/puzzle.c
+++ b/modules/video_filter/puzzle.c
@@ -78,7 +78,7 @@ static const char *const ppsz_rotation_descriptions[] = { N_("0"), N_("0/180"),
#define CFG_PREFIX "puzzle-"
static int Open ( vlc_object_t * );
-static void Close( vlc_object_t * );
+static void Close( filter_t * );
vlc_module_begin()
set_description( N_("Puzzle interactive game video filter") )
@@ -110,7 +110,7 @@ vlc_module_begin()
MODE_TEXT, MODE_LONGTEXT, false )
change_integer_list(pi_mode_values, ppsz_mode_descriptions )
- set_callbacks( Open, Close )
+ set_callback( Open )
vlc_module_end()
/*****************************************************************************
@@ -206,6 +206,7 @@ static int Open( vlc_object_t *p_this )
{
.filter_video = Filter,
.video_mouse = puzzle_mouse,
+ .close = Close,
};
p_filter->ops = &filter_ops;
@@ -215,8 +216,7 @@ static int Open( vlc_object_t *p_this )
/**
* Close the filter
*/
-static void Close( vlc_object_t *p_this ) {
- filter_t *p_filter = (filter_t *)p_this;
+static void Close( filter_t *p_filter ) {
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, CFG_PREFIX "rows", puzzle_Callback, p_sys );
diff --git a/modules/video_filter/rotate.c b/modules/video_filter/rotate.c
index a2b56118b6..b810f9e0db 100644
--- a/modules/video_filter/rotate.c
+++ b/modules/video_filter/rotate.c
@@ -43,11 +43,11 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
static picture_t *FilterPacked( filter_t *, picture_t * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
static int RotateCallback( vlc_object_t *p_this, char const *psz_var,
vlc_value_t oldval, vlc_value_t newval,
@@ -76,7 +76,7 @@ vlc_module_begin ()
MOTION_LONGTEXT, false )
add_shortcut( "rotate" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -121,7 +121,7 @@ static void fetch_trigo( filter_sys_t *sys, int *i_sin, int *i_cos )
static const struct vlc_filter_operations packed_filter_ops =
{
- .filter_video = FilterPacked,
+ .filter_video = FilterPacked, .close = Destroy,
};
/*****************************************************************************
@@ -188,9 +188,8 @@ static int Create( vlc_object_t *p_this )
/*****************************************************************************
* Destroy: destroy Distort filter
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
if( p_sys->p_motion != NULL )
diff --git a/modules/video_filter/scene.c b/modules/video_filter/scene.c
index f655cb4e7a..0de53fd1b2 100644
--- a/modules/video_filter/scene.c
+++ b/modules/video_filter/scene.c
@@ -45,7 +45,7 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static picture_t *Filter( filter_t *, picture_t * );
@@ -116,7 +116,7 @@ vlc_module_begin ()
add_integer_with_range( CFG_PREFIX "ratio", 50, 1, INT_MAX,
RATIO_TEXT, RATIO_LONGTEXT, false )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_vfilter_options[] = {
@@ -199,7 +199,7 @@ static int Create( vlc_object_t *p_this )
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter,
+ .filter_video = Filter, .close = Destroy,
};
p_filter->ops = &filter_ops;
@@ -209,9 +209,8 @@ static int Create( vlc_object_t *p_this )
/*****************************************************************************
* Destroy: destroy video filter method
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
image_HandlerDelete( p_sys->p_image );
diff --git a/modules/video_filter/sepia.c b/modules/video_filter/sepia.c
index 8636400486..65f4079249 100644
--- a/modules/video_filter/sepia.c
+++ b/modules/video_filter/sepia.c
@@ -42,7 +42,7 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void RVSepia( picture_t *, picture_t *, int );
static void PlanarI420Sepia( picture_t *, picture_t *, int);
@@ -51,7 +51,7 @@ static void Filter( filter_t *, picture_t *, picture_t * );
static const char *const ppsz_filter_options[] = {
"intensity", NULL
};
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
/*****************************************************************************
* Module descriptor
@@ -71,7 +71,7 @@ vlc_module_begin ()
add_integer_with_range( CFG_PREFIX "intensity", 120, 0, 255,
SEPIA_INTENSITY_TEXT, SEPIA_INTENSITY_LONGTEXT,
false )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
/*****************************************************************************
@@ -154,10 +154,8 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
-
var_DelCallback( p_filter, CFG_PREFIX "intensity", FilterCallback, NULL );
free( p_filter->p_sys );
diff --git a/modules/video_filter/sharpen.c b/modules/video_filter/sharpen.c
index 1933414d33..c8bc55622e 100644
--- a/modules/video_filter/sharpen.c
+++ b/modules/video_filter/sharpen.c
@@ -50,12 +50,12 @@
* Local prototypes
*****************************************************************************/
static int Create ( vlc_object_t * );
-static void Destroy ( vlc_object_t * );
+static void Destroy ( filter_t * );
static void Filter( filter_t *, picture_t *, picture_t * );
static int SharpenCallback( vlc_object_t *, char const *,
vlc_value_t, vlc_value_t, void * );
-VIDEO_FILTER_WRAPPER( Filter )
+VIDEO_FILTER_WRAPPER_CLOSE(Filter, Destroy)
#define SHARPEN_HELP N_("Augment contrast between contours.")
#define FILTER_PREFIX "sharpen-"
@@ -74,7 +74,7 @@ vlc_module_begin ()
SIG_TEXT, SIG_LONGTEXT, false )
change_safe()
add_shortcut( "sharpen" )
- set_callbacks( Create, Destroy )
+ set_callback( Create )
vlc_module_end ()
static const char *const ppsz_filter_options[] = {
@@ -139,9 +139,8 @@ static int Create( vlc_object_t *p_this )
*****************************************************************************
* Terminate an output method created by SharpenCreateOutputMethod
*****************************************************************************/
-static void Destroy( vlc_object_t *p_this )
+static void Destroy( filter_t *p_filter )
{
- filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys = p_filter->p_sys;
var_DelCallback( p_filter, FILTER_PREFIX "sigma", SharpenCallback, p_sys );
diff --git a/modules/video_filter/vhs.c b/modules/video_filter/vhs.c
index 7c0a478b4a..001d47295a 100644
--- a/modules/video_filter/vhs.c
+++ b/modules/video_filter/vhs.c
@@ -99,7 +99,7 @@ static int vhs_sliding_effect_apply( filter_t *, picture_t * );
*****************************************************************************/
static int Open ( vlc_object_t * );
-static void Close( vlc_object_t * );
+static void Close( filter_t * );
vlc_module_begin()
set_description( N_("VHS movie effect video filter") )
@@ -108,7 +108,7 @@ vlc_module_begin()
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
- set_callbacks( Open, Close )
+ set_callback( Open )
vlc_module_end()
/**
@@ -145,7 +145,7 @@ static int Open( vlc_object_t *p_this )
/* init data */
static const struct vlc_filter_operations filter_ops =
{
- .filter_video = Filter,
+ .filter_video = Filter, .close = Close,
};
p_filter->ops = &filter_ops;
p_sys->i_start_time = p_sys->i_cur_time = p_sys->i_last_time = vlc_tick_now();
@@ -156,8 +156,7 @@ static int Open( vlc_object_t *p_this )
/**
* Close the filter
*/
-static void Close( vlc_object_t *p_this ) {
- filter_t *p_filter = (filter_t*)p_this;
+static void Close( filter_t *p_filter ) {
filter_sys_t *p_sys = p_filter->p_sys;
/* Free allocated memory */
More information about the vlc-commits
mailing list