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

Commit 25b4819e authored by kuanyuhuang's avatar kuanyuhuang
Browse files

BT: add LOW_LATENCY mode if low latency allowed

LatencyMode is not updatable after audio session started.
Currently, if low latency is allowed, audio session should have
LOW_LATENCY latency mode.
Create a workaround to add LOW_LATENCY when low_latency_allowed_ set to
ture at ReportLowLatencyModeAllowedChanged.

Bug: 291760415
Bug: 294498919
Test: play low latency audio with supported headset and check
LOW_LATENCY mode can be selected

Change-Id: Ia324f0a368e47ae8b8056c190d8d1f4a2e09ecec
parent 966a4f13
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -503,6 +503,16 @@ void BluetoothAudioSession::ReportControlStatus(bool start_resp,
void BluetoothAudioSession::ReportLowLatencyModeAllowedChanged(bool allowed) {
  std::lock_guard<std::recursive_mutex> guard(mutex_);
  low_latency_allowed_ = allowed;
  // TODO(b/294498919): Remove this after there is API to update latency mode
  // after audio session started. If low_latency_allowed_ is true, the session
  // can support LOW_LATENCY and FREE LatencyMode.
  if (low_latency_allowed_) {
    if (std::find(latency_modes_.begin(), latency_modes_.end(),
                  LatencyMode::LOW_LATENCY) == latency_modes_.end()) {
      LOG(INFO) << __func__ << " - insert LOW_LATENCY LatencyMode";
      latency_modes_.push_back(LatencyMode::LOW_LATENCY);
    }
  }
  if (observers_.empty()) {
    LOG(WARNING) << __func__ << " - SessionType=" << toString(session_type_)
                 << " has NO port state observer";