[vlc-devel] [PATCH] picture_BlendSubpicture() : ensure the chromas are compatible

Rafaël Carré funman at videolan.org
Sat Nov 19 04:50:23 CET 2011


In this testcase the picture being blended is J420 and source is I420

fourcc.c says J420 is YUV_PLANAR_420, like I420
libavutil/pixdesc.c uses the same description for J420 & I420
552b93b46f79299a4b2d952bfd34e1d5eed7bbe0 says J420 & I420 are 'not exactly equal'
vlc_fourcc.h says:
    J420 /* Planar YUV 4:2:0 Y:U:V full scale */
    I420 /* Planar YUV 4:2:0 Y:U:V 8-bit */
  -> different pixel size? but video_format_Setup() says both have 12 bits per pixel
VoutDisplayCreateRender() assumes they are identical if source is J4** and video surface is I4**
libswscale assumes they are identical in its 'handle_jpeg' function
---
 src/misc/picture.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/src/misc/picture.c b/src/misc/picture.c
index 87876b0..1904e98 100644
--- a/src/misc/picture.c
+++ b/src/misc/picture.c
@@ -400,7 +400,11 @@ int picture_Export( vlc_object_t *p_obj,
 void picture_BlendSubpicture(picture_t *dst,
                              filter_t *blend, subpicture_t *src)
 {
-    assert(blend && dst && blend->fmt_out.video.i_chroma == dst->format.i_chroma);
+    assert(blend && dst &&
+        !memcmp(vlc_fourcc_GetChromaDescription(blend->fmt_out.video.i_chroma),
+                vlc_fourcc_GetChromaDescription(dst->format.i_chroma),
+                sizeof(vlc_chroma_description_t)));
+
     assert(src && !src->b_fade && src->b_absolute);
 
     for (subpicture_region_t *r = src->p_region; r != NULL; r = r->p_next) {
-- 
1.7.5.4



More information about the vlc-devel mailing list