ldac: fix sample rates

Fix selection of sample rates.
Higer samplerates are not supported by the library so disable them.

See #449
This commit is contained in:
Wim Taymans 2020-12-05 08:18:01 +01:00
parent c6663b6a18
commit 4797018e4f

View file

@ -61,9 +61,7 @@ static int codec_fill_caps(const struct a2dp_codec *codec, uint32_t flags, uint8
.frequency = LDACBT_SAMPLING_FREQ_044100 | .frequency = LDACBT_SAMPLING_FREQ_044100 |
LDACBT_SAMPLING_FREQ_048000 | LDACBT_SAMPLING_FREQ_048000 |
LDACBT_SAMPLING_FREQ_088200 | LDACBT_SAMPLING_FREQ_088200 |
LDACBT_SAMPLING_FREQ_096000 | LDACBT_SAMPLING_FREQ_096000,
LDACBT_SAMPLING_FREQ_176400 |
LDACBT_SAMPLING_FREQ_192000,
.channel_mode = LDACBT_CHANNEL_MODE_MONO | .channel_mode = LDACBT_CHANNEL_MODE_MONO |
LDACBT_CHANNEL_MODE_DUAL_CHANNEL | LDACBT_CHANNEL_MODE_DUAL_CHANNEL |
LDACBT_CHANNEL_MODE_STEREO, 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) if (conf.frequency & LDACBT_SAMPLING_FREQ_044100)
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; 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; 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; 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 else
return -ENOTSUP; 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);
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) if (i > 1)
choice->body.type = SPA_CHOICE_Enum; choice->body.type = SPA_CHOICE_Enum;
spa_pod_builder_pop(b, &f[1]); 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; info->info.raw.rate = 96000;
this->lsu = 256; this->lsu = 256;
break; 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: default:
res = -EINVAL; res = -EINVAL;
goto error; goto error;