From cbe17474df7b69345671e4ae7b2f2ee7e04002c3 Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Mon, 9 Oct 2023 19:50:17 +0800 Subject: [PATCH] modify hidump & dump data lowlatency Signed-off-by: hwwuhaobo --- common/dfx_utils/include/daudio_hidumper.h | 13 +++++----- common/dfx_utils/src/daudio_hidumper.cpp | 25 ++++++++++--------- .../include/audio_capture_interface_impl.h | 2 +- .../include/audio_render_interface_impl.h | 2 +- .../v1_0/src/audio_capture_interface_impl.cpp | 2 +- .../v1_0/src/audio_render_interface_impl.cpp | 2 +- .../micclient/include/dmic_client.h | 2 +- .../audioclient/micclient/src/dmic_client.cpp | 4 +-- .../spkclient/include/dspeaker_client.h | 2 +- .../spkclient/src/dspeaker_client.cpp | 4 +-- .../managersource/include/dmic_dev.h | 3 ++- .../managersource/include/dspeaker_dev.h | 3 ++- .../managersource/src/daudio_source_dev.cpp | 1 - .../managersource/src/dmic_dev.cpp | 9 +++++-- .../managersource/src/dspeaker_dev.cpp | 9 +++++-- .../include/daudio_sink_hidumper.h | 4 +-- .../servicesink/src/daudio_sink_hidumper.cpp | 8 +++--- 17 files changed, 53 insertions(+), 42 deletions(-) diff --git a/common/dfx_utils/include/daudio_hidumper.h b/common/dfx_utils/include/daudio_hidumper.h index 412f591b..aa1d6da9 100644 --- a/common/dfx_utils/include/daudio_hidumper.h +++ b/common/dfx_utils/include/daudio_hidumper.h @@ -44,7 +44,7 @@ class DaudioHidumper { public: bool Dump(const std::vector &args, std::string &result); - bool GetFlagStatus(); + bool QueryDumpDataFlag(); DaudioHidumper(); ~DaudioHidumper(); @@ -60,13 +60,12 @@ private: int32_t StopDumpData(std::string &result); private: - std::string g_sourceDevId_ = ""; - AudioManager *g_manager = nullptr; - AudioAdapterDescriptor *g_devices = nullptr; - bool HidumperFlag_ = false; + AudioManager *audioManager_ = nullptr; + AudioAdapterDescriptor *adapterdesc_ = nullptr; + bool dumpAudioDataFlag_ = false; int32_t g_deviceNum = 0; - std::string spkDefault = "1"; - std::string micDefault = "134217729"; + const std::string DEFAULT_SPK_DHID = "1"; + const std::string DEFAULT_MIC_DHID = "134217729"; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/common/dfx_utils/src/daudio_hidumper.cpp b/common/dfx_utils/src/daudio_hidumper.cpp index 59e1841b..d33ddbe8 100644 --- a/common/dfx_utils/src/daudio_hidumper.cpp +++ b/common/dfx_utils/src/daudio_hidumper.cpp @@ -114,30 +114,31 @@ int32_t DaudioHidumper::ProcessDump(const std::string &args, std::string &result int32_t DaudioHidumper::GetSourceDevId(std::string &result) { DHLOGI("Get source devId dump."); - int32_t ret = GetLocalDeviceNetworkId(g_sourceDevId_); + std::string sourceDevId = ""; + int32_t ret = GetLocalDeviceNetworkId(sourceDevId); if (ret != DH_SUCCESS) { DHLOGE("Get local network id failed."); result.append("sourceDevId: ").append(""); return ret; } - result.append("sourceDevId: ").append(GetAnonyString(g_sourceDevId_)); + result.append("sourceDevId: ").append(GetAnonyString(sourceDevId)); return DH_SUCCESS; } int32_t DaudioHidumper::GetSinkInfo(std::string &result) { DHLOGI("Get sink info dump."); - g_manager = GetAudioManagerFuncs(); - if (g_manager == nullptr) { + audioManager_ = GetAudioManagerFuncs(); + if (audioManager_ == nullptr) { return ERR_DH_AUDIO_NULLPTR; } - int32_t ret = g_manager->GetAllAdapters(g_manager, &g_devices, &g_deviceNum); + int32_t ret = audioManager_->GetAllAdapters(audioManager_, &adapterdesc_, &g_deviceNum); if (ret != DH_SUCCESS) { DHLOGE("Get all adapters failed."); return ERR_DH_AUDIO_NULLPTR; } for (int32_t index = 0; index < g_deviceNum; index++) { - AudioAdapterDescriptor &desc = g_devices[index]; + AudioAdapterDescriptor &desc = adapterdesc_[index]; result.append("sinkDevId: ").append(GetAnonyString(desc.adapterName)).append(" portId: "); for (uint32_t i = 0; i < desc.portNum; i++) { result.append(std::to_string(desc.ports[i].portId)).append(" "); @@ -152,10 +153,10 @@ int32_t DaudioHidumper::GetAbilityInfo(std::string &result) DHLOGI("Obtaining capability information."); std::vector abilityInfo = DAudioHandler::GetInstance().ablityForDump(); for (DHItem dhItem : abilityInfo) { - if (dhItem.dhId == spkDefault) { + if (dhItem.dhId == DEFAULT_SPK_DHID) { result.append("spkAbilityInfo:").append(dhItem.attrs).append(" "); } - if (dhItem.dhId == micDefault) { + if (dhItem.dhId == DEFAULT_MIC_DHID) { result.append("micAbilityInfo:").append(dhItem.attrs).append(" "); } } @@ -172,7 +173,7 @@ int32_t DaudioHidumper::StartDumpData(std::string &result) } DHLOGI("Start dump audio data."); result.append("start dump..."); - HidumperFlag_ = true; + dumpAudioDataFlag_ = true; return DH_SUCCESS; } @@ -180,13 +181,13 @@ int32_t DaudioHidumper::StopDumpData(std::string &result) { DHLOGI("Stop dump audio data."); result.append("stop dump..."); - HidumperFlag_ = false; + dumpAudioDataFlag_ = false; return DH_SUCCESS; } -bool DaudioHidumper::GetFlagStatus() +bool DaudioHidumper::QueryDumpDataFlag() { - return HidumperFlag_; + return dumpAudioDataFlag_; } void DaudioHidumper::ShowHelp(std::string &result) diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h index 3622e497..deeb0f34 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_capture_interface_impl.h @@ -79,7 +79,7 @@ public: private: static constexpr int64_t AUDIO_OFFSET_FRAME_NUM = 10; - const std::string FILE_NAME = "/data/data/daudio/hdf_captureframe.pcm"; + const std::string HDF_CAPTURE_FILENAME = "/data/data/daudio/hdf_capture_from_sa.pcm"; std::string adapterName_; AudioDeviceDescriptor devDesc_; AudioSampleAttributes devAttrs_; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h index 251bb80c..1537f059 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/include/audio_render_interface_impl.h @@ -101,7 +101,7 @@ private: private: static constexpr int64_t AUDIO_OFFSET_FRAME_NUM = 10; - const std::string FILE_NAME = "/data/data/daudio/hdf_renderframe.pcm"; + const std::string HDF_RENDER_FILENAME = "/data/data/daudio/hdf_render_to_sa.pcm"; std::string adapterName_; AudioDeviceDescriptor devDesc_; diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp index 936b3e05..d9dd67df 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_capture_interface_impl.cpp @@ -87,7 +87,7 @@ int32_t AudioCaptureInterfaceImpl::CaptureFrame(std::vector &frame, uint } #ifdef DUMP_CAPTURE_FILE if (dumpFlag_) { - SaveFile(FILE_NAME, reinterpret_cast(audioData.data.data()), audioData.data.size()); + SaveFile(HDF_CAPTURE_FILENAME, reinterpret_cast(audioData.data.data()), audioData.data.size()); } #endif frame.resize(devAttrs_.frameSize); diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp index 62136504..58404368 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_render_interface_impl.cpp @@ -104,7 +104,7 @@ int32_t AudioRenderInterfaceImpl::RenderFrame(const std::vector &frame, AudioData data = { param, frame }; #ifdef DUMP_RENDER_FILE if (dumpFlag_) { - SaveFile(FILE_NAME, reinterpret_cast(data.data.data()), frame.size()); + SaveFile(HDF_RENDER_FILENAME, reinterpret_cast(data.data.data()), frame.size()); } #endif FadeInProcess(DURATION_FRAMES, data.data.data(), frame.size()); diff --git a/services/audioclient/micclient/include/dmic_client.h b/services/audioclient/micclient/include/dmic_client.h index e3d98fe9..40ba06d1 100644 --- a/services/audioclient/micclient/include/dmic_client.h +++ b/services/audioclient/micclient/include/dmic_client.h @@ -73,7 +73,7 @@ private: private: constexpr static uint8_t CHANNEL_WAIT_SECONDS = 5; static constexpr const char* CAPTURETHREAD = "captureThread"; - const std::string FILE_NAME = DUMP_FILE_PATH + "/sink_mic_send.pcm"; + const std::string MIC_CLIENT_FILENAME = DUMP_FILE_PATH + "/sink_mic_send_to_trans.pcm"; std::string devId_; int32_t dhId_; diff --git a/services/audioclient/micclient/src/dmic_client.cpp b/services/audioclient/micclient/src/dmic_client.cpp index d0b3fe06..a6d3c45d 100644 --- a/services/audioclient/micclient/src/dmic_client.cpp +++ b/services/audioclient/micclient/src/dmic_client.cpp @@ -281,8 +281,8 @@ void DMicClient::AudioFwkCaptureData() return; } #ifdef DUMP_DMICCLIENT_FILE - if (DaudioSinkHidumper::GetInstance().GetFlagStatus()) { - SaveFile(FILE_NAME, const_cast(audioData->Data()), audioData->Size()); + if (DaudioSinkHidumper::GetInstance().QueryDumpDataFlag()) { + SaveFile(MIC_CLIENT_FILENAME, const_cast(audioData->Data()), audioData->Size()); } #endif int64_t startTransTime = GetNowTimeUs(); diff --git a/services/audioclient/spkclient/include/dspeaker_client.h b/services/audioclient/spkclient/include/dspeaker_client.h index c26abe02..a346bb47 100644 --- a/services/audioclient/spkclient/include/dspeaker_client.h +++ b/services/audioclient/spkclient/include/dspeaker_client.h @@ -94,7 +94,7 @@ private: constexpr static size_t DATA_QUEUE_SIZE = 8; constexpr static size_t SLEEP_TIME = 5000; static constexpr const char* RENDERTHREAD = "renderThread"; - const std::string FILE_NAME = DUMP_FILE_PATH + "/sink_spk_recv.pcm"; + const std::string SPK_CLIENT_FILENAME = DUMP_FILE_PATH + "/sink_spk_recv_from_trans.pcm"; std::string devId_; const int32_t dhId_; diff --git a/services/audioclient/spkclient/src/dspeaker_client.cpp b/services/audioclient/spkclient/src/dspeaker_client.cpp index 3ebf9b42..3f82bd9d 100644 --- a/services/audioclient/spkclient/src/dspeaker_client.cpp +++ b/services/audioclient/spkclient/src/dspeaker_client.cpp @@ -294,8 +294,8 @@ void DSpeakerClient::PlayThreadRunning() DHLOGD("Pop spk data, dataqueue size: %d.", dataQueue_.size()); } #ifdef DUMP_DSPEAKERCLIENT_FILE - if (DaudioSinkHidumper::GetInstance().GetFlagStatus()) { - SaveFile(FILE_NAME, const_cast(audioData->Data()), audioData->Size()); + if (DaudioSinkHidumper::GetInstance().QueryDumpDataFlag()) { + SaveFile(SPK_CLIENT_FILENAME, const_cast(audioData->Data()), audioData->Size()); } #endif int32_t writeOffSet = 0; diff --git a/services/audiomanager/managersource/include/dmic_dev.h b/services/audiomanager/managersource/include/dmic_dev.h index 4340c080..61befc68 100644 --- a/services/audiomanager/managersource/include/dmic_dev.h +++ b/services/audiomanager/managersource/include/dmic_dev.h @@ -96,7 +96,8 @@ private: static constexpr size_t LOW_LATENCY_DATA_QUEUE_HALF_SIZE = 10; static constexpr uint32_t MMAP_WAIT_FRAME_US = 5000; static constexpr const char* ENQUEUE_THREAD = "micEnqueueTh"; - const std::string FILE_NAME = DUMP_FILE_PATH + "/source_mic_read.pcm"; + const std::string MIC_DEV_FILENAME = DUMP_FILE_PATH + "/source_mic_read_from_trans.pcm"; + const std::string MIC_LOWLATENCY_FILENAME = DUMP_FILE_PATH + "/source_mic_write_to_ashmem.pcm"; std::weak_ptr audioEventCallback_; std::mutex dataQueueMtx_; diff --git a/services/audiomanager/managersource/include/dspeaker_dev.h b/services/audiomanager/managersource/include/dspeaker_dev.h index 90a2c6e1..8dbad791 100644 --- a/services/audiomanager/managersource/include/dspeaker_dev.h +++ b/services/audiomanager/managersource/include/dspeaker_dev.h @@ -87,7 +87,8 @@ private: private: static constexpr const char* ENQUEUE_THREAD = "spkEnqueueTh"; - const std::string FILE_NAME = DUMP_FILE_PATH + "/source_spk_write.pcm"; + const std::string SPK_DEV_FILENAME = DUMP_FILE_PATH + "/source_spk_write_to_trans.pcm"; + const std::string SPK_LOWLATENCY_FILENAME = DUMP_FILE_PATH + "/source_spk_read_from_ashmem.pcm"; std::weak_ptr audioEventCallback_; std::mutex channelWaitMutex_; diff --git a/services/audiomanager/managersource/src/daudio_source_dev.cpp b/services/audiomanager/managersource/src/daudio_source_dev.cpp index 96a1822d..8adc9a86 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -185,7 +185,6 @@ int32_t DAudioSourceDev::RestoreThreadStatus() DHLOGE("Send event failed."); return ERR_DH_AUDIO_FAILED; } - DHLOGD("Enable audio task generate successfully."); return DH_SUCCESS; } diff --git a/services/audiomanager/managersource/src/dmic_dev.cpp b/services/audiomanager/managersource/src/dmic_dev.cpp index 9b45d478..4cf7b15c 100644 --- a/services/audiomanager/managersource/src/dmic_dev.cpp +++ b/services/audiomanager/managersource/src/dmic_dev.cpp @@ -322,13 +322,13 @@ int32_t DMicDev::ReadStreamData(const std::string &devId, const int32_t dhId, st dataQueue_.pop(); } #ifdef DUMP_DMICDEV_FILE - if (DaudioHidumper::GetInstance().GetFlagStatus()) { + if (DaudioHidumper::GetInstance().QueryDumpDataFlag()) { if (!dumpFlag_) { AudioEvent event(NOTIFY_HDF_MIC_DUMP, ""); NotifyHdfAudioEvent(event, dhId); dumpFlag_.store(true); } - SaveFile(FILE_NAME, const_cast(data->Data()), data->Size()); + SaveFile(MIC_DEV_FILENAME, const_cast(data->Data()), data->Size()); } #endif int64_t endTime = GetNowTimeUs(); @@ -412,6 +412,11 @@ void DMicDev::EnqueueThread() dataQueue_.pop(); } } +#ifdef DUMP_DMICDEV_FILE + if (DaudioHidumper::GetInstance().QueryDumpDataFlag()) { + SaveFile(MIC_LOWLATENCY_FILENAME, const_cast(audioData->Data()), audioData->Size()); + } +#endif bool writeRet = ashmem_->WriteToAshmem(audioData->Data(), audioData->Size(), writeIndex_); if (writeRet) { DHLOGD("Write to ashmem success! write index: %d, writeLength: %d.", writeIndex_, lengthPerTrans_); diff --git a/services/audiomanager/managersource/src/dspeaker_dev.cpp b/services/audiomanager/managersource/src/dspeaker_dev.cpp index 0ddddebb..5cca4e9c 100644 --- a/services/audiomanager/managersource/src/dspeaker_dev.cpp +++ b/services/audiomanager/managersource/src/dspeaker_dev.cpp @@ -316,13 +316,13 @@ int32_t DSpeakerDev::WriteStreamData(const std::string &devId, const int32_t dhI return ERR_DH_AUDIO_SA_SPEAKER_TRANS_NULL; } #ifdef DUMP_DSPEAKERDEV_FILE - if (DaudioHidumper::GetInstance().GetFlagStatus()) { + if (DaudioHidumper::GetInstance().QueryDumpDataFlag()) { if (!dumpFlag_) { AudioEvent event(NOTIFY_HDF_SPK_DUMP, ""); NotifyHdfAudioEvent(event, dhId); dumpFlag_.store(true); } - SaveFile(FILE_NAME, const_cast(data->Data()), data->Size()); + SaveFile(SPK_DEV_FILENAME, const_cast(data->Data()), data->Size()); } #endif int32_t ret = speakerTrans_->FeedAudioData(data); @@ -410,6 +410,11 @@ void DSpeakerDev::EnqueueThread() DHLOGE("Speaker enqueue thread, trans is nullptr."); return; } +#ifdef DUMP_DSPEAKERDEV_FILE + if (DaudioHidumper::GetInstance().QueryDumpDataFlag()) { + SaveFile(SPK_LOWLATENCY_FILENAME, const_cast(audioData->Data()), audioData->Size()); + } +#endif int32_t ret = speakerTrans_->FeedAudioData(audioData); if (ret != DH_SUCCESS) { DHLOGE("Speaker enqueue thread, write stream data failed, ret: %d.", ret); diff --git a/services/audiomanager/servicesink/include/daudio_sink_hidumper.h b/services/audiomanager/servicesink/include/daudio_sink_hidumper.h index 66ed0170..3caad390 100644 --- a/services/audiomanager/servicesink/include/daudio_sink_hidumper.h +++ b/services/audiomanager/servicesink/include/daudio_sink_hidumper.h @@ -36,7 +36,7 @@ class DaudioSinkHidumper { public: bool Dump(const std::vector &args, std::string &result); - bool GetFlagStatus(); + bool QueryDumpDataFlag(); DaudioSinkHidumper(); ~DaudioSinkHidumper(); @@ -49,7 +49,7 @@ private: int32_t StopDumpData(std::string &result); private: - bool HidumperFlag_ = false; + bool dumpAudioDataFlag_ = false; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/audiomanager/servicesink/src/daudio_sink_hidumper.cpp b/services/audiomanager/servicesink/src/daudio_sink_hidumper.cpp index 9e64f546..5060b504 100644 --- a/services/audiomanager/servicesink/src/daudio_sink_hidumper.cpp +++ b/services/audiomanager/servicesink/src/daudio_sink_hidumper.cpp @@ -108,7 +108,7 @@ int32_t DaudioSinkHidumper::StartDumpData(std::string &result) } DHLOGI("start dump audio data."); result.append("start dump..."); - HidumperFlag_ = true; + dumpAudioDataFlag_ = true; return DH_SUCCESS; } @@ -116,13 +116,13 @@ int32_t DaudioSinkHidumper::StopDumpData(std::string &result) { DHLOGI("stop dump audio data."); result.append("stop dump..."); - HidumperFlag_ = false; + dumpAudioDataFlag_ = false; return DH_SUCCESS; } -bool DaudioSinkHidumper::GetFlagStatus() +bool DaudioSinkHidumper::QueryDumpDataFlag() { - return HidumperFlag_; + return dumpAudioDataFlag_; } void DaudioSinkHidumper::ShowHelp(std::string &result) -- Gitee