[vlc-devel] [PATCH] android/surface: drop YV12 support

Thomas Guillem thomas at gllm.fr
Mon Nov 17 10:45:28 CET 2014


YV12 not implemented before gingerbread.
---
 modules/video_output/android/surface.c | 48 +++-------------------------------
 1 file changed, 3 insertions(+), 45 deletions(-)

diff --git a/modules/video_output/android/surface.c b/modules/video_output/android/surface.c
index 4755152..bd10618 100644
--- a/modules/video_output/android/surface.c
+++ b/modules/video_output/android/surface.c
@@ -225,19 +225,15 @@ static int Open(vlc_object_t *p_this)
         fmt.i_chroma = VLC_CODEC_RGB32;
 
     switch(fmt.i_chroma) {
-        case VLC_CODEC_YV12:
-            /* avoid swscale usage by asking for I420 instead since the
-             * vout already has code to swap the buffers */
-            fmt.i_chroma = VLC_CODEC_I420;
-        case VLC_CODEC_I420:
-            break;
-
         case VLC_CODEC_RGB16:
             fmt.i_bmask = 0x0000001f;
             fmt.i_gmask = 0x000007e0;
             fmt.i_rmask = 0x0000f800;
             break;
 
+        case VLC_CODEC_YV12:
+        case VLC_CODEC_I420:
+            fmt.i_chroma = VLC_CODEC_RGB32;
         case VLC_CODEC_RGB32:
             fmt.i_rmask  = 0x000000ff;
             fmt.i_gmask  = 0x0000ff00;
@@ -324,41 +320,6 @@ static picture_pool_t *Pool(vout_display_t *vd, unsigned count)
     return vd->sys->pool;
 }
 
-#define ALIGN_16_PIXELS( x ) ( ( ( x ) + 15 ) / 16 * 16 )
-static void SetupPictureYV12( SurfaceInfo* p_surfaceInfo, picture_t *p_picture )
-{
-    /* according to document of android.graphics.ImageFormat.YV12 */
-    int i_stride = ALIGN_16_PIXELS( p_surfaceInfo->s );
-    int i_c_stride = ALIGN_16_PIXELS( i_stride / 2 );
-
-    p_picture->p->i_pitch = i_stride;
-
-    /* Fill chroma planes for planar YUV */
-    for( int n = 1; n < p_picture->i_planes; n++ )
-    {
-        const plane_t *o = &p_picture->p[n-1];
-        plane_t *p = &p_picture->p[n];
-
-        p->p_pixels = o->p_pixels + o->i_lines * o->i_pitch;
-        p->i_pitch  = i_c_stride;
-        p->i_lines  = p_picture->format.i_height / 2;
-        /*
-          Explicitly set the padding lines of the picture to black (127 for YUV)
-          since they might be used by Android during rescaling.
-        */
-        int visible_lines = p_picture->format.i_visible_height / 2;
-        if (visible_lines < p->i_lines)
-            memset(&p->p_pixels[visible_lines * p->i_pitch], 127, (p->i_lines - visible_lines) * p->i_pitch);
-    }
-
-    if( vlc_fourcc_AreUVPlanesSwapped( p_picture->format.i_chroma,
-                                       VLC_CODEC_YV12 ) ) {
-        uint8_t *p_tmp = p_picture->p[1].p_pixels;
-        p_picture->p[1].p_pixels = p_picture->p[2].p_pixels;
-        p_picture->p[2].p_pixels = p_tmp;
-    }
-}
-
 static int  AndroidLockSurface(picture_t *picture)
 {
     picture_sys_t *picsys = picture->p_sys;
@@ -414,9 +375,6 @@ static int  AndroidLockSurface(picture_t *picture)
     picture->p[0].i_lines = info->h;
     picture->p[0].i_pitch = picture->p[0].i_pixel_pitch * info->s;
 
-    if (info->format == 0x32315659 /*ANDROID_IMAGE_FORMAT_YV12*/)
-        SetupPictureYV12(info, picture);
-
     return VLC_SUCCESS;
 }
 
-- 
2.1.1




More information about the vlc-devel mailing list