From 420a90b00bae0457c3d34d90c9b6de578b333923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 20 Aug 2021 11:58:32 +0300 Subject: [PATCH] Add NTSC/PAL widescreen formats always to the template caps --- gstajacommon.cpp | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/gstajacommon.cpp b/gstajacommon.cpp index ce1b01cd49..8b9efff32a 100644 --- a/gstajacommon.cpp +++ b/gstajacommon.cpp @@ -166,33 +166,34 @@ GstCaps *gst_ntv2_supported_caps(NTV2DeviceID device_id) { for (gsize i = 0; i < G_N_ELEMENTS(format_map); i++) { const FormatMapEntry &format = format_map[i]; + GstCaps *tmp = NULL; if (device_id == DEVICE_ID_INVALID) { - gst_caps_append(caps, gst_aja_video_format_to_caps(format.gst_format)); - } else { - if ((format.aja_format != NTV2_FORMAT_UNKNOWN && - ::NTV2DeviceCanDoVideoFormat(device_id, format.aja_format)) || - (format.quad_format != NTV2_FORMAT_UNKNOWN && - ::NTV2DeviceCanDoVideoFormat(device_id, format.quad_format))) { - GstCaps *tmp = gst_aja_video_format_to_caps(format.gst_format); + tmp = gst_aja_video_format_to_caps(format.gst_format); + } else if ((format.aja_format != NTV2_FORMAT_UNKNOWN && + ::NTV2DeviceCanDoVideoFormat(device_id, format.aja_format)) || + (format.quad_format != NTV2_FORMAT_UNKNOWN && + ::NTV2DeviceCanDoVideoFormat(device_id, format.quad_format))) { + tmp = gst_aja_video_format_to_caps(format.gst_format); + } - // Widescreen PAL/NTSC - if (format.gst_format == GST_AJA_VIDEO_FORMAT_525_2398 || - format.gst_format == GST_AJA_VIDEO_FORMAT_525_2400 || - format.gst_format == GST_AJA_VIDEO_FORMAT_525_5994) { - GstCaps *tmp2 = gst_caps_copy(tmp); - gst_caps_set_simple(tmp2, "pixel-aspect-ratio", GST_TYPE_FRACTION, 40, - 33, NULL); - gst_caps_append(tmp, tmp2); - } else if (format.gst_format == GST_AJA_VIDEO_FORMAT_625_5000) { - GstCaps *tmp2 = gst_caps_copy(tmp); - gst_caps_set_simple(tmp2, "pixel-aspect-ratio", GST_TYPE_FRACTION, 16, - 11, NULL); - gst_caps_append(tmp, tmp2); - } - - gst_caps_append(caps, tmp); + if (tmp) { + // Widescreen PAL/NTSC + if (format.gst_format == GST_AJA_VIDEO_FORMAT_525_2398 || + format.gst_format == GST_AJA_VIDEO_FORMAT_525_2400 || + format.gst_format == GST_AJA_VIDEO_FORMAT_525_5994) { + GstCaps *tmp2 = gst_caps_copy(tmp); + gst_caps_set_simple(tmp2, "pixel-aspect-ratio", GST_TYPE_FRACTION, 40, + 33, NULL); + gst_caps_append(tmp, tmp2); + } else if (format.gst_format == GST_AJA_VIDEO_FORMAT_625_5000) { + GstCaps *tmp2 = gst_caps_copy(tmp); + gst_caps_set_simple(tmp2, "pixel-aspect-ratio", GST_TYPE_FRACTION, 16, + 11, NULL); + gst_caps_append(tmp, tmp2); } + + gst_caps_append(caps, tmp); } }