1 /* 2 * Copyright (c) 2023 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 23 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioManager; 24 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioAdapter; 25 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioRender; 26 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioCapture; 27 using OHOS::HDI::DistributedAudio::Audio::V1_0::IAudioCallback; 28 using OHOS::HDI::DistributedAudio::Audio::V1_0::AudioDeviceDescriptor; 29 using OHOS::HDI::DistributedAudio::Audio::V1_0::AudioSampleAttributes; 30 using OHOS::HDI::DistributedAudio::Audio::V1_0::AudioRoute; 31 using OHOS::HDI::DistributedAudio::Audio::V1_0::AudioExtParamKey; 32 33 namespace OHOS { 34 namespace AudioStandard { 35 class IAudioDeviceAdapterCallback { 36 public: 37 IAudioDeviceAdapterCallback() = default; 38 virtual ~IAudioDeviceAdapterCallback() = default; 39 40 virtual void OnAudioParamChange(const std::string &adapterName, const AudioParamKey key, 41 const std::string &condition, const std::string &value) = 0; 42 }; 43 44 class IAudioDeviceAdapter { 45 public: 46 IAudioDeviceAdapter() = default; 47 virtual ~IAudioDeviceAdapter() = default; 48 49 virtual int32_t Init() = 0; 50 virtual int32_t RegExtraParamObserver() = 0; 51 virtual int32_t CreateRender(const AudioDeviceDescriptor &devDesc, const AudioSampleAttributes &attr, 52 sptr<IAudioRender> &audioRender, IAudioDeviceAdapterCallback *renderCb, uint32_t &renderId) = 0; 53 virtual void DestroyRender(sptr<IAudioRender> audioRender, uint32_t &renderId) = 0; 54 virtual int32_t CreateCapture(const AudioDeviceDescriptor &devDesc, const AudioSampleAttributes &attr, 55 sptr<IAudioCapture> &audioCapture, IAudioDeviceAdapterCallback *captureCb, uint32_t &captureId) = 0; 56 virtual void DestroyCapture(sptr<IAudioCapture> audioCapture, uint32_t &captureId) = 0; 57 virtual void SetAudioParameter(const AudioParamKey key, const std::string &condition, 58 const std::string &value) = 0; 59 virtual std::string GetAudioParameter(const AudioParamKey key, const std::string &condition) = 0; 60 virtual int32_t UpdateAudioRoute(const AudioRoute &route) = 0; 61 virtual int32_t Release() = 0; 62 }; 63 } // namespace AudioStandard 64 } // namespace OHOS 65 #endif // I_AUDIO_DEVICE_ADAPTER_H