From 757669481c980c3986b8351be6ef1fc7d16b4608 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 11 Mar 2015 09:47:23 +0100 Subject: [PATCH] video-converter: force yuv conversion for border Make sure we always do yuv conversion for the border. --- gst-libs/gst/video/video-converter.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/gst-libs/gst/video/video-converter.c b/gst-libs/gst/video/video-converter.c index 5c089adf51..b3165b2513 100644 --- a/gst-libs/gst/video/video-converter.c +++ b/gst-libs/gst/video/video-converter.c @@ -1202,12 +1202,13 @@ compute_matrix_to_RGB (GstVideoConverter * convert, MatrixData * data) } static void -compute_matrix_to_YUV (GstVideoConverter * convert, MatrixData * data) +compute_matrix_to_YUV (GstVideoConverter * convert, MatrixData * data, + gboolean force) { GstVideoInfo *info; gdouble Kr = 0, Kb = 0; - if (!convert->pack_rgb && !CHECK_MATRIX_NONE (convert)) { + if (force || (!convert->pack_rgb && !CHECK_MATRIX_NONE (convert))) { if (CHECK_MATRIX_INPUT (convert)) info = &convert->in_info; else @@ -1581,7 +1582,7 @@ chain_convert (GstVideoConverter * convert, GstLineCache * prev) color_matrix_debug (&convert->convert_matrix); GST_DEBUG ("to YUV matrix"); - compute_matrix_to_YUV (convert, &convert->convert_matrix); + compute_matrix_to_YUV (convert, &convert->convert_matrix, FALSE); GST_DEBUG ("current matrix"); color_matrix_debug (&convert->convert_matrix); if (convert->in_bits > convert->out_bits) { @@ -1731,7 +1732,7 @@ chain_convert_to_YUV (GstVideoConverter * convert, GstLineCache * prev) if (!convert->pack_rgb) { color_matrix_set_identity (&convert->to_YUV_matrix); - compute_matrix_to_YUV (convert, &convert->to_YUV_matrix); + compute_matrix_to_YUV (convert, &convert->to_YUV_matrix, FALSE); /* matrix is in 0..255 range, scale to pack bits */ GST_DEBUG ("chain YUV convert"); @@ -1938,7 +1939,7 @@ setup_borderline (GstVideoConverter * convert) /* Get Color matrix. */ color_matrix_set_identity (&cm); - compute_matrix_to_YUV (convert, &cm); + compute_matrix_to_YUV (convert, &cm, TRUE); color_matrix_convert (&cm); border_val = GINT32_FROM_BE (convert->border_argb); @@ -2354,7 +2355,7 @@ video_converter_compute_matrix (GstVideoConverter * convert) color_matrix_set_identity (dst); compute_matrix_to_RGB (convert, dst); - compute_matrix_to_YUV (convert, dst); + compute_matrix_to_YUV (convert, dst, FALSE); convert->current_bits = 8; prepare_matrix (convert, dst);