From ae550561f6e1b804e69f4f4d184bd6eed7a053a9 Mon Sep 17 00:00:00 2001 From: guoyao Date: Wed, 10 Sep 2025 10:37:52 +0800 Subject: [PATCH 1/4] =?UTF-8?q?reload=20capture=20manager=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: guoyao --- .../manager/include/hpae_capturer_manager.h | 2 +- .../manager/include/hpae_manager.h | 2 + .../include/hpae_virtual_capturer_manager.h | 2 +- .../manager/include/i_hpae_capturer_manager.h | 2 +- .../manager/src/hpae_capturer_manager.cpp | 12 +-- .../audio_engine/manager/src/hpae_manager.cpp | 87 +++++++++++++------ .../src/hpae_virtual_capturer_manager.cpp | 2 +- .../manager/hpae_capturer_manager_test.cpp | 3 + .../unittest/manager/hpae_manager_test.cpp | 33 +++++++ 9 files changed, 110 insertions(+), 35 deletions(-) diff --git a/services/audio_engine/manager/include/hpae_capturer_manager.h b/services/audio_engine/manager/include/hpae_capturer_manager.h index 757c524088..b1ebd3b9d7 100644 --- a/services/audio_engine/manager/include/hpae_capturer_manager.h +++ b/services/audio_engine/manager/include/hpae_capturer_manager.h @@ -72,7 +72,7 @@ public: int32_t AddAllNodesToSource(const std::vector &moveInfos, bool isConnect) override; std::string GetThreadName() override; void SetCaptureId(uint32_t captureId); - int32_t ReloadCaptureManager(const HpaeSourceInfo &sourceInfo) override; + int32_t ReloadCaptureManager(const HpaeSourceInfo &sourceInfo, bool isReload = false) override; int32_t DumpSourceInfo() override; std::string GetDeviceHDFDumpInfo() override; private: diff --git a/services/audio_engine/manager/include/hpae_manager.h b/services/audio_engine/manager/include/hpae_manager.h index 5670fd0770..9271de2977 100644 --- a/services/audio_engine/manager/include/hpae_manager.h +++ b/services/audio_engine/manager/include/hpae_manager.h @@ -232,6 +232,7 @@ private: void CreateStreamForCapInner(const HpaeStreamInfo &streamInfo); int32_t CreateRendererManager(const AudioModuleInfo &audioModuleInfo, uint32_t sinkSourceIndex, bool isReload = false); + int32_t CreateCaptureManager(HpaeSourceInfo &soureInfo, uint32_t sinkSourceIndex, bool isReload = false); void UpdateStatus(const std::weak_ptr &callback, IOperation operation, uint32_t sessionId); std::shared_ptr GetRendererManagerById(uint32_t sessionId); @@ -242,6 +243,7 @@ private: void MoveToPreferSink(const std::string& name, std::shared_ptr &serviceCallback); int32_t ReloadRenderManager(const AudioModuleInfo &audioModuleInfo, bool isReload = false); + int32_t ReloadCaptureManager(HpaeSourceInfo &soureInfo, bool isReload = false); void DestroyCapture(uint32_t sessionId); void LoadEffectLive(); diff --git a/services/audio_engine/manager/include/hpae_virtual_capturer_manager.h b/services/audio_engine/manager/include/hpae_virtual_capturer_manager.h index ac9679f2bb..738c08b33f 100644 --- a/services/audio_engine/manager/include/hpae_virtual_capturer_manager.h +++ b/services/audio_engine/manager/include/hpae_virtual_capturer_manager.h @@ -61,7 +61,7 @@ public: int32_t AddNodeToSource(const HpaeCaptureMoveInfo &moveInfo) override; int32_t AddAllNodesToSource(const std::vector &moveInfos, bool isConnect) override; std::string GetThreadName() override; - int32_t ReloadCaptureManager(const HpaeSourceInfo &sourceInfo) override; + int32_t ReloadCaptureManager(const HpaeSourceInfo &sourceInfo, bool isReload = false) override; int32_t DumpSourceInfo() override; std::string GetDeviceHDFDumpInfo() override; diff --git a/services/audio_engine/manager/include/i_hpae_capturer_manager.h b/services/audio_engine/manager/include/i_hpae_capturer_manager.h index 616e47b888..25346dc76f 100644 --- a/services/audio_engine/manager/include/i_hpae_capturer_manager.h +++ b/services/audio_engine/manager/include/i_hpae_capturer_manager.h @@ -55,7 +55,7 @@ public: virtual int32_t AddNodeToSource(const HpaeCaptureMoveInfo &moveInfo) = 0; virtual int32_t AddAllNodesToSource(const std::vector &moveInfos, bool isConnect) = 0; virtual std::string GetThreadName() = 0; - virtual int32_t ReloadCaptureManager(const HpaeSourceInfo &sourceInfo) = 0; + virtual int32_t ReloadCaptureManager(const HpaeSourceInfo &sourceInfo, bool isReload = false) = 0; virtual int32_t DumpSourceInfo() { return 0; }; virtual void UploadDumpSourceInfo(std::string &deviceName); virtual void OnNotifyDfxNodeInfo(bool isConnect, uint32_t preNodeId, HpaeDfxNodeInfo &nodeInfo); diff --git a/services/audio_engine/manager/src/hpae_capturer_manager.cpp b/services/audio_engine/manager/src/hpae_capturer_manager.cpp index 4aa8d2f230..4fbcb7fb80 100644 --- a/services/audio_engine/manager/src/hpae_capturer_manager.cpp +++ b/services/audio_engine/manager/src/hpae_capturer_manager.cpp @@ -608,13 +608,13 @@ int32_t HpaeCapturerManager::InitCapturer() return SUCCESS; } -int32_t HpaeCapturerManager::ReloadCaptureManager(const HpaeSourceInfo &sourceInfo) +int32_t HpaeCapturerManager::ReloadCaptureManager(const HpaeSourceInfo &sourceInfo, bool isReload) { if (IsInit()) { DeInit(); } hpaeSignalProcessThread_ = std::make_unique(); - auto request = [this, sourceInfo] { + auto request = [this, sourceInfo, isReload] { // disconnect std::vector moveInfos; for (const auto &it : sourceOutputNodeMap_) { @@ -633,7 +633,7 @@ int32_t HpaeCapturerManager::ReloadCaptureManager(const HpaeSourceInfo &sourceIn int32_t ret = InitCapturerManager(); if (ret != SUCCESS) { AUDIO_INFO_LOG("re-Init HpaeCapturerManager failed"); - TriggerCallback(INIT_DEVICE_RESULT, sourceInfo_.deviceName, ret); + TriggerCallback(isReload ? RELOAD_AUDIO_SINK_RESULT : INIT_DEVICE_RESULT, sourceInfo_.deviceName, ret); return; } AUDIO_INFO_LOG("re-Init HpaeCapturerManager success"); @@ -642,7 +642,7 @@ int32_t HpaeCapturerManager::ReloadCaptureManager(const HpaeSourceInfo &sourceIn for (const auto &moveInfo : moveInfos) { AddSingleNodeToSource(moveInfo, true); } - TriggerCallback(INIT_DEVICE_RESULT, sourceInfo_.deviceName, ret); + TriggerCallback(isReload ? RELOAD_AUDIO_SINK_RESULT : INIT_DEVICE_RESULT, sourceInfo_.deviceName, ret); TriggerCallback(INIT_SOURCE_RESULT, sourceInfo_.sourceType); }; SendRequest(request, __func__, true); @@ -696,9 +696,9 @@ int32_t HpaeCapturerManager::InitCapturerManager() int32_t HpaeCapturerManager::Init(bool isReload) { hpaeSignalProcessThread_ = std::make_unique(); - auto request = [this] { + auto request = [this, isReload] { int32_t ret = InitCapturerManager(); - TriggerCallback(INIT_DEVICE_RESULT, sourceInfo_.deviceName, ret); + TriggerCallback(isReload ? RELOAD_AUDIO_SINK_RESULT : INIT_DEVICE_RESULT, sourceInfo_.deviceName, ret); CHECK_AND_RETURN_LOG(ret == SUCCESS, "Init HpaeCapturerManager failed"); TriggerCallback(INIT_SOURCE_RESULT, sourceInfo_.sourceType); AUDIO_INFO_LOG("Init HpaeCapturerManager success"); diff --git a/services/audio_engine/manager/src/hpae_manager.cpp b/services/audio_engine/manager/src/hpae_manager.cpp index 1983fc3c0d..2a81979cf4 100644 --- a/services/audio_engine/manager/src/hpae_manager.cpp +++ b/services/audio_engine/manager/src/hpae_manager.cpp @@ -292,6 +292,38 @@ int32_t HpaeManager::CreateRendererManager(const AudioModuleInfo &audioModuleInf return SUCCESS; } +int32_t HpaeManager::CreateCaptureManager(HpaeSourceInfo &soureInfo, uint32_t sinkSourceIndex, bool isReload) +{ + sinkSourceIndex_.fetch_add(1); + sourceInfo.sourceId = sinkSourceIndex; + auto capturerManager = std::make_shared(sourceInfo); + capturerManager->RegisterSendMsgCallback(weak_from_this()); + capturerManagerMap_[soureInfo.sourceName] = capturerManager; + sourceNameSourceIdMap_[soureInfo.sourceName] = sinkSourceIndex; + sourceIdSourceNameMap_[sinkSourceIndex] = soureInfo.sourceName; + if (defaultSource_ == "" && coreSource_ == "") { + CreateCoreSourceManager(); + } + capturerManagerMap_[soureInfo.sourceName]->Init(isReload); + AUDIO_INFO_LOG( + "open source name: %{public}s end sourceIndex is %{public}u", soureInfo.sourceName.c_str(), sinkSourceIndex); + return SUCCESS; +} + +int32_t HpaeManager::ReloadCaptureManager(HpaeSourceInfo &soureInfo, bool isReload) +{ + if (isReload) { + sourceIdSourceNameMap_.erase(sourceNameSourceIdMap_[soureInfo.sourceName]); + uint32_t sinkSourceIndex = static_cast(sinkSourceIndex_.load()); + soureInfo.sourceId = sinkSourceIndex; + sinkSourceIndex_.fetch_add(1); + sourceIdSourceNameMap_[sinkSourceIndex] = soureInfo.sourceName; + sourceNameSourceIdMap_[soureInfo.sourceName] = sinkSourceIndex; + } + rendererManagerMap_[soureInfo.sourceName]->ReloadRenderManager(sinkInfo, isReload); + return SUCCESS; +} + int32_t HpaeManager::OpenOutputAudioPort(const AudioModuleInfo &audioModuleInfo, uint32_t sinkSourceIndex) { if (SafeGetMap(rendererManagerMap_, audioModuleInfo.name)) { @@ -335,20 +367,7 @@ int32_t HpaeManager::OpenInputAudioPort(const AudioModuleInfo &audioModuleInfo, } return sourceNameSourceIdMap_[audioModuleInfo.name]; } - sinkSourceIndex_.fetch_add(1); - sourceInfo.sourceId = sinkSourceIndex; - auto capturerManager = std::make_shared(sourceInfo); - capturerManager->RegisterSendMsgCallback(weak_from_this()); - capturerManagerMap_[audioModuleInfo.name] = capturerManager; - sourceNameSourceIdMap_[audioModuleInfo.name] = sinkSourceIndex; - sourceIdSourceNameMap_[sinkSourceIndex] = audioModuleInfo.name; - if (defaultSource_ == "" && coreSource_ == "") { - CreateCoreSourceManager(); - } - capturerManagerMap_[audioModuleInfo.name]->Init(); - AUDIO_INFO_LOG( - "open source name: %{public}s end sourceIndex is %{public}u", audioModuleInfo.name.c_str(), sinkSourceIndex); - return SUCCESS; + return CreateCaptureManager(sourceInfo, sinkSourceIndex); } void HpaeManager::CreateCoreSourceManager() @@ -426,21 +445,37 @@ uint32_t HpaeManager::OpenAudioPort(const AudioModuleInfo &audioModuleInfo) uint32_t HpaeManager::ReloadAudioPort(const AudioModuleInfo &audioModuleInfo) { auto request = [this, audioModuleInfo]() { - if (audioModuleInfo.lib != "libmodule-hdi-sink.z.so") { + PrintAudioModuleInfo(audioModuleInfo); + if ((audioModuleInfo.lib != "libmodule-hdi-source.z.so") && + (audioModuleInfo.lib != "libmodule-inner-capturer-sink.z.so")) { + if (SafeGetMap(rendererManagerMap_, audioModuleInfo.name)) { + ReloadRenderManager(audioModuleInfo, true); + return; + } + + AUDIO_INFO_LOG("currect device:%{public}s not exist.", audioModuleInfo.name.c_str()); + uint32_t sinkSourceIndex = static_cast(sinkSourceIndex_.load()); + CreateRendererManager(audioModuleInfo, sinkSourceIndex, true); + } else if (audioModuleInfo.lib == "libmodule-hdi-source.z.so") { + HpaeSourceInfo sourceInfo; + int32_t ret = TransModuleInfoToHpaeSourceInfo(audioModuleInfo, sourceInfo); + if (ret != SUCCESS) { + OnCallbackOpenOrReloadFailed(true); + return ret; + } + if (SafeGetMap(capturerManagerMap_, audioModuleInfo.name)) { + ReloadCaptureManager(audioModuleInfo, true); + return; + } + + AUDIO_INFO_LOG("currect device:%{public}s not exist.", audioModuleInfo.name.c_str()); + uint32_t sinkSourceIndex = static_cast(sinkSourceIndex_.load()); + CreateCaptureManager(audioModuleInfo, sinkSourceIndex, true); + } else { AUDIO_ERR_LOG("currect device:%{public}s not support reload.", audioModuleInfo.name.c_str()); OnCallbackOpenOrReloadFailed(true); return; } - - PrintAudioModuleInfo(audioModuleInfo); - if (SafeGetMap(rendererManagerMap_, audioModuleInfo.name)) { - ReloadRenderManager(audioModuleInfo, true); - return; - } - - AUDIO_INFO_LOG("currect device:%{public}s not exist.", audioModuleInfo.name.c_str()); - uint32_t sinkSourceIndex = static_cast(sinkSourceIndex_.load()); - CreateRendererManager(audioModuleInfo, sinkSourceIndex, true); }; SendRequest(request, __func__); return SUCCESS; @@ -1221,6 +1256,8 @@ void HpaeManager::HandleReloadDeviceResult(std::string deviceName, int32_t resul if (serviceCallback && result == SUCCESS) { if (sinkNameSinkIdMap_.find(deviceName) != sinkNameSinkIdMap_.end()) { serviceCallback->OnReloadAudioPortCb(sinkNameSinkIdMap_[deviceName]); + } else if (sourceNameSourceIdMap_.find(deviceName) != sourceNameSourceIdMap_.end()) { + serviceCallback->OnReloadAudioPortCb(sourceNameSourceIdMap_[deviceName]); } else { AUDIO_ERR_LOG("device:%{public}s is not exist.", deviceName.c_str()); serviceCallback->OnReloadAudioPortCb(SINK_INVALID_ID); diff --git a/services/audio_engine/manager/src/hpae_virtual_capturer_manager.cpp b/services/audio_engine/manager/src/hpae_virtual_capturer_manager.cpp index 3e7b1578a5..d75b200798 100644 --- a/services/audio_engine/manager/src/hpae_virtual_capturer_manager.cpp +++ b/services/audio_engine/manager/src/hpae_virtual_capturer_manager.cpp @@ -297,7 +297,7 @@ std::string HpaeVirtualCapturerManager::GetThreadName() return "Virtual_capture"; } -int32_t HpaeVirtualCapturerManager::ReloadCaptureManager(const HpaeSourceInfo &sourceInfo) +int32_t HpaeVirtualCapturerManager::ReloadCaptureManager(const HpaeSourceInfo &sourceInfo, bool isReload) { AUDIO_ERR_LOG("Unsupported operation"); return SUCCESS; diff --git a/services/audio_engine/test/unittest/manager/hpae_capturer_manager_test.cpp b/services/audio_engine/test/unittest/manager/hpae_capturer_manager_test.cpp index 9f016d74c6..00806d9621 100644 --- a/services/audio_engine/test/unittest/manager/hpae_capturer_manager_test.cpp +++ b/services/audio_engine/test/unittest/manager/hpae_capturer_manager_test.cpp @@ -311,6 +311,8 @@ HWTEST_F(HpaeCapturerManagerTest, HpaeCapturerManagerReloadTest, TestSize.Level1 EXPECT_EQ(sourceOutputInfo.capturerSessionInfo.state, HPAE_SESSION_PREPARED); EXPECT_EQ(capturerManager->ReloadCaptureManager(newSourceInfo) == SUCCESS, true); WaitForMsgProcessing(capturerManager); + EXPECT_EQ(capturerManager->ReloadCaptureManager(newSourceInfo, true) == SUCCESS, true); + WaitForMsgProcessing(capturerManager); EXPECT_EQ(capturerManager->GetSourceOutputInfo(streamInfo.sessionId, sourceOutputInfo) == SUCCESS, true); EXPECT_EQ(capturerManager->DeInit() == SUCCESS, true); WaitForMsgProcessing(capturerManager); @@ -637,6 +639,7 @@ HWTEST_F(HpaeCapturerManagerTest, ReloadCaptureManager_002, TestSize.Level0) capturerManager->isInit_ = true; EXPECT_EQ(capturerManager->ReloadCaptureManager(sourceInfo), SUCCESS); + EXPECT_EQ(capturerManager->ReloadCaptureManager(sourceInfo, true), SUCCESS); } /* diff --git a/services/audio_engine/test/unittest/manager/hpae_manager_test.cpp b/services/audio_engine/test/unittest/manager/hpae_manager_test.cpp index 35a2a6fe0b..0862b2e105 100644 --- a/services/audio_engine/test/unittest/manager/hpae_manager_test.cpp +++ b/services/audio_engine/test/unittest/manager/hpae_manager_test.cpp @@ -1504,10 +1504,43 @@ HWTEST_F(HpaeManagerUnitTest, HpaeRenderManagerReloadTest002, TestSize.Level1) std::shared_ptr callback = std::make_shared(); hpaeManager_->RegisterSerivceCallback(callback); AudioModuleInfo audioModuleInfo = GetSourceAudioModeInfo(); + audioModuleInfo.lib = "libmodule-hdi-inner.z.so"; EXPECT_EQ(hpaeManager_->ReloadAudioPort(audioModuleInfo), SUCCESS); WaitForMsgProcessing(hpaeManager_); } +HWTEST_F(HpaeManagerUnitTest, HpaeRenderManagerReloadTest003, TestSize.Level1) +{ + EXPECT_NE(hpaeManager_, nullptr); + hpaeManager_->Init(); + EXPECT_EQ(hpaeManager_->IsInit(), true); + sleep(1); + EXPECT_EQ(hpaeManager_->IsRunning(), true); + + std::shared_ptr callback = std::make_shared(); + hpaeManager_->RegisterSerivceCallback(callback); + AudioModuleInfo audioModuleInfo = GetSourceAudioModeInfo(); + EXPECT_EQ(hpaeManager_->ReloadAudioPort(audioModuleInfo), SUCCESS); + WaitForMsgProcessing(hpaeManager_); + int32_t portId = callback->GetPortId(); + + EXPECT_EQ(hpaeManager_->ReloadAudioPort(audioModuleInfo), SUCCESS); + WaitForMsgProcessing(hpaeManager_); + portId = callback->GetPortId(); + + hpaeManager_->CloseAudioPort(portId); + WaitForMsgProcessing(hpaeManager_); + EXPECT_EQ(callback->GetCloseAudioPortResult(), SUCCESS); + + EXPECT_EQ(hpaeManager_->ReloadAudioPort(audioModuleInfo), SUCCESS); + WaitForMsgProcessing(hpaeManager_); + portId = callback->GetPortId(); + + hpaeManager_->DeInit(); + EXPECT_EQ(hpaeManager_->IsInit(), false); + EXPECT_EQ(hpaeManager_->IsRunning(), false); +} + /** * @tc.name : Test UpdateCollaborativeState * @tc.type : FUNC -- Gitee From 2c560f13905d914cadca3adca4471d43d00611e7 Mon Sep 17 00:00:00 2001 From: guoyao Date: Wed, 10 Sep 2025 11:38:58 +0800 Subject: [PATCH 2/4] =?UTF-8?q?reload=20capture=20manager=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: guoyao --- .../pro_audio_service_adapter_unit_test.cpp | 43 +++++++++++++++++++ .../unittest/manager/hpae_manager_test.cpp | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/frameworks/native/audioadapter/test/unittest/src/pro_audio_service_adapter_unit_test.cpp b/frameworks/native/audioadapter/test/unittest/src/pro_audio_service_adapter_unit_test.cpp index 11bdff3267..e07975fd19 100644 --- a/frameworks/native/audioadapter/test/unittest/src/pro_audio_service_adapter_unit_test.cpp +++ b/frameworks/native/audioadapter/test/unittest/src/pro_audio_service_adapter_unit_test.cpp @@ -345,6 +345,19 @@ HWTEST_F(ProAudioServiceAdapterUnitTest, Pro_Audio_ReloadAudioPort_002, TestSize EXPECT_EQ(portId, -1); } +/** + * @tc.name: Pro_Audio_ReloadAudioPort_003 + * @tc.desc: test reload audio port source + * @tc.type: FUNC + */ +HWTEST_F(ProAudioServiceAdapterUnitTest, Pro_Audio_ReloadAudioPort_003, TestSize.Level1) +{ + AudioModuleInfo moduleInfo = InitSourceAudioModeInfo(); + moduleInfo.lib = "libmodule-inner-capturer-sink.z.so"; + int32_t portId = impl_->ReloadAudioPort(moduleInfo.lib, moduleInfo); + EXPECT_EQ(portId, -1); +} + /** * @tc.name: Pro_Audio_ReloadAudioPort_004 * @tc.desc: test reload audio port sink @@ -374,5 +387,35 @@ HWTEST_F(ProAudioServiceAdapterUnitTest, Pro_Audio_ReloadAudioPort_005, TestSize portId = impl_->ReloadAudioPort(moduleInfo.lib, moduleInfo); EXPECT_GE(portId, 0); } + +/** + * @tc.name: Pro_Audio_ReloadAudioPort_006 + * @tc.desc: test reload audio port sink + * @tc.type: FUNC + */ +HWTEST_F(ProAudioServiceAdapterUnitTest, Pro_Audio_ReloadAudioPort_006, TestSize.Level1) +{ + AudioModuleInfo moduleInfo = InitSinkAudioModeInfo(); + int32_t portId = impl_->OpenAudioPort(moduleInfo.lib, moduleInfo); + EXPECT_EQ(portId, -1); + portId = impl_->ReloadAudioPort(moduleInfo.lib, moduleInfo); + EXPECT_EQ(portId, -1); +} + +/** + * @tc.name: Pro_Audio_ReloadAudioPort_007 + * @tc.desc: test reload audio port sink + * @tc.type: FUNC + */ +HWTEST_F(ProAudioServiceAdapterUnitTest, Pro_Audio_ReloadAudioPort_007, TestSize.Level1) +{ + AudioModuleInfo moduleInfo = InitSourceAudioModeInfo(); + int32_t portId = impl_->OpenAudioPort(moduleInfo.lib, moduleInfo); + EXPECT_EQ(portId, -1); + int32_t ret = impl_->CloseAudioPort(portId); + EXPECT_EQ(ERROR, ret); + portId = impl_->ReloadAudioPort(moduleInfo.lib, moduleInfo); + EXPECT_EQ(portId, -1); +} } // namespace AudioStandard } // namespace OHOS diff --git a/services/audio_engine/test/unittest/manager/hpae_manager_test.cpp b/services/audio_engine/test/unittest/manager/hpae_manager_test.cpp index e016ec6300..c757359e01 100644 --- a/services/audio_engine/test/unittest/manager/hpae_manager_test.cpp +++ b/services/audio_engine/test/unittest/manager/hpae_manager_test.cpp @@ -1518,7 +1518,7 @@ HWTEST_F(HpaeManagerUnitTest, HpaeRenderManagerReloadTest002, TestSize.Level1) std::shared_ptr callback = std::make_shared(); hpaeManager_->RegisterSerivceCallback(callback); AudioModuleInfo audioModuleInfo = GetSourceAudioModeInfo(); - audioModuleInfo.lib = "libmodule-hdi-inner.z.so"; + audioModuleInfo.lib = "libmodule-inner-capturer-sink.z.so"; EXPECT_EQ(hpaeManager_->ReloadAudioPort(audioModuleInfo), SUCCESS); WaitForMsgProcessing(hpaeManager_); } -- Gitee From 7c206697cf02011a2f701aa9d9a6cc86cb4f310f Mon Sep 17 00:00:00 2001 From: guoyao Date: Wed, 10 Sep 2025 14:01:01 +0800 Subject: [PATCH 3/4] =?UTF-8?q?reload=20capture=20manager=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: guoyao --- .../manager/include/hpae_manager.h | 4 +-- .../audio_engine/manager/src/hpae_manager.cpp | 30 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/services/audio_engine/manager/include/hpae_manager.h b/services/audio_engine/manager/include/hpae_manager.h index 5f87f2088d..82497ab535 100644 --- a/services/audio_engine/manager/include/hpae_manager.h +++ b/services/audio_engine/manager/include/hpae_manager.h @@ -233,7 +233,7 @@ private: void CreateStreamForCapInner(const HpaeStreamInfo &streamInfo); int32_t CreateRendererManager(const AudioModuleInfo &audioModuleInfo, uint32_t sinkSourceIndex, bool isReload = false); - int32_t CreateCaptureManager(HpaeSourceInfo &soureInfo, uint32_t sinkSourceIndex, bool isReload = false); + int32_t CreateCaptureManager(HpaeSourceInfo &sourceInfo, uint32_t sinkSourceIndex, bool isReload = false); void UpdateStatus(const std::weak_ptr &callback, IOperation operation, uint32_t sessionId); std::shared_ptr GetRendererManagerById(uint32_t sessionId); @@ -244,7 +244,7 @@ private: void MoveToPreferSink(const std::string& name, std::shared_ptr &serviceCallback); int32_t ReloadRenderManager(const AudioModuleInfo &audioModuleInfo, bool isReload = false); - int32_t ReloadCaptureManager(HpaeSourceInfo &soureInfo, bool isReload = false); + int32_t ReloadCaptureManager(HpaeSourceInfo &sourceInfo, bool isReload = false); void DestroyCapture(uint32_t sessionId); void LoadEffectLive(); diff --git a/services/audio_engine/manager/src/hpae_manager.cpp b/services/audio_engine/manager/src/hpae_manager.cpp index 81629bd685..fbe6eabe50 100644 --- a/services/audio_engine/manager/src/hpae_manager.cpp +++ b/services/audio_engine/manager/src/hpae_manager.cpp @@ -298,35 +298,35 @@ int32_t HpaeManager::CreateRendererManager(const AudioModuleInfo &audioModuleInf return SUCCESS; } -int32_t HpaeManager::CreateCaptureManager(HpaeSourceInfo &soureInfo, uint32_t sinkSourceIndex, bool isReload) +int32_t HpaeManager::CreateCaptureManager(HpaeSourceInfo &sourceInfo, uint32_t sinkSourceIndex, bool isReload) { sinkSourceIndex_.fetch_add(1); sourceInfo.sourceId = sinkSourceIndex; auto capturerManager = std::make_shared(sourceInfo); capturerManager->RegisterSendMsgCallback(weak_from_this()); - capturerManagerMap_[soureInfo.sourceName] = capturerManager; - sourceNameSourceIdMap_[soureInfo.sourceName] = sinkSourceIndex; - sourceIdSourceNameMap_[sinkSourceIndex] = soureInfo.sourceName; + capturerManagerMap_[sourceInfo.sourceName] = capturerManager; + sourceNameSourceIdMap_[sourceInfo.sourceName] = sinkSourceIndex; + sourceIdSourceNameMap_[sinkSourceIndex] = sourceInfo.sourceName; if (defaultSource_ == "" && coreSource_ == "") { CreateCoreSourceManager(); } - capturerManagerMap_[soureInfo.sourceName]->Init(isReload); + capturerManagerMap_[sourceInfo.sourceName]->Init(isReload); AUDIO_INFO_LOG( - "open source name: %{public}s end sourceIndex is %{public}u", soureInfo.sourceName.c_str(), sinkSourceIndex); + "open source name: %{public}s end sourceIndex is %{public}u", sourceInfo.sourceName.c_str(), sinkSourceIndex); return SUCCESS; } -int32_t HpaeManager::ReloadCaptureManager(HpaeSourceInfo &soureInfo, bool isReload) +int32_t HpaeManager::ReloadCaptureManager(HpaeSourceInfo &sourceInfo, bool isReload) { if (isReload) { - sourceIdSourceNameMap_.erase(sourceNameSourceIdMap_[soureInfo.sourceName]); + sourceIdSourceNameMap_.erase(sourceNameSourceIdMap_[sourceInfo.sourceName]); uint32_t sinkSourceIndex = static_cast(sinkSourceIndex_.load()); - soureInfo.sourceId = sinkSourceIndex; + sourceInfo.sourceId = sinkSourceIndex; sinkSourceIndex_.fetch_add(1); - sourceIdSourceNameMap_[sinkSourceIndex] = soureInfo.sourceName; - sourceNameSourceIdMap_[soureInfo.sourceName] = sinkSourceIndex; + sourceIdSourceNameMap_[sinkSourceIndex] = sourceInfo.sourceName; + sourceNameSourceIdMap_[sourceInfo.sourceName] = sinkSourceIndex; } - rendererManagerMap_[soureInfo.sourceName]->ReloadRenderManager(sinkInfo, isReload); + rendererManagerMap_[sourceInfo.sourceName]->ReloadCaptureManager(sourceInfo, isReload); return SUCCESS; } @@ -467,16 +467,16 @@ uint32_t HpaeManager::ReloadAudioPort(const AudioModuleInfo &audioModuleInfo) int32_t ret = TransModuleInfoToHpaeSourceInfo(audioModuleInfo, sourceInfo); if (ret != SUCCESS) { OnCallbackOpenOrReloadFailed(true); - return ret; + return; } if (SafeGetMap(capturerManagerMap_, audioModuleInfo.name)) { - ReloadCaptureManager(audioModuleInfo, true); + ReloadCaptureManager(sourceInfo, true); return; } AUDIO_INFO_LOG("currect device:%{public}s not exist.", audioModuleInfo.name.c_str()); uint32_t sinkSourceIndex = static_cast(sinkSourceIndex_.load()); - CreateCaptureManager(audioModuleInfo, sinkSourceIndex, true); + CreateCaptureManager(sourceInfo, sinkSourceIndex, true); } else { AUDIO_ERR_LOG("currect device:%{public}s not support reload.", audioModuleInfo.name.c_str()); OnCallbackOpenOrReloadFailed(true); -- Gitee From 8bb338ff3d5916a2e4e37f19a673572e556219ec Mon Sep 17 00:00:00 2001 From: guoyao Date: Wed, 10 Sep 2025 14:20:33 +0800 Subject: [PATCH 4/4] =?UTF-8?q?reload=20capture=20manager=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: guoyao --- services/audio_engine/manager/src/hpae_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/audio_engine/manager/src/hpae_manager.cpp b/services/audio_engine/manager/src/hpae_manager.cpp index fbe6eabe50..074f0f8350 100644 --- a/services/audio_engine/manager/src/hpae_manager.cpp +++ b/services/audio_engine/manager/src/hpae_manager.cpp @@ -326,7 +326,7 @@ int32_t HpaeManager::ReloadCaptureManager(HpaeSourceInfo &sourceInfo, bool isRel sourceIdSourceNameMap_[sinkSourceIndex] = sourceInfo.sourceName; sourceNameSourceIdMap_[sourceInfo.sourceName] = sinkSourceIndex; } - rendererManagerMap_[sourceInfo.sourceName]->ReloadCaptureManager(sourceInfo, isReload); + capturerManagerMap_[sourceInfo.sourceName]->ReloadCaptureManager(sourceInfo, isReload); return SUCCESS; } -- Gitee