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

Commit e80a5768 authored by Alice Kuo's avatar Alice Kuo Committed by Jack He
Browse files

BT: Broadcast AIDL more handle on the default implementation

* seperate the provider for unicast and broadcast
* add handle for the audio configuration broadcast offload

Bug: 150670922
Test: make
Tag: #feature
Change-Id: Ie41496be24e3742b2f1fa438bc4ed4b127e72dd0
parent 16a15476
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -65,10 +65,12 @@ ndk::ScopedAStatus BluetoothAudioProviderFactory::openProvider(
      provider = ndk::SharedRefBase::make<LeAudioOffloadInputAudioProvider>();
      break;
    case SessionType::LE_AUDIO_BROADCAST_SOFTWARE_ENCODING_DATAPATH:
      provider = ndk::SharedRefBase::make<LeAudioSoftwareOutputAudioProvider>();
      provider =
          ndk::SharedRefBase::make<LeAudioSoftwareBroadcastAudioProvider>();
      break;
    case SessionType::LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH:
      provider = ndk::SharedRefBase::make<LeAudioOffloadOutputAudioProvider>();
      provider =
          ndk::SharedRefBase::make<LeAudioOffloadBroadcastAudioProvider>();
      break;
    default:
      provider = nullptr;
@@ -99,7 +101,10 @@ ndk::ScopedAStatus BluetoothAudioProviderFactory::getProviderCapabilities(
  } else if (session_type ==
                 SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
             session_type ==
                 SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH) {
                 SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH ||
             session_type ==
                 SessionType::
                     LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH) {
    std::vector<LeAudioCodecCapabilitiesSetting> db_codec_capabilities =
        BluetoothAudioCodecs::GetLeAudioOffloadCodecCapabilities(session_type);
    if (db_codec_capabilities.size()) {
+6 −0
Original line number Diff line number Diff line
@@ -38,6 +38,12 @@ LeAudioOffloadInputAudioProvider::LeAudioOffloadInputAudioProvider()
  session_type_ = SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH;
}

LeAudioOffloadBroadcastAudioProvider::LeAudioOffloadBroadcastAudioProvider()
    : LeAudioOffloadAudioProvider() {
  session_type_ =
      SessionType::LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH;
}

LeAudioOffloadAudioProvider::LeAudioOffloadAudioProvider()
    : BluetoothAudioProvider() {}

+6 −0
Original line number Diff line number Diff line
@@ -48,6 +48,12 @@ class LeAudioOffloadInputAudioProvider : public LeAudioOffloadAudioProvider {
  LeAudioOffloadInputAudioProvider();
};

class LeAudioOffloadBroadcastAudioProvider
    : public LeAudioOffloadAudioProvider {
 public:
  LeAudioOffloadBroadcastAudioProvider();
};

}  // namespace audio
}  // namespace bluetooth
}  // namespace hardware
+8 −1
Original line number Diff line number Diff line
@@ -55,6 +55,11 @@ LeAudioSoftwareInputAudioProvider::LeAudioSoftwareInputAudioProvider()
  session_type_ = SessionType::LE_AUDIO_SOFTWARE_DECODING_DATAPATH;
}

LeAudioSoftwareBroadcastAudioProvider::LeAudioSoftwareBroadcastAudioProvider()
    : LeAudioSoftwareAudioProvider() {
  session_type_ = SessionType::LE_AUDIO_BROADCAST_SOFTWARE_ENCODING_DATAPATH;
}

LeAudioSoftwareAudioProvider::LeAudioSoftwareAudioProvider()
    : BluetoothAudioProvider(), data_mq_(nullptr) {}

@@ -78,7 +83,9 @@ ndk::ScopedAStatus LeAudioSoftwareAudioProvider::startSession(
  }

  uint32_t buffer_modifier = 0;
  if (session_type_ == SessionType::LE_AUDIO_SOFTWARE_ENCODING_DATAPATH)
  if (session_type_ == SessionType::LE_AUDIO_SOFTWARE_ENCODING_DATAPATH ||
      session_type_ ==
          SessionType::LE_AUDIO_BROADCAST_SOFTWARE_ENCODING_DATAPATH)
    buffer_modifier = kBufferOutCount;
  else if (session_type_ == SessionType::LE_AUDIO_SOFTWARE_DECODING_DATAPATH)
    buffer_modifier = kBufferInCount;
+6 −0
Original line number Diff line number Diff line
@@ -51,6 +51,12 @@ class LeAudioSoftwareInputAudioProvider : public LeAudioSoftwareAudioProvider {
  LeAudioSoftwareInputAudioProvider();
};

class LeAudioSoftwareBroadcastAudioProvider
    : public LeAudioSoftwareAudioProvider {
 public:
  LeAudioSoftwareBroadcastAudioProvider();
};

}  // namespace audio
}  // namespace bluetooth
}  // namespace hardware
Loading