* Some misbehaving HF devices (e.g. Sony XAV AX100 carkit, Sony MW600)
indicate their support on WBS but not support on Codec Negotiation.
In this condition, if Fluoride chooses mSBC will result in big noise or SCO
no sound.
* This CL adds a workaround for checking if HF device indicate codec negotiation is
not supported, Fluoride will assume CVSD codec by default.
Bug:
101592600
Test: make, connect SCO and check voice on carkit and headset.
Change-Id: If0d8779bcfd55b87852f56f0448fd1b585ee45ad
(cherry picked from commit
e4b9dead3c6be05f111fb710f9e4d7c436b65ed4)
APPL_TRACE_DEBUG("%s", __func__);
bta_ag_cb.sco.p_curr_scb = p_scb;
+ // Workaround for misbehaving HFs such as Sony XAV AX100 car kit and Sony
+ // MW600 Headset, which indicate WBS support in SDP, but no codec
+ // negotiation support in BRSF. In this case, using mSBC codec can result
+ // background noise or no audio. Thus, defaulting to CVSD instead.
+ if (!(p_scb->peer_features & BTA_AG_PEER_FEAT_CODEC)) {
+ p_scb->sco_codec = UUID_CODEC_CVSD;
+ }
+
if ((p_scb->codec_updated || p_scb->codec_fallback) &&
(p_scb->peer_features & BTA_AG_PEER_FEAT_CODEC)) {
/* Change the power mode to Active until SCO open is completed. */