From 4592610d3b64ea654f3f6e90bc31748a3c20f6ae Mon Sep 17 00:00:00 2001 From: wz2023 <752856023@qq.com> Date: Thu, 28 Aug 2025 20:02:55 +0800 Subject: [PATCH 1/2] Injector Signed-off-by: wz2023 <752856023@qq.com> --- .../server/service/service_main/include/audio_injector.h | 0 .../server/service/service_main/src/audio_injector.cpp | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/audio_policy/server/service/service_main/include/audio_injector.h create mode 100644 services/audio_policy/server/service/service_main/src/audio_injector.cpp diff --git a/services/audio_policy/server/service/service_main/include/audio_injector.h b/services/audio_policy/server/service/service_main/include/audio_injector.h new file mode 100644 index 0000000000..e69de29bb2 diff --git a/services/audio_policy/server/service/service_main/src/audio_injector.cpp b/services/audio_policy/server/service/service_main/src/audio_injector.cpp new file mode 100644 index 0000000000..e69de29bb2 -- Gitee From 157a3fef914b2a9bf901fab191a9b17b08780370 Mon Sep 17 00:00:00 2001 From: wz2023 <752856023@qq.com> Date: Thu, 28 Aug 2025 20:02:55 +0800 Subject: [PATCH 2/2] Injector Signed-off-by: wz2023 <752856023@qq.com> --- .../service_main/include/audio_injector.h | 55 ++++++++++++++++ .../service_main/src/audio_injector.cpp | 65 +++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 services/audio_policy/server/service/service_main/include/audio_injector.h create mode 100644 services/audio_policy/server/service/service_main/src/audio_injector.cpp diff --git a/services/audio_policy/server/service/service_main/include/audio_injector.h b/services/audio_policy/server/service/service_main/include/audio_injector.h new file mode 100644 index 0000000000..cb0e084930 --- /dev/null +++ b/services/audio_policy/server/service/service_main/include/audio_injector.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + #ifndef INJECTOR_H + #define INJECTOR_H + + #include + #include "audio_module_info.h" + #include "audio_iohandle_map.h" + #include "iaudio_policy_interface.h" + + namespace OHOS { + namespace AudioStandard { + class AudioInjector { + public: + static std::shared_ptr Create() + { + static std::shared_ptr instance(new AudioInjector()); + return instance; + } + int32_t Init(); + int32_t DeInit(); + int32_t UpdateAudioInfo(AudioModuleInfo &Info); + int32_t MoveIn(uint32_t renderId, bool flag); + int32_t PeekAudioData(uint32_t streamid, uint8_t *destPtr, size_t dataSize); + int32_t GetRenderCount(); + void SetCapIdx(uint32_t idx); + uint32_t GetCapIdx(); + private: + AudioInjector(); + AudioInjector(const AudioInjector&) = delete; + AudioInjector& operator=(const AudioInjector&) = delete; + private: + AudioModuleInfo moduleInfo_; + uint32_t capturePortIdx_; + uint32_t renderPortIdx_; + bool isConnected_; + std::unordered_map renderIdMap_ = {}; + AudioIOHandleMap& audioIOHandleMap_; + IAudioPolicyInterface& audioPolicyManager_; + }; + } // namespace AudioStandard + } // namespace OHOS + #endif // INJECTOR_H \ No newline at end of file diff --git a/services/audio_policy/server/service/service_main/src/audio_injector.cpp b/services/audio_policy/server/service/service_main/src/audio_injector.cpp new file mode 100644 index 0000000000..62869545f0 --- /dev/null +++ b/services/audio_policy/server/service/service_main/src/audio_injector.cpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + #include "audio_injector.h" + #include "audio_policy_manager_factory.h" + + namespace OHOS { + namespace AudioStandard { + AudioInjector::AudioInjector() + :audioIOHandleMap_(AudioIOHandleMap::GetInstance()), + audioPolicyManager_(AudioPolicyManagerFactory::GetAudioPolicyManager()) + { + } + + int32_t AudioInjector::Init() + { + return 0; + } + + int32_t AudioInjector::DeInit() + { + return 0; + } + + int32_t AudioInjector::UpdateAudioInfo(AudioModuleInfo &Info) + { + return 0; + } + + int32_t AudioInjector::MoveIn(uint32_t renderId, bool flag) + { + return 0; + } + int32_t AudioInjector::PeekAudioData(uint32_t streamid, uint8_t *destPtr, size_t dataSize) + { + return 0; + } + + int32_t AudioInjector::GetRenderCount() + { + return renderIdMap_.size(); + } + + void AudioInjector::SetCapIdx(uint32_t idx) + { + capturePortIdx_ = idx; + } + + uint32_t AudioInjector::GetCapIdx() + { + return capturePortIdx_; + } + } // namespace AudioStandard + } // namespace OHOS \ No newline at end of file -- Gitee