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

Commit 18245759 authored by kuanyuhuang's avatar kuanyuhuang Committed by Tom Huang
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
Test: play low latency audio with supported headset and check
LOW_LATENCY mode can be selected
(cherry picked from https://android-review.googlesource.com/q/commit:25b4819e08280ea1bffa019a231e1d60edea7338)
Merged-In: Ie0626179a56334125cd48a048d162f09882888eb
Merged-In: I9d5510116225aa5857d1bd086956bc46d46a3eba
Change-Id: Ia324f0a368e47ae8b8056c190d8d1f4a2e09ecec
parent a754fb75
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -440,6 +440,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";