vlc | branch: master | Steve Lhomme <[email protected]> | Thu Oct 8 16:25:14 2020 +0200| [0d5d447d704644f425727a86404ba1646b06062a] | committer: Steve Lhomme
filters: use macro to set the typed Open callback for video converters > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0d5d447d704644f425727a86404ba1646b06062a --- include/vlc_filter.h | 9 +++++++++ modules/arm_neon/chroma_yuv.c | 9 +++------ modules/arm_neon/yuv_rgb.c | 9 +++------ modules/hw/d3d11/d3d11_filters.c | 6 ++---- modules/hw/d3d11/d3d11_filters.h | 4 ++-- modules/hw/d3d11/d3d11_surface.c | 11 ++++------- modules/hw/d3d9/d3d9_filters.c | 6 ++---- modules/hw/d3d9/d3d9_filters.h | 4 ++-- modules/hw/d3d9/dxa9.c | 7 ++----- modules/hw/mmal/converter.c | 8 +++----- modules/hw/nvdec/chroma.c | 9 +++------ modules/hw/vaapi/chroma.c | 9 ++++----- modules/hw/vaapi/filters.c | 3 +-- modules/hw/vaapi/filters.h | 2 +- modules/hw/vdpau/chroma.c | 18 +++++++----------- modules/video_chroma/chain.c | 9 +++------ modules/video_chroma/cvpx.c | 29 ++++++++++------------------- modules/video_chroma/grey_yuv.c | 9 +++------ modules/video_chroma/i420_nv12.c | 8 ++------ modules/video_chroma/i420_rgb.c | 24 +++++++++++------------- modules/video_chroma/i420_yuy2.c | 15 ++++++--------- modules/video_chroma/i422_i420.c | 9 +++------ modules/video_chroma/i422_yuy2.c | 13 +++++-------- modules/video_chroma/omxdl.c | 20 ++++++++------------ modules/video_chroma/rv32.c | 9 +++------ modules/video_chroma/swscale.c | 8 +++----- modules/video_chroma/yuvp.c | 9 +++------ modules/video_chroma/yuy2_i420.c | 9 +++------ modules/video_chroma/yuy2_i422.c | 9 +++------ modules/video_filter/scale.c | 9 +++------ 30 files changed, 117 insertions(+), 186 deletions(-) diff --git a/include/vlc_filter.h b/include/vlc_filter.h index 4497435420..c610680b3a 100644 --- a/include/vlc_filter.h +++ b/include/vlc_filter.h @@ -141,6 +141,7 @@ struct vlc_filter_operations }; typedef int (*vlc_open_deinterlace)(filter_t *); +typedef int (*vlc_video_converter_open)(filter_t *); #define set_deinterlace_callback( activate ) \ @@ -152,6 +153,14 @@ typedef int (*vlc_open_deinterlace)(filter_t *); set_capability( "video filter", 0 ) \ add_shortcut( "deinterlace" ) +#define set_callback_video_converter( activate, priority ) \ + { \ + vlc_video_converter_open open__ = activate; \ + (void) open__; \ + set_callback(activate) \ + } \ + set_capability( "video converter", priority ) + /** Structure describing a filter * @warning BIG FAT WARNING : the code relies on the first 4 members of * filter_t and decoder_t to be the same, so if you have anything to add, diff --git a/modules/arm_neon/chroma_yuv.c b/modules/arm_neon/chroma_yuv.c index 6715f228a9..bf72154a76 100644 --- a/modules/arm_neon/chroma_yuv.c +++ b/modules/arm_neon/chroma_yuv.c @@ -29,12 +29,11 @@ #include <vlc_cpu.h> #include "arm_neon/chroma_neon.h" -static int Open (vlc_object_t *); +static int Open (filter_t *); vlc_module_begin () set_description (N_("ARM NEON video chroma conversions")) - set_capability ("video converter", 250) - set_callback(Open) + set_callback_video_converter(Open, 250) vlc_module_end () #define DEFINE_PACK(pack, pict) \ @@ -214,10 +213,8 @@ static void VYUY_I422 (filter_t *filter, picture_t *src, picture_t *dst) } VIDEO_FILTER_WRAPPER (VYUY_I422) -static int Open (vlc_object_t *obj) +static int Open (filter_t *filter) { - filter_t *filter = (filter_t *)obj; - if (!vlc_CPU_ARM_NEON()) return VLC_EGENERIC; if ((filter->fmt_in.video.i_width != filter->fmt_out.video.i_width) diff --git a/modules/arm_neon/yuv_rgb.c b/modules/arm_neon/yuv_rgb.c index a654a72f50..5dca930f21 100644 --- a/modules/arm_neon/yuv_rgb.c +++ b/modules/arm_neon/yuv_rgb.c @@ -30,12 +30,11 @@ #include <vlc_cpu.h> #include "arm_neon/chroma_neon.h" -static int Open (vlc_object_t *); +static int Open (filter_t *); vlc_module_begin () set_description (N_("ARM NEON video chroma YUV->RGBA")) - set_capability ("video converter", 250) - set_callback(Open) + set_callback_video_converter(Open, 250) vlc_module_end () /* @@ -131,10 +130,8 @@ VIDEO_FILTER_WRAPPER (YV12_RGBA) VIDEO_FILTER_WRAPPER (NV21_RGBA) VIDEO_FILTER_WRAPPER (NV12_RGBA) -static int Open (vlc_object_t *obj) +static int Open (filter_t *filter) { - filter_t *filter = (filter_t *)obj; - if (!vlc_CPU_ARM_NEON()) return VLC_EGENERIC; diff --git a/modules/hw/d3d11/d3d11_filters.c b/modules/hw/d3d11/d3d11_filters.c index 53070a76bc..2c18dbb2a9 100644 --- a/modules/hw/d3d11/d3d11_filters.c +++ b/modules/hw/d3d11/d3d11_filters.c @@ -596,12 +596,10 @@ vlc_module_begin() set_deinterlace_callback( D3D11OpenDeinterlace ) add_submodule() - set_capability( "video converter", 10 ) - set_callback( D3D11OpenConverter ) + set_callback_video_converter( D3D11OpenConverter, 10 ) add_submodule() - set_callback( D3D11OpenCPUConverter ) - set_capability( "video converter", 10 ) + set_callback_video_converter( D3D11OpenCPUConverter, 10 ) add_submodule() set_description(N_("Direct3D11")) diff --git a/modules/hw/d3d11/d3d11_filters.h b/modules/hw/d3d11/d3d11_filters.h index 411afda4b9..9c8137df14 100644 --- a/modules/hw/d3d11/d3d11_filters.h +++ b/modules/hw/d3d11/d3d11_filters.h @@ -29,8 +29,8 @@ #include "../../video_chroma/d3d11_fmt.h" int D3D11OpenDeinterlace(filter_t *); -int D3D11OpenConverter(vlc_object_t *); -int D3D11OpenCPUConverter(vlc_object_t *); +int D3D11OpenConverter(filter_t *); +int D3D11OpenCPUConverter(filter_t *); int D3D11OpenDecoderDeviceW8(vlc_decoder_device *, vout_window_t *); int D3D11OpenDecoderDeviceAny(vlc_decoder_device *, vout_window_t *); diff --git a/modules/hw/d3d11/d3d11_surface.c b/modules/hw/d3d11/d3d11_surface.c index 9fa42114aa..e561853e03 100644 --- a/modules/hw/d3d11/d3d11_surface.c +++ b/modules/hw/d3d11/d3d11_surface.c @@ -691,10 +691,8 @@ static const struct vlc_filter_operations NV12_D3D11_ops = { .filter_video = NV12_D3D11_Filter, .close = D3D11CloseCPUConverter, }; -int D3D11OpenConverter( vlc_object_t *obj ) +int D3D11OpenConverter( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)obj; - if ( !is_d3d11_opaque(p_filter->fmt_in.video.i_chroma) ) return VLC_EGENERIC; if ( GetD3D11ContextPrivate(p_filter->vctx_in) == NULL ) @@ -743,7 +741,7 @@ int D3D11OpenConverter( vlc_object_t *obj ) return VLC_EGENERIC; } - filter_sys_t *p_sys = vlc_obj_calloc(obj, 1, sizeof(filter_sys_t)); + filter_sys_t *p_sys = vlc_obj_calloc(VLC_OBJECT(p_filter), 1, sizeof(filter_sys_t)); if (!p_sys) return VLC_ENOMEM; @@ -764,9 +762,8 @@ int D3D11OpenConverter( vlc_object_t *obj ) return VLC_SUCCESS; } -int D3D11OpenCPUConverter( vlc_object_t *obj ) +int D3D11OpenCPUConverter( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)obj; int err = VLC_EGENERIC; filter_sys_t *p_sys = NULL; @@ -804,7 +801,7 @@ int D3D11OpenCPUConverter( vlc_object_t *obj ) return VLC_EGENERIC; } - p_sys = vlc_obj_calloc(obj, 1, sizeof(filter_sys_t)); + p_sys = vlc_obj_calloc(VLC_OBJECT(p_filter), 1, sizeof(filter_sys_t)); if (!p_sys) { vlc_decoder_device_Release(dec_device); return VLC_ENOMEM; diff --git a/modules/hw/d3d9/d3d9_filters.c b/modules/hw/d3d9/d3d9_filters.c index deb6b06744..db4ede3487 100644 --- a/modules/hw/d3d9/d3d9_filters.c +++ b/modules/hw/d3d9/d3d9_filters.c @@ -516,12 +516,10 @@ vlc_module_begin() set_deinterlace_callback( D3D9OpenDeinterlace ) add_submodule() - set_capability( "video converter", 10 ) - set_callback( D3D9OpenConverter ) + set_callback_video_converter( D3D9OpenConverter, 10 ) add_submodule() - set_callback( D3D9OpenCPUConverter ) - set_capability( "video converter", 10 ) + set_callback_video_converter( D3D9OpenCPUConverter, 10 ) add_submodule() set_description(N_("Direct3D9")) diff --git a/modules/hw/d3d9/d3d9_filters.h b/modules/hw/d3d9/d3d9_filters.h index 219b079bbc..7148429330 100644 --- a/modules/hw/d3d9/d3d9_filters.h +++ b/modules/hw/d3d9/d3d9_filters.h @@ -29,8 +29,8 @@ #include "../../video_chroma/d3d9_fmt.h" int D3D9OpenDeinterlace(filter_t *); -int D3D9OpenConverter(vlc_object_t *); -int D3D9OpenCPUConverter(vlc_object_t *); +int D3D9OpenConverter(filter_t *); +int D3D9OpenCPUConverter(filter_t *); int D3D9OpenDecoderDevice(vlc_decoder_device *, vout_window_t *); diff --git a/modules/hw/d3d9/dxa9.c b/modules/hw/d3d9/dxa9.c index 6fcb33e10f..ea6f8091bf 100644 --- a/modules/hw/d3d9/dxa9.c +++ b/modules/hw/d3d9/dxa9.c @@ -388,10 +388,8 @@ static picture_t *YV12_D3D9_Filter( filter_t *p_filter, picture_t *p_pic ) return p_outpic; } -int D3D9OpenConverter( vlc_object_t *obj ) +int D3D9OpenConverter( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)obj; - if ( p_filter->fmt_in.video.i_chroma != VLC_CODEC_D3D9_OPAQUE && p_filter->fmt_in.video.i_chroma != VLC_CODEC_D3D9_OPAQUE_10B ) return VLC_EGENERIC; @@ -460,9 +458,8 @@ static const struct vlc_filter_operations YV12_D3D9_ops = { .filter_video = YV12_D3D9_Filter, .close = D3D9CloseCPUConverter, }; -int D3D9OpenCPUConverter( vlc_object_t *obj ) +int D3D9OpenCPUConverter( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)obj; int err = VLC_EGENERIC; picture_t *p_dst = NULL; diff --git a/modules/hw/mmal/converter.c b/modules/hw/mmal/converter.c index dbdee120b5..872ffe4892 100644 --- a/modules/hw/mmal/converter.c +++ b/modules/hw/mmal/converter.c @@ -61,7 +61,7 @@ static const char * const ppsz_converter_text[] = { "Hardware Video Scaler", "ISP", "Resizer" }; -int OpenConverter(vlc_object_t *); +static int OpenConverter(filter_t *); vlc_module_begin() add_submodule() @@ -70,12 +70,11 @@ vlc_module_begin() set_shortname(N_("MMAL resizer")) set_description(N_("MMAL resizing conversion filter")) add_shortcut("mmal_converter") - set_capability( "video converter", 900 ) #ifndef NDEBUG add_integer( MMAL_CONVERTER_TYPE_NAME, FILTER_RESIZER_HVS, MMAL_CONVERTER_TYPE_TEXT, MMAL_CONVERTER_TYPE_LONGTEXT, true ) change_integer_list( pi_converter_modes, ppsz_converter_text ) #endif - set_callback(OpenConverter) + set_callback_video_converter(OpenConverter, 900) vlc_module_end() #define MMAL_SLICE_HEIGHT 16 @@ -783,9 +782,8 @@ static const struct vlc_filter_operations filter_ops = { .filter_video = conv_filter, .flush = conv_flush, .close = CloseConverter, }; -int OpenConverter(vlc_object_t * obj) +static int OpenConverter(filter_t *p_filter) { - filter_t * const p_filter = (filter_t *)obj; int ret = VLC_EGENERIC; converter_sys_t *sys; MMAL_STATUS_T status; diff --git a/modules/hw/nvdec/chroma.c b/modules/hw/nvdec/chroma.c index 2e09fb18ce..1cc647c0a1 100644 --- a/modules/hw/nvdec/chroma.c +++ b/modules/hw/nvdec/chroma.c @@ -31,15 +31,14 @@ #include "nvdec_fmt.h" -static int OpenCUDAToCPU( vlc_object_t * ); +static int OpenCUDAToCPU( filter_t * ); vlc_module_begin() set_shortname(N_("CUDA converter")) set_description(N_("CUDA/NVDEC Chroma Converter filter")) set_category(CAT_VIDEO) set_subcategory(SUBCAT_VIDEO_VFILTER) - set_capability("video converter", 10) - set_callbacks(OpenCUDAToCPU, NULL) + set_callback_video_converter(OpenCUDAToCPU, 10) vlc_module_end() #define CALL_CUDA(func, ...) CudaCheckErr(VLC_OBJECT(p_filter), devsys->cudaFunctions, devsys->cudaFunctions->func(__VA_ARGS__), #func) @@ -121,10 +120,8 @@ static const struct vlc_filter_operations filter_ops = { .filter_video = FilterCUDAToCPU, }; -static int OpenCUDAToCPU( vlc_object_t *p_this ) +static int OpenCUDAToCPU( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; - if ( p_filter->vctx_in == NULL || vlc_video_context_GetType(p_filter->vctx_in) != VLC_VIDEO_CONTEXT_NVDEC ) return VLC_EGENERIC; diff --git a/modules/hw/vaapi/chroma.c b/modules/hw/vaapi/chroma.c index dfd573ef1e..f43e0dc1cd 100644 --- a/modules/hw/vaapi/chroma.c +++ b/modules/hw/vaapi/chroma.c @@ -325,9 +325,8 @@ static const struct vlc_filter_operations filter_download_ops = { }; int -vlc_vaapi_OpenChroma(vlc_object_t *obj) +vlc_vaapi_OpenChroma(filter_t *filter) { - filter_t *const filter = (filter_t *)obj; filter_sys_t * filter_sys; if (filter->fmt_in.video.i_height != filter->fmt_out.video.i_height @@ -345,7 +344,7 @@ vlc_vaapi_OpenChroma(vlc_object_t *obj) if (!(filter_sys = calloc(1, sizeof(filter_sys_t)))) { - msg_Err(obj, "unable to allocate memory"); + msg_Err(filter, "unable to allocate memory"); return VLC_ENOMEM; } filter_sys->derive_failed = false; @@ -370,7 +369,7 @@ vlc_vaapi_OpenChroma(vlc_object_t *obj) filter_sys->dpy = dec_device->opaque; filter_sys->dest_pics = - vlc_vaapi_PoolNew(obj, filter->vctx_out, filter_sys->dpy, + vlc_vaapi_PoolNew(VLC_OBJECT(filter), filter->vctx_out, filter_sys->dpy, DEST_PICS_POOL_SZ, &filter_sys->va_surface_ids, &filter->fmt_out.video); if (!filter_sys->dest_pics) @@ -403,7 +402,7 @@ vlc_vaapi_OpenChroma(vlc_object_t *obj) } filter->p_sys = filter_sys; - msg_Warn(obj, "Using SW chroma filter for %dx%d %4.4s -> %4.4s", + msg_Warn(filter, "Using SW chroma filter for %dx%d %4.4s -> %4.4s", filter->fmt_in.video.i_width, filter->fmt_in.video.i_height, (const char *) &filter->fmt_in.video.i_chroma, diff --git a/modules/hw/vaapi/filters.c b/modules/hw/vaapi/filters.c index de79b4b663..6b04fe879e 100644 --- a/modules/hw/vaapi/filters.c +++ b/modules/hw/vaapi/filters.c @@ -1161,6 +1161,5 @@ vlc_module_begin() add_shortcut("sharpen") add_submodule() - set_capability("video converter", 10) - set_callback(vlc_vaapi_OpenChroma) + set_callback_video_converter(vlc_vaapi_OpenChroma, 10) vlc_module_end() diff --git a/modules/hw/vaapi/filters.h b/modules/hw/vaapi/filters.h index 83a51811cf..b30fabc811 100644 --- a/modules/hw/vaapi/filters.h +++ b/modules/hw/vaapi/filters.h @@ -28,7 +28,7 @@ #include "vlc_vaapi.h" /* chroma filters callbacks */ -int vlc_vaapi_OpenChroma(vlc_object_t *obj); +int vlc_vaapi_OpenChroma(filter_t *); void vlc_vaapi_CloseChroma(filter_t *); #endif /* VLC_VAAPI_FILTERS_H */ diff --git a/modules/hw/vdpau/chroma.c b/modules/hw/vdpau/chroma.c index bef3eda76a..17a26c0a49 100644 --- a/modules/hw/vdpau/chroma.c +++ b/modules/hw/vdpau/chroma.c @@ -761,10 +761,8 @@ static const struct vlc_filter_operations filter_output_ycbcr_ops = { .filter_video = YCbCrRender, .flush = Flush, .close = OutputClose, }; -static int OutputOpen(vlc_object_t *obj) +static int OutputOpen(filter_t *filter) { - filter_t *filter = (filter_t *)obj; - if (filter->fmt_out.video.i_chroma != VLC_CODEC_VDPAU_OUTPUT) return VLC_EGENERIC; @@ -775,7 +773,7 @@ static int OutputOpen(vlc_object_t *obj) if (dec_device == NULL) return VLC_EGENERIC; - vlc_vdp_mixer_t *sys = vlc_obj_malloc(obj, sizeof (*sys)); + vlc_vdp_mixer_t *sys = vlc_obj_malloc(VLC_OBJECT(filter), sizeof (*sys)); if (unlikely(sys == NULL)) { vlc_decoder_device_Release(dec_device); @@ -825,7 +823,7 @@ static int OutputOpen(vlc_object_t *obj) return VLC_EGENERIC; /* Allocate the output surface picture pool */ - sys->pool = OutputPoolAlloc(obj, vdpau_decoder, + sys->pool = OutputPoolAlloc(VLC_OBJECT(filter), vdpau_decoder, &filter->fmt_out.video); if (sys->pool == NULL) { @@ -898,9 +896,8 @@ static const struct vlc_filter_operations filter_ycbcr_ops = { .filter_video = VideoExport_Filter, }; -static int YCbCrOpen(vlc_object_t *obj) +static int YCbCrOpen(filter_t *filter) { - filter_t *filter = (filter_t *)obj; VdpChromaType type; VdpYCbCrFormat format; @@ -918,7 +915,7 @@ static int YCbCrOpen(vlc_object_t *obj) != filter->fmt_in.video.i_sar_den * filter->fmt_out.video.i_sar_num)) return VLC_EGENERIC; - vlc_vdp_yuv_getter_t *sys = vlc_obj_malloc(obj, sizeof (*sys)); + vlc_vdp_yuv_getter_t *sys = vlc_obj_malloc(VLC_OBJECT(filter), sizeof (*sys)); if (unlikely(sys == NULL)) return VLC_ENOMEM; sys->format = format; @@ -941,10 +938,9 @@ static const char *const algo_names[] = { vlc_module_begin() set_shortname(N_("VDPAU")) set_description(N_("VDPAU surface conversions")) - set_capability("video converter", 10) set_category(CAT_VIDEO) set_subcategory(SUBCAT_VIDEO_VFILTER) - set_callback(OutputOpen) + set_callback_video_converter(OutputOpen, 10) add_integer("vdpau-deinterlace", VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL, @@ -961,5 +957,5 @@ vlc_module_begin() N_("Scaling quality"), N_("High quality scaling level"), true) add_submodule() - set_callback(YCbCrOpen) + set_callback_video_converter(YCbCrOpen, 10) vlc_module_end() diff --git a/modules/video_chroma/chain.c b/modules/video_chroma/chain.c index f303b98795..05c5a899fb 100644 --- a/modules/video_chroma/chain.c +++ b/modules/video_chroma/chain.c @@ -37,14 +37,13 @@ /***************************************************************************** * Module descriptor *****************************************************************************/ -static int ActivateConverter ( vlc_object_t * ); +static int ActivateConverter ( filter_t * ); static int ActivateFilter ( 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_callback( ActivateConverter ) + set_callback_video_converter( ActivateConverter, 1 ) add_submodule () set_capability( "video filter", 0 ) set_callback( ActivateFilter ) @@ -223,10 +222,8 @@ static int Activate( filter_t *p_filter, int (*pf_build)(filter_t *) ) return VLC_SUCCESS; } -static int ActivateConverter( vlc_object_t *p_this ) +static int ActivateConverter( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; - const bool b_chroma = p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma; const bool b_resize = p_filter->fmt_in.video.i_width != p_filter->fmt_out.video.i_width || p_filter->fmt_in.video.i_height != p_filter->fmt_out.video.i_height; diff --git a/modules/video_chroma/cvpx.c b/modules/video_chroma/cvpx.c index 97bf253773..0f732e0e4c 100644 --- a/modules/video_chroma/cvpx.c +++ b/modules/video_chroma/cvpx.c @@ -37,14 +37,14 @@ #include "../codec/vt_utils.h" #include "../video_chroma/copy.h" -static int Open(vlc_object_t *); +static int Open(filter_t *); static void Close(filter_t *); #if !TARGET_OS_IPHONE -static int Open_CVPX_to_CVPX(vlc_object_t *); +static int Open_CVPX_to_CVPX(filter_t *); static void Close_CVPX_to_CVPX(filter_t *); -static int Open_chain_CVPX(vlc_object_t *); +static int Open_chain_CVPX(filter_t *); static void Close_chain_CVPX(filter_t *); #endif @@ -66,18 +66,15 @@ typedef struct vlc_module_begin () set_description("Conversions from/to CoreVideo buffers") - set_capability("video converter", 10) - set_callback(Open) + set_callback_video_converter(Open, 10) #if !TARGET_OS_IPHONE add_submodule() set_description("Conversions between CoreVideo buffers") - set_callback(Open_CVPX_to_CVPX) - set_capability("video converter", 10) + set_callback_video_converter(Open_CVPX_to_CVPX, 10) add_submodule() set_description("Fast CoreVideo resize+conversion") - set_callback(Open_chain_CVPX) - set_capability("video converter", 11) + set_callback_video_converter(Open_chain_CVPX, 11) #endif vlc_module_end () @@ -254,10 +251,8 @@ static const struct vlc_filter_operations SW_TO_CVPX_ops = { .filter_video = SW_TO_CVPX_Filter, .close = Close, }; -static int Open(vlc_object_t *obj) +static int Open(filter_t *p_filter) { - filter_t *p_filter = (filter_t *)obj; - if (p_filter->fmt_in.video.i_height != p_filter->fmt_out.video.i_height || p_filter->fmt_in.video.i_width != p_filter->fmt_out.video.i_width) return VLC_EGENERIC; @@ -443,10 +438,8 @@ static const struct vlc_filter_operations filter_ops = { }; static int -Open_CVPX_to_CVPX(vlc_object_t *obj) +Open_CVPX_to_CVPX(filter_t *filter) { - filter_t *filter = (filter_t *)obj; - /* Avoid conversion to self if we're not resizing */ if (filter->fmt_in.video.i_chroma == filter->fmt_out.video.i_chroma && filter->fmt_in.video.i_visible_width == filter->fmt_out.video.i_visible_width && @@ -568,10 +561,8 @@ static const struct vlc_filter_operations chain_CVPX_ops = { }; static int -Open_chain_CVPX(vlc_object_t *obj) +Open_chain_CVPX(filter_t *filter) { - filter_t *filter = (filter_t *)obj; - bool is_input_valid = false; bool is_output_valid = false; @@ -629,7 +620,7 @@ Open_chain_CVPX(vlc_object_t *obj) if (!is_input_valid || !is_output_valid) return VLC_EGENERIC; - msg_Dbg(obj, "Starting CVPX conversion chain %4.4s -> %4.4s", + msg_Dbg(filter, "Starting CVPX conversion chain %4.4s -> %4.4s", (const char *)&input_chroma, (const char *)&output_chroma); diff --git a/modules/video_chroma/grey_yuv.c b/modules/video_chroma/grey_yuv.c index 6cf35a9b70..1339362ae8 100644 --- a/modules/video_chroma/grey_yuv.c +++ b/modules/video_chroma/grey_yuv.c @@ -39,15 +39,14 @@ /***************************************************************************** * Local and extern prototypes. *****************************************************************************/ -static int Activate ( vlc_object_t * ); +static int Activate ( filter_t * ); /***************************************************************************** * Module descriptor. *****************************************************************************/ vlc_module_begin () set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 80 ) - set_callback( Activate ) + set_callback_video_converter( Activate, 80 ) vlc_module_end () VIDEO_FILTER_WRAPPER( GREY_I420 ) @@ -72,10 +71,8 @@ GetFilterOperations( filter_t *filter ) ***************************************************************************** * This function allocates and initializes a chroma function *****************************************************************************/ -static int Activate( vlc_object_t *p_this ) +static int Activate( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; - if( p_filter->fmt_out.video.i_width & 1 || p_filter->fmt_out.video.i_height & 1 ) { diff --git a/modules/video_chroma/i420_nv12.c b/modules/video_chroma/i420_nv12.c index a54e03a517..76d80f5a5d 100644 --- a/modules/video_chroma/i420_nv12.c +++ b/modules/video_chroma/i420_nv12.c @@ -146,11 +146,8 @@ VIDEO_FILTER_WRAPPER_CLOSE( P010_I42010B, Delete ) ***************************************************************************** * This function allocates and initializes a chroma function *****************************************************************************/ -static int Create( vlc_object_t *p_this ) +static int Create( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; - - /* video must be even, because 4:2:0 is subsampled by 2 in both ways */ if( p_filter->fmt_in.video.i_width & 1 || p_filter->fmt_in.video.i_height & 1 ) @@ -234,6 +231,5 @@ static int Create( vlc_object_t *p_this ) *****************************************************************************/ vlc_module_begin () set_description( N_("YUV planar to semiplanar conversions") ) - set_capability( "video converter", 160 ) - set_callback( Create ) + set_callback_video_converter( Create, 160 ) vlc_module_end () diff --git a/modules/video_chroma/i420_rgb.c b/modules/video_chroma/i420_rgb.c index dc79754f6a..b0cc8e8d23 100644 --- a/modules/video_chroma/i420_rgb.c +++ b/modules/video_chroma/i420_rgb.c @@ -54,27 +54,26 @@ static void Set8bppPalette( filter_t *, uint8_t * ); /***************************************************************************** * Module descriptor. *****************************************************************************/ -static int Activate ( vlc_object_t * ); +static int Activate ( filter_t * ); static void Deactivate ( filter_t * ); vlc_module_begin () #if defined (SSE2) set_description( N_( "SSE2 I420,IYUV,YV12 to " "RV15,RV16,RV24,RV32 conversions") ) - set_capability( "video converter", 120 ) + set_callback_video_converter( Activate, 120 ) # define vlc_CPU_capable() vlc_CPU_SSE2() #elif defined (MMX) set_description( N_( "MMX I420,IYUV,YV12 to " "RV15,RV16,RV24,RV32 conversions") ) - set_capability( "video converter", 100 ) + set_callback_video_converter( Activate, 100 ) # define vlc_CPU_capable() vlc_CPU_MMX() #else set_description( N_("I420,IYUV,YV12 to " "RGB8,RV15,RV16,RV24,RV32 conversions") ) - set_capability( "video converter", 80 ) + set_callback_video_converter( Activate, 80 ) # define vlc_CPU_capable() (true) #endif - set_callback( Activate ) vlc_module_end () #ifndef PLAIN @@ -95,9 +94,8 @@ VIDEO_FILTER_WRAPPER_CLOSE_EXT( I420_RGB32, Deactivate ) ***************************************************************************** * This function allocates and initializes a chroma function *****************************************************************************/ -static int Activate( vlc_object_t *p_this ) +static int Activate( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; #ifdef PLAIN size_t i_tables_size; #endif @@ -130,7 +128,7 @@ static int Activate( vlc_object_t *p_this ) && p_filter->fmt_out.video.i_bmask == 0x001f ) ) { /* R5G5B6 pixel format */ - msg_Dbg(p_this, "RGB pixel format is R5G5B5"); + msg_Dbg(p_filter, "RGB pixel format is R5G5B5"); p_filter->ops = &I420_R5G5B5_ops; } else if( ( p_filter->fmt_out.video.i_rmask == 0xf800 @@ -138,7 +136,7 @@ static int Activate( vlc_object_t *p_this ) && p_filter->fmt_out.video.i_bmask == 0x001f ) ) { /* R5G6B5 pixel format */ - msg_Dbg(p_this, "RGB pixel format is R5G6B5"); + msg_Dbg(p_filter, "RGB pixel format is R5G6B5"); p_filter->ops = &I420_R5G6B5_ops; } else @@ -151,7 +149,7 @@ static int Activate( vlc_object_t *p_this ) && p_filter->fmt_out.video.i_bmask == 0x000000ff ) { /* A8R8G8B8 pixel format */ - msg_Dbg(p_this, "RGB pixel format is A8R8G8B8"); + msg_Dbg(p_filter, "RGB pixel format is A8R8G8B8"); p_filter->ops = &I420_A8R8G8B8_ops; } else if( p_filter->fmt_out.video.i_rmask == 0xff000000 @@ -159,7 +157,7 @@ static int Activate( vlc_object_t *p_this ) && p_filter->fmt_out.video.i_bmask == 0x0000ff00 ) { /* R8G8B8A8 pixel format */ - msg_Dbg(p_this, "RGB pixel format is R8G8B8A8"); + msg_Dbg(p_filter, "RGB pixel format is R8G8B8A8"); p_filter->ops = &I420_R8G8B8A8_ops; } else if( p_filter->fmt_out.video.i_rmask == 0x0000ff00 @@ -167,7 +165,7 @@ static int Activate( vlc_object_t *p_this ) && p_filter->fmt_out.video.i_bmask == 0xff000000 ) { /* B8G8R8A8 pixel format */ - msg_Dbg(p_this, "RGB pixel format is B8G8R8A8"); + msg_Dbg(p_filter, "RGB pixel format is B8G8R8A8"); p_filter->ops = &I420_B8G8R8A8_ops; } else if( p_filter->fmt_out.video.i_rmask == 0x000000ff @@ -175,7 +173,7 @@ static int Activate( vlc_object_t *p_this ) && p_filter->fmt_out.video.i_bmask == 0x00ff0000 ) { /* A8B8G8R8 pixel format */ - msg_Dbg(p_this, "RGB pixel format is A8B8G8R8"); + msg_Dbg(p_filter, "RGB pixel format is A8B8G8R8"); p_filter->ops = &I420_A8B8G8R8_ops; } else diff --git a/modules/video_chroma/i420_yuy2.c b/modules/video_chroma/i420_yuy2.c index ad6359de6f..8dd222f019 100644 --- a/modules/video_chroma/i420_yuy2.c +++ b/modules/video_chroma/i420_yuy2.c @@ -60,7 +60,7 @@ /***************************************************************************** * Local and extern prototypes. *****************************************************************************/ -static int Activate ( vlc_object_t * ); +static int Activate ( filter_t * ); /***************************************************************************** * Module descriptor. @@ -68,23 +68,22 @@ static int Activate ( vlc_object_t * ); vlc_module_begin () #if defined (MODULE_NAME_IS_i420_yuy2) set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 80 ) + set_callback_video_converter( Activate, 80 ) # define vlc_CPU_capable() (true) #elif defined (MODULE_NAME_IS_i420_yuy2_mmx) set_description( N_("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 160 ) + set_callback_video_converter( Activate, 160 ) # define vlc_CPU_capable() vlc_CPU_MMX() #elif defined (MODULE_NAME_IS_i420_yuy2_sse2) set_description( N_("SSE2 conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 250 ) + set_callback_video_converter( Activate, 250 ) # define vlc_CPU_capable() vlc_CPU_SSE2() #elif defined (MODULE_NAME_IS_i420_yuy2_altivec) set_description( _("AltiVec conversions from " SRC_FOURCC " to " DEST_FOURCC) ); - set_capability( "video converter", 250 ) + set_callback_video_converter( Activate, 250 ) # define vlc_CPU_capable() vlc_CPU_ALTIVEC() #endif - set_callback( Activate ) vlc_module_end () VIDEO_FILTER_WRAPPER( I420_YUY2 ) @@ -130,10 +129,8 @@ GetFilterOperations( filter_t *p_filter ) ***************************************************************************** * This function allocates and initializes a chroma function *****************************************************************************/ -static int Activate( vlc_object_t *p_this ) +static int Activate( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; - if( !vlc_CPU_capable() ) return VLC_EGENERIC; diff --git a/modules/video_chroma/i422_i420.c b/modules/video_chroma/i422_i420.c index ac9098efb2..53c9d4082e 100644 --- a/modules/video_chroma/i422_i420.c +++ b/modules/video_chroma/i422_i420.c @@ -40,15 +40,14 @@ /***************************************************************************** * Local and extern prototypes. *****************************************************************************/ -static int Activate ( vlc_object_t * ); +static int Activate ( filter_t * ); /***************************************************************************** * Module descriptor *****************************************************************************/ vlc_module_begin () set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 60 ) - set_callback( Activate ) + set_callback_video_converter( Activate, 60 ) vlc_module_end () VIDEO_FILTER_WRAPPER( I422_I420 ) @@ -60,10 +59,8 @@ VIDEO_FILTER_WRAPPER( I422_YUVA ) ***************************************************************************** * This function allocates and initializes a chroma function *****************************************************************************/ -static int Activate( vlc_object_t *p_this ) +static int Activate( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; - if( p_filter->fmt_in.video.i_width & 1 || p_filter->fmt_in.video.i_height & 1 ) { diff --git a/modules/video_chroma/i422_yuy2.c b/modules/video_chroma/i422_yuy2.c index 9f401ee5ab..9e4ecb729d 100644 --- a/modules/video_chroma/i422_yuy2.c +++ b/modules/video_chroma/i422_yuy2.c @@ -47,7 +47,7 @@ /***************************************************************************** * Local and extern prototypes. *****************************************************************************/ -static int Activate ( vlc_object_t * ); +static int Activate ( filter_t * ); /***************************************************************************** * Module descriptor @@ -55,21 +55,20 @@ static int Activate ( vlc_object_t * ); vlc_module_begin () #if defined (MODULE_NAME_IS_i422_yuy2) set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 80 ) + set_callback_video_converter( Activate, 80 ) # define vlc_CPU_capable() (true) # define VLC_TARGET #elif defined (MODULE_NAME_IS_i422_yuy2_mmx) set_description( N_("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 100 ) + set_callback_video_converter( Activate, 100 ) # define vlc_CPU_capable() vlc_CPU_MMX() # define VLC_TARGET VLC_MMX #elif defined (MODULE_NAME_IS_i422_yuy2_sse2) set_description( N_("SSE2 conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 120 ) + set_callback_video_converter( Activate, 120 ) # define vlc_CPU_capable() vlc_CPU_SSE2() # define VLC_TARGET VLC_SSE #endif - set_callback( Activate ) vlc_module_end () @@ -115,10 +114,8 @@ GetFilterOperations(filter_t *filter) ***************************************************************************** * This function allocates and initializes a chroma function *****************************************************************************/ -static int Activate( vlc_object_t *p_this ) +static int Activate( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; - if( !vlc_CPU_capable() ) return VLC_EGENERIC; if( (p_filter->fmt_in.video.i_x_offset + p_filter->fmt_in.video.i_visible_width) & 1 diff --git a/modules/video_chroma/omxdl.c b/modules/video_chroma/omxdl.c index e643f0735d..f1684f0667 100644 --- a/modules/video_chroma/omxdl.c +++ b/modules/video_chroma/omxdl.c @@ -29,13 +29,12 @@ #include <omxtypes.h> #include <omxIP.h> -static int Open (vlc_object_t *); -static int OpenScaler (vlc_object_t *); +static int Open (filter_t *); +static int OpenScaler (filter_t *); vlc_module_begin () set_description (N_("OpenMAX DL image processing")) - set_capability ("video converter", 90) - set_callback(Open) + set_callback_video_converter(Open, 90) vlc_module_end () #define SRC_WIDTH (filter->fmt_in.video.i_width) @@ -246,16 +245,14 @@ static int FixRV12 (video_format_t *fmt) } /*** Initialization ***/ -static int Open (vlc_object_t *obj) +static int Open (filter_t *filter) { - filter_t *filter = (filter_t *)obj; - if (filter->fmt_in.video.orientation != filter->fmt_out.video.orientation) return VLC_EGENERIC; if ((filter->fmt_in.video.i_width != filter->fmt_out.video.i_width) || (filter->fmt_in.video.i_height != filter->fmt_out.video.i_height)) - return OpenScaler (obj); + return OpenScaler (filter); switch (filter->fmt_in.video.i_chroma) { @@ -333,7 +330,7 @@ static int Open (vlc_object_t *obj) return VLC_EGENERIC; } /* fallback to scaler (conversion with 1:1 scale) */ - return OpenScaler (obj); + return OpenScaler (filter); } /* TODO: configurable interpolation */ @@ -468,10 +465,9 @@ static void I422_RGB_Scale (filter_t *filter, picture_t *src, picture_t *dst) VIDEO_FILTER_WRAPPER (I422_RGB_Scale) /*** Scaling initialization ***/ -static int OpenScaler (vlc_object_t *obj) +static int OpenScaler (filter_t *filter) { - filter_t *filter = (filter_t *)obj; - int *conv = vlc_obj_malloc(obj, sizeof (*conv)); + int *conv = vlc_obj_malloc(VLC_OBJECT(filter), sizeof (*conv)); if (unlikely(conv == NULL)) return VLC_ENOMEM; diff --git a/modules/video_chroma/rv32.c b/modules/video_chroma/rv32.c index 835b658531..c4300d4568 100644 --- a/modules/video_chroma/rv32.c +++ b/modules/video_chroma/rv32.c @@ -35,7 +35,7 @@ /**************************************************************************** * Local prototypes ****************************************************************************/ -static int OpenFilter ( vlc_object_t * ); +static int OpenFilter ( filter_t * ); static picture_t *Filter( filter_t *, picture_t * ); /***************************************************************************** @@ -43,8 +43,7 @@ static picture_t *Filter( filter_t *, picture_t * ); *****************************************************************************/ vlc_module_begin () set_description( N_("RV32 conversion filter") ) - set_capability( "video converter", 1 ) - set_callback( OpenFilter ) + set_callback_video_converter( OpenFilter, 1 ) vlc_module_end () static const struct vlc_filter_operations filter_ops = { @@ -54,10 +53,8 @@ static const struct vlc_filter_operations filter_ops = { /***************************************************************************** * OpenFilter: probe the filter and return score *****************************************************************************/ -static int OpenFilter( vlc_object_t *p_this ) +static int OpenFilter( filter_t *p_filter ) { - filter_t *p_filter = (filter_t*)p_this; - /* XXX Only support RV24 -> RV32 conversion */ if( p_filter->fmt_in.video.i_chroma != VLC_CODEC_RGB24 || (p_filter->fmt_out.video.i_chroma != VLC_CODEC_RGB32 && diff --git a/modules/video_chroma/swscale.c b/modules/video_chroma/swscale.c index 6f623cde48..2f982b8295 100644 --- a/modules/video_chroma/swscale.c +++ b/modules/video_chroma/swscale.c @@ -51,7 +51,7 @@ /***************************************************************************** * Module descriptor *****************************************************************************/ -static int OpenScaler( vlc_object_t * ); +static int OpenScaler( filter_t * ); static void CloseScaler( filter_t * ); #define SCALEMODE_TEXT N_("Scaling mode") @@ -67,10 +67,9 @@ static const char *const ppsz_mode_descriptions[] = vlc_module_begin () set_description( N_("Video scaling filter") ) set_shortname( N_("Swscale" ) ) - set_capability( "video converter", 150 ) set_category( CAT_VIDEO ) set_subcategory( SUBCAT_VIDEO_VFILTER ) - set_callback( OpenScaler ) + set_callback_video_converter( OpenScaler, 150 ) add_integer( "swscale-mode", 2, SCALEMODE_TEXT, SCALEMODE_LONGTEXT, true ) change_integer_list( pi_mode_values, ppsz_mode_descriptions ) vlc_module_end () @@ -145,9 +144,8 @@ static const struct vlc_filter_operations filter_ops = { /***************************************************************************** * OpenScaler: probe the filter and return score *****************************************************************************/ -static int OpenScaler( vlc_object_t *p_this ) +static int OpenScaler( filter_t *p_filter ) { - filter_t *p_filter = (filter_t*)p_this; filter_sys_t *p_sys; int i_sws_mode; diff --git a/modules/video_chroma/yuvp.c b/modules/video_chroma/yuvp.c index 52ba3dbad2..ff4e1d2f4a 100644 --- a/modules/video_chroma/yuvp.c +++ b/modules/video_chroma/yuvp.c @@ -40,12 +40,11 @@ /***************************************************************************** * Module descriptor *****************************************************************************/ -static int Open ( vlc_object_t * ); +static int Open ( filter_t * ); vlc_module_begin () set_description( N_("YUVP converter") ) - set_capability( "video converter", 10 ) - set_callback( Open ) + set_callback_video_converter( Open, 10 ) vlc_module_end () /**************************************************************************** @@ -58,10 +57,8 @@ VIDEO_FILTER_WRAPPER( Convert ) /***************************************************************************** * Open: probe the filter and return score *****************************************************************************/ -static int Open( vlc_object_t *p_this ) +static int Open( filter_t *p_filter ) { - filter_t *p_filter = (filter_t*)p_this; - /* It only supports YUVP to YUVA/RGBA without scaling * (if scaling is required another filter can do it) */ if( p_filter->fmt_in.video.i_chroma != VLC_CODEC_YUVP || diff --git a/modules/video_chroma/yuy2_i420.c b/modules/video_chroma/yuy2_i420.c index 5094feeb50..2ed4d66061 100644 --- a/modules/video_chroma/yuy2_i420.c +++ b/modules/video_chroma/yuy2_i420.c @@ -39,15 +39,14 @@ /***************************************************************************** * Local and extern prototypes. *****************************************************************************/ -static int Activate ( vlc_object_t * ); +static int Activate ( filter_t * ); /***************************************************************************** * Module descriptor *****************************************************************************/ vlc_module_begin () set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 80 ) - set_callback( Activate ) + set_callback_video_converter( Activate, 80 ) vlc_module_end () VIDEO_FILTER_WRAPPER( YUY2_I420 ) @@ -59,10 +58,8 @@ VIDEO_FILTER_WRAPPER( UYVY_I420 ) ***************************************************************************** * This function allocates and initializes a chroma function *****************************************************************************/ -static int Activate( vlc_object_t *p_this ) +static int Activate( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; - if( p_filter->fmt_in.video.i_width & 1 || p_filter->fmt_in.video.i_height & 1 ) { diff --git a/modules/video_chroma/yuy2_i422.c b/modules/video_chroma/yuy2_i422.c index cccfb10f08..9b9b97bb16 100644 --- a/modules/video_chroma/yuy2_i422.c +++ b/modules/video_chroma/yuy2_i422.c @@ -39,15 +39,14 @@ /***************************************************************************** * Local and extern prototypes. *****************************************************************************/ -static int Activate ( vlc_object_t * ); +static int Activate ( filter_t * ); /***************************************************************************** * Module descriptor *****************************************************************************/ vlc_module_begin () set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ) - set_capability( "video converter", 80 ) - set_callback( Activate ) + set_callback_video_converter( Activate, 80 ) vlc_module_end () VIDEO_FILTER_WRAPPER( YUY2_I422 ) @@ -59,10 +58,8 @@ VIDEO_FILTER_WRAPPER( UYVY_I422 ) ***************************************************************************** * This function allocates and initializes a chroma function *****************************************************************************/ -static int Activate( vlc_object_t *p_this ) +static int Activate( filter_t *p_filter ) { - filter_t *p_filter = (filter_t *)p_this; - if( p_filter->fmt_in.video.i_width & 1 || p_filter->fmt_in.video.i_height & 1 ) { diff --git a/modules/video_filter/scale.c b/modules/video_filter/scale.c index 944ad3e117..b3836b2ab8 100644 --- a/modules/video_filter/scale.c +++ b/modules/video_filter/scale.c @@ -37,7 +37,7 @@ /**************************************************************************** * Local prototypes ****************************************************************************/ -static int OpenFilter ( vlc_object_t * ); +static int OpenFilter ( filter_t * ); VIDEO_FILTER_WRAPPER(Filter) /***************************************************************************** @@ -45,17 +45,14 @@ VIDEO_FILTER_WRAPPER(Filter) *****************************************************************************/ vlc_module_begin () set_description( N_("Video scaling filter") ) - set_capability( "video converter", 10 ) - set_callback( OpenFilter ) + set_callback_video_converter( OpenFilter, 10 ) vlc_module_end () /***************************************************************************** * OpenFilter: probe the filter and return score *****************************************************************************/ -static int OpenFilter( vlc_object_t *p_this ) +static int OpenFilter( filter_t *p_filter ) { - filter_t *p_filter = (filter_t*)p_this; - if( ( p_filter->fmt_in.video.i_chroma != VLC_CODEC_YUVP && p_filter->fmt_in.video.i_chroma != VLC_CODEC_YUVA && p_filter->fmt_in.video.i_chroma != VLC_CODEC_I420 && _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
