]> git.sesse.net Git - vlc/commitdiff
chroma: remove dead CYUV support
authorRémi Denis-Courmont <remi@remlab.net>
Thu, 29 Jan 2015 18:09:56 +0000 (20:09 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Thu, 29 Jan 2015 18:11:17 +0000 (20:11 +0200)
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.

modules/video_chroma/i420_yuy2.c
modules/video_chroma/i422_yuy2.c
modules/video_chroma/yuy2_i420.c
modules/video_chroma/yuy2_i422.c

index cd99dd652042b2fbea13a06af7153fad3d1a5f32..4584f9ea6de849b7e158b6b7ed79a1fb6bfe25dc 100644 (file)
 #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 <sam@zoy.org>" );
 }
-
-/*****************************************************************************
- * 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)
 
 /*****************************************************************************
index 383fb3e52cb43162b723da2db654b0a6e174f02e..9099cfc151a4434f764fba3c2dd8a31e1dfa788a 100644 (file)
@@ -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
@@ -455,104 +448,6 @@ static void I422_IUYV( filter_t *p_filter, picture_t *p_source,
     msg_Err( p_filter, "I422_IUYV unimplemented, please harass <sam@zoy.org>" );
 }
 
-/*****************************************************************************
- * 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
  *****************************************************************************/
index 134cfa56b2c985e264e4f806dea7822d154305dc..4adff8b0637557a03068ee211a933d31c63e1275 100644 (file)
@@ -33,7 +33,7 @@
 #include <vlc_plugin.h>
 #include <vlc_filter.h>
 
-#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;
-    }
-}
index 8ab149ea8d52d98dc22bd89026cc78611e1e34e8..d748be6dbbb1afcea0df810670145b314da15da1 100644 (file)
@@ -33,7 +33,7 @@
 #include <vlc_plugin.h>
 #include <vlc_filter.h>
 
-#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;
-    }
-}