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

Commit 1f19688e authored by silens's avatar silens
Browse files

Report broacast audio config to HAL

Bug: 321168976
Bug: 339121774
Test: atest --host bluetooth_test_broadcaster
Change-Id: I8eaeb72d027b9b01f83458f560d23770c8005b78
parent fe49375b
Loading
Loading
Loading
Loading
+34 −11
Original line number Diff line number Diff line
@@ -121,19 +121,42 @@ const AudioConfiguration BluetoothAudioSession::GetAudioConfig() {

void BluetoothAudioSession::ReportAudioConfigChanged(
    const AudioConfiguration& audio_config) {
  std::lock_guard<std::recursive_mutex> guard(mutex_);
  if (com::android::btaudio::hal::flags::leaudio_report_broadcast_ac_to_hal()) {
    if (session_type_ ==
            SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
        session_type_ ==
            SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH) {
      if (audio_config.getTag() != AudioConfiguration::leAudioConfig) {
        LOG(ERROR) << __func__ << " invalid audio config type for SessionType ="
                  << toString(session_type_);
        return;
      }
    } else if (session_type_ ==
            SessionType::LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH) {
      if (audio_config.getTag() != AudioConfiguration::leAudioBroadcastConfig) {
        LOG(ERROR) << __func__ << " invalid audio config type for SessionType ="
                  << toString(session_type_);
        return;
      }
    } else {
      LOG(ERROR) << __func__ << " invalid SessionType ="
                 << toString(session_type_);
      return;
    }
  } else {
    if (session_type_ !=
            SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH &&
        session_type_ !=
            SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH) {
      return;
    }

  std::lock_guard<std::recursive_mutex> guard(mutex_);
    if (audio_config.getTag() != AudioConfiguration::leAudioConfig) {
      LOG(ERROR) << __func__ << " invalid audio config type for SessionType ="
                 << toString(session_type_);
      return;
    }
  }

  audio_config_ = std::make_unique<AudioConfiguration>(audio_config);