summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Zabel <p.zabel@pengutronix.de>2021-01-18 15:54:43 +0100
committerTim-Philipp Müller <tim@centricular.com>2021-03-12 16:59:31 +0000
commitda7e8d2146181880aceadf05a07199feea395182 (patch)
tree28aeeae80462b2681145ced05e6611499b5247da
parentda897aefffa141c22802686a2d454b68e5f0c83b (diff)
downloadgstreamer-plugins-good-da7e8d2146181880aceadf05a07199feea395182.tar.gz
v4l2object: handle GST_VIDEO_TRANSFER_BT601
V4L2 makes no difference between the BT.601 and BT.709 transfer functions [1], but GStreamer does since 1.18 [2]. Adapt gst_v4l2_object_get_colorspace() and gst_v4l2_object_set_format_full(). [1] https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/colorspaces-details.html#colorspace-smpte-170m-v4l2-colorspace-smpte170m [2] https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/900>
-rw-r--r--sys/v4l2/gstv4l2object.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c
index 479fa4914..65a7ff08f 100644
--- a/sys/v4l2/gstv4l2object.c
+++ b/sys/v4l2/gstv4l2object.c
@@ -2052,7 +2052,7 @@ gst_v4l2_object_get_colorspace (GstV4l2Object * v4l2object,
case V4L2_COLORSPACE_SMPTE170M:
cinfo->range = GST_VIDEO_COLOR_RANGE_16_235;
cinfo->matrix = GST_VIDEO_COLOR_MATRIX_BT601;
- cinfo->transfer = GST_VIDEO_TRANSFER_BT709;
+ cinfo->transfer = GST_VIDEO_TRANSFER_BT601;
cinfo->primaries = GST_VIDEO_COLOR_PRIMARIES_SMPTE170M;
break;
case V4L2_COLORSPACE_REC709:
@@ -2181,6 +2181,8 @@ gst_v4l2_object_get_colorspace (GstV4l2Object * v4l2object,
case V4L2_XFER_FUNC_709:
if (colorspace == V4L2_COLORSPACE_BT2020 && fmt->fmt.pix.height >= 2160)
cinfo->transfer = GST_VIDEO_TRANSFER_BT2020_12;
+ else if (colorspace == V4L2_COLORSPACE_SMPTE170M)
+ cinfo->transfer = GST_VIDEO_TRANSFER_BT601;
else
cinfo->transfer = GST_VIDEO_TRANSFER_BT709;
@@ -3577,6 +3579,7 @@ gst_v4l2_object_set_format_full (GstV4l2Object * v4l2object, GstCaps * caps,
case GST_VIDEO_TRANSFER_GAMMA10:
transfer = V4L2_XFER_FUNC_NONE;
break;
+ case GST_VIDEO_TRANSFER_BT601:
case GST_VIDEO_TRANSFER_BT2020_12:
case GST_VIDEO_TRANSFER_BT2020_10:
case GST_VIDEO_TRANSFER_BT709: