summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHou Qi <qi.hou@nxp.com>2021-03-26 16:26:22 +0800
committerTim-Philipp Müller <tim@centricular.com>2021-04-01 10:17:34 +0100
commitd2b82cd8c476615b176da56c137543d84c7c7fad (patch)
tree44cd6d61522dd2e331541e377f7e82840a5ff568
parentb80518152799385fc31ac8fce086541ff1b97812 (diff)
downloadgstreamer-plugins-good-d2b82cd8c476615b176da56c137543d84c7c7fad.tar.gz
v4l2object: Use default colorimetry if that in caps is unknown
Some streams have unknown colorimetry in caps, but v4l2object sets default values for each primaries. It will cause check colorimetry fail when do gst_v4l2_video_colorimetry_matches(). To fix this, need to keep the unknown colorimetry in caps same as the default value set by v4l2object. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/930>
-rw-r--r--sys/v4l2/gstv4l2object.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c
index 321a5dcf6..1e465af92 100644
--- a/sys/v4l2/gstv4l2object.c
+++ b/sys/v4l2/gstv4l2object.c
@@ -3394,6 +3394,16 @@ gst_v4l2_video_colorimetry_matches (const GstVideoColorimetry * cinfo,
if (!gst_video_info_from_caps (&info, caps))
return FALSE;
+ /* if colorimetry in caps is unknown, use the default one */
+ if (info.colorimetry.primaries == GST_VIDEO_COLOR_PRIMARIES_UNKNOWN)
+ info.colorimetry.primaries = cinfo->primaries;
+ if (info.colorimetry.range == GST_VIDEO_COLOR_RANGE_UNKNOWN)
+ info.colorimetry.range = cinfo->range;
+ if (info.colorimetry.matrix == GST_VIDEO_COLOR_MATRIX_UNKNOWN)
+ info.colorimetry.matrix = cinfo->matrix;
+ if (info.colorimetry.transfer == GST_VIDEO_TRANSFER_UNKNOWN)
+ info.colorimetry.transfer = cinfo->transfer;
+
if (gst_video_colorimetry_is_equal (&info.colorimetry, cinfo))
return TRUE;