From 6301dd37dd8457309c07f50209b597aa82750cdc Mon Sep 17 00:00:00 2001 From: Noc Date: Thu, 25 Jul 2024 19:17:02 +0800 Subject: [PATCH 1/3] audioEnhanceChain support switch device Signed-off-by: Noc --- .../src/pulse_audio_service_adapter_impl.cpp | 1 + .../src/audio_enhance_chain_manager.cpp | 14 +- .../pulseaudio/modules/hdi/hdi_source.c | 1 - .../modules/hdi/module_hdi_source.c | 142 +++++++++++++++--- .../native/pulseaudio/modules/hdi/userdata.h | 1 + 5 files changed, 139 insertions(+), 20 deletions(-) diff --git a/frameworks/native/audioadapter/src/pulse_audio_service_adapter_impl.cpp b/frameworks/native/audioadapter/src/pulse_audio_service_adapter_impl.cpp index 0ddb1f3b7e..c0ded8eeb2 100644 --- a/frameworks/native/audioadapter/src/pulse_audio_service_adapter_impl.cpp +++ b/frameworks/native/audioadapter/src/pulse_audio_service_adapter_impl.cpp @@ -481,6 +481,7 @@ int32_t PulseAudioServiceAdapterImpl::MoveSourceOutputByIndexOrName(uint32_t sou operation = pa_context_move_source_output_by_index(mContext, sourceOutputId, sourceIndex, PulseAudioServiceAdapterImpl::PaMoveSourceOutputCb, reinterpret_cast(userData.get())); } else { + AUDIO_FATAL_LOG("sourceName = %{public}s, sourceOutputId = %{public}u", sourceName.c_str(), sourceOutputId); operation = pa_context_move_source_output_by_name(mContext, sourceOutputId, sourceName.c_str(), PulseAudioServiceAdapterImpl::PaMoveSourceOutputCb, reinterpret_cast(userData.get())); } diff --git a/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp b/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp index 5de1a750ff..7c8e94f20b 100644 --- a/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp +++ b/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp @@ -219,11 +219,14 @@ int32_t AudioEnhanceChainManager::ParseSceneKeyCode(const uint32_t sceneKeyCode, int32_t AudioEnhanceChainManager::CreateAudioEnhanceChainDynamic(const uint32_t sceneKeyCode) { std::lock_guard lock(chainManagerMutex_); - + AUDIO_FATAL_LOG("=====Create enhanceChain=====, sceneKeyCode = %{public}u", sceneKeyCode); std::string sceneType = ""; std::string capturerDevice = ""; std::string rendererDeivce = ""; if (ParseSceneKeyCode(sceneKeyCode, sceneType, capturerDevice, rendererDeivce)) { + AUDIO_FATAL_LOG("sceneType=%{public}s", sceneType.c_str()); + AUDIO_FATAL_LOG("capturerDevice=%{public}s", capturerDevice.c_str()); + AUDIO_FATAL_LOG("rendererDeivce=%{public}s", rendererDeivce.c_str()); return ERROR; } AudioEnhanceParam algoParam = {(uint32_t)isMute_, (uint32_t)(systemVol_ * VOLUME_FACTOR), @@ -260,6 +263,14 @@ int32_t AudioEnhanceChainManager::CreateAudioEnhanceChainDynamic(const uint32_t sceneTypeToEnhanceChainCountMap_[sceneKeyCode] = 1; } } + + // CXDEBUG + AUDIO_FATAL_LOG("chainMapSize = %{public}zu", sceneTypeToEnhanceChainMap_.size()); + for (auto item = sceneTypeToEnhanceChainCountMap_.begin(); item != sceneTypeToEnhanceChainCountMap_.end(); item++) { + AUDIO_FATAL_LOG("SceneCode = %{public}u, Count = %{public}d", item->first, item->second); + } + // CXDEBUG + if (SetAudioEnhanceChainDynamic(sceneKeyCode, sceneType, capturerDevice) != SUCCESS) { AUDIO_ERR_LOG("%{public}s create failed.", sceneType.c_str()); return ERROR; @@ -341,6 +352,7 @@ int32_t AudioEnhanceChainManager::ReleaseAudioEnhanceChainDynamic(const uint32_t { std::lock_guard lock(chainManagerMutex_); CHECK_AND_RETURN_RET_LOG(isInitialized_, ERROR, "has not been initialized"); + AUDIO_FATAL_LOG("=====Release enhanceChain=====, sceneKeyCode = %{public}u", sceneKeyCode); if (!sceneTypeToEnhanceChainMap_.count(sceneKeyCode)) { sceneTypeToEnhanceChainCountMap_.erase(sceneKeyCode); diff --git a/frameworks/native/pulseaudio/modules/hdi/hdi_source.c b/frameworks/native/pulseaudio/modules/hdi/hdi_source.c index 6487824f97..63c1cd9441 100644 --- a/frameworks/native/pulseaudio/modules/hdi/hdi_source.c +++ b/frameworks/native/pulseaudio/modules/hdi/hdi_source.c @@ -65,7 +65,6 @@ #define AUDIO_FRAME_NUM_IN_BUF 30 #define HDI_WAKEUP_BUFFER_TIME (PA_USEC_PER_SEC * 2) #define DEVICE_TYPE_MIC 15 -#define BASE_TEN 10 const char *DEVICE_CLASS_REMOTE = "remote"; const int32_t SUCCESS = 0; diff --git a/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c b/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c index c4c50af387..41e32375f5 100644 --- a/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c +++ b/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c @@ -134,15 +134,8 @@ static void SetResampler(pa_source_output *so, const pa_sample_spec *algoConfig, } } -static pa_hook_result_t SourceOutputPutCb(pa_core *c, pa_source_output *so) +static pa_hook_result_t HandleSourceOutputPut(pa_source_output *so, struct Userdata *u) { - struct Userdata *u = (struct Userdata *)so->source->userdata; - if (u == NULL) { - AUDIO_ERR_LOG("Get Userdata failed! userdata is NULL"); - return PA_HOOK_OK; - } - AUDIO_INFO_LOG("Trigger SourceOutputPutCb"); - pa_assert(c); const char *sceneType = pa_proplist_gets(so->proplist, "scene.type"); uint32_t captureId = u->captureId; uint32_t renderId = u->renderId; @@ -175,15 +168,8 @@ static pa_hook_result_t SourceOutputPutCb(pa_core *c, pa_source_output *so) return PA_HOOK_OK; } -static pa_hook_result_t SourceOutputUnlinkCb(pa_core *c, pa_source_output *so) +static pa_hook_result_t HandleSourceOutputUnlink(pa_source_output *so, struct Userdata *u) { - AUDIO_INFO_LOG("Trigger SourceOutputUnlinkCb"); - struct Userdata *u = (struct Userdata *)so->source->userdata; - if (u == NULL) { - AUDIO_ERR_LOG("Get Userdata failed! userdata is NULL"); - return PA_HOOK_OK; - } - pa_assert(c); const char *sceneType = pa_proplist_gets(so->proplist, "scene.type"); uint32_t captureId = u->captureId; uint32_t renderId = u->renderId; @@ -207,6 +193,103 @@ static pa_hook_result_t SourceOutputUnlinkCb(pa_core *c, pa_source_output *so) return PA_HOOK_OK; } +static pa_hook_result_t CheckIfAvailSource(pa_source_output *so, struct Userdata *u) +{ + pa_source *soSource = so->source; + pa_source *thisSource = u->source; + if (soSource == NULL || thisSource == NULL) { + return PA_HOOK_CANCEL; + } + if (soSource->index != thisSource->index) { + AUDIO_FATAL_LOG("NOT correspondant SOURCE %{public}s AND %{public}s.", soSource->name, thisSource->name); + return PA_HOOK_CANCEL; + } + return PA_HOOK_OK; +} + +static pa_hook_result_t SourceOutputPutCb(pa_core *c, pa_source_output *so, struct Userdata *u) +{ + AUDIO_INFO_LOG("Trigger SourceOutputPutCb"); + if (u == NULL) { + AUDIO_ERR_LOG("Get Userdata failed! userdata is NULL"); + return PA_HOOK_OK; + } + pa_assert(c); + AUDIO_FATAL_LOG("SO_INDEX = %{public}u", so->index); + AUDIO_FATAL_LOG("SO_SOURCE_INDEX = %{public}u, SO_SOURCE_NAME = %{public}s", so->source->index, so->source->name); + AUDIO_FATAL_LOG("THIS SOURCE_INDEX = %{public}u, THIS_SOURCE_NAME = %{public}s", u->source->index, u->source->name); + if (CheckIfAvailSource(so, u) == PA_HOOK_CANCEL) { + return PA_HOOK_OK; + } + return HandleSourceOutputPut(so, u); +} + +static pa_hook_result_t SourceOutputUnlinkCb(pa_core *c, pa_source_output *so, struct Userdata *u) +{ + AUDIO_INFO_LOG("Trigger SourceOutputUnlinkCb"); + if (u == NULL) { + AUDIO_ERR_LOG("Get Userdata failed! userdata is NULL"); + return PA_HOOK_OK; + } + pa_assert(c); + AUDIO_FATAL_LOG("SO_INDEX = %{public}u", so->index); + AUDIO_FATAL_LOG("SO_SOURCE_INDEX = %{public}u, SO_SOURCE_NAME = %{public}s", so->source->index, so->source->name); + AUDIO_FATAL_LOG("THIS SOURCE_INDEX = %{public}u, THIS_SOURCE_NAME = %{public}s", u->source->index, u->source->name); + if (CheckIfAvailSource(so, u) == PA_HOOK_CANCEL) { + return PA_HOOK_OK; + } + return HandleSourceOutputUnlink(so, u); +} + +static pa_hook_result_t SourceOutputMoveStartCb(pa_core *c, pa_source_output *so, struct Userdata *u) +{ + AUDIO_FATAL_LOG("==========SourceOutputMoveStartCb=========="); + if (u != NULL) { + AUDIO_FATAL_LOG("This SourceName = %{public}s", u->source->name); + } + AUDIO_FATAL_LOG("SO_INDEX = %{public}u", so->index); + AUDIO_FATAL_LOG("SO_SOURCE_INDEX = %{public}u, SO_SOURCE_NAME = %{public}s", so->source->index, so->source->name); + AUDIO_FATAL_LOG("THIS SOURCE_INDEX = %{public}u, THIS_SOURCE_NAME = %{public}s", u->source->index, u->source->name); + + if (so->source->index != u->source->index) { + AUDIO_FATAL_LOG("NOT RIGHT SOURCE"); + return PA_HOOK_OK; + } + // Create Things + HandleSourceOutputPut(so, u); + + // Release Old Things, if old source is still alive + pa_source *sourceOri = so->source; + if (sourceOri == NULL) { + AUDIO_FATAL_LOG("original Source has been free"); + return PA_HOOK_OK; + } + AUDIO_FATAL_LOG("original sourceName = %{public}s", sourceOri->name); + struct Userdata *uOri = (struct Userdata *)sourceOri->userdata; + if (u == NULL) { + AUDIO_FATAL_LOG("original Source userdata is NULL"); + return PA_HOOK_OK; + } + AUDIO_FATAL_LOG("origin_capture_ID = %{public}u", u->capturerId); + HandleSourceOutputUnlink(so, uOri); + + return PA_HOOK_OK; +} + +static pa_hook_result_t SourceOutputMoveFinishCb(pa_core *c, pa_source_output *so, struct Userdata *u) +{ + AUDIO_INFO_LOG("Trigger SourceOutputMoveFinishCb"); + if (u == NULL) { + AUDIO_ERR_LOG("Get Userdata failed! userdata is NULL"); + return PA_HOOK_OK; + } + pa_assert(c); + if (CheckIfAvailSource(so, u) == PA_HOOK_CANCEL) { + return PA_HOOK_OK; + } + return HandleSourceOutputPut(so, u); +} + int pa__init(pa_module *m) { pa_modargs *ma = NULL; @@ -221,11 +304,14 @@ int pa__init(pa_module *m) if (!(m->userdata = PaHdiSourceNew(m, ma, __FILE__))) { goto fail; } + pa_source *source = (pa_source *)m->userdata; pa_module_hook_connect(m, &m->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_PUT], PA_HOOK_LATE, - (pa_hook_cb_t)SourceOutputPutCb, NULL); + (pa_hook_cb_t)SourceOutputPutCb, source->userdata); pa_module_hook_connect(m, &m->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_UNLINK], PA_HOOK_LATE, - (pa_hook_cb_t)SourceOutputUnlinkCb, NULL); + (pa_hook_cb_t)SourceOutputUnlinkCb, source->userdata); + pa_module_hook_connect(m, &m->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FINISH], PA_HOOK_LATE, + (pa_hook_cb_t)SourceOutputMoveFinishCb, source->userdata); pa_modargs_free(ma); @@ -252,6 +338,20 @@ int pa__get_n_used(pa_module *m) return pa_source_linked_by(source); } +static void ReleaseAllChains(struct Userdata *u) +{ + void *state = NULL; + uint32_t *sceneKeyNum; + const void *sceneKey; + while ((sceneKeyNum = pa_hashmap_iterate(u->sceneToCountMap, &state, &sceneKey))) { + uint32_t sceneKeyCode = (uint32_t)strtoul((char *)sceneKey, NULL, BASE_TEN); + AUDIO_FATAL_LOG("sceneKey=%{public}u, number=%{public}u", sceneKeyCode, *sceneKeyNum); + for (int32_t count = 0; count < *sceneKeyNum; count++) { + EnhanceChainManagerReleaseCb(sceneKeyCode); + } + } +} + void pa__done(pa_module *m) { pa_source *source = NULL; @@ -259,6 +359,12 @@ void pa__done(pa_module *m) pa_assert(m); if ((source = m->userdata)) { + AUDIO_FATAL_LOG("==========Unload Source[%{public}s]==========", source->name); + struct Userdata *u = (struct Userdata *)source->userdata; + if (u != NULL) { + AUDIO_FATAL_LOG("THIS SOURCE HAS UserData"); + ReleaseAllChains(u); + } PaHdiSourceFree(source); } } diff --git a/frameworks/native/pulseaudio/modules/hdi/userdata.h b/frameworks/native/pulseaudio/modules/hdi/userdata.h index 161d0f6a6d..4960371149 100644 --- a/frameworks/native/pulseaudio/modules/hdi/userdata.h +++ b/frameworks/native/pulseaudio/modules/hdi/userdata.h @@ -31,6 +31,7 @@ #define MAX_SCENE_NAME_LEN 100 #define SCENE_TYPE_OFFSET 16 #define CAPTURER_ID_OFFSET 8 +#define BASE_TEN 10 struct Userdata { pa_core *core; -- Gitee From 1398a1a925d63b71a3f99ca162d9ee275c850bf2 Mon Sep 17 00:00:00 2001 From: Noc Date: Thu, 25 Jul 2024 19:38:57 +0800 Subject: [PATCH 2/3] remove debug log Signed-off-by: Noc --- .../src/pulse_audio_service_adapter_impl.cpp | 1 - .../src/audio_enhance_chain_manager.cpp | 13 +---- .../modules/hdi/module_hdi_source.c | 49 ++----------------- 3 files changed, 4 insertions(+), 59 deletions(-) diff --git a/frameworks/native/audioadapter/src/pulse_audio_service_adapter_impl.cpp b/frameworks/native/audioadapter/src/pulse_audio_service_adapter_impl.cpp index c0ded8eeb2..0ddb1f3b7e 100644 --- a/frameworks/native/audioadapter/src/pulse_audio_service_adapter_impl.cpp +++ b/frameworks/native/audioadapter/src/pulse_audio_service_adapter_impl.cpp @@ -481,7 +481,6 @@ int32_t PulseAudioServiceAdapterImpl::MoveSourceOutputByIndexOrName(uint32_t sou operation = pa_context_move_source_output_by_index(mContext, sourceOutputId, sourceIndex, PulseAudioServiceAdapterImpl::PaMoveSourceOutputCb, reinterpret_cast(userData.get())); } else { - AUDIO_FATAL_LOG("sourceName = %{public}s, sourceOutputId = %{public}u", sourceName.c_str(), sourceOutputId); operation = pa_context_move_source_output_by_name(mContext, sourceOutputId, sourceName.c_str(), PulseAudioServiceAdapterImpl::PaMoveSourceOutputCb, reinterpret_cast(userData.get())); } diff --git a/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp b/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp index 7c8e94f20b..2e91f15216 100644 --- a/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp +++ b/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp @@ -219,14 +219,11 @@ int32_t AudioEnhanceChainManager::ParseSceneKeyCode(const uint32_t sceneKeyCode, int32_t AudioEnhanceChainManager::CreateAudioEnhanceChainDynamic(const uint32_t sceneKeyCode) { std::lock_guard lock(chainManagerMutex_); - AUDIO_FATAL_LOG("=====Create enhanceChain=====, sceneKeyCode = %{public}u", sceneKeyCode); + std::string sceneType = ""; std::string capturerDevice = ""; std::string rendererDeivce = ""; if (ParseSceneKeyCode(sceneKeyCode, sceneType, capturerDevice, rendererDeivce)) { - AUDIO_FATAL_LOG("sceneType=%{public}s", sceneType.c_str()); - AUDIO_FATAL_LOG("capturerDevice=%{public}s", capturerDevice.c_str()); - AUDIO_FATAL_LOG("rendererDeivce=%{public}s", rendererDeivce.c_str()); return ERROR; } AudioEnhanceParam algoParam = {(uint32_t)isMute_, (uint32_t)(systemVol_ * VOLUME_FACTOR), @@ -264,13 +261,6 @@ int32_t AudioEnhanceChainManager::CreateAudioEnhanceChainDynamic(const uint32_t } } - // CXDEBUG - AUDIO_FATAL_LOG("chainMapSize = %{public}zu", sceneTypeToEnhanceChainMap_.size()); - for (auto item = sceneTypeToEnhanceChainCountMap_.begin(); item != sceneTypeToEnhanceChainCountMap_.end(); item++) { - AUDIO_FATAL_LOG("SceneCode = %{public}u, Count = %{public}d", item->first, item->second); - } - // CXDEBUG - if (SetAudioEnhanceChainDynamic(sceneKeyCode, sceneType, capturerDevice) != SUCCESS) { AUDIO_ERR_LOG("%{public}s create failed.", sceneType.c_str()); return ERROR; @@ -352,7 +342,6 @@ int32_t AudioEnhanceChainManager::ReleaseAudioEnhanceChainDynamic(const uint32_t { std::lock_guard lock(chainManagerMutex_); CHECK_AND_RETURN_RET_LOG(isInitialized_, ERROR, "has not been initialized"); - AUDIO_FATAL_LOG("=====Release enhanceChain=====, sceneKeyCode = %{public}u", sceneKeyCode); if (!sceneTypeToEnhanceChainMap_.count(sceneKeyCode)) { sceneTypeToEnhanceChainCountMap_.erase(sceneKeyCode); diff --git a/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c b/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c index 41e32375f5..fc96c7ec68 100644 --- a/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c +++ b/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c @@ -201,7 +201,7 @@ static pa_hook_result_t CheckIfAvailSource(pa_source_output *so, struct Userdata return PA_HOOK_CANCEL; } if (soSource->index != thisSource->index) { - AUDIO_FATAL_LOG("NOT correspondant SOURCE %{public}s AND %{public}s.", soSource->name, thisSource->name); + AUDIO_INFO_LOG("NOT correspondant SOURCE %{public}s AND %{public}s.", soSource->name, thisSource->name); return PA_HOOK_CANCEL; } return PA_HOOK_OK; @@ -215,9 +215,6 @@ static pa_hook_result_t SourceOutputPutCb(pa_core *c, pa_source_output *so, stru return PA_HOOK_OK; } pa_assert(c); - AUDIO_FATAL_LOG("SO_INDEX = %{public}u", so->index); - AUDIO_FATAL_LOG("SO_SOURCE_INDEX = %{public}u, SO_SOURCE_NAME = %{public}s", so->source->index, so->source->name); - AUDIO_FATAL_LOG("THIS SOURCE_INDEX = %{public}u, THIS_SOURCE_NAME = %{public}s", u->source->index, u->source->name); if (CheckIfAvailSource(so, u) == PA_HOOK_CANCEL) { return PA_HOOK_OK; } @@ -232,50 +229,12 @@ static pa_hook_result_t SourceOutputUnlinkCb(pa_core *c, pa_source_output *so, s return PA_HOOK_OK; } pa_assert(c); - AUDIO_FATAL_LOG("SO_INDEX = %{public}u", so->index); - AUDIO_FATAL_LOG("SO_SOURCE_INDEX = %{public}u, SO_SOURCE_NAME = %{public}s", so->source->index, so->source->name); - AUDIO_FATAL_LOG("THIS SOURCE_INDEX = %{public}u, THIS_SOURCE_NAME = %{public}s", u->source->index, u->source->name); if (CheckIfAvailSource(so, u) == PA_HOOK_CANCEL) { return PA_HOOK_OK; } return HandleSourceOutputUnlink(so, u); } -static pa_hook_result_t SourceOutputMoveStartCb(pa_core *c, pa_source_output *so, struct Userdata *u) -{ - AUDIO_FATAL_LOG("==========SourceOutputMoveStartCb=========="); - if (u != NULL) { - AUDIO_FATAL_LOG("This SourceName = %{public}s", u->source->name); - } - AUDIO_FATAL_LOG("SO_INDEX = %{public}u", so->index); - AUDIO_FATAL_LOG("SO_SOURCE_INDEX = %{public}u, SO_SOURCE_NAME = %{public}s", so->source->index, so->source->name); - AUDIO_FATAL_LOG("THIS SOURCE_INDEX = %{public}u, THIS_SOURCE_NAME = %{public}s", u->source->index, u->source->name); - - if (so->source->index != u->source->index) { - AUDIO_FATAL_LOG("NOT RIGHT SOURCE"); - return PA_HOOK_OK; - } - // Create Things - HandleSourceOutputPut(so, u); - - // Release Old Things, if old source is still alive - pa_source *sourceOri = so->source; - if (sourceOri == NULL) { - AUDIO_FATAL_LOG("original Source has been free"); - return PA_HOOK_OK; - } - AUDIO_FATAL_LOG("original sourceName = %{public}s", sourceOri->name); - struct Userdata *uOri = (struct Userdata *)sourceOri->userdata; - if (u == NULL) { - AUDIO_FATAL_LOG("original Source userdata is NULL"); - return PA_HOOK_OK; - } - AUDIO_FATAL_LOG("origin_capture_ID = %{public}u", u->capturerId); - HandleSourceOutputUnlink(so, uOri); - - return PA_HOOK_OK; -} - static pa_hook_result_t SourceOutputMoveFinishCb(pa_core *c, pa_source_output *so, struct Userdata *u) { AUDIO_INFO_LOG("Trigger SourceOutputMoveFinishCb"); @@ -345,8 +304,7 @@ static void ReleaseAllChains(struct Userdata *u) const void *sceneKey; while ((sceneKeyNum = pa_hashmap_iterate(u->sceneToCountMap, &state, &sceneKey))) { uint32_t sceneKeyCode = (uint32_t)strtoul((char *)sceneKey, NULL, BASE_TEN); - AUDIO_FATAL_LOG("sceneKey=%{public}u, number=%{public}u", sceneKeyCode, *sceneKeyNum); - for (int32_t count = 0; count < *sceneKeyNum; count++) { + for (uint32_t count = 0; count < *sceneKeyNum; count++) { EnhanceChainManagerReleaseCb(sceneKeyCode); } } @@ -359,10 +317,9 @@ void pa__done(pa_module *m) pa_assert(m); if ((source = m->userdata)) { - AUDIO_FATAL_LOG("==========Unload Source[%{public}s]==========", source->name); struct Userdata *u = (struct Userdata *)source->userdata; if (u != NULL) { - AUDIO_FATAL_LOG("THIS SOURCE HAS UserData"); + AUDIO_INFO_LOG("Release all enhChains on [%{public}s]", source->name); ReleaseAllChains(u); } PaHdiSourceFree(source); -- Gitee From 9a76ec0194a72d27611d48741574bde698b90fae Mon Sep 17 00:00:00 2001 From: Noc Date: Thu, 25 Jul 2024 19:54:05 +0800 Subject: [PATCH 3/3] fix codecheck Signed-off-by: Noc --- .../native/audioeffect/src/audio_enhance_chain_manager.cpp | 1 - frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp b/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp index 2e91f15216..5de1a750ff 100644 --- a/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp +++ b/frameworks/native/audioeffect/src/audio_enhance_chain_manager.cpp @@ -260,7 +260,6 @@ int32_t AudioEnhanceChainManager::CreateAudioEnhanceChainDynamic(const uint32_t sceneTypeToEnhanceChainCountMap_[sceneKeyCode] = 1; } } - if (SetAudioEnhanceChainDynamic(sceneKeyCode, sceneType, capturerDevice) != SUCCESS) { AUDIO_ERR_LOG("%{public}s create failed.", sceneType.c_str()); return ERROR; diff --git a/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c b/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c index fc96c7ec68..2d198acaad 100644 --- a/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c +++ b/frameworks/native/pulseaudio/modules/hdi/module_hdi_source.c @@ -194,7 +194,7 @@ static pa_hook_result_t HandleSourceOutputUnlink(pa_source_output *so, struct Us } static pa_hook_result_t CheckIfAvailSource(pa_source_output *so, struct Userdata *u) -{ +{ pa_source *soSource = so->source; pa_source *thisSource = u->source; if (soSource == NULL || thisSource == NULL) { -- Gitee