From 9c9ad0c8d6c1046ad09e76234abdb08aa6e17fde Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Mon, 26 Jul 2021 18:43:04 +0900 Subject: jack: Fix assertion fail when device supports only mono channel MAX should be larger than MIN for GST_TYPE_INT_RANGE. GStreamer-CRITICAL **: 18:26:27.912: gst_value_collect_int_range: assertion 'collect_values[0].v_int < collect_values[1].v_int' failed Part-of: --- ext/jack/gstjackaudiosink.c | 10 +++++++--- ext/jack/gstjackaudiosrc.c | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'ext') diff --git a/ext/jack/gstjackaudiosink.c b/ext/jack/gstjackaudiosink.c index 2e14ce963..856674f12 100644 --- a/ext/jack/gstjackaudiosink.c +++ b/ext/jack/gstjackaudiosink.c @@ -949,9 +949,13 @@ gst_jack_audio_sink_getcaps (GstBaseSink * bsink, GstCaps * filter) if (!sink->caps) { sink->caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, GST_JACK_FORMAT_STR, - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, rate, - "channels", GST_TYPE_INT_RANGE, min, max, NULL); + "layout", G_TYPE_STRING, "interleaved", "rate", G_TYPE_INT, rate, NULL); + if (min == max) { + gst_caps_set_simple (sink->caps, "channels", G_TYPE_INT, min, NULL); + } else { + gst_caps_set_simple (sink->caps, + "channels", GST_TYPE_INT_RANGE, min, max, NULL); + } } GST_INFO_OBJECT (sink, "returning caps %" GST_PTR_FORMAT, sink->caps); diff --git a/ext/jack/gstjackaudiosrc.c b/ext/jack/gstjackaudiosrc.c index 7c26854ea..b0bc72144 100644 --- a/ext/jack/gstjackaudiosrc.c +++ b/ext/jack/gstjackaudiosrc.c @@ -963,9 +963,13 @@ gst_jack_audio_src_getcaps (GstBaseSrc * bsrc, GstCaps * filter) if (!src->caps) { src->caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, GST_JACK_FORMAT_STR, - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, rate, - "channels", GST_TYPE_INT_RANGE, min, max, NULL); + "layout", G_TYPE_STRING, "interleaved", "rate", G_TYPE_INT, rate, NULL); + if (min == max) { + gst_caps_set_simple (src->caps, "channels", G_TYPE_INT, min, NULL); + } else { + gst_caps_set_simple (src->caps, + "channels", GST_TYPE_INT_RANGE, min, max, NULL); + } } GST_INFO_OBJECT (src, "returning caps %" GST_PTR_FORMAT, src->caps); -- cgit v1.2.1