From 31c1e586c3cb638f2c93c30f150c8263711b02b9 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Tue, 23 Aug 2022 16:02:31 +0200 Subject: [PATCH] videoconvert: fix passthrough on equivalent transfer When the input info and output info are equal, except for the transfer functions that are *not* equivalent, we need to set up a converter as we won't be passthrough. Fixes an assertion in that case. Part-of: --- .../gst/videoconvertscale/gstvideoconvertscale.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/subprojects/gst-plugins-base/gst/videoconvertscale/gstvideoconvertscale.c b/subprojects/gst-plugins-base/gst/videoconvertscale/gstvideoconvertscale.c index f85ee5d..b885271 100644 --- a/subprojects/gst-plugins-base/gst/videoconvertscale/gstvideoconvertscale.c +++ b/subprojects/gst-plugins-base/gst/videoconvertscale/gstvideoconvertscale.c @@ -792,12 +792,11 @@ gst_video_convert_scale_set_info (GstVideoFilter * filter, GstCaps * in, * we're converting between equivalent transfer functions, do passthrough */ tmp_info = *in_info; tmp_info.colorimetry.transfer = out_info->colorimetry.transfer; - if (gst_video_info_is_equal (&tmp_info, out_info)) { - if (gst_video_transfer_function_is_equivalent (in_info->colorimetry. - transfer, in_info->finfo->bits, out_info->colorimetry.transfer, - out_info->finfo->bits)) { - gst_base_transform_set_passthrough (GST_BASE_TRANSFORM (filter), TRUE); - } + if (gst_video_info_is_equal (&tmp_info, out_info) && + gst_video_transfer_function_is_equivalent (in_info->colorimetry.transfer, + in_info->finfo->bits, out_info->colorimetry.transfer, + out_info->finfo->bits)) { + gst_base_transform_set_passthrough (GST_BASE_TRANSFORM (filter), TRUE); } else { GstStructure *options; GST_CAT_DEBUG_OBJECT (CAT_PERFORMANCE, filter, "setup videoscaling"); -- 2.7.4