[vlc-commits] android: fix green line issue when using an YUV surface in SW mode.

Felix Abecassis git at videolan.org
Thu Apr 3 19:48:22 CEST 2014


vlc | branch: master | Felix Abecassis <felix.abecassis at gmail.com> | Thu Apr  3 19:33:57 2014 +0200| [a5d9020b282d107e76259748f428ba93e34eca4f] | committer: Felix Abecassis

android: fix green line issue when using an YUV surface in SW mode.

The padding lines introduced by avcodec for direct rendering are set
to black since they might be used by Android during rescaling.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a5d9020b282d107e76259748f428ba93e34eca4f
---

 modules/video_output/android/surface.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/modules/video_output/android/surface.c b/modules/video_output/android/surface.c
index 8325fe5..bc51913 100644
--- a/modules/video_output/android/surface.c
+++ b/modules/video_output/android/surface.c
@@ -329,6 +329,13 @@ static void SetupPictureYV12( SurfaceInfo* p_surfaceInfo, picture_t *p_picture )
         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,



More information about the vlc-commits mailing list