X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_chroma%2Fi420_yuy2.c;h=09a904f951593daaf124516cc71212867c77e361;hb=c12acbd7d48431d7b5029d765e69e87378aca7a2;hp=4aedfff4b30293313254c2e1a17db1daa3dad5fd;hpb=218efb93081e39e66b44a78d728847e1a3679db1;p=vlc diff --git a/modules/video_chroma/i420_yuy2.c b/modules/video_chroma/i420_yuy2.c index 4aedfff4b3..09a904f951 100644 --- a/modules/video_chroma/i420_yuy2.c +++ b/modules/video_chroma/i420_yuy2.c @@ -33,7 +33,6 @@ #include #include #include -#include #if defined (MODULE_NAME_IS_i420_yuy2_altivec) && defined(HAVE_ALTIVEC_H) # include @@ -84,26 +83,23 @@ static const uint64_t i_80w = 0x0000000080808080ULL; /***************************************************************************** * Module descriptor. *****************************************************************************/ -vlc_module_begin(); +vlc_module_begin () #if defined (MODULE_NAME_IS_i420_yuy2) - set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ); - set_capability( "video filter2", 80 ); + set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ) + set_capability( "video filter2", 80 ) #elif defined (MODULE_NAME_IS_i420_yuy2_mmx) - set_description( N_("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) ); - set_capability( "video filter2", 100 ); - add_requirement( MMX ); + set_description( N_("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) ) + set_capability( "video filter2", 160 ) #elif defined (MODULE_NAME_IS_i420_yuy2_sse2) - set_description( N_("SSE2 conversions from " SRC_FOURCC " to " DEST_FOURCC) ); - set_capability( "video filter2", 120 ); - add_requirement( SSE2 ); + set_description( N_("SSE2 conversions from " SRC_FOURCC " to " DEST_FOURCC) ) + set_capability( "video filter2", 250 ) #elif defined (MODULE_NAME_IS_i420_yuy2_altivec) set_description( _("AltiVec conversions from " SRC_FOURCC " to " DEST_FOURCC) ); - set_capability( "video filter2", 100 ); - add_requirement( ALTIVEC ); + set_capability( "video filter2", 250 ) #endif - set_callbacks( Activate, NULL ); -vlc_module_end(); + set_callbacks( Activate, NULL ) +vlc_module_end () /***************************************************************************** * Activate: allocate a chroma function @@ -120,25 +116,25 @@ static int Activate( vlc_object_t *p_this ) return -1; } + if( 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 ) + return -1; + 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'): + case VLC_CODEC_YV12: + case VLC_CODEC_I420: switch( p_filter->fmt_out.video.i_chroma ) { - case VLC_FOURCC('Y','U','Y','2'): - case VLC_FOURCC('Y','U','N','V'): + case VLC_CODEC_YUYV: p_filter->pf_video_filter = I420_YUY2_Filter; break; - case VLC_FOURCC('Y','V','Y','U'): + case VLC_CODEC_YVYU: p_filter->pf_video_filter = I420_YVYU_Filter; break; - case VLC_FOURCC('U','Y','V','Y'): - case VLC_FOURCC('U','Y','N','V'): - case VLC_FOURCC('Y','4','2','2'): + case VLC_CODEC_UYVY: p_filter->pf_video_filter = I420_UYVY_Filter; break; #if !defined (MODULE_NAME_IS_i420_yuy2_altivec) @@ -146,13 +142,13 @@ static int Activate( vlc_object_t *p_this ) p_filter->pf_video_filter = I420_IUYV_Filter; break; - case VLC_FOURCC('c','y','u','v'): + case VLC_CODEC_CYUV: p_filter->pf_video_filter = I420_cyuv_Filter; break; #endif #if defined (MODULE_NAME_IS_i420_yuy2) - case VLC_FOURCC('Y','2','1','1'): + case VLC_CODEC_Y211: p_filter->pf_video_filter = I420_Y211_Filter; break; #endif @@ -186,6 +182,7 @@ VIDEO_FILTER_WRAPPER( I420_YVYU ) VIDEO_FILTER_WRAPPER( I420_UYVY ) #if !defined (MODULE_NAME_IS_i420_yuy2_altivec) VIDEO_FILTER_WRAPPER( I420_IUYV ) +VIDEO_FILTER_WRAPPER( I420_cyuv ) #endif #if defined (MODULE_NAME_IS_i420_yuy2) VIDEO_FILTER_WRAPPER( I420_Y211 ) @@ -244,6 +241,8 @@ static void I420_YUY2( filter_t *p_filter, picture_t *p_source, } } } +#warning FIXME: converting widths % 16 but !widths % 32 is broken on altivec +#if 0 else if( !( ( p_filter->fmt_in.video.i_width % 16 ) | ( p_filter->fmt_in.video.i_height % 4 ) ) ) { @@ -252,7 +251,7 @@ static void I420_YUY2( filter_t *p_filter, picture_t *p_source, { /* Line 1 and 2, pixels 0 to ( width - 16 ) */ VEC_NEXT_LINES( ); - for( i_x = p_fiter->fmt_in.video.i_width / 32 ; i_x-- ; ) + for( i_x = p_filter->fmt_in.video.i_width / 32 ; i_x-- ; ) { VEC_LOAD_UV( ); VEC_MERGE( vec_mergeh ); @@ -276,6 +275,7 @@ static void I420_YUY2( filter_t *p_filter, picture_t *p_source, } } } +#endif else { /* Crap, use the C version */