mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
a2dp: guard against LDAC quality value, add labels for LDAC quality prop info
This commit is contained in:
parent
5c93f780cf
commit
b9d1b818d5
1 changed files with 34 additions and 10 deletions
|
|
@ -293,21 +293,42 @@ static int codec_enum_props(void *props, const struct spa_dict *settings, uint32
|
||||||
struct spa_pod_builder *b, struct spa_pod **param)
|
struct spa_pod_builder *b, struct spa_pod **param)
|
||||||
{
|
{
|
||||||
struct props *p = props;
|
struct props *p = props;
|
||||||
|
struct spa_pod_frame f[2];
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case SPA_PARAM_PropInfo:
|
case SPA_PARAM_PropInfo:
|
||||||
{
|
{
|
||||||
switch (idx) {
|
switch (idx) {
|
||||||
case 0:
|
case 0:
|
||||||
*param = spa_pod_builder_add_object(b,
|
return 0;
|
||||||
SPA_TYPE_OBJECT_PropInfo, id,
|
spa_pod_builder_push_object(b, &f[0], SPA_TYPE_OBJECT_PropInfo, id);
|
||||||
SPA_PROP_INFO_id, SPA_POD_Id(SPA_PROP_quality),
|
spa_pod_builder_prop(b, SPA_PROP_INFO_id, 0);
|
||||||
SPA_PROP_INFO_name, SPA_POD_String("LDAC quality"),
|
spa_pod_builder_id(b, SPA_PROP_quality);
|
||||||
SPA_PROP_INFO_type, SPA_POD_CHOICE_ENUM_Int(5,
|
spa_pod_builder_prop(b, SPA_PROP_INFO_name, 0);
|
||||||
p->eqmid,
|
spa_pod_builder_string(b, "LDAC quality");
|
||||||
LDACBT_EQMID_AUTO,
|
|
||||||
LDACBT_EQMID_HQ,
|
spa_pod_builder_prop(b, SPA_PROP_INFO_type, 0);
|
||||||
LDACBT_EQMID_SQ,
|
spa_pod_builder_push_choice(b, &f[1], SPA_CHOICE_Enum, 0);
|
||||||
LDACBT_EQMID_MQ));
|
spa_pod_builder_frame(b, &f[1]);
|
||||||
|
spa_pod_builder_int(b, p->eqmid);
|
||||||
|
spa_pod_builder_int(b, LDACBT_EQMID_AUTO);
|
||||||
|
spa_pod_builder_int(b, LDACBT_EQMID_HQ);
|
||||||
|
spa_pod_builder_int(b, LDACBT_EQMID_SQ);
|
||||||
|
spa_pod_builder_int(b, LDACBT_EQMID_MQ);
|
||||||
|
spa_pod_builder_pop(b, &f[1]);
|
||||||
|
|
||||||
|
spa_pod_builder_prop(b, SPA_PROP_INFO_labels, 0);
|
||||||
|
spa_pod_builder_push_struct(b, &f[1]);
|
||||||
|
spa_pod_builder_int(b, LDACBT_EQMID_AUTO);
|
||||||
|
spa_pod_builder_string(b, "auto");
|
||||||
|
spa_pod_builder_int(b, LDACBT_EQMID_HQ);
|
||||||
|
spa_pod_builder_string(b, "hq");
|
||||||
|
spa_pod_builder_int(b, LDACBT_EQMID_SQ);
|
||||||
|
spa_pod_builder_string(b, "sq");
|
||||||
|
spa_pod_builder_int(b, LDACBT_EQMID_MQ);
|
||||||
|
spa_pod_builder_string(b, "mq");
|
||||||
|
spa_pod_builder_pop(b, &f[1]);
|
||||||
|
|
||||||
|
*param = spa_pod_builder_pop(b, &f[0]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -343,6 +364,9 @@ static int codec_set_props(void *props, const struct spa_pod *param)
|
||||||
spa_pod_parse_object(param,
|
spa_pod_parse_object(param,
|
||||||
SPA_TYPE_OBJECT_Props, NULL,
|
SPA_TYPE_OBJECT_Props, NULL,
|
||||||
SPA_PROP_quality, SPA_POD_OPT_Int(&p->eqmid));
|
SPA_PROP_quality, SPA_POD_OPT_Int(&p->eqmid));
|
||||||
|
if (p->eqmid != LDACBT_EQMID_AUTO &&
|
||||||
|
(p->eqmid < LDACBT_EQMID_HQ || p->eqmid > LDACBT_EQMID_MQ))
|
||||||
|
p->eqmid = prev_eqmid;
|
||||||
}
|
}
|
||||||
|
|
||||||
return prev_eqmid != p->eqmid;
|
return prev_eqmid != p->eqmid;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue