• 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_AUDIOTYPES_H
17 #define OHOS_VDI_AUDIO_V1_0_AUDIOTYPES_H
18 
19 #include <stdbool.h>
20 #include <stdint.h>
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif /* __cplusplus */
25 
26 enum AudioPortDirectionVdi {
27     PORT_VDI_OUT = 1,
28     PORT_VDI_IN = 2,
29     PORT_VDI_OUT_IN = 3,
30     PORT_VDI_DIR_BUTT,
31 };
32 
33 enum AudioPortPinVdi {
34     PIN_VDI_NONE = 0,
35     PIN_VDI_OUT_SPEAKER = 1 << 0,
36     PIN_VDI_OUT_HEADSET = 1 << 1,
37     PIN_VDI_OUT_LINEOUT = 1 << 2,
38     PIN_VDI_OUT_HDMI = 1 << 3,
39     PIN_VDI_OUT_USB = 1 << 4,
40     PIN_VDI_OUT_USB_EXT = 1 << 5,
41     PIN_VDI_OUT_EARPIECE = 1 << 5 | 1 << 4,
42     PIN_VDI_OUT_BLUETOOTH_SCO = 1 << 6,
43     PIN_VDI_OUT_DAUDIO_DEFAULT = 1 << 7,
44     PIN_VDI_OUT_HEADPHONE = 1 << 8,
45     PIN_VDI_IN_MIC = 1 << 27 | 1 << 0,
46     PIN_VDI_IN_HS_MIC = 1 << 27 | 1 << 1,
47     PIN_VDI_IN_LINEIN = 1 << 27 | 1 << 2,
48     PIN_VDI_IN_USB_EXT = 1 << 27 | 1 << 3,
49     PIN_VDI_IN_BLUETOOTH_SCO_HEADSET = 1 << 27 | 1 << 4,
50     PIN_VDI_IN_DAUDIO_DEFAULT = 1 << 27 | 1 << 5,
51     PIN_VDI_IN_BUTT,
52 };
53 
54 enum AudioCategoryVdi {
55     AUDIO_VDI_IN_MEDIA = 0,
56     AUDIO_VDI_IN_COMMUNICATION = 1,
57     AUDIO_VDI_IN_RINGTONE = 2,
58     AUDIO_VDI_IN_CALL = 3,
59     AUDIO_VDI_MMAP_NOIRQ = 4,
60     AUDIO_VDI_CATEGORY_BUTT,
61 };
62 
63 enum AudioFormatVdi {
64     AUDIO_VDI_FORMAT_TYPE_PCM_8_BIT = 1 << 0,
65     AUDIO_VDI_FORMAT_TYPE_PCM_16_BIT = 1 << 1,
66     AUDIO_VDI_FORMAT_TYPE_PCM_24_BIT = 1 << 1 | 1 << 0,
67     AUDIO_VDI_FORMAT_TYPE_PCM_32_BIT = 1 << 2,
68     AUDIO_VDI_FORMAT_TYPE_AAC_MAIN = 1 << 24 | 1 << 0,
69     AUDIO_VDI_FORMAT_TYPE_AAC_LC = 1 << 24 | 1 << 1,
70     AUDIO_VDI_FORMAT_TYPE_AAC_LD = 1 << 24 | 1 << 1 | 1 << 0,
71     AUDIO_VDI_FORMAT_TYPE_AAC_ELD = 1 << 24 | 1 << 2,
72     AUDIO_VDI_FORMAT_TYPE_AAC_HE_V1 = 1 << 24 | 1 << 2 | 1 << 0,
73     AUDIO_VDI_FORMAT_TYPE_AAC_HE_V2 = 1 << 24 | 1 << 2 | 1 << 1,
74     AUDIO_VDI_FORMAT_TYPE_G711A = 1 << 25 | 1 << 0,
75     AUDIO_VDI_FORMAT_TYPE_G711U = 1 << 25 | 1 << 1,
76     AUDIO_VDI_FORMAT_TYPE_G726 = 1 << 25 | 1 << 1 | 1 << 0,
77     AUDIO_VDI_FORMAT_TYPE_BUTT,
78 };
79 
80 enum AudioChannelMaskVdi {
81     AUDIO_VDI_CHANNEL_FRONT_LEFT = 1,
82     AUDIO_VDI_CHANNEL_FRONT_RIGHT = 2,
83     AUDIO_VDI_CHANNEL_MONO = 1,
84     AUDIO_VDI_CHANNEL_STEREO = 3,
85     AUDIO_VDI_CHANNEL_MASK_BUTT,
86 };
87 
88 enum AudioSampleRatesMaskVdi {
89     AUDIO_VDI_SAMPLE_RATE_MASK_8000 = 1 << 0,
90     AUDIO_VDI_SAMPLE_RATE_MASK_12000 = 1 << 1,
91     AUDIO_VDI_SAMPLE_RATE_MASK_11025 = 1 << 2,
92     AUDIO_VDI_SAMPLE_RATE_MASK_16000 = 1 << 3,
93     AUDIO_VDI_SAMPLE_RATE_MASK_22050 = 1 << 4,
94     AUDIO_VDI_SAMPLE_RATE_MASK_24000 = 1 << 5,
95     AUDIO_VDI_SAMPLE_RATE_MASK_32000 = 1 << 6,
96     AUDIO_VDI_SAMPLE_RATE_MASK_44100 = 1 << 7,
97     AUDIO_VDI_SAMPLE_RATE_MASK_48000 = 1 << 8,
98     AUDIO_VDI_SAMPLE_RATE_MASK_64000 = 1 << 9,
99     AUDIO_VDI_SAMPLE_RATE_MASK_96000 = 1 << 10,
100     AUDIO_VDI_SAMPLE_RATE_MASK_INVALID = 4294967295,
101     AUDIO_VDI_SAMPLE_RATE_MASK_BUTT,
102 };
103 
104 enum AudioPortPassthroughModeVdi {
105     PORT_VDI_PASSTHROUGH_LPCM = 1,
106     PORT_VDI_PASSTHROUGH_RAW = 2,
107     PORT_VDI_PASSTHROUGH_HBR2LBR = 4,
108     PORT_VDI_PASSTHROUGH_AUTO = 8,
109     PORT_VDI_PASSTHROUGH_MODE_BUTT,
110 };
111 
112 enum AudioSampleFormatVdi {
113     AUDIO_VDI_SAMPLE_FORMAT_S8 = 0,
114     AUDIO_VDI_SAMPLE_FORMAT_S8P = 1,
115     AUDIO_VDI_SAMPLE_FORMAT_U8 = 2,
116     AUDIO_VDI_SAMPLE_FORMAT_U8P = 3,
117     AUDIO_VDI_SAMPLE_FORMAT_S16 = 4,
118     AUDIO_VDI_SAMPLE_FORMAT_S16P = 5,
119     AUDIO_VDI_SAMPLE_FORMAT_U16 = 6,
120     AUDIO_VDI_SAMPLE_FORMAT_U16P = 7,
121     AUDIO_VDI_SAMPLE_FORMAT_S24 = 8,
122     AUDIO_VDI_SAMPLE_FORMAT_S24P = 9,
123     AUDIO_VDI_SAMPLE_FORMAT_U24 = 10,
124     AUDIO_VDI_SAMPLE_FORMAT_U24P = 11,
125     AUDIO_VDI_SAMPLE_FORMAT_S32 = 12,
126     AUDIO_VDI_SAMPLE_FORMAT_S32P = 13,
127     AUDIO_VDI_SAMPLE_FORMAT_U32 = 14,
128     AUDIO_VDI_SAMPLE_FORMAT_U32P = 15,
129     AUDIO_VDI_SAMPLE_FORMAT_S64 = 16,
130     AUDIO_VDI_SAMPLE_FORMAT_S64P = 17,
131     AUDIO_VDI_SAMPLE_FORMAT_U64 = 18,
132     AUDIO_VDI_SAMPLE_FORMAT_U64P = 19,
133     AUDIO_VDI_SAMPLE_FORMAT_F32 = 20,
134     AUDIO_VDI_SAMPLE_FORMAT_F32P = 21,
135     AUDIO_VDI_SAMPLE_FORMAT_F64 = 22,
136     AUDIO_VDI_SAMPLE_FORMAT_F64P = 23,
137     AUDIO_VDI_SAMPLE_FORMAT_BUTT,
138 };
139 
140 enum AudioChannelModeVdi {
141     AUDIO_VDI_CHANNEL_NORMAL = 0,
142     AUDIO_VDI_CHANNEL_BOTH_LEFT = 1,
143     AUDIO_VDI_CHANNEL_BOTH_RIGHT = 2,
144     AUDIO_VDI_CHANNEL_EXCHANGE = 3,
145     AUDIO_VDI_CHANNEL_MIX = 4,
146     AUDIO_VDI_CHANNEL_LEFT_MUTE = 5,
147     AUDIO_VDI_CHANNEL_RIGHT_MUTE = 6,
148     AUDIO_VDI_CHANNEL_BOTH_MUTE = 7,
149     AUDIO_VDI_CHANNEL_MODE_BUTT,
150 };
151 
152 enum AudioDrainNotifyTypeVdi {
153     AUDIO_VDI_DRAIN_NORMAL_MODE = 0,
154     AUDIO_VDI_DRAIN_EARLY_MODE = 1,
155     AUDIO_VDI_DRAIN_TYPE_BUTT,
156 };
157 
158 enum AudioCallbackTypeVdi {
159     AUDIO_VDI_NONBLOCK_WRITE_COMPLETED = 0,
160     AUDIO_VDI_DRAIN_COMPLETED = 1,
161     AUDIO_VDI_FLUSH_COMPLETED = 2,
162     AUDIO_VDI_RENDER_FULL = 3,
163     AUDIO_VDI_ERROR_OCCUR = 4,
164     AUDIO_VDI_CALLBACK_TYPE_BUTT,
165 };
166 
167 enum AudioPortRoleVdi {
168     AUDIO_VDI_PORT_UNASSIGNED_ROLE = 0,
169     AUDIO_VDI_PORT_SOURCE_ROLE = 1,
170     AUDIO_VDI_PORT_SINK_ROLE = 2,
171     AUDIO_VDI_PORT_ROLE_BUTT,
172 };
173 
174 enum AudioPortTypeVdi {
175     AUDIO_VDI_PORT_UNASSIGNED_TYPE = 0,
176     AUDIO_VDI_PORT_DEVICE_TYPE = 1,
177     AUDIO_VDI_PORT_MIX_TYPE = 2,
178     AUDIO_VDI_PORT_SESSION_TYPE = 3,
179      AUDIO_VDI_PORT_TYPE_BUTT,
180 };
181 
182 enum AudioSessionTypeVdi {
183     AUDI_VDI_OUTPUT_STAGE_SESSION = 0,
184     AUDI_VDI_OUTPUT_MIX_SESSION = 1,
185     AUDI_VDI_ALLOCATE_SESSION = 2,
186     AUDI_VDI_INVALID_SESSION = 3,
187     AUDI_VDI_SESSION_TYPE_BUTT,
188 };
189 
190 enum AudioDeviceTypeVdi {
191     AUDIO_VDI_LINEOUT = 1 << 0,
192     AUDIO_VDI_HEADPHONE = 1 << 1,
193     AUDIO_VDI_HEADSET = 1 << 2,
194     AUDIO_VDI_USB_HEADSET = 1 << 3,
195     AUDIO_VDI_USB_HEADPHONE = 1 << 4,
196     AUDIO_VDI_USBA_HEADSET = 1 << 5,
197     AUDIO_VDI_USBA_HEADPHONE = 1 << 6,
198     AUDIO_VDI_PRIMARY_DEVICE = 1 << 7,
199     AUDIO_VDI_USB_DEVICE = 1 << 8,
200     AUDIO_VDI_A2DP_DEVICE = 1 << 9,
201     AUDIO_VDI_DEVICE_UNKNOWN,
202     AUDIO_VDI_DEVICE_TYPE_BUTT,
203 };
204 
205 enum AudioEventTypeVdi {
206     AUDIO_VDI_DEVICE_ADD = 1,
207     AUDIO_VDI_DEVICE_REMOVE = 2,
208     AUDIO_VDI_LOAD_SUCCESS = 3,
209     AUDIO_VDI_LOAD_FAILURE = 4,
210     AUDIO_VDI_UNLOAD = 5,
211     AUDIO_VDI_SERVICE_VALID = 7,
212     AUDIO_VDI_SERVICE_INVALID = 8,
213     AUDIO_VDI_CAPTURE_THRESHOLD = 9,
214     AUDIO_VDI_EVENT_UNKNOWN = 10,
215     AUDIO_VDI_EVENT_TYPE_BUTT,
216 };
217 
218 enum AudioExtParamKeyVdi {
219     AUDIO_VDI_EXT_PARAM_KEY_NONE = 0,
220     AUDIO_VDI_EXT_PARAM_KEY_VOLUME = 1,
221     AUDIO_VDI_EXT_PARAM_KEY_FOCUS = 2,
222     AUDIO_VDI_EXT_PARAM_KEY_BUTTON = 3,
223     AUDIO_VDI_EXT_PARAM_KEY_EFFECT = 4,
224     AUDIO_VDI_EXT_PARAM_KEY_STATUS = 5,
225     AUDIO_VDI_EXT_PARAM_KEY_LOWPOWER = 1000,
226     AUDIO_VDI_EXT_PARAM_KEY_BUTT,
227 };
228 
229 struct AudioDeviceStatusVdi {
230     uint32_t pnpStatus;
231 } __attribute__ ((aligned(8)));
232 
233 union SceneDescVdi {
234     uint32_t id;
235 }  __attribute__ ((aligned(8)));
236 
237 struct AudioPortVdi {
238     enum AudioPortDirectionVdi dir;
239     uint32_t portId;
240     char *portName;
241 };
242 
243 struct AudioAdapterDescriptorVdi {
244     char *adapterName;
245     struct AudioPortVdi *ports;
246     uint32_t portsLen;
247 };
248 
249 struct AudioDeviceDescriptorVdi {
250     uint32_t portId;
251     enum AudioPortPinVdi pins;
252     char *desc;
253 };
254 
255 struct AudioSceneDescriptorVdi {
256     union SceneDescVdi scene;
257     struct AudioDeviceDescriptorVdi desc;
258 };
259 
260 enum AudioInputTypeVdi {
261     AUDIO_VDI_INPUT_DEFAULT_TYPE             = 0,
262     AUDIO_VDI_INPUT_MIC_TYPE                 = 1 << 0,
263     AUDIO_VDI_INPUT_SPEECH_WAKEUP_TYPE       = 1 << 1,
264     AUDIO_VDI_INPUT_VOICE_COMMUNICATION_TYPE = 1 << 2,
265     AUDIO_VDI_INPUT_VOICE_RECOGNITION_TYPE   = 1 << 3,
266 };
267 
268 struct AudioSampleAttributesVdi {
269     enum AudioCategoryVdi type;
270     bool interleaved;
271     enum AudioFormatVdi format;
272     uint32_t sampleRate;
273     uint32_t channelCount;
274     uint32_t period;
275     uint32_t frameSize;
276     bool isBigEndian;
277     bool isSignedData;
278     uint32_t startThreshold;
279     uint32_t stopThreshold;
280     uint32_t silenceThreshold;
281     int32_t streamId;
282     int32_t sourceType;
283 } __attribute__ ((aligned(8)));
284 
285 struct AudioTimeStampVdi {
286     int64_t tvSec;
287     int64_t tvNSec;
288 } __attribute__ ((aligned(8)));
289 
290 struct AudioSubPortCapabilityVdi {
291     uint32_t portId;
292     char *desc;
293     enum AudioPortPassthroughModeVdi mask;
294 };
295 
296 struct AudioPortCapabilityVdi {
297     uint32_t deviceType;
298     uint32_t deviceId;
299     bool hardwareMode;
300     uint32_t formatNum;
301     enum AudioFormatVdi *formats;
302     uint32_t formatsLen;
303     uint32_t sampleRateMasks;
304     enum AudioChannelMaskVdi channelMasks;
305     uint32_t channelCount;
306     struct AudioSubPortCapabilityVdi *subPorts;
307     uint32_t subPortsLen;
308     enum AudioSampleFormatVdi *supportSampleFormats;
309     uint32_t supportSampleFormatsLen;
310 };
311 
312 struct AudioMmapBufferDescriptorVdi {
313     int8_t *memoryAddress;
314     uint32_t memoryAddressLen;
315     int32_t memoryFd;
316     int32_t totalBufferFrames;
317     int32_t transferFrameSize;
318     int32_t isShareable;
319     uint32_t offset;
320     char *filePath;
321 };
322 
323 struct AudioDevExtInfoVdi {
324     int32_t moduleId;
325     enum AudioPortPinVdi type;
326     char *desc;
327 };
328 
329 struct AudioMixExtInfoVdi {
330     int32_t moduleId;
331     int32_t streamId;
332 } __attribute__ ((aligned(8)));
333 
334 struct AudioSessionExtInfoVdi {
335     enum AudioSessionTypeVdi sessionType;
336 } __attribute__ ((aligned(8)));
337 
338 struct AudioInfoVdi {
339     struct AudioDevExtInfoVdi device;
340     struct AudioMixExtInfoVdi mix;
341     struct AudioSessionExtInfoVdi session;
342 };
343 
344 struct AudioRouteNodeVdi {
345     int32_t portId;
346     enum AudioPortRoleVdi role;
347     enum AudioPortTypeVdi type;
348     struct AudioInfoVdi ext;
349 };
350 
351 struct AudioRouteVdi {
352     struct AudioRouteNodeVdi *sources;
353     uint32_t sourcesLen;
354     struct AudioRouteNodeVdi *sinks;
355     uint32_t sinksLen;
356 };
357 
358 struct AudioEventVdi {
359     uint32_t eventType;
360     uint32_t deviceType;
361 } __attribute__ ((aligned(8)));
362 
363 #ifdef __cplusplus
364 }
365 #endif /* __cplusplus */
366 
367 #endif /* OHOS_VDI_AUDIO_V1_0_AUDIOTYPES_H */