From 92a79aa488df12b4fbb7ef6cc60f0d20f6d44b7b Mon Sep 17 00:00:00 2001 From: lizihao Date: Tue, 2 Sep 2025 15:50:22 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9C=AA=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=9F=B3=E6=95=88=E7=B1=BB=E5=9E=8B=E6=B5=81=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lizihao --- .../include/audio_effect_chain_manager.h | 1 + .../audioeffect/libaudio_effect.versionscript | 1 + .../src/audio_effect_chain_manager.cpp | 16 ++++++++++++++++ .../manager/src/hpae_renderer_manager.cpp | 8 +++++--- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/frameworks/native/audioeffect/include/audio_effect_chain_manager.h b/frameworks/native/audioeffect/include/audio_effect_chain_manager.h index 8405aedc45..1984d523a3 100644 --- a/frameworks/native/audioeffect/include/audio_effect_chain_manager.h +++ b/frameworks/native/audioeffect/include/audio_effect_chain_manager.h @@ -159,6 +159,7 @@ public: ProcessClusterOperation CheckProcessClusterInstances(const std::string &sceneType); int32_t GetOutputChannelInfo(const std::string &sceneType, uint32_t &channels, uint64_t &channelLayout); int32_t DeleteStreamVolume(const std::string StringSessionID); + bool ExistAudioEffectChainInner(const std::string sceneType, const AudioEffectMode effectMode); private: int32_t SetAudioEffectChainDynamic(std::string &sceneType, const std::string &effectMode); void UpdateSensorState(); diff --git a/frameworks/native/audioeffect/libaudio_effect.versionscript b/frameworks/native/audioeffect/libaudio_effect.versionscript index fd9563a196..992bebd893 100644 --- a/frameworks/native/audioeffect/libaudio_effect.versionscript +++ b/frameworks/native/audioeffect/libaudio_effect.versionscript @@ -98,6 +98,7 @@ *ResetInfo*; *SetAbsVolumeStateToEffect*; *DeleteStreamVolume*; + *ExistAudioEffectChainInner*; local: *; }; \ No newline at end of file diff --git a/frameworks/native/audioeffect/src/audio_effect_chain_manager.cpp b/frameworks/native/audioeffect/src/audio_effect_chain_manager.cpp index 236ff00f59..e557c37907 100644 --- a/frameworks/native/audioeffect/src/audio_effect_chain_manager.cpp +++ b/frameworks/native/audioeffect/src/audio_effect_chain_manager.cpp @@ -2011,5 +2011,21 @@ int32_t AudioEffectChainManager::EffectApAbsVolumeStateUpdate(const bool absVolu return SUCCESS; } + +bool AudioEffectChainManager::ExistAudioEffectChainInner(const std::string sceneType, const AudioEffectMode effectMode) +{ + std::lock_guard lock(dynamicMutex_); + if (effectMode == EFFECT_NONE) { + return false; + } + const std::unordered_map &audioSupportedSceneModes = GetAudioSupportedSceneModes(); + std::string sceneMode = audioSupportedSceneModes.find(effectMode)->second; + std::string effectChainKey = sceneType + "_&_" + sceneMode + "_&_" + GetDeviceTypeName(); + if (!sceneTypeAndModeToEffectChainNameMap_.count(effectChainKey)) { + AUDIO_ERR_LOG("EffectChain key [%{public}s] does not exist", effectChainKey.c_str()); + return false; + } + return true; +} } // namespace AudioStandard } // namespace OHOS diff --git a/services/audio_engine/manager/src/hpae_renderer_manager.cpp b/services/audio_engine/manager/src/hpae_renderer_manager.cpp index fdb85edef9..f7010b4f43 100644 --- a/services/audio_engine/manager/src/hpae_renderer_manager.cpp +++ b/services/audio_engine/manager/src/hpae_renderer_manager.cpp @@ -249,9 +249,11 @@ HpaeProcessorType HpaeRendererManager::TransToProperSceneType(StreamUsage stream HpaeProcessorType HpaeRendererManager::GetProcessorType(uint32_t sessionId) { HpaeNodeInfo nodeInfo = sinkInputNodeMap_[sessionId]->GetNodeInfo(); - if ((sessionNodeMap_[sessionId].bypass || nodeInfo.effectInfo.effectMode == EFFECT_NONE) && - (!isSplitProcessorType(nodeInfo.sceneType))) { - return HPAE_SCENE_EFFECT_NONE; + std::string sceneType = TransProcessorTypeToSceneType(nodeInfo.sceneType); + bool ret = AudioEffectChainManager::GetInstance()->ExistAudioEffectChainInner(sceneType, + nodeInfo.effectInfo.effectMode); + if ((!isSplitProcessorType(nodeInfo.sceneType)) && (sessionNodeMap_[sessionId].bypass || ret == false)) { + return HPAE_SCENE_EFFECT_NONE; } return nodeInfo.sceneType; } -- Gitee From 31e30fa0f1c550108d518bad5e469098d7d23422 Mon Sep 17 00:00:00 2001 From: lizihao Date: Tue, 2 Sep 2025 20:45:18 +0800 Subject: [PATCH 2/3] open proAudio Signed-off-by: lizihao --- config.gni | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.gni b/config.gni index 12ebfbd06e..f87334bd1d 100644 --- a/config.gni +++ b/config.gni @@ -34,7 +34,7 @@ declare_args() { audio_framework_feature_file_io = true audio_framework_feature_inner_capturer = true audio_framework_feature_low_latency = true - audio_framework_feature_new_engine_flag = false + audio_framework_feature_new_engine_flag = true audio_framework_feature_usb_audio = false if (defined(global_parts_info) && -- Gitee From 7dd7737f421f17b242f45db1e5f31ae7708d3886 Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 3 Sep 2025 09:40:04 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E9=BB=84=E8=93=9D=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lizihao --- .../audio_effect_chain_fuzzer.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/test/fuzztest/audioeffectchain_fuzzer/audio_effect_chain_fuzzer.cpp b/test/fuzztest/audioeffectchain_fuzzer/audio_effect_chain_fuzzer.cpp index 05d2d82281..09f5ac5298 100644 --- a/test/fuzztest/audioeffectchain_fuzzer/audio_effect_chain_fuzzer.cpp +++ b/test/fuzztest/audioeffectchain_fuzzer/audio_effect_chain_fuzzer.cpp @@ -1115,13 +1115,6 @@ void ReleaseAudioEffectChainDynamicInnerFuzzTest() audioEffectChainManager->ReleaseAudioEffectChainDynamicInner(sceneType); } -void EnhanceChainManagerGetAlgoConfigFuzzTest() -{ - struct DeviceAttrAdapter validAdapter; - EnhanceChainManagerCreateCb(0, &validAdapter); - EnhanceChainManagerSendInitCommand(); -} - void QueryEffectChannelInfoInnerFuzzTest() { AudioEffectChainManager *audioEffectChainManager = AudioEffectChainManager::GetInstance(); @@ -1205,7 +1198,7 @@ void EnhanceChainManagerUpdatePropertyAndSendToAlgoFuzzTest() audioEnhanceChainManagerImpl.UpdatePropertyAndSendToAlgo(deviceType); } -typedef void (*TestFuncs[59])(); +typedef void (*TestFuncs[58])(); TestFuncs g_testFuncs = { EffectChainManagerInitCbFuzzTest, @@ -1261,7 +1254,6 @@ TestFuncs g_testFuncs = { AudioEnhanceChainUpdateExtraSceneTypeFuzzTest, SetAbsVolumeStateToEffectFuzzTest, ReleaseAudioEffectChainDynamicInnerFuzzTest, - EnhanceChainManagerGetAlgoConfigFuzzTest, QueryEffectChannelInfoInnerFuzzTest, EffectChainManagerExistAudioEffectChainInnerFuzzTest1, EffectChainManagerExistAudioEffectChainInnerFuzzTest2, -- Gitee