X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_chroma%2Fi420_ymga.c;h=4efc6a6420f3f3ca676b26b940bca9ccc3baacfd;hb=fa61862474c332412e0341d98f1cf82c067d277a;hp=3a823656ebe55fa40d5c86f405ae03fd85ead2a0;hpb=13ae40b0efc4f1b1ce205d9a057537047fcab3f4;p=vlc diff --git a/modules/video_chroma/i420_ymga.c b/modules/video_chroma/i420_ymga.c index 3a823656eb..4efc6a6420 100644 --- a/modules/video_chroma/i420_ymga.c +++ b/modules/video_chroma/i420_ymga.c @@ -24,14 +24,16 @@ /***************************************************************************** * Preamble *****************************************************************************/ -#include /* ENOMEM */ #ifdef HAVE_CONFIG_H # include "config.h" #endif -#include +#include /* ENOMEM */ + +#include #include +#include #include #define SRC_FOURCC "I420,IYUV,YV12" @@ -41,7 +43,8 @@ * Local and extern prototypes. *****************************************************************************/ static int Activate ( vlc_object_t * ); -static void I420_YMGA ( vout_thread_t *, picture_t *, picture_t * ); +static void I420_YMGA ( filter_t *, picture_t *, picture_t * ); +static picture_t *I420_YMGA_Filter( filter_t *, picture_t * ); /***************************************************************************** * Module descriptor @@ -49,10 +52,10 @@ static void I420_YMGA ( vout_thread_t *, picture_t *, picture_t * ); vlc_module_begin(); #if defined (MODULE_NAME_IS_i420_ymga) set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ); - set_capability( "chroma", 80 ); + set_capability( "video filter2", 80 ); #elif defined (MODULE_NAME_IS_i420_ymga_mmx) set_description( N_("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) ); - set_capability( "chroma", 100 ); + set_capability( "video filter2", 100 ); add_requirement( MMX ); #endif set_callbacks( Activate, NULL ); @@ -65,22 +68,23 @@ vlc_module_end(); *****************************************************************************/ static int Activate( vlc_object_t *p_this ) { - vout_thread_t *p_vout = (vout_thread_t *)p_this; + filter_t *p_filter = (filter_t *)p_this; - if( p_vout->render.i_width & 1 || p_vout->render.i_height & 1 ) + if( p_filter->fmt_in.video.i_width & 1 + || p_filter->fmt_in.video.i_height & 1 ) { return -1; } - switch( p_vout->render.i_chroma ) + switch( p_filter->fmt_in.video.i_chroma ) { case VLC_FOURCC('Y','V','1','2'): case VLC_FOURCC('I','4','2','0'): case VLC_FOURCC('I','Y','U','V'): - switch( p_vout->output.i_chroma ) + switch( p_filter->fmt_out.video.i_chroma ) { case VLC_FOURCC('Y','M','G','A'): - p_vout->chroma.pf_convert = I420_YMGA; + p_filter->pf_video_filter = I420_YMGA_Filter; break; default: @@ -97,11 +101,13 @@ static int Activate( vlc_object_t *p_this ) /* Following functions are local */ +VIDEO_FILTER_WRAPPER( I420_YMGA ) + /***************************************************************************** * I420_YMGA: planar YUV 4:2:0 to Matrox's planar/packed YUV 4:2:0 *****************************************************************************/ -static void I420_YMGA( vout_thread_t *p_vout, picture_t *p_source, - picture_t *p_dest ) +static void I420_YMGA( filter_t *p_filter, picture_t *p_source, + picture_t *p_dest ) { uint8_t *p_uv = p_dest->U_PIXELS; uint8_t *p_u = p_source->U_PIXELS;