• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 OHOS_VDI_AUDIO_V1_0_IAUDIOADAPTER_H
17 #define OHOS_VDI_AUDIO_V1_0_IAUDIOADAPTER_H
18 
19 #include <stdbool.h>
20 #include <stdint.h>
21 #include "audio_types_vdi.h"
22 #include "iaudio_callback_vdi.h"
23 #include "iaudio_capture_vdi.h"
24 #include "iaudio_render_vdi.h"
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* __cplusplus */
29 
30 #define IAUDIO_VDI_ADAPTER_MAJOR_VERSION 1
31 #define IAUDIO_VDI_ADAPTER_MINOR_VERSION 0
32 
33 struct IAudioAdapterVdi {
34     int32_t (*InitAllPorts)(struct IAudioAdapterVdi *self);
35     int32_t (*CreateRender)(struct IAudioAdapterVdi *self, const struct AudioDeviceDescriptorVdi *desc,
36         const struct AudioSampleAttributesVdi *attrs, struct IAudioRenderVdi **render);
37     int32_t (*DestroyRender)(struct IAudioAdapterVdi *self, struct IAudioRenderVdi *render);
38     int32_t (*CreateCapture)(struct IAudioAdapterVdi *self, const struct AudioDeviceDescriptorVdi *desc,
39         const struct AudioSampleAttributesVdi *attrs, struct IAudioCaptureVdi **capture);
40     int32_t (*DestroyCapture)(struct IAudioAdapterVdi *self, struct IAudioCaptureVdi *capture);
41     int32_t (*GetPortCapability)(struct IAudioAdapterVdi *self, const struct AudioPortVdi *port,
42         struct AudioPortCapabilityVdi *capability);
43     int32_t (*SetPassthroughMode)(struct IAudioAdapterVdi *self, const struct AudioPortVdi *port,
44         enum AudioPortPassthroughModeVdi mode);
45     int32_t (*GetPassthroughMode)(struct IAudioAdapterVdi *self, const struct AudioPortVdi *port,
46         enum AudioPortPassthroughModeVdi *mode);
47     int32_t (*GetDeviceStatus)(struct IAudioAdapterVdi *self, struct AudioDeviceStatusVdi *status);
48     int32_t (*UpdateAudioRoute)(struct IAudioAdapterVdi *self, const struct AudioRouteVdi *route, int32_t *routeHandle);
49     int32_t (*ReleaseAudioRoute)(struct IAudioAdapterVdi *self, int32_t routeHandle);
50     int32_t (*SetMicMute)(struct IAudioAdapterVdi *self, bool mute);
51     int32_t (*GetMicMute)(struct IAudioAdapterVdi *self, bool *mute);
52     int32_t (*SetVoiceVolume)(struct IAudioAdapterVdi *self, float volume);
53     int32_t (*SetExtraParams)(struct IAudioAdapterVdi *self, enum AudioExtParamKeyVdi key, const char *condition,
54         const char *value);
55     int32_t (*GetExtraParams)(struct IAudioAdapterVdi *self, enum AudioExtParamKeyVdi key, const char *condition,
56         char *value, uint32_t valueLen);
57     int32_t (*RegExtraParamObserver)(struct IAudioAdapterVdi *self,
58         struct IAudioCallbackVdi *audioCallback, int8_t cookie);
59 };
60 
61 #ifdef __cplusplus
62 }
63 #endif /* __cplusplus */
64 
65 #endif /* OHOS_VDI_AUDIO_V1_0_IAUDIOADAPTER_H */