Merge "Spatial Audio: Implement setLowLatencyAllowed functions in BluetoothAudioSession"
This commit is contained in:
commit
9e09eec46b
4 changed files with 46 additions and 0 deletions
|
@ -131,6 +131,8 @@ ndk::ScopedAStatus BluetoothAudioProvider::setLowLatencyModeAllowed(
|
||||||
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
|
||||||
}
|
}
|
||||||
LOG(INFO) << __func__ << " - allowed " << allowed;
|
LOG(INFO) << __func__ << " - allowed " << allowed;
|
||||||
|
BluetoothAudioSessionReport::ReportLowLatencyModeAllowedChanged(
|
||||||
|
session_type_, allowed);
|
||||||
return ndk::ScopedAStatus::ok();
|
return ndk::ScopedAStatus::ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -416,6 +416,22 @@ void BluetoothAudioSession::ReportControlStatus(bool start_resp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BluetoothAudioSession::ReportLowLatencyModeAllowedChanged(bool allowed) {
|
||||||
|
std::lock_guard<std::recursive_mutex> guard(mutex_);
|
||||||
|
if (observers_.empty()) {
|
||||||
|
LOG(WARNING) << __func__ << " - SessionType=" << toString(session_type_)
|
||||||
|
<< " has NO port state observer";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (auto& observer : observers_) {
|
||||||
|
uint16_t cookie = observer.first;
|
||||||
|
std::shared_ptr<PortStatusCallbacks> callback = observer.second;
|
||||||
|
LOG(INFO) << __func__ << " - allowed="
|
||||||
|
<< allowed ? " allowed" : " disallowed";
|
||||||
|
callback->low_latency_mode_allowed_cb_(cookie, allowed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool BluetoothAudioSession::GetPresentationPosition(
|
bool BluetoothAudioSession::GetPresentationPosition(
|
||||||
PresentationPosition& presentation_position) {
|
PresentationPosition& presentation_position) {
|
||||||
std::lock_guard<std::recursive_mutex> guard(mutex_);
|
std::lock_guard<std::recursive_mutex> guard(mutex_);
|
||||||
|
|
|
@ -92,6 +92,15 @@ struct PortStatusCallbacks {
|
||||||
* @param: cookie - indicates which bluetooth_audio output should handle
|
* @param: cookie - indicates which bluetooth_audio output should handle
|
||||||
***/
|
***/
|
||||||
std::function<void(uint16_t cookie)> audio_configuration_changed_cb_;
|
std::function<void(uint16_t cookie)> audio_configuration_changed_cb_;
|
||||||
|
/***
|
||||||
|
* low_latency_mode_allowed_cb_ - when the Bluetooth stack low latency mode
|
||||||
|
* allowed or disallowed, the BluetoothAudioProvider will invoke
|
||||||
|
* this callback to report to the bluetooth_audio module.
|
||||||
|
* @param: cookie - indicates which bluetooth_audio output should handle
|
||||||
|
* @param: allowed - indicates if low latency mode is allowed
|
||||||
|
***/
|
||||||
|
std::function<void(uint16_t cookie, bool allowed)>
|
||||||
|
low_latency_mode_allowed_cb_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BluetoothAudioSession {
|
class BluetoothAudioSession {
|
||||||
|
@ -155,6 +164,13 @@ class BluetoothAudioSession {
|
||||||
***/
|
***/
|
||||||
void ReportAudioConfigChanged(const AudioConfiguration& audio_config);
|
void ReportAudioConfigChanged(const AudioConfiguration& audio_config);
|
||||||
|
|
||||||
|
/***
|
||||||
|
* The report function is used to report that the Bluetooth stack has notified
|
||||||
|
* the low latency mode allowed changed, and will invoke
|
||||||
|
* low_latency_mode_allowed_changed_cb to notify registered bluetooth_audio
|
||||||
|
* outputs
|
||||||
|
***/
|
||||||
|
void ReportLowLatencyModeAllowedChanged(bool allowed);
|
||||||
/***
|
/***
|
||||||
* Those control functions are for the bluetooth_audio module to start,
|
* Those control functions are for the bluetooth_audio module to start,
|
||||||
* suspend, stop stream, to check position, and to update metadata.
|
* suspend, stop stream, to check position, and to update metadata.
|
||||||
|
|
|
@ -78,6 +78,18 @@ class BluetoothAudioSessionReport {
|
||||||
session_ptr->ReportAudioConfigChanged(audio_config);
|
session_ptr->ReportAudioConfigChanged(audio_config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/***
|
||||||
|
* The API reports the Bluetooth stack has replied the changed of the low
|
||||||
|
* latency audio allowed, and will inform registered bluetooth_audio outputs
|
||||||
|
***/
|
||||||
|
static void ReportLowLatencyModeAllowedChanged(
|
||||||
|
const SessionType& session_type, bool allowed) {
|
||||||
|
std::shared_ptr<BluetoothAudioSession> session_ptr =
|
||||||
|
BluetoothAudioSessionInstance::GetSessionInstance(session_type);
|
||||||
|
if (session_ptr != nullptr) {
|
||||||
|
session_ptr->ReportLowLatencyModeAllowedChanged(allowed);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace audio
|
} // namespace audio
|
||||||
|
|
Loading…
Reference in a new issue