From df7c68eee7fc9e6b5e995ac8c9d79a3fb7a5a01f Mon Sep 17 00:00:00 2001 From: seveno0 Date: Wed, 5 Mar 2025 18:37:10 +0800 Subject: [PATCH] hdiadapter bugfix: change uniqueid to renderid/captureid Signed-off-by: seveno0 --- .../include/manager/hdi_adapter_factory.h | 4 ++-- .../include/sink/audio_render_sink.h | 3 ++- .../include/source/audio_capture_source.h | 3 ++- .../source/bluetooth_audio_capture_source.h | 3 ++- .../source/wakeup_audio_capture_source.h | 4 ++-- .../manager/hdi_adapter_factory.cpp | 22 ++++++++++--------- .../hdiadapter_new/sink/audio_render_sink.cpp | 11 +++++----- .../source/audio_capture_source.cpp | 9 ++++---- .../source/bluetooth_audio_capture_source.cpp | 6 ++--- .../source/wakeup_audio_capture_source.cpp | 5 +++++ 10 files changed, 39 insertions(+), 31 deletions(-) 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 a827e1285e..a47e061e71 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 d7b0cbe6f4..70a54a8cdc 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 a5a196a293..6f4a875f94 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 dc5a12d807..863b4ee96b 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 a14f72d524..6e86d35bdb 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 7ba0a27f38..28aa70abba 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 235bdbf4c2..235fd36cc3 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 c86ec1cdaf..cd0e3f23b9 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 a0293820b4..53a3591ec4 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 9a3498e181..64e0fb4f6c 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_); -- Gitee