summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wtaymans@redhat.com>2015-03-11 08:47:23 (GMT)
committerWim Taymans <wtaymans@redhat.com>2015-03-11 08:47:23 (GMT)
commit757669481c980c3986b8351be6ef1fc7d16b4608 (patch)
treef5e907c1a522f62dee7057345c4ab31dd0a02e04
parentdd5fa311a1c71d9645df79fc36df2e4013455c78 (diff)
downloadgst-plugins-base-757669481c980c3986b8351be6ef1fc7d16b4608.tar.gz
gst-plugins-base-757669481c980c3986b8351be6ef1fc7d16b4608.tar.xz
video-converter: force yuv conversion for border
Make sure we always do yuv conversion for the border.
-rw-r--r--gst-libs/gst/video/video-converter.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/gst-libs/gst/video/video-converter.c b/gst-libs/gst/video/video-converter.c
index 5c089ad..b3165b2 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);