[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