From 4797018e4f49bf45247a516fe54dccbdee22d1e4 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sat, 5 Dec 2020 08:18:01 +0100 Subject: [PATCH] ldac: fix sample rates Fix selection of sample rates. Higer samplerates are not supported by the library so disable them. See #449 --- spa/plugins/bluez5/a2dp-codec-ldac.c | 32 ++++------------------------ 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/spa/plugins/bluez5/a2dp-codec-ldac.c b/spa/plugins/bluez5/a2dp-codec-ldac.c index 66b7c8dc6..766239d37 100644 --- a/spa/plugins/bluez5/a2dp-codec-ldac.c +++ b/spa/plugins/bluez5/a2dp-codec-ldac.c @@ -61,9 +61,7 @@ static int codec_fill_caps(const struct a2dp_codec *codec, uint32_t flags, uint8 .frequency = LDACBT_SAMPLING_FREQ_044100 | LDACBT_SAMPLING_FREQ_048000 | LDACBT_SAMPLING_FREQ_088200 | - LDACBT_SAMPLING_FREQ_096000 | - LDACBT_SAMPLING_FREQ_176400 | - LDACBT_SAMPLING_FREQ_192000, + LDACBT_SAMPLING_FREQ_096000, .channel_mode = LDACBT_CHANNEL_MODE_MONO | LDACBT_CHANNEL_MODE_DUAL_CHANNEL | LDACBT_CHANNEL_MODE_STEREO, @@ -87,16 +85,12 @@ static int codec_select_config(const struct a2dp_codec *codec, uint32_t flags, if (conf.frequency & LDACBT_SAMPLING_FREQ_044100) conf.frequency = LDACBT_SAMPLING_FREQ_044100; - if (conf.frequency & LDACBT_SAMPLING_FREQ_048000) + else if (conf.frequency & LDACBT_SAMPLING_FREQ_048000) conf.frequency = LDACBT_SAMPLING_FREQ_048000; - if (conf.frequency & LDACBT_SAMPLING_FREQ_088200) + else if (conf.frequency & LDACBT_SAMPLING_FREQ_088200) conf.frequency = LDACBT_SAMPLING_FREQ_088200; - if (conf.frequency & LDACBT_SAMPLING_FREQ_096000) + else if (conf.frequency & LDACBT_SAMPLING_FREQ_096000) conf.frequency = LDACBT_SAMPLING_FREQ_096000; - if (conf.frequency & LDACBT_SAMPLING_FREQ_176400) - conf.frequency = LDACBT_SAMPLING_FREQ_176400; - if (conf.frequency & LDACBT_SAMPLING_FREQ_192000) - conf.frequency = LDACBT_SAMPLING_FREQ_192000; else return -ENOTSUP; @@ -162,16 +156,6 @@ static int codec_enum_config(const struct a2dp_codec *codec, spa_pod_builder_int(b, 96000); spa_pod_builder_int(b, 96000); } - if (conf.frequency & LDACBT_SAMPLING_FREQ_176400) { - if (i++ == 0) - spa_pod_builder_int(b, 176400); - spa_pod_builder_int(b, 176400); - } - if (conf.frequency & LDACBT_SAMPLING_FREQ_192000) { - if (i++ == 0) - spa_pod_builder_int(b, 192000); - spa_pod_builder_int(b, 192000); - } if (i > 1) choice->body.type = SPA_CHOICE_Enum; spa_pod_builder_pop(b, &f[1]); @@ -266,14 +250,6 @@ static void *codec_init(const struct a2dp_codec *codec, uint32_t flags, info->info.raw.rate = 96000; this->lsu = 256; break; - case LDACBT_SAMPLING_FREQ_176400: - info->info.raw.rate = 176400; - this->lsu = 512; - break; - case LDACBT_SAMPLING_FREQ_192000: - info->info.raw.rate = 192000; - this->lsu = 512; - break; default: res = -EINVAL; goto error;