From c0ab57c42fd7a02928397012cafd29f03132484c Mon Sep 17 00:00:00 2001 From: byndyx Date: Mon, 8 Jul 2024 21:09:47 +0800 Subject: [PATCH] modify crash Signed-off-by: byndyx --- .../managersource/src/dmic_dev.cpp | 25 ++++++++++++------- .../sourcedevice/src/dmic_dev_test.cpp | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index 2edfefbd..b0a17fea 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -235,7 +235,10 @@ int32_t DMicDev::SetUp() DHLOGE("Mic trans set up failed. ret: %{public}d.", ret); return ret; } - echoCannelOn_ = true; + echoCannelOn_ = (paramHDF_.capturerFlags == MMAP_MODE && + paramHDF_.period == MMAP_NORMAL_PERIOD) ? false : true; + DHLOGD("Setup mode is %{public}d, period is %{public}" PRIu32", echoCannelOn_ is %{public}d.", + paramHDF_.capturerFlags, paramHDF_.period, echoCannelOn_); #ifdef ECHO_CANNEL_ENABLE if (echoCannelOn_ && echoManager_ == nullptr) { echoManager_ = std::make_shared(); @@ -457,14 +460,18 @@ void DMicDev::EnqueueThread() audioData = dataQueue_.front(); dataQueue_.pop(); } - } - DumpFileUtil::WriteDumpFile(dumpFileFast_, static_cast(audioData->Data()), audioData->Size()); - bool writeRet = ashmem_->WriteToAshmem(audioData->Data(), audioData->Size(), writeIndex_); - if (writeRet) { - DHLOGD("Write to ashmem success! write index: %{public}d, writeLength: %{public}d.", - writeIndex_, lengthPerTrans_); - } else { - DHLOGE("Write data to ashmem failed."); + if (audioData == nullptr) { + DHLOGD("The audioData is nullptr."); + continue; + } + DumpFileUtil::WriteDumpFile(dumpFileFast_, static_cast(audioData->Data()), audioData->Size()); + bool writeRet = ashmem_->WriteToAshmem(audioData->Data(), audioData->Size(), writeIndex_); + if (writeRet) { + DHLOGD("Write to ashmem success! write index: %{public}d, writeLength: %{public}d.", + writeIndex_, lengthPerTrans_); + } else { + DHLOGE("Write data to ashmem failed."); + } } writeIndex_ += lengthPerTrans_; if (writeIndex_ >= ashmemLength_) { diff --git a/services/audiomanager/test/unittest/sourcedevice/src/dmic_dev_test.cpp b/services/audiomanager/test/unittest/sourcedevice/src/dmic_dev_test.cpp index 6b6ed82d..95afb8ea 100644 --- a/services/audiomanager/test/unittest/sourcedevice/src/dmic_dev_test.cpp +++ b/services/audiomanager/test/unittest/sourcedevice/src/dmic_dev_test.cpp @@ -199,7 +199,7 @@ HWTEST_F(DMicDevTest, Start_001, TestSize.Level1) mic_->micTrans_ = std::make_shared(); mic_->isTransReady_.store(true); EXPECT_EQ(DH_SUCCESS, mic_->Start()); - EXPECT_FALSE(mic_->IsOpened()); + EXPECT_TRUE(mic_->IsOpened()); } /** -- Gitee