X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fvideo_chroma%2Fi420_rgb.c;h=e74ec66eeea9352bc326b02950d6490158a4eadd;hb=139cf222f01e9d0f88d02d706618428b71147ba8;hp=28303f79a9eb5aa7f1a7929a944c0ada617064c2;hpb=9d5e75a7a5643a2144dc561fc246a7a3ca7e5fb0;p=vlc diff --git a/modules/video_chroma/i420_rgb.c b/modules/video_chroma/i420_rgb.c index 28303f79a9..e74ec66eee 100644 --- a/modules/video_chroma/i420_rgb.c +++ b/modules/video_chroma/i420_rgb.c @@ -35,10 +35,22 @@ #include #include #include +#include #include "i420_rgb.h" #if defined (MODULE_NAME_IS_i420_rgb) # include "i420_rgb_c.h" + static picture_t *I420_RGB8_Filter ( filter_t *, picture_t * ); +// static picture_t *I420_RGB16_dither_Filter ( filter_t *, picture_t * ); + static picture_t *I420_RGB16_Filter ( filter_t *, picture_t * ); + static picture_t *I420_RGB32_Filter ( filter_t *, picture_t * ); +#else + static picture_t *I420_R5G5B5_Filter ( filter_t *, picture_t * ); + static picture_t *I420_R5G6B5_Filter ( filter_t *, picture_t * ); + static picture_t *I420_A8R8G8B8_Filter ( filter_t *, picture_t * ); + static picture_t *I420_R8G8B8A8_Filter ( filter_t *, picture_t * ); + static picture_t *I420_B8G8R8A8_Filter ( filter_t *, picture_t * ); + static picture_t *I420_A8B8G8R8_Filter ( filter_t *, picture_t * ); #endif /***************************************************************************** @@ -72,16 +84,17 @@ vlc_module_begin () set_description( N_("I420,IYUV,YV12 to " "RGB2,RV15,RV16,RV24,RV32 conversions") ) set_capability( "video filter2", 80 ) +# define CPU_CAPABILITY 0 #elif defined (MODULE_NAME_IS_i420_rgb_mmx) set_description( N_( "MMX I420,IYUV,YV12 to " "RV15,RV16,RV24,RV32 conversions") ) set_capability( "video filter2", 100 ) - add_requirement( MMX ) +# define CPU_CAPABILITY CPU_CAPABILITY_MMX #elif defined (MODULE_NAME_IS_i420_rgb_sse2) set_description( N_( "SSE2 I420,IYUV,YV12 to " "RV15,RV16,RV24,RV32 conversions") ) set_capability( "video filter2", 120 ) - add_requirement( SSE2 ) +# define CPU_CAPABILITY CPU_CAPABILITY_SSE2 #endif set_callbacks( Activate, Deactivate ) vlc_module_end () @@ -98,6 +111,10 @@ static int Activate( vlc_object_t *p_this ) size_t i_tables_size; #endif +#if CPU_CAPABILITY + if( !(vlc_CPU() & CPU_CAPABILITY) ) + return VLC_EGENERIC; +#endif if( p_filter->fmt_out.video.i_width & 1 || p_filter->fmt_out.video.i_height & 1 ) { @@ -296,6 +313,7 @@ static void Deactivate( vlc_object_t *p_this ) #if defined (MODULE_NAME_IS_i420_rgb) VIDEO_FILTER_WRAPPER( I420_RGB8 ) VIDEO_FILTER_WRAPPER( I420_RGB16 ) +//VIDEO_FILTER_WRAPPER( I420_RGB16_dither ) VIDEO_FILTER_WRAPPER( I420_RGB32 ) #else VIDEO_FILTER_WRAPPER( I420_R5G5B5 )