Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2ca2da86 authored by weichinweng's avatar weichinweng
Browse files

HFP: Don't use mSBC for HF devices not supporting Codec Negotiation

* 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
parent 327f3e72
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -555,6 +555,14 @@ void bta_ag_codec_negotiate(tBTA_AG_SCB* p_scb) {
  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. */