v4l2object: Only use BT2020_12 for BT2020 v4l2 colorspace
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Mon, 9 Apr 2018 00:42:16 +0000 (20:42 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Thu, 12 Apr 2018 02:19:10 +0000 (22:19 -0400)
BT2020_12 is not represented in V4L2, so drivers providing full colority
for BT2020 will set V4L2_XFER_FUNC_709 transfer function. To fix the
issue, we bump this to BT2020_12 if the resoltion is 4K, but we should
only do that if the colorspace is BT2020 to start with, otherwise it's
not possible to use normal BT709 for 4K 8bit formats.

sys/v4l2/gstv4l2object.c

index 1b43e16..678f035 100644 (file)
@@ -2083,7 +2083,7 @@ gst_v4l2_object_get_colorspace (struct v4l2_format *fmt,
 
   switch (transfer) {
     case V4L2_XFER_FUNC_709:
-      if (fmt->fmt.pix.height >= 2160)
+      if (colorspace == V4L2_COLORSPACE_BT2020 && fmt->fmt.pix.height >= 2160)
         cinfo->transfer = GST_VIDEO_TRANSFER_BT2020_12;
       else
         cinfo->transfer = GST_VIDEO_TRANSFER_BT709;