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
This commit is contained in:
kuanyuhuang
2023-08-07 05:05:52 +00:00
parent 966a4f13a5
commit 25b4819e08

View File

@@ -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";