mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
bluetooth: handle HFP codec list in any order
HFP HF peer can send +BAC= list of codecs in any order and pa only expects "1,2" Fix this by actually parsing codec list elements while looking for "2" (mSBC) Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/537>
This commit is contained in:
parent
651e0db07b
commit
e3fa937508
1 changed files with 14 additions and 4 deletions
|
|
@ -562,6 +562,9 @@ static bool hfp_rfcomm_handle(int fd, pa_bluetooth_transport *t, const char *buf
|
|||
struct hfp_config *c = t->config;
|
||||
int val;
|
||||
char str[5];
|
||||
const char *r;
|
||||
size_t len;
|
||||
const char *state;
|
||||
|
||||
/* first-time initialize selected codec to CVSD */
|
||||
if (c->selected_codec == 0)
|
||||
|
|
@ -576,10 +579,17 @@ static bool hfp_rfcomm_handle(int fd, pa_bluetooth_transport *t, const char *buf
|
|||
|
||||
return true;
|
||||
} else if (sscanf(buf, "AT+BAC=%3s", str) == 1) {
|
||||
if (strncmp(str, "1,2", 3) == 0)
|
||||
c->support_msbc = true;
|
||||
else
|
||||
c->support_msbc = false;
|
||||
c->support_msbc = false;
|
||||
|
||||
state = NULL;
|
||||
|
||||
/* check if codec id 2 (mSBC) is in the list of supported codecs */
|
||||
while ((r = pa_split_in_place(str, ",", &len, &state))) {
|
||||
if (len == 1 && r[0] == '2') {
|
||||
c->support_msbc = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
c->support_codec_negotiation = true;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue