Always use audio_configuration_changed_cb_ to notify the config update
There is a new API `isStreamActive` can indicate the stream handle
state. We don't need to use soft_audio_configuration_change_cb to
update the connection map and audio location
Bug: 249614160
Bug: 277857154
Test: LE audio offload disappear and later join with downmix enable
Change-Id: I02357ebe09425525e356ba0f793a3f081953d866
diff --git a/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp b/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp
index 2b0caad..ee5527e 100644
--- a/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp
+++ b/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp
@@ -60,14 +60,12 @@
LOG(ERROR) << __func__ << " - SessionType=" << toString(session_type_)
<< " MqDescriptor Invalid";
audio_config_ = nullptr;
- leaudio_connection_map_ = nullptr;
} else {
stack_iface_ = stack_iface;
latency_modes_ = latency_modes;
LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_)
<< ", AudioConfiguration=" << audio_config.toString();
ReportSessionStatus();
- is_streaming_ = false;
}
}
@@ -76,13 +74,11 @@
bool toggled = IsSessionReady();
LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_);
audio_config_ = nullptr;
- leaudio_connection_map_ = nullptr;
stack_iface_ = nullptr;
UpdateDataPath(nullptr);
if (toggled) {
ReportSessionStatus();
}
- is_streaming_ = false;
}
/***
@@ -110,14 +106,6 @@
return *audio_config_;
}
-const AudioConfiguration BluetoothAudioSession::GetLeAudioConnectionMap() {
- std::lock_guard<std::recursive_mutex> guard(mutex_);
- if (!IsSessionReady()) {
- return AudioConfiguration(LeAudioConfiguration{});
- }
- return *leaudio_connection_map_;
-}
-
void BluetoothAudioSession::ReportAudioConfigChanged(
const AudioConfiguration& audio_config) {
if (session_type_ !=
@@ -134,47 +122,7 @@
return;
}
- if (is_streaming_) {
- if (audio_config_ == nullptr) {
- LOG(ERROR) << __func__ << " for SessionType=" << toString(session_type_)
- << " audio_config_ is nullptr during streaming. It shouldn't "
- "be happened";
- return;
- }
-
- auto new_leaudio_config =
- audio_config.get<AudioConfiguration::leAudioConfig>();
- auto current_leaudio_config =
- (*audio_config_).get<AudioConfiguration::leAudioConfig>();
- if (new_leaudio_config.codecType != current_leaudio_config.codecType) {
- LOG(ERROR)
- << __func__ << " for SessionType=" << toString(session_type_)
- << " codec type changed during streaming. It shouldn't be happened ";
- }
- auto new_lc3_config = new_leaudio_config.leAudioCodecConfig
- .get<LeAudioCodecConfiguration::lc3Config>();
- auto current_lc3_config = current_leaudio_config.leAudioCodecConfig
- .get<LeAudioCodecConfiguration::lc3Config>();
- if ((new_lc3_config.pcmBitDepth != current_lc3_config.pcmBitDepth) ||
- (new_lc3_config.samplingFrequencyHz !=
- current_lc3_config.samplingFrequencyHz) ||
- (new_lc3_config.frameDurationUs !=
- current_lc3_config.frameDurationUs) ||
- (new_lc3_config.octetsPerFrame != current_lc3_config.octetsPerFrame) ||
- (new_lc3_config.blocksPerSdu != current_lc3_config.blocksPerSdu)) {
- LOG(ERROR)
- << __func__ << " for SessionType=" << toString(session_type_)
- << " lc3 config changed during streaming. It shouldn't be happened";
- return;
- }
-
- leaudio_connection_map_ =
- std::make_unique<AudioConfiguration>(audio_config);
- } else {
- audio_config_ = std::make_unique<AudioConfiguration>(audio_config);
- leaudio_connection_map_ =
- std::make_unique<AudioConfiguration>(audio_config);
- }
+ audio_config_ = std::make_unique<AudioConfiguration>(audio_config);
if (observers_.empty()) {
LOG(WARNING) << __func__ << " - SessionType=" << toString(session_type_)
@@ -187,11 +135,7 @@
LOG(INFO) << __func__ << " for SessionType=" << toString(session_type_)
<< ", bluetooth_audio=0x"
<< ::android::base::StringPrintf("%04x", cookie);
- if (is_streaming_) {
- if (cb->soft_audio_configuration_changed_cb_ != nullptr) {
- cb->soft_audio_configuration_changed_cb_(cookie);
- }
- } else if (cb->audio_configuration_changed_cb_ != nullptr) {
+ if (cb->audio_configuration_changed_cb_ != nullptr) {
cb->audio_configuration_changed_cb_(cookie);
}
}
@@ -481,12 +425,6 @@
<< " has NO port state observer";
return;
}
- if (start_resp && status == BluetoothAudioStatus::SUCCESS) {
- is_streaming_ = true;
- } else if (!start_resp && (status == BluetoothAudioStatus::SUCCESS ||
- status == BluetoothAudioStatus::RECONFIGURATION)) {
- is_streaming_ = false;
- }
for (auto& observer : observers_) {
uint16_t cookie = observer.first;
std::shared_ptr<PortStatusCallbacks> callback = observer.second;
diff --git a/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.h b/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.h
index faf4ffb..5bf17bd 100644
--- a/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.h
+++ b/bluetooth/audio/utils/aidl_session/BluetoothAudioSession.h
@@ -102,13 +102,6 @@
***/
std::function<void(uint16_t cookie, bool allowed)>
low_latency_mode_allowed_cb_;
- /***
- * soft_audio_configuration_changed_cb_ - when the Bluetooth stack change
- * the streamMap during the streaming, the BluetoothAudioProvider will invoke
- * this callback to report to the bluetooth_audio module.
- * @param: cookie - indicates which bluetooth_audio output should handle
- ***/
- std::function<void(uint16_t cookie)> soft_audio_configuration_changed_cb_;
};
class BluetoothAudioSession {
@@ -166,12 +159,6 @@
const AudioConfiguration GetAudioConfig();
/***
- * The control function is for the bluetooth_audio module to get the current
- * LE audio connection map
- ***/
- const AudioConfiguration GetLeAudioConnectionMap();
-
- /***
* The report function is used to report that the Bluetooth stack has notified
* the audio configuration changed, and will invoke
* audio_configuration_changed_cb_ to notify registered bluetooth_audio
@@ -219,11 +206,8 @@
std::unique_ptr<DataMQ> data_mq_;
// audio data configuration for both software and offloading
std::unique_ptr<AudioConfiguration> audio_config_;
- std::unique_ptr<AudioConfiguration> leaudio_connection_map_;
std::vector<LatencyMode> latency_modes_;
bool low_latency_allowed_ = true;
- // saving those steaming state based on the session_type
- bool is_streaming_ = false;
// saving those registered bluetooth_audio's callbacks
std::unordered_map<uint16_t, std::shared_ptr<struct PortStatusCallbacks>>
diff --git a/bluetooth/audio/utils/aidl_session/BluetoothAudioSessionControl.h b/bluetooth/audio/utils/aidl_session/BluetoothAudioSessionControl.h
index 881c6c1..0782c82 100644
--- a/bluetooth/audio/utils/aidl_session/BluetoothAudioSessionControl.h
+++ b/bluetooth/audio/utils/aidl_session/BluetoothAudioSessionControl.h
@@ -95,25 +95,6 @@
}
/***
- * The control API for the bluetooth_audio module to get current
- * LE audio connection map
- ***/
- static const AudioConfiguration GetLeAudioConnectionMap(
- const SessionType& session_type) {
- std::shared_ptr<BluetoothAudioSession> session_ptr =
- BluetoothAudioSessionInstance::GetSessionInstance(session_type);
- if ((session_type ==
- SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
- session_type ==
- SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH) &&
- session_ptr != nullptr) {
- return session_ptr->GetLeAudioConnectionMap();
- }
-
- return AudioConfiguration(LeAudioConfiguration{});
- }
-
- /***
* Those control APIs for the bluetooth_audio module to start / suspend /
stop
* stream, to check position, and to update metadata.