diff --git a/vlc-backport-chroma_dead_CYUV.patch b/vlc-backport-chroma_dead_CYUV.patch new file mode 100644 index 0000000..55288a9 --- /dev/null +++ b/vlc-backport-chroma_dead_CYUV.patch @@ -0,0 +1,560 @@ +commit 5d17bd9d2db93b7a653f870232bf0c0e95a1de3c +Author: RĂ©mi Denis-Courmont +Date: Thu Jan 29 20:09:56 2015 +0200 + + chroma: remove dead CYUV support + + CYUV is not a pixel format, at least it is not treated as such in VLC + outputs and encoders. CYUV is decoded to YUV 4:1:1 by libavcodec. + +diff --git a/modules/video_chroma/i420_yuy2.c b/modules/video_chroma/i420_yuy2.c +index cd99dd6..4584f9e 100644 +--- a/modules/video_chroma/i420_yuy2.c ++++ b/modules/video_chroma/i420_yuy2.c +@@ -44,13 +44,13 @@ + #define SRC_FOURCC "I420,IYUV,YV12" + + #if defined (MODULE_NAME_IS_i420_yuy2) +-# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv,Y211" ++# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,Y211" + # define VLC_TARGET + #elif defined (MODULE_NAME_IS_i420_yuy2_mmx) +-# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv" ++# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV" + # define VLC_TARGET VLC_MMX + #elif defined (MODULE_NAME_IS_i420_yuy2_sse2) +-# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv" ++# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV" + # define VLC_TARGET VLC_SSE + #elif defined (MODULE_NAME_IS_i420_yuy2_altivec) + # define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422" +@@ -70,9 +70,7 @@ static picture_t *I420_YVYU_Filter ( filter_t *, picture_t * ); + static picture_t *I420_UYVY_Filter ( filter_t *, picture_t * ); + #if !defined (MODULE_NAME_IS_i420_yuy2_altivec) + static void I420_IUYV ( filter_t *, picture_t *, picture_t * ); +-static void I420_cyuv ( filter_t *, picture_t *, picture_t * ); + static picture_t *I420_IUYV_Filter ( filter_t *, picture_t * ); +-static picture_t *I420_cyuv_Filter ( filter_t *, picture_t * ); + #endif + #if defined (MODULE_NAME_IS_i420_yuy2) + static void I420_Y211 ( filter_t *, picture_t *, picture_t * ); +@@ -153,10 +151,6 @@ static int Activate( vlc_object_t *p_this ) + case VLC_FOURCC('I','U','Y','V'): + p_filter->pf_video_filter = I420_IUYV_Filter; + break; +- +- case VLC_CODEC_CYUV: +- p_filter->pf_video_filter = I420_cyuv_Filter; +- break; + #endif + + #if defined (MODULE_NAME_IS_i420_yuy2) +@@ -194,7 +188,6 @@ 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 ) +@@ -849,136 +842,6 @@ static void I420_IUYV( filter_t *p_filter, picture_t *p_source, + /* FIXME: TODO ! */ + msg_Err( p_filter, "I420_IUYV unimplemented, please harass " ); + } +- +-/***************************************************************************** +- * I420_cyuv: planar YUV 4:2:0 to upside-down packed UYVY 4:2:2 +- *****************************************************************************/ +-VLC_TARGET +-static void I420_cyuv( filter_t *p_filter, picture_t *p_source, +- picture_t *p_dest ) +-{ +- uint8_t *p_line1 = p_dest->p->p_pixels + +- p_dest->p->i_visible_lines * p_dest->p->i_pitch +- + p_dest->p->i_pitch; +- uint8_t *p_line2 = p_dest->p->p_pixels + +- p_dest->p->i_visible_lines * p_dest->p->i_pitch; +- uint8_t *p_y1, *p_y2 = p_source->Y_PIXELS; +- uint8_t *p_u = p_source->U_PIXELS; +- uint8_t *p_v = p_source->V_PIXELS; +- +- int i_x, i_y; +- +- const int i_source_margin = p_source->p[0].i_pitch +- - p_source->p[0].i_visible_pitch; +- const int i_source_margin_c = p_source->p[1].i_pitch +- - p_source->p[1].i_visible_pitch; +- const int i_dest_margin = p_dest->p->i_pitch +- - p_dest->p->i_visible_pitch; +- +-#if !defined(MODULE_NAME_IS_i420_yuy2_sse2) +- for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) +- { +- p_line1 -= 3 * p_dest->p->i_pitch; +- p_line2 -= 3 * p_dest->p->i_pitch; +- +- p_y1 = p_y2; +- p_y2 += p_source->p[Y_PLANE].i_pitch; +- +- for( i_x = p_filter->fmt_in.video.i_width / 8 ; i_x-- ; ) +- { +-#if !defined (MODULE_NAME_IS_i420_yuy2_mmx) +- C_YUV420_UYVY( ); +- C_YUV420_UYVY( ); +- C_YUV420_UYVY( ); +- C_YUV420_UYVY( ); +-#else +- MMX_CALL( MMX_YUV420_UYVY ); +-#endif +- } +- for( i_x = ( p_filter->fmt_in.video.i_width % 8 ) / 2; i_x-- ; ) +- { +- C_YUV420_UYVY( ); +- } +- +- p_y1 += i_source_margin; +- p_y2 += i_source_margin; +- p_u += i_source_margin_c; +- p_v += i_source_margin_c; +- p_line1 += i_dest_margin; +- p_line2 += i_dest_margin; +- } +- +-#if defined (MODULE_NAME_IS_i420_yuy2_mmx) +- /* re-enable FPU registers */ +- MMX_END; +-#endif +- +-#else // defined(MODULE_NAME_IS_i420_yuy2_sse2) +- /* +- ** SSE2 128 bits fetch/store instructions are faster +- ** if memory access is 16 bytes aligned +- */ +- if( 0 == (15 & (p_source->p[Y_PLANE].i_pitch|p_dest->p->i_pitch| +- ((intptr_t)p_line2|(intptr_t)p_y2))) ) +- { +- /* use faster SSE2 aligned fetch and store */ +- for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) +- { +- p_line1 = p_line2; +- p_line2 += p_dest->p->i_pitch; +- +- p_y1 = p_y2; +- p_y2 += p_source->p[Y_PLANE].i_pitch; +- +- for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) +- { +- SSE2_CALL( SSE2_YUV420_UYVY_ALIGNED ); +- } +- for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) +- { +- C_YUV420_UYVY( ); +- } +- +- p_y1 += i_source_margin; +- p_y2 += i_source_margin; +- p_u += i_source_margin_c; +- p_v += i_source_margin_c; +- p_line1 += i_dest_margin; +- p_line2 += i_dest_margin; +- } +- } +- else +- { +- /* use slower SSE2 unaligned fetch and store */ +- for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) +- { +- p_line1 = p_line2; +- p_line2 += p_dest->p->i_pitch; +- +- p_y1 = p_y2; +- p_y2 += p_source->p[Y_PLANE].i_pitch; +- +- for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) +- { +- SSE2_CALL( SSE2_YUV420_UYVY_UNALIGNED ); +- } +- for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) +- { +- C_YUV420_UYVY( ); +- } +- +- p_y1 += i_source_margin; +- p_y2 += i_source_margin; +- p_u += i_source_margin_c; +- p_v += i_source_margin_c; +- p_line1 += i_dest_margin; +- p_line2 += i_dest_margin; +- } +- } +- /* make sure all SSE2 stores are visible thereafter */ +- SSE2_END; +-#endif // defined(MODULE_NAME_IS_i420_yuy2_sse2) +-} + #endif // !defined (MODULE_NAME_IS_i420_yuy2_altivec) + + /***************************************************************************** +diff --git a/modules/video_chroma/i422_yuy2.c b/modules/video_chroma/i422_yuy2.c +index 383fb3e..9099cfc 100644 +--- a/modules/video_chroma/i422_yuy2.c ++++ b/modules/video_chroma/i422_yuy2.c +@@ -39,9 +39,9 @@ + + #define SRC_FOURCC "I422" + #if defined (MODULE_NAME_IS_i422_yuy2) +-# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv,Y211" ++# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,Y211" + #else +-# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv" ++# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV" + #endif + + /***************************************************************************** +@@ -53,12 +53,10 @@ static void I422_YUY2 ( filter_t *, picture_t *, picture_t * ); + static void I422_YVYU ( filter_t *, picture_t *, picture_t * ); + static void I422_UYVY ( filter_t *, picture_t *, picture_t * ); + static void I422_IUYV ( filter_t *, picture_t *, picture_t * ); +-static void I422_cyuv ( filter_t *, picture_t *, picture_t * ); + static picture_t *I422_YUY2_Filter ( filter_t *, picture_t * ); + static picture_t *I422_YVYU_Filter ( filter_t *, picture_t * ); + static picture_t *I422_UYVY_Filter ( filter_t *, picture_t * ); + static picture_t *I422_IUYV_Filter ( filter_t *, picture_t * ); +-static picture_t *I422_cyuv_Filter ( filter_t *, picture_t * ); + #if defined (MODULE_NAME_IS_i422_yuy2) + static void I422_Y211 ( filter_t *, picture_t *, picture_t * ); + static picture_t *I422_Y211_Filter ( filter_t *, picture_t * ); +@@ -130,10 +128,6 @@ static int Activate( vlc_object_t *p_this ) + p_filter->pf_video_filter = I422_IUYV_Filter; + break; + +- case VLC_CODEC_CYUV: +- p_filter->pf_video_filter = I422_cyuv_Filter; +- break; +- + #if defined (MODULE_NAME_IS_i422_yuy2) + case VLC_CODEC_Y211: + p_filter->pf_video_filter = I422_Y211_Filter; +@@ -157,7 +151,6 @@ VIDEO_FILTER_WRAPPER( I422_YUY2 ) + VIDEO_FILTER_WRAPPER( I422_YVYU ) + VIDEO_FILTER_WRAPPER( I422_UYVY ) + VIDEO_FILTER_WRAPPER( I422_IUYV ) +-VIDEO_FILTER_WRAPPER( I422_cyuv ) + #if defined (MODULE_NAME_IS_i422_yuy2) + VIDEO_FILTER_WRAPPER( I422_Y211 ) + #endif +@@ -456,104 +449,6 @@ static void I422_IUYV( filter_t *p_filter, picture_t *p_source, + } + + /***************************************************************************** +- * I422_cyuv: planar YUV 4:2:2 to upside-down packed UYVY 4:2:2 +- *****************************************************************************/ +-VLC_TARGET +-static void I422_cyuv( filter_t *p_filter, picture_t *p_source, +- picture_t *p_dest ) +-{ +- uint8_t *p_line = p_dest->p->p_pixels + p_dest->p->i_visible_lines * p_dest->p->i_pitch; +- uint8_t *p_y = p_source->Y_PIXELS; +- uint8_t *p_u = p_source->U_PIXELS; +- uint8_t *p_v = p_source->V_PIXELS; +- +- int i_x, i_y; +- +- const int i_source_margin = p_source->p[0].i_pitch +- - p_source->p[0].i_visible_pitch; +- const int i_source_margin_c = p_source->p[1].i_pitch +- - p_source->p[1].i_visible_pitch; +- const int i_dest_margin = p_dest->p->i_pitch +- - p_dest->p->i_visible_pitch; +- +-#if defined (MODULE_NAME_IS_i422_yuy2_sse2) +- +- if( 0 == (15 & (p_source->p[Y_PLANE].i_pitch|p_dest->p->i_pitch| +- ((intptr_t)p_line|(intptr_t)p_y))) ) +- { +- /* use faster SSE2 aligned fetch and store */ +- for( i_y = p_filter->fmt_in.video.i_height ; i_y-- ; ) +- { +- p_line -= 2 * p_dest->p->i_pitch; +- +- for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) +- { +- SSE2_CALL( SSE2_YUV422_UYVY_ALIGNED ); +- } +- for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) +- { +- C_YUV422_UYVY( p_line, p_y, p_u, p_v ); +- } +- p_y += i_source_margin; +- p_u += i_source_margin_c; +- p_v += i_source_margin_c; +- p_line += i_dest_margin; +- } +- } +- else { +- /* use slower SSE2 unaligned fetch and store */ +- for( i_y = p_filter->fmt_in.video.i_height ; i_y-- ; ) +- { +- p_line -= 2 * p_dest->p->i_pitch; +- +- for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) +- { +- SSE2_CALL( SSE2_YUV422_UYVY_UNALIGNED ); +- } +- for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) +- { +- C_YUV422_UYVY( p_line, p_y, p_u, p_v ); +- } +- p_y += i_source_margin; +- p_u += i_source_margin_c; +- p_v += i_source_margin_c; +- p_line += i_dest_margin; +- } +- } +- SSE2_END; +- +-#else +- +- for( i_y = p_filter->fmt_in.video.i_height ; i_y-- ; ) +- { +- for( i_x = p_filter->fmt_in.video.i_width / 8 ; i_x-- ; ) +- { +- p_line -= 2 * p_dest->p->i_pitch; +- +-#if defined (MODULE_NAME_IS_i422_yuy2) +- C_YUV422_UYVY( p_line, p_y, p_u, p_v ); +- C_YUV422_UYVY( p_line, p_y, p_u, p_v ); +- C_YUV422_UYVY( p_line, p_y, p_u, p_v ); +- C_YUV422_UYVY( p_line, p_y, p_u, p_v ); +-#elif defined (MODULE_NAME_IS_i422_yuy2_mmx) +- MMX_CALL( MMX_YUV422_UYVY ); +-#endif +- } +- p_y += i_source_margin; +- p_u += i_source_margin_c; +- p_v += i_source_margin_c; +- p_line += i_dest_margin; +- } +-#if defined (MODULE_NAME_IS_i422_yuy2_mmx) +- MMX_END; +-#elif defined (MODULE_NAME_IS_i422_yuy2_sse2) +- SSE2_END; +-#endif +- +-#endif +-} +- +-/***************************************************************************** + * I422_Y211: planar YUV 4:2:2 to packed YUYV 2:1:1 + *****************************************************************************/ + #if defined (MODULE_NAME_IS_i422_yuy2) +diff --git a/modules/video_chroma/yuy2_i420.c b/modules/video_chroma/yuy2_i420.c +index 134cfa5..4adff8b 100644 +--- a/modules/video_chroma/yuy2_i420.c ++++ b/modules/video_chroma/yuy2_i420.c +@@ -33,7 +33,7 @@ + #include + #include + +-#define SRC_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,cyuv" ++#define SRC_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422" + #define DEST_FOURCC "I420" + + /***************************************************************************** +@@ -44,12 +44,10 @@ static int Activate ( vlc_object_t * ); + static void YUY2_I420 ( filter_t *, picture_t *, picture_t * ); + static void YVYU_I420 ( filter_t *, picture_t *, picture_t * ); + static void UYVY_I420 ( filter_t *, picture_t *, picture_t * ); +-static void cyuv_I420 ( filter_t *, picture_t *, picture_t * ); + + static picture_t *YUY2_I420_Filter ( filter_t *, picture_t * ); + static picture_t *YVYU_I420_Filter ( filter_t *, picture_t * ); + static picture_t *UYVY_I420_Filter ( filter_t *, picture_t * ); +-static picture_t *cyuv_I420_Filter ( filter_t *, picture_t * ); + + /***************************************************************************** + * Module descriptor +@@ -97,10 +95,6 @@ static int Activate( vlc_object_t *p_this ) + p_filter->pf_video_filter = UYVY_I420_Filter; + break; + +- case VLC_CODEC_CYUV: +- p_filter->pf_video_filter = cyuv_I420_Filter; +- break; +- + default: + return -1; + } +@@ -116,7 +110,6 @@ static int Activate( vlc_object_t *p_this ) + VIDEO_FILTER_WRAPPER( YUY2_I420 ) + VIDEO_FILTER_WRAPPER( YVYU_I420 ) + VIDEO_FILTER_WRAPPER( UYVY_I420 ) +-VIDEO_FILTER_WRAPPER( cyuv_I420 ) + + /***************************************************************************** + * YUY2_I420: packed YUY2 4:2:2 to planar YUV 4:2:0 +@@ -321,72 +314,3 @@ static void UYVY_I420( filter_t *p_filter, picture_t *p_source, + b_skip = !b_skip; + } + } +- +-/***************************************************************************** +- * cyuv_I420: upside-down packed UYVY 4:2:2 to planar YUV 4:2:0 +- * FIXME +- *****************************************************************************/ +-static void cyuv_I420( filter_t *p_filter, picture_t *p_source, +- picture_t *p_dest ) +-{ +- uint8_t *p_line = p_source->p->p_pixels; +- +- uint8_t *p_y = p_dest->Y_PIXELS; +- uint8_t *p_u = p_dest->U_PIXELS; +- uint8_t *p_v = p_dest->V_PIXELS; +- +- int i_x, i_y; +- +- const int i_dest_margin = p_dest->p[0].i_pitch +- - p_dest->p[0].i_visible_pitch; +- const int i_dest_margin_c = p_dest->p[1].i_pitch +- - p_dest->p[1].i_visible_pitch; +- const int i_source_margin = p_source->p->i_pitch +- - p_source->p->i_visible_pitch; +- +- bool b_skip = false; +- +- for( i_y = p_filter->fmt_out.video.i_height ; i_y-- ; ) +- { +- if( b_skip ) +- { +- for( i_x = p_filter->fmt_out.video.i_width / 8 ; i_x-- ; ) +- { +- #define C_cyuv_YUV422_skip( p_line, p_y, p_u, p_v ) \ +- *p_y++ = *p_line++; p_line++; \ +- *p_y++ = *p_line++; p_line++ +- C_cyuv_YUV422_skip( p_line, p_y, p_u, p_v ); +- C_cyuv_YUV422_skip( p_line, p_y, p_u, p_v ); +- C_cyuv_YUV422_skip( p_line, p_y, p_u, p_v ); +- C_cyuv_YUV422_skip( p_line, p_y, p_u, p_v ); +- } +- for( i_x = ( p_filter->fmt_out.video.i_width % 8 ) / 2; i_x-- ; ) +- { +- C_cyuv_YUV422_skip( p_line, p_y, p_u, p_v ); +- } +- } +- else +- { +- for( i_x = p_filter->fmt_out.video.i_width / 8 ; i_x-- ; ) +- { +- #define C_cyuv_YUV422( p_line, p_y, p_u, p_v ) \ +- *p_y++ = *p_line++; *p_v++ = *p_line++; \ +- *p_y++ = *p_line++; *p_u++ = *p_line++ +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- } +- for( i_x = ( p_filter->fmt_out.video.i_width % 8 ) / 2; i_x-- ; ) +- { +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- } +- } +- p_line += i_source_margin; +- p_y += i_dest_margin; +- p_u += i_dest_margin_c; +- p_v += i_dest_margin_c; +- +- b_skip = !b_skip; +- } +-} +diff --git a/modules/video_chroma/yuy2_i422.c b/modules/video_chroma/yuy2_i422.c +index 8ab149e..d748be6 100644 +--- a/modules/video_chroma/yuy2_i422.c ++++ b/modules/video_chroma/yuy2_i422.c +@@ -33,7 +33,7 @@ + #include + #include + +-#define SRC_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,cyuv" ++#define SRC_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422" + #define DEST_FOURCC "I422" + + /***************************************************************************** +@@ -44,11 +44,9 @@ static int Activate ( vlc_object_t * ); + static void YUY2_I422 ( filter_t *, picture_t *, picture_t * ); + static void YVYU_I422 ( filter_t *, picture_t *, picture_t * ); + static void UYVY_I422 ( filter_t *, picture_t *, picture_t * ); +-static void cyuv_I422 ( filter_t *, picture_t *, picture_t * ); + static picture_t *YUY2_I422_Filter ( filter_t *, picture_t * ); + static picture_t *YVYU_I422_Filter ( filter_t *, picture_t * ); + static picture_t *UYVY_I422_Filter ( filter_t *, picture_t * ); +-static picture_t *cyuv_I422_Filter ( filter_t *, picture_t * ); + + /***************************************************************************** + * Module descriptor +@@ -96,10 +94,6 @@ static int Activate( vlc_object_t *p_this ) + p_filter->pf_video_filter = UYVY_I422_Filter; + break; + +- case VLC_CODEC_CYUV: +- p_filter->pf_video_filter = cyuv_I422_Filter; +- break; +- + default: + return -1; + } +@@ -116,7 +110,6 @@ static int Activate( vlc_object_t *p_this ) + VIDEO_FILTER_WRAPPER( YUY2_I422 ) + VIDEO_FILTER_WRAPPER( YVYU_I422 ) + VIDEO_FILTER_WRAPPER( UYVY_I422 ) +-VIDEO_FILTER_WRAPPER( cyuv_I422 ) + + /***************************************************************************** + * YUY2_I422: packed YUY2 4:2:2 to planar YUV 4:2:2 +@@ -249,48 +242,3 @@ static void UYVY_I422( filter_t *p_filter, picture_t *p_source, + p_v += i_dest_margin_c; + } + } +- +-/***************************************************************************** +- * cyuv_I422: upside-down packed UYVY 4:2:2 to planar YUV 4:2:2 +- * FIXME +- *****************************************************************************/ +-static void cyuv_I422( filter_t *p_filter, picture_t *p_source, +- picture_t *p_dest ) +-{ +- uint8_t *p_line = p_source->p->p_pixels; +- +- uint8_t *p_y = p_dest->Y_PIXELS; +- uint8_t *p_u = p_dest->U_PIXELS; +- uint8_t *p_v = p_dest->V_PIXELS; +- +- int i_x, i_y; +- +- const int i_dest_margin = p_dest->p[0].i_pitch +- - p_dest->p[0].i_visible_pitch; +- const int i_dest_margin_c = p_dest->p[1].i_pitch +- - p_dest->p[1].i_visible_pitch; +- const int i_source_margin = p_source->p->i_pitch +- - p_source->p->i_visible_pitch; +- +- for( i_y = p_filter->fmt_out.video.i_height ; i_y-- ; ) +- { +- for( i_x = p_filter->fmt_out.video.i_width / 8 ; i_x-- ; ) +- { +-#define C_cyuv_YUV422( p_line, p_y, p_u, p_v ) \ +- *p_y++ = *p_line++; *p_v++ = *p_line++; \ +- *p_y++ = *p_line++; *p_u++ = *p_line++ +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- } +- for( i_x = ( p_filter->fmt_out.video.i_width % 8 ) / 2; i_x-- ; ) +- { +- C_cyuv_YUV422( p_line, p_y, p_u, p_v ); +- } +- p_line += i_source_margin; +- p_y += i_dest_margin; +- p_u += i_dest_margin_c; +- p_v += i_dest_margin_c; +- } +-} diff --git a/vlc-video_chroma-sse2.patch b/vlc-video_chroma-sse2.patch new file mode 100644 index 0000000..e7d1ec1 --- /dev/null +++ b/vlc-video_chroma-sse2.patch @@ -0,0 +1,33 @@ +commit 0dd405cca1425b3496e0659c7b124cb188cf3166 +Author: Nicolas Chauvet +Date: Sun Apr 26 23:01:57 2015 +0200 + + Fix SSE caling convention without SSE/SSE2 enabled + + video_chroma/i420_yuy2.c: In function 'I420_YVYU_Filter': + video_chroma/i420_yuy2.c:187:23: error: calling 'I420_YVYU.isra.1' + with SSE caling convention without SSE/SSE2 enabled + VIDEO_FILTER_WRAPPER( I420_YVYU ) + ^ + ../include/vlc_filter.h:266:13: note: in definition of macro 'VIDEO_FILTER_WRAPPER' + name( p_filter, p_pic, p_outpic ); \ + ^ + +diff --git a/modules/video_chroma/Makefile.am b/modules/video_chroma/Makefile.am +index aa1a826..b1bb426 100644 +--- a/modules/video_chroma/Makefile.am ++++ b/modules/video_chroma/Makefile.am +@@ -84,11 +84,11 @@ libi420_rgb_sse2_plugin_la_SOURCES = video_chroma/i420_rgb.c video_chroma/i420_r + libi420_rgb_sse2_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DSSE2 + + libi420_yuy2_sse2_plugin_la_SOURCES = video_chroma/i420_yuy2.c video_chroma/i420_yuy2.h +-libi420_yuy2_sse2_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) \ ++libi420_yuy2_sse2_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DSSE2 \ + -DMODULE_NAME_IS_i420_yuy2_sse2 + + libi422_yuy2_sse2_plugin_la_SOURCES = video_chroma/i422_yuy2.c video_chroma/i422_yuy2.h +-libi422_yuy2_sse2_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) \ ++libi422_yuy2_sse2_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DSSE2 \ + -DMODULE_NAME_IS_i422_yuy2_sse2 + + if HAVE_SSE2 diff --git a/vlc.spec b/vlc.spec index 5257518..e68f4c1 100644 --- a/vlc.spec +++ b/vlc.spec @@ -38,6 +38,8 @@ Group: Applications/Multimedia URL: http://www.videolan.org Source0: http://download.videolan.org/pub/videolan/vlc/%{version}/vlc-%{version}%{?vlc_rc}.tar.xz Patch0: vlc-backport-freerdp.patch +Patch1: vlc-backport-chroma_dead_CYUV.patch +Patch2: vlc-video_chroma-sse2.patch BuildRequires: desktop-file-utils @@ -219,6 +221,8 @@ JACK audio plugin for the VLC media player. %prep %setup -q -n %{name}-%{version}%{?vlc_rc} %patch0 -p1 +%patch1 -p1 +%patch2 -p1 -b .sse2 %{?_with_bootstrap: rm aclocal.m4 m4/lib*.m4 m4/lt*.m4 || : ./bootstrap