From e1dceb1b65ad7de2dd9acae9ae2e67ad8296207e Mon Sep 17 00:00:00 2001 From: w30042960 Date: Wed, 13 Mar 2024 15:43:41 +0800 Subject: [PATCH] modify mic pulluppage Signed-off-by: w30042960 --- services/audioclient/micclient/src/dmic_client.cpp | 4 ++++ .../managersink/include/daudio_sink_dev.h | 2 ++ .../audiomanager/managersink/src/daudio_sink_dev.cpp | 10 ++++++++++ .../managersink/src/daudio_sink_manager.cpp | 11 +++++++---- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index d917d3e4..77cc7283 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -321,6 +321,10 @@ void DMicClient::OnReadData(size_t length) if (memcpy_s(audioData->Data(), audioData->Capacity(), bufDesc.buffer, bufDesc.bufLength) != EOK) { DHLOGE("Copy audio data failed."); } + + if (isPauseStatus_.load()) { + memset_s(audioData->Data(), audioData->Size(), 0, audioData->Size()); + } audioCapturer_->Enqueue(bufDesc); CHECK_NULL_VOID(micTrans_); diff --git a/services/audiomanager/managersink/include/daudio_sink_dev.h b/services/audiomanager/managersink/include/daudio_sink_dev.h index 052412ea..6520ff5c 100644 --- a/services/audiomanager/managersink/include/daudio_sink_dev.h +++ b/services/audiomanager/managersink/include/daudio_sink_dev.h @@ -55,6 +55,7 @@ public: int32_t ResumeDistributedHardware(const std::string &networkId); int32_t StopDistributedHardware(const std::string &networkId); void JudgeDeviceStatus(); + void SetDevLevelStatus(bool checkStatus); private: int32_t TaskOpenDSpeaker(const std::string &args); @@ -100,6 +101,7 @@ private: std::atomic isSpkInUse_ = false; std::atomic isMicInUse_ = false; + bool isDevLevelStatus_ = false; class SinkEventHandler : public AppExecFwk::EventHandler { public: diff --git a/services/audiomanager/managersink/src/daudio_sink_dev.cpp b/services/audiomanager/managersink/src/daudio_sink_dev.cpp index 95d44c5d..5e308d3c 100644 --- a/services/audiomanager/managersink/src/daudio_sink_dev.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_dev.cpp @@ -37,6 +37,7 @@ DAudioSinkDev::DAudioSinkDev(const std::string &devId, const sptr DAUDIO_MAX_JSON_LEN || args.empty()) { return ERR_DH_AUDIO_SA_PARAM_INVALID; } @@ -432,6 +437,11 @@ void DAudioSinkDev::JudgeDeviceStatus() DAudioSinkManager::GetInstance().OnSinkDevReleased(devId_); } +void DAudioSinkDev::SetDevLevelStatus(bool checkStatus) +{ + isDevLevelStatus_ = checkStatus; +} + int32_t DAudioSinkDev::ConvertString2Int(std::string val) { if (!CheckIsNum(val)) { diff --git a/services/audiomanager/managersink/src/daudio_sink_manager.cpp b/services/audiomanager/managersink/src/daudio_sink_manager.cpp index 358e9969..780338b8 100644 --- a/services/audiomanager/managersink/src/daudio_sink_manager.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_manager.cpp @@ -186,13 +186,16 @@ int32_t DAudioSinkManager::CreateAudioDevice(const std::string &devId) ret = dev->InitAVTransEngines(ChannelState::SPK_CONTROL_OPENED, rcvProviderPtr_); } if (channelState_ == ChannelState::MIC_CONTROL_OPENED) { - ret = dev->InitAVTransEngines(ChannelState::MIC_CONTROL_OPENED, sendProviderPtr_); - if (!ret) { - ret = VerifySecurityLevel(devId); + ret = VerifySecurityLevel(devId); + if (ret != DH_SUCCESS) { + DHLOGE("Verify security level failed."); + return ERR_DH_AUDIO_FAILED; } + dev->SetDevLevelStatus(true); + ret = dev->InitAVTransEngines(ChannelState::MIC_CONTROL_OPENED, sendProviderPtr_); } if (ret != DH_SUCCESS) { - DHLOGE("Init av transport sender engine failed."); + DHLOGE("Init av transport engine failed."); dev->JudgeDeviceStatus(); return ERR_DH_AUDIO_FAILED; } -- Gitee