1 /* 2 * Copyright (c) 2023-2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef I_AUDIO_DEVICE_ADAPTER_H 17 #define I_AUDIO_DEVICE_ADAPTER_H 18 19 #include <v1_0/iaudio_manager.h> 20 #include <v1_0/iaudio_callback.h> 21 #include <v1_0/audio_types.h> 22 #include "audio_utils.h" 23 24 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioManager; 25 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioAdapter; 26 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioRender; 27 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioCapture; 28 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioCallback; 29 using OHOS::HDI::DistributedAudio::Audio::V1_0::AudioDeviceDescriptor; 30 using OHOS::HDI::DistributedAudio::Audio::V1_0::AudioSampleAttributes; 31 using OHOS::HDI::DistributedAudio::Audio::V1_0::AudioRoute; 32 using OHOS::HDI::DistributedAudio::Audio::V1_0::AudioExtParamKey; 33 34 namespace OHOS { 35 namespace AudioStandard { 36 class IAudioDeviceAdapterCallback { 37 public: 38 IAudioDeviceAdapterCallback() = default; 39 virtual ~IAudioDeviceAdapterCallback() = default; 40 41 virtual void OnAudioParamChange(const std::string &adapterName, const AudioParamKey key, 42 const std::string &condition, const std::string &value) = 0; 43 }; 44 45 class IAudioDeviceAdapter { 46 public: 47 IAudioDeviceAdapter() = default; 48 virtual ~IAudioDeviceAdapter() = default; 49 50 virtual int32_t Init() = 0; 51 virtual int32_t RegExtraParamObserver() = 0; 52 virtual int32_t CreateRender(const AudioDeviceDescriptor &devDesc, const AudioSampleAttributes &attr, 53 sptr<IAudioRender> &audioRender, IAudioDeviceAdapterCallback *renderCb, uint32_t &renderId) = 0; 54 virtual void DestroyRender(sptr<IAudioRender> audioRender, uint32_t &renderId) = 0; 55 virtual int32_t CreateCapture(const AudioDeviceDescriptor &devDesc, const AudioSampleAttributes &attr, 56 sptr<IAudioCapture> &audioCapture, IAudioDeviceAdapterCallback *captureCb, uint32_t &captureId) = 0; 57 virtual void DestroyCapture(sptr<IAudioCapture> audioCapture, uint32_t &captureId) = 0; 58 virtual void SetAudioParameter(const AudioParamKey key, const std::string &condition, 59 const std::string &value) = 0; 60 virtual std::string GetAudioParameter(const AudioParamKey key, const std::string &condition) = 0; 61 virtual int32_t UpdateAudioRoute(const AudioRoute &route) = 0; 62 virtual int32_t Release() = 0; 63 }; 64 } // namespace AudioStandard 65 } // namespace OHOS 66 #endif // I_AUDIO_DEVICE_ADAPTER_H