diff options
author | Seungha Yang <seungha@centricular.com> | 2021-07-26 18:43:04 +0900 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-07-28 08:16:15 +0000 |
commit | 9c9ad0c8d6c1046ad09e76234abdb08aa6e17fde (patch) | |
tree | e8774cc738ff5bc5b2c38b8036f45ffc91a8abf0 /ext | |
parent | b1fb787859fd9d0069bd28c2098819e7625e63e1 (diff) | |
download | gstreamer-plugins-good-9c9ad0c8d6c1046ad09e76234abdb08aa6e17fde.tar.gz |
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: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1033>
Diffstat (limited to 'ext')
-rw-r--r-- | ext/jack/gstjackaudiosink.c | 10 | ||||
-rw-r--r-- | ext/jack/gstjackaudiosrc.c | 10 |
2 files changed, 14 insertions, 6 deletions
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); |