summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Rafael Giani <crg7475@mailbox.org>2023-05-15 13:47:16 +0200
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2023-05-17 03:13:54 +0000
commit5cf384a63245c02adc30ecf7785ffb0bcae74c3b (patch)
treedafbb4753ec93c04e5019b9a2a69c1e801c18bf9
parent7a3be74b6350bd32c97a4e0730b3ffaabdd88f2b (diff)
downloadgstreamer-5cf384a63245c02adc30ecf7785ffb0bcae74c3b.tar.gz
avdtputil: Use int instead of int range for fixed bitpool values
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1698 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4650>
-rw-r--r--subprojects/gst-plugins-bad/sys/bluez/gstavdtputil.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/subprojects/gst-plugins-bad/sys/bluez/gstavdtputil.c b/subprojects/gst-plugins-bad/sys/bluez/gstavdtputil.c
index 5bf135fb6b..9897a0910b 100644
--- a/subprojects/gst-plugins-bad/sys/bluez/gstavdtputil.c
+++ b/subprojects/gst-plugins-bad/sys/bluez/gstavdtputil.c
@@ -372,10 +372,22 @@ gst_avdtp_util_parse_sbc_raw (void *config)
g_value_reset (list);
/* bitpool */
- value = g_value_init (value, GST_TYPE_INT_RANGE);
- gst_value_set_int_range (value,
- MIN (sbc->min_bitpool, TEMPLATE_MAX_BITPOOL),
- MIN (sbc->max_bitpool, TEMPLATE_MAX_BITPOOL));
+ /* The reported bitpool can be a fixed value instead
+ * of a range, but GStreamer ranges do not allow for
+ * the min == max case, so use int as value in such
+ * cases instead. The bitpool value is used by
+ * sbcenc, sbcdec, rtpsbcpay, and all of them use
+ * a fixated version of that value, so there is no
+ * problem with int vs. int-range type mismatches. */
+ if (sbc->min_bitpool == sbc->max_bitpool) {
+ value = g_value_init (value, G_TYPE_INT);
+ g_value_set_int (value, MIN (sbc->max_bitpool, TEMPLATE_MAX_BITPOOL));
+ } else {
+ value = g_value_init (value, GST_TYPE_INT_RANGE);
+ gst_value_set_int_range (value,
+ MIN (sbc->min_bitpool, TEMPLATE_MAX_BITPOOL),
+ MIN (sbc->max_bitpool, TEMPLATE_MAX_BITPOOL));
+ }
gst_structure_set_value (structure, "bitpool", value);
g_value_unset (value);