audio: Implement GetAudioConfig for HAL 2.1 am: 0b12cea833
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1608076 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I3c9b14bd71544f906e701088032c6df404d99597
This commit is contained in:
commit
b7e7872798
3 changed files with 41 additions and 6 deletions
|
@ -25,6 +25,8 @@ namespace audio {
|
||||||
class BluetoothAudioSessionControl_2_1 {
|
class BluetoothAudioSessionControl_2_1 {
|
||||||
using SessionType_2_1 =
|
using SessionType_2_1 =
|
||||||
::android::hardware::bluetooth::audio::V2_1::SessionType;
|
::android::hardware::bluetooth::audio::V2_1::SessionType;
|
||||||
|
using AudioConfiguration_2_1 =
|
||||||
|
::android::hardware::bluetooth::audio::V2_1::AudioConfiguration;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// The control API helps to check if session is ready or not
|
// The control API helps to check if session is ready or not
|
||||||
|
@ -65,18 +67,17 @@ class BluetoothAudioSessionControl_2_1 {
|
||||||
|
|
||||||
// The control API for the bluetooth_audio module to get current
|
// The control API for the bluetooth_audio module to get current
|
||||||
// AudioConfiguration
|
// AudioConfiguration
|
||||||
static const AudioConfiguration& GetAudioConfig(
|
static const AudioConfiguration_2_1 GetAudioConfig(
|
||||||
const SessionType_2_1& session_type) {
|
const SessionType_2_1& session_type) {
|
||||||
std::shared_ptr<BluetoothAudioSession_2_1> session_ptr =
|
std::shared_ptr<BluetoothAudioSession_2_1> session_ptr =
|
||||||
BluetoothAudioSessionInstance_2_1::GetSessionInstance(session_type);
|
BluetoothAudioSessionInstance_2_1::GetSessionInstance(session_type);
|
||||||
if (session_ptr != nullptr) {
|
if (session_ptr != nullptr) {
|
||||||
// TODO: map 2.1 to 2.0 audio config inside GetAudioConfig?
|
return session_ptr->GetAudioConfig();
|
||||||
return session_ptr->GetAudioSession()->GetAudioConfig();
|
|
||||||
} else if (session_type ==
|
} else if (session_type ==
|
||||||
SessionType_2_1::A2DP_HARDWARE_OFFLOAD_DATAPATH) {
|
SessionType_2_1::A2DP_HARDWARE_OFFLOAD_DATAPATH) {
|
||||||
return BluetoothAudioSession::kInvalidOffloadAudioConfiguration;
|
return BluetoothAudioSession_2_1::kInvalidOffloadAudioConfiguration;
|
||||||
} else {
|
} else {
|
||||||
return BluetoothAudioSession::kInvalidSoftwareAudioConfiguration;
|
return BluetoothAudioSession_2_1::kInvalidSoftwareAudioConfiguration;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,40 @@ BluetoothAudioSession_2_1::GetAudioSession() {
|
||||||
return audio_session;
|
return audio_session;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The control function is for the bluetooth_audio module to get the current
|
||||||
|
// AudioConfiguration
|
||||||
|
const ::android::hardware::bluetooth::audio::V2_1::AudioConfiguration
|
||||||
|
BluetoothAudioSession_2_1::GetAudioConfig() {
|
||||||
|
std::lock_guard<std::recursive_mutex> guard(audio_session->mutex_);
|
||||||
|
if (audio_session->IsSessionReady()) {
|
||||||
|
// If session is unknown it means it should be 2.0 type
|
||||||
|
if (session_type_2_1_ != SessionType_2_1::UNKNOWN)
|
||||||
|
return audio_config_2_1_;
|
||||||
|
|
||||||
|
::android::hardware::bluetooth::audio::V2_1::AudioConfiguration toConf;
|
||||||
|
const AudioConfiguration fromConf = GetAudioSession()->GetAudioConfig();
|
||||||
|
// pcmConfig only differs between 2.0 and 2.1 in AudioConfiguration
|
||||||
|
if (fromConf.getDiscriminator() ==
|
||||||
|
AudioConfiguration::hidl_discriminator::codecConfig) {
|
||||||
|
toConf.codecConfig() = fromConf.codecConfig();
|
||||||
|
} else {
|
||||||
|
toConf.pcmConfig() = {
|
||||||
|
.sampleRate = static_cast<
|
||||||
|
::android::hardware::bluetooth::audio::V2_1::SampleRate>(
|
||||||
|
fromConf.pcmConfig().sampleRate),
|
||||||
|
.channelMode = fromConf.pcmConfig().channelMode,
|
||||||
|
.bitsPerSample = fromConf.pcmConfig().bitsPerSample,
|
||||||
|
.dataIntervalUs = 0};
|
||||||
|
}
|
||||||
|
return toConf;
|
||||||
|
} else if (session_type_2_1_ ==
|
||||||
|
SessionType_2_1::A2DP_HARDWARE_OFFLOAD_DATAPATH) {
|
||||||
|
return kInvalidOffloadAudioConfiguration;
|
||||||
|
} else {
|
||||||
|
return kInvalidSoftwareAudioConfiguration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool BluetoothAudioSession_2_1::UpdateAudioConfig(
|
bool BluetoothAudioSession_2_1::UpdateAudioConfig(
|
||||||
const ::android::hardware::bluetooth::audio::V2_1::AudioConfiguration&
|
const ::android::hardware::bluetooth::audio::V2_1::AudioConfiguration&
|
||||||
audio_config) {
|
audio_config) {
|
||||||
|
|
|
@ -63,7 +63,7 @@ class BluetoothAudioSession_2_1 {
|
||||||
|
|
||||||
// The control function is for the bluetooth_audio module to get the current
|
// The control function is for the bluetooth_audio module to get the current
|
||||||
// AudioConfiguration
|
// AudioConfiguration
|
||||||
const ::android::hardware::bluetooth::audio::V2_1::AudioConfiguration&
|
const ::android::hardware::bluetooth::audio::V2_1::AudioConfiguration
|
||||||
GetAudioConfig();
|
GetAudioConfig();
|
||||||
|
|
||||||
static constexpr ::android::hardware::bluetooth::audio::V2_1::
|
static constexpr ::android::hardware::bluetooth::audio::V2_1::
|
||||||
|
|
Loading…
Reference in a new issue