diff --git a/frameworks/native/hdiadapter_new/include/manager/hdi_adapter_factory.h b/frameworks/native/hdiadapter_new/include/manager/hdi_adapter_factory.h index a827e1285e79cf4a479783b0f9a4da028e53e2a4..a47e061e713136b7244e4bd75d939068da0f411d 100644 --- a/frameworks/native/hdiadapter_new/include/manager/hdi_adapter_factory.h +++ b/frameworks/native/hdiadapter_new/include/manager/hdi_adapter_factory.h @@ -40,11 +40,11 @@ private: HdiAdapterFactory(HdiAdapterFactory &&) = delete; HdiAdapterFactory &operator=(HdiAdapterFactory &&) = delete; - std::shared_ptr CreatePrimaryRenderSink(const std::string &info); + std::shared_ptr CreatePrimaryRenderSink(const uint32_t renderId, const std::string &info); std::shared_ptr CreateBluetoothRenderSink(const std::string &info); std::shared_ptr CreateRemoteRenderSink(const std::string &info); std::shared_ptr CreateRemoteFastRenderSink(const std::string &info); - std::shared_ptr CreatePrimaryCaptureSource(const std::string &info); + std::shared_ptr CreatePrimaryCaptureSource(const uint32_t captureId, const std::string &info); std::shared_ptr CreateRemoteCaptureSource(const std::string &info); std::shared_ptr CreateRemoteFastCaptureSource(const std::string &info); }; diff --git a/frameworks/native/hdiadapter_new/include/sink/audio_render_sink.h b/frameworks/native/hdiadapter_new/include/sink/audio_render_sink.h index d7b0cbe6f40dc12d4b4e0fed0e2af338acd9d0d7..70a54a8cdcf436d8c03c9724e88530c99d5f9f1e 100644 --- a/frameworks/native/hdiadapter_new/include/sink/audio_render_sink.h +++ b/frameworks/native/hdiadapter_new/include/sink/audio_render_sink.h @@ -31,7 +31,7 @@ namespace OHOS { namespace AudioStandard { class AudioRenderSink : public IAudioRenderSink { public: - explicit AudioRenderSink(const std::string &halName = "primary"); + explicit AudioRenderSink(const uint32_t renderId, const std::string &halName = "primary"); ~AudioRenderSink(); int32_t Init(const IAudioSinkAttr &attr) override; @@ -129,6 +129,7 @@ private: static constexpr int32_t RUNNING_LOCK_TIMEOUTMS_LASTING = -1; #endif + uint32_t renderId_ = HDI_INVALID_ID; const std::string halName_ = ""; IAudioSinkAttr attr_ = {}; SinkCallbackWrapper callback_ = {}; diff --git a/frameworks/native/hdiadapter_new/include/source/audio_capture_source.h b/frameworks/native/hdiadapter_new/include/source/audio_capture_source.h index a5a196a29303b15d955b257b92578b9c3c0a3886..6f4a875f942dbebb72bb64f712807816bb2258b1 100644 --- a/frameworks/native/hdiadapter_new/include/source/audio_capture_source.h +++ b/frameworks/native/hdiadapter_new/include/source/audio_capture_source.h @@ -31,7 +31,7 @@ namespace OHOS { namespace AudioStandard { class AudioCaptureSource : public IAudioCaptureSource { public: - explicit AudioCaptureSource(const std::string &halName = "primary"); + explicit AudioCaptureSource(const uint32_t captureId, const std::string &halName = "primary"); ~AudioCaptureSource(); int32_t Init(const IAudioSourceAttr &attr) override; @@ -122,6 +122,7 @@ private: static constexpr int32_t RUNNING_LOCK_TIMEOUTMS_LASTING = -1; #endif + uint32_t captureId_ = HDI_INVALID_ID; const std::string halName_ = ""; IAudioSourceAttr attr_ = {}; std::mutex callbackMutex_; diff --git a/frameworks/native/hdiadapter_new/include/source/bluetooth_audio_capture_source.h b/frameworks/native/hdiadapter_new/include/source/bluetooth_audio_capture_source.h index dc5a12d80782df051a85414b935e20a75c74aa94..863b4ee96bd7cffd56b678399d2a3628e1d85052 100644 --- a/frameworks/native/hdiadapter_new/include/source/bluetooth_audio_capture_source.h +++ b/frameworks/native/hdiadapter_new/include/source/bluetooth_audio_capture_source.h @@ -34,7 +34,7 @@ typedef struct OHOS::HDI::Audio_Bluetooth::AudioCapture BtAudioCapture; class BluetoothAudioCaptureSource : public IAudioCaptureSource { public: - explicit BluetoothAudioCaptureSource(); + explicit BluetoothAudioCaptureSource(const uint32_t captureId); ~BluetoothAudioCaptureSource(); int32_t Init(const IAudioSourceAttr &attr) override; @@ -96,6 +96,7 @@ private: static constexpr int32_t RUNNING_LOCK_TIMEOUTMS_LASTING = -1; #endif + uint32_t captureId_ = HDI_INVALID_ID; std::string halName_ = ""; IAudioSourceAttr attr_ = {}; SourceCallbackWrapper callback_ = {}; diff --git a/frameworks/native/hdiadapter_new/include/source/wakeup_audio_capture_source.h b/frameworks/native/hdiadapter_new/include/source/wakeup_audio_capture_source.h index a14f72d524059bb03563a0bbba85a81ad7751f3c..6e86d35bdbd42c9d5a95e543c03bf424b8965352 100644 --- a/frameworks/native/hdiadapter_new/include/source/wakeup_audio_capture_source.h +++ b/frameworks/native/hdiadapter_new/include/source/wakeup_audio_capture_source.h @@ -55,7 +55,7 @@ private: class WakeupAudioCaptureSource : public IAudioCaptureSource { public: - WakeupAudioCaptureSource() = default; + WakeupAudioCaptureSource(const uint32_t captureId); ~WakeupAudioCaptureSource() = default; int32_t Init(const IAudioSourceAttr &attr) override; @@ -95,7 +95,7 @@ public: void DumpInfo(std::string &dumpString) override; private: - static inline AudioCaptureSource audioCaptureSource_; + AudioCaptureSource audioCaptureSource_; static inline std::unique_ptr wakeupBuffer_ = nullptr; static inline std::mutex wakeupMutex_; static inline int sourceInitCount_ = 0; diff --git a/frameworks/native/hdiadapter_new/manager/hdi_adapter_factory.cpp b/frameworks/native/hdiadapter_new/manager/hdi_adapter_factory.cpp index 7ba0a27f385a15bc034de8817988cd2999a6fde3..28aa70abba8dc365724b150da85d81a61d4f85fd 100644 --- a/frameworks/native/hdiadapter_new/manager/hdi_adapter_factory.cpp +++ b/frameworks/native/hdiadapter_new/manager/hdi_adapter_factory.cpp @@ -60,7 +60,7 @@ std::shared_ptr HdiAdapterFactory::CreateRenderSink(uint32_t r std::shared_ptr sink = nullptr; switch (type) { case HDI_ID_TYPE_PRIMARY: - sink = CreatePrimaryRenderSink(info); + sink = CreatePrimaryRenderSink(renderId, info); break; case HDI_ID_TYPE_BLUETOOTH: sink = CreateBluetoothRenderSink(info); @@ -100,13 +100,13 @@ std::shared_ptr HdiAdapterFactory::CreateCaptureSource(uint std::shared_ptr source = nullptr; switch (type) { case HDI_ID_TYPE_PRIMARY: - source = CreatePrimaryCaptureSource(info); + source = CreatePrimaryCaptureSource(captureId, info); break; case HDI_ID_TYPE_BLUETOOTH: - source = std::make_shared(); + source = std::make_shared(captureId); break; case HDI_ID_TYPE_WAKEUP: - source = std::make_shared(); + source = std::make_shared(captureId); break; case HDI_ID_TYPE_FAST: source = std::make_shared(); @@ -147,13 +147,14 @@ std::shared_ptr HdiAdapterFactory::CreateDeviceManager(uint32_t return deviceManager; } -std::shared_ptr HdiAdapterFactory::CreatePrimaryRenderSink(const std::string &info) +std::shared_ptr HdiAdapterFactory::CreatePrimaryRenderSink(const uint32_t renderId, + const std::string &info) { if (info == HDI_ID_INFO_DIRECT || info == HDI_ID_INFO_VOIP || info == HDI_ID_INFO_DP || info == HDI_ID_INFO_USB) { - return std::make_shared(info); + return std::make_shared(renderId, info); } - return std::make_shared(); + return std::make_shared(renderId); } std::shared_ptr HdiAdapterFactory::CreateBluetoothRenderSink(const std::string &info) @@ -176,12 +177,13 @@ std::shared_ptr HdiAdapterFactory::CreateRemoteFastRenderSink( return std::make_shared(info); } -std::shared_ptr HdiAdapterFactory::CreatePrimaryCaptureSource(const std::string &info) +std::shared_ptr HdiAdapterFactory::CreatePrimaryCaptureSource(const uint32_t captureId, + const std::string &info) { if (info == HDI_ID_INFO_USB) { - return std::make_shared(info); + return std::make_shared(captureId, info); } - return std::make_shared(); + return std::make_shared(captureId); } std::shared_ptr HdiAdapterFactory::CreateRemoteCaptureSource(const std::string &info) diff --git a/frameworks/native/hdiadapter_new/sink/audio_render_sink.cpp b/frameworks/native/hdiadapter_new/sink/audio_render_sink.cpp index 235bdbf4c2d745337bf1e55975c3f39331833fd0..235fd36cc329b3054f0e2670f512ba10c0ba7a82 100644 --- a/frameworks/native/hdiadapter_new/sink/audio_render_sink.cpp +++ b/frameworks/native/hdiadapter_new/sink/audio_render_sink.cpp @@ -33,8 +33,8 @@ namespace OHOS { namespace AudioStandard { -AudioRenderSink::AudioRenderSink(const std::string &halName) - : halName_(halName) +AudioRenderSink::AudioRenderSink(const uint32_t renderId, const std::string &halName) + : renderId_(renderId), halName_(halName) { if (halName_ == HDI_ID_INFO_DIRECT || halName_ == HDI_ID_INFO_VOIP) { sinkType_ = ADAPTER_TYPE_DIRECT; @@ -811,13 +811,12 @@ void AudioRenderSink::SetAudioRouteInfoForEnhanceChain(void) { AudioEnhanceChainManager *audioEnhanceChainManager = AudioEnhanceChainManager::GetInstance(); CHECK_AND_RETURN_LOG(audioEnhanceChainManager != nullptr, "audioEnhanceChainManager is nullptr"); - uint32_t uniqueId = GetUniqueId(); if (halName_ == HDI_ID_INFO_USB) { - audioEnhanceChainManager->SetOutputDevice(uniqueId, DEVICE_TYPE_USB_ARM_HEADSET); + audioEnhanceChainManager->SetOutputDevice(renderId_, DEVICE_TYPE_USB_ARM_HEADSET); } else if (halName_ == HDI_ID_INFO_DP) { - audioEnhanceChainManager->SetOutputDevice(uniqueId, DEVICE_TYPE_DP); + audioEnhanceChainManager->SetOutputDevice(renderId_, DEVICE_TYPE_DP); } else { - audioEnhanceChainManager->SetOutputDevice(uniqueId, currentActiveDevice_); + audioEnhanceChainManager->SetOutputDevice(renderId_, currentActiveDevice_); } } diff --git a/frameworks/native/hdiadapter_new/source/audio_capture_source.cpp b/frameworks/native/hdiadapter_new/source/audio_capture_source.cpp index c86ec1cdafd70a09e362005b68e507a50504ceee..cd0e3f23b900932946a520dab8bd9ea8fcb571c7 100644 --- a/frameworks/native/hdiadapter_new/source/audio_capture_source.cpp +++ b/frameworks/native/hdiadapter_new/source/audio_capture_source.cpp @@ -33,8 +33,8 @@ namespace OHOS { namespace AudioStandard { -AudioCaptureSource::AudioCaptureSource(const std::string &halName) - : halName_(halName) +AudioCaptureSource::AudioCaptureSource(const uint32_t captureId, const std::string &halName) + : captureId_(captureId), halName_(halName) { } @@ -782,11 +782,10 @@ void AudioCaptureSource::SetAudioRouteInfoForEnhanceChain(void) } AudioEnhanceChainManager *audioEnhanceChainManager = AudioEnhanceChainManager::GetInstance(); CHECK_AND_RETURN_LOG(audioEnhanceChainManager != nullptr, "audioEnhanceChainManager is nullptr"); - uint32_t uniqueId = GetUniqueId(); if (halName_ == HDI_ID_INFO_USB) { - audioEnhanceChainManager->SetInputDevice(uniqueId, DEVICE_TYPE_USB_ARM_HEADSET, ""); + audioEnhanceChainManager->SetInputDevice(captureId_, DEVICE_TYPE_USB_ARM_HEADSET, ""); } else { - audioEnhanceChainManager->SetInputDevice(uniqueId, currentActiveDevice_, ""); + audioEnhanceChainManager->SetInputDevice(captureId_, currentActiveDevice_, ""); } } diff --git a/frameworks/native/hdiadapter_new/source/bluetooth_audio_capture_source.cpp b/frameworks/native/hdiadapter_new/source/bluetooth_audio_capture_source.cpp index a0293820b41d2471eb005b1873d5a38f6502b6ab..53a3591ec45ccbfa8afa1f2dea313ed44f133da1 100644 --- a/frameworks/native/hdiadapter_new/source/bluetooth_audio_capture_source.cpp +++ b/frameworks/native/hdiadapter_new/source/bluetooth_audio_capture_source.cpp @@ -35,7 +35,8 @@ using namespace OHOS::HDI::Audio_Bluetooth; namespace OHOS { namespace AudioStandard { -BluetoothAudioCaptureSource::BluetoothAudioCaptureSource() +BluetoothAudioCaptureSource::BluetoothAudioCaptureSource(const uint32_t captureId) + : captureId_(captureId) { halName_ = "bt_hdap"; } @@ -420,8 +421,7 @@ void BluetoothAudioCaptureSource::SetAudioRouteInfoForEnhanceChain(void) { AudioEnhanceChainManager *audioEnhanceChainManager = AudioEnhanceChainManager::GetInstance(); CHECK_AND_RETURN_LOG(audioEnhanceChainManager != nullptr, "audioEnhanceChainManager is nullptr"); - uint32_t uniqueId = GenerateUniqueID(AUDIO_HDI_CAPTURE_ID_BASE, HDI_CAPTURE_OFFSET_BLUETOOTH); - audioEnhanceChainManager->SetInputDevice(uniqueId, currentActiveDevice_, ""); + audioEnhanceChainManager->SetInputDevice(captureId_, currentActiveDevice_, ""); } int32_t BluetoothAudioCaptureSource::CreateCapture(void) diff --git a/frameworks/native/hdiadapter_new/source/wakeup_audio_capture_source.cpp b/frameworks/native/hdiadapter_new/source/wakeup_audio_capture_source.cpp index 9a3498e1810675c1be352f4a55e860fdc6fd20af..64e0fb4f6c585ebe58a32723aad9b4bd4095ac11 100644 --- a/frameworks/native/hdiadapter_new/source/wakeup_audio_capture_source.cpp +++ b/frameworks/native/hdiadapter_new/source/wakeup_audio_capture_source.cpp @@ -105,6 +105,11 @@ void WakeupBuffer::Offer(const char *frame, const uint64_t bufferBytes) size_ += bufferBytes; } +WakeupAudioCaptureSource::WakeupAudioCaptureSource(const uint32_t captureId) + : audioCaptureSource_(captureId) +{ +} + int32_t WakeupAudioCaptureSource::Init(const IAudioSourceAttr &attr) { std::lock_guard lock(wakeupMutex_);