• 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_OUT_USB_HEADSET = 1 << 9,
46     PIN_VDI_OUT_BLUETOOTH_A2DP = 1 << 10,
47     PIN_VDI_OUT_DP = 1 << 11,
48     PIN_VDI_OUT_NEARLINK_SCO = 1 << 12,
49     PIN_VDI_OUT_NEARLINK = 1 << 13,
50     PIN_VDI_IN_MIC = 1 << 27 | 1 << 0,
51     PIN_VDI_IN_HS_MIC = 1 << 27 | 1 << 1,
52     PIN_VDI_IN_LINEIN = 1 << 27 | 1 << 2,
53     PIN_VDI_IN_USB_EXT = 1 << 27 | 1 << 3,
54     PIN_VDI_IN_BLUETOOTH_SCO_HEADSET = 1 << 27 | 1 << 4,
55     PIN_VDI_IN_DAUDIO_DEFAULT = 1 << 27 | 1 << 5,
56     PIN_VDI_IN_USB_HEADSET = 1 << 27 | 1 << 6,
57     PIN_VDI_IN_PENCIL = 1 << 27 | 1 << 7,
58     PIN_VDI_IN_UWB = 1 << 27 | 1 << 8,
59     PIN_VDI_IN_NEARLINK = 1 << 27 | 1 << 9,
60     PIN_VDI_IN_BUTT,
61 };
62 
63 enum AudioCategoryVdi {
64     AUDIO_VDI_IN_MEDIA = 0,
65     AUDIO_VDI_IN_COMMUNICATION = 1,
66     AUDIO_VDI_IN_RINGTONE = 2,
67     AUDIO_VDI_IN_CALL = 3,
68     AUDIO_VDI_MMAP_NOIRQ = 4,
69     AUDIO_VDI_OFFLOAD = 5,
70     AUDIO_VDI_MULTI_CHANNEL = 6,
71     AUDIO_VDI_DP = 7,
72     AUDIO_VDI_MMAP_VOIP = 8,
73     AUDIO_VDI_IN_NAVIGATION = 9,
74     AUDIO_VDI_DIRECT = 10,
75     AUDIO_VDI_CATEGORY_BUTT,
76 };
77 
78 enum AudioFormatVdi {
79     AUDIO_VDI_FORMAT_TYPE_PCM_8_BIT = 1 << 0,
80     AUDIO_VDI_FORMAT_TYPE_PCM_16_BIT = 1 << 1,
81     AUDIO_VDI_FORMAT_TYPE_PCM_24_BIT = 1 << 1 | 1 << 0,
82     AUDIO_VDI_FORMAT_TYPE_PCM_32_BIT = 1 << 2,
83     AUDIO_VDI_FORMAT_TYPE_PCM_FLOAT  = 1 << 2 | 1 << 0,
84     AUDIO_VDI_FORMAT_TYPE_MP3        = 1 << 24,
85     AUDIO_VDI_FORMAT_TYPE_AAC_MAIN = 1 << 24 | 1 << 0,
86     AUDIO_VDI_FORMAT_TYPE_AAC_LC = 1 << 24 | 1 << 1,
87     AUDIO_VDI_FORMAT_TYPE_AAC_LD = 1 << 24 | 1 << 1 | 1 << 0,
88     AUDIO_VDI_FORMAT_TYPE_AAC_ELD = 1 << 24 | 1 << 2,
89     AUDIO_VDI_FORMAT_TYPE_AAC_HE_V1 = 1 << 24 | 1 << 2 | 1 << 0,
90     AUDIO_VDI_FORMAT_TYPE_AAC_HE_V2 = 1 << 24 | 1 << 2 | 1 << 1,
91     AUDIO_VDI_FORMAT_TYPE_EAC3 = 1 << 24 | 1 << 2 | 1 << 1 | 1 << 0,
92     AUDIO_VDI_FORMAT_TYPE_G711A = 1 << 25 | 1 << 0,
93     AUDIO_VDI_FORMAT_TYPE_G711U = 1 << 25 | 1 << 1,
94     AUDIO_VDI_FORMAT_TYPE_G726 = 1 << 25 | 1 << 1 | 1 << 0,
95     AUDIO_VDI_FORMAT_TYPE_BUTT,
96 };
97 
98 enum AudioChannelMaskVdi {
99     AUDIO_VDI_CHANNEL_DEFAULT = 0,
100     AUDIO_VDI_CHANNEL_STEREO = 3,
101     AUDIO_VDI_CHANNEL_MONO = 4,
102     AUDIO_VDI_CHANNEL_2POINT1 = 11,
103     AUDIO_VDI_CHANNEL_QUAD = 51,
104     AUDIO_VDI_CHANNEL_3POINT0POINT2 = 206158430215,
105     AUDIO_VDI_CHANNEL_4POINT0 = 263,
106     AUDIO_VDI_CHANNEL_5POINT1 = 1551,
107     AUDIO_VDI_CHANNEL_6POINT1 = 1807,
108     AUDIO_VDI_CHANNEL_7POINT1 = 1599,
109     AUDIO_VDI_CHANNEL_5POINT1POINT2 = 206158431759,
110     AUDIO_VDI_CHANNEL_5POINT1POINT4 = 185871,
111     AUDIO_VDI_CHANNEL_7POINT1POINT2 = 206158431807,
112     AUDIO_VDI_CHANNEL_7POINT1POINT4 = 185919,
113     AUDIO_VDI_CHANNEL_10POINT2 = 6442473271,
114     AUDIO_VDI_CHANNEL_9POINT1POINT4 = 6442636863,
115     AUDIO_VDI_CHANNEL_9POINT1POINT6 = 212601067071,
116     AUDIO_VDI_CHANNEL_HOA_ORDER1_ACN_N3D = 17592186044417,
117     AUDIO_VDI_CHANNEL_HOA_ORDER1_ACN_SN3D = 17592186048513,
118     AUDIO_VDI_CHANNEL_HOA_ORDER1_FUMA = 17592186044673,
119     AUDIO_VDI_CHANNEL_HOA_ORDER2_ACN_N3D = 17592186044418,
120     AUDIO_VDI_CHANNEL_HOA_ORDER2_ACN_SN3D = 17592186048514,
121     AUDIO_VDI_CHANNEL_HOA_ORDER2_FUMA = 17592186044674,
122     AUDIO_VDI_CHANNEL_HOA_ORDER3_ACN_N3D = 17592186044419,
123     AUDIO_VDI_CHANNEL_HOA_ORDER3_ACN_SN3D = 17592186048515,
124     AUDIO_VDI_CHANNEL_HOA_ORDER3_FUMA = 17592186044675,
125     AUDIO_VDI_CHANNEL_MASK_BUTT,
126 };
127 
128 enum AudioSampleRatesMaskVdi {
129     AUDIO_VDI_SAMPLE_RATE_MASK_8000 = 1 << 0,
130     AUDIO_VDI_SAMPLE_RATE_MASK_12000 = 1 << 1,
131     AUDIO_VDI_SAMPLE_RATE_MASK_11025 = 1 << 2,
132     AUDIO_VDI_SAMPLE_RATE_MASK_16000 = 1 << 3,
133     AUDIO_VDI_SAMPLE_RATE_MASK_22050 = 1 << 4,
134     AUDIO_VDI_SAMPLE_RATE_MASK_24000 = 1 << 5,
135     AUDIO_VDI_SAMPLE_RATE_MASK_32000 = 1 << 6,
136     AUDIO_VDI_SAMPLE_RATE_MASK_44100 = 1 << 7,
137     AUDIO_VDI_SAMPLE_RATE_MASK_48000 = 1 << 8,
138     AUDIO_VDI_SAMPLE_RATE_MASK_64000 = 1 << 9,
139     AUDIO_VDI_SAMPLE_RATE_MASK_96000 = 1 << 10,
140     AUDIO_VDI_SAMPLE_RATE_MASK_INVALID = 4294967295,
141     AUDIO_VDI_SAMPLE_RATE_MASK_BUTT,
142 };
143 
144 enum AudioPortPassthroughModeVdi {
145     PORT_VDI_PASSTHROUGH_LPCM = 1,
146     PORT_VDI_PASSTHROUGH_RAW = 2,
147     PORT_VDI_PASSTHROUGH_HBR2LBR = 4,
148     PORT_VDI_PASSTHROUGH_AUTO = 8,
149     PORT_VDI_PASSTHROUGH_MODE_BUTT,
150 };
151 
152 enum AudioSampleFormatVdi {
153     AUDIO_VDI_SAMPLE_FORMAT_S8 = 0,
154     AUDIO_VDI_SAMPLE_FORMAT_S8P = 1,
155     AUDIO_VDI_SAMPLE_FORMAT_U8 = 2,
156     AUDIO_VDI_SAMPLE_FORMAT_U8P = 3,
157     AUDIO_VDI_SAMPLE_FORMAT_S16 = 4,
158     AUDIO_VDI_SAMPLE_FORMAT_S16P = 5,
159     AUDIO_VDI_SAMPLE_FORMAT_U16 = 6,
160     AUDIO_VDI_SAMPLE_FORMAT_U16P = 7,
161     AUDIO_VDI_SAMPLE_FORMAT_S24 = 8,
162     AUDIO_VDI_SAMPLE_FORMAT_S24P = 9,
163     AUDIO_VDI_SAMPLE_FORMAT_U24 = 10,
164     AUDIO_VDI_SAMPLE_FORMAT_U24P = 11,
165     AUDIO_VDI_SAMPLE_FORMAT_S32 = 12,
166     AUDIO_VDI_SAMPLE_FORMAT_S32P = 13,
167     AUDIO_VDI_SAMPLE_FORMAT_U32 = 14,
168     AUDIO_VDI_SAMPLE_FORMAT_U32P = 15,
169     AUDIO_VDI_SAMPLE_FORMAT_S64 = 16,
170     AUDIO_VDI_SAMPLE_FORMAT_S64P = 17,
171     AUDIO_VDI_SAMPLE_FORMAT_U64 = 18,
172     AUDIO_VDI_SAMPLE_FORMAT_U64P = 19,
173     AUDIO_VDI_SAMPLE_FORMAT_F32 = 20,
174     AUDIO_VDI_SAMPLE_FORMAT_F32P = 21,
175     AUDIO_VDI_SAMPLE_FORMAT_F64 = 22,
176     AUDIO_VDI_SAMPLE_FORMAT_F64P = 23,
177     AUDIO_VDI_SAMPLE_FORMAT_BUTT,
178 };
179 
180 enum AudioChannelModeVdi {
181     AUDIO_VDI_CHANNEL_NORMAL = 0,
182     AUDIO_VDI_CHANNEL_BOTH_LEFT = 1,
183     AUDIO_VDI_CHANNEL_BOTH_RIGHT = 2,
184     AUDIO_VDI_CHANNEL_EXCHANGE = 3,
185     AUDIO_VDI_CHANNEL_MIX = 4,
186     AUDIO_VDI_CHANNEL_LEFT_MUTE = 5,
187     AUDIO_VDI_CHANNEL_RIGHT_MUTE = 6,
188     AUDIO_VDI_CHANNEL_BOTH_MUTE = 7,
189     AUDIO_VDI_CHANNEL_MODE_BUTT,
190 };
191 
192 enum AudioDrainNotifyTypeVdi {
193     AUDIO_VDI_DRAIN_NORMAL_MODE = 0,
194     AUDIO_VDI_DRAIN_EARLY_MODE = 1,
195     AUDIO_VDI_DRAIN_TYPE_BUTT,
196 };
197 
198 enum AudioCallbackTypeVdi {
199     AUDIO_VDI_NONBLOCK_WRITE_COMPLETED = 0,
200     AUDIO_VDI_DRAIN_COMPLETED = 1,
201     AUDIO_VDI_FLUSH_COMPLETED = 2,
202     AUDIO_VDI_RENDER_FULL = 3,
203     AUDIO_VDI_ERROR_OCCUR = 4,
204     AUDIO_VDI_CALLBACK_TYPE_BUTT,
205 };
206 
207 enum AudioPortRoleVdi {
208     AUDIO_VDI_PORT_UNASSIGNED_ROLE = 0,
209     AUDIO_VDI_PORT_SOURCE_ROLE = 1,
210     AUDIO_VDI_PORT_SINK_ROLE = 2,
211     AUDIO_VDI_PORT_ROLE_BUTT,
212 };
213 
214 enum AudioPortTypeVdi {
215     AUDIO_VDI_PORT_UNASSIGNED_TYPE = 0,
216     AUDIO_VDI_PORT_DEVICE_TYPE = 1,
217     AUDIO_VDI_PORT_MIX_TYPE = 2,
218     AUDIO_VDI_PORT_SESSION_TYPE = 3,
219     AUDIO_VDI_PORT_TYPE_BUTT,
220 };
221 
222 enum AudioSessionTypeVdi {
223     AUDI_VDI_OUTPUT_STAGE_SESSION = 0,
224     AUDI_VDI_OUTPUT_MIX_SESSION = 1,
225     AUDI_VDI_ALLOCATE_SESSION = 2,
226     AUDI_VDI_INVALID_SESSION = 3,
227     AUDI_VDI_SESSION_TYPE_BUTT,
228 };
229 
230 enum AudioDeviceTypeVdi {
231     AUDIO_VDI_LINEOUT = 1 << 0,
232     AUDIO_VDI_HEADPHONE = 1 << 1,
233     AUDIO_VDI_HEADSET = 1 << 2,
234     AUDIO_VDI_USB_HEADSET = 1 << 3,
235     AUDIO_VDI_USB_HEADPHONE = 1 << 4,
236     AUDIO_VDI_USBA_HEADSET = 1 << 5,
237     AUDIO_VDI_USBA_HEADPHONE = 1 << 6,
238     AUDIO_VDI_PRIMARY_DEVICE = 1 << 7,
239     AUDIO_VDI_USB_DEVICE = 1 << 8,
240     AUDIO_VDI_A2DP_DEVICE = 1 << 9,
241     AUDIO_VDI_HDMI_DEVICE = 1 << 10,
242     AUDIO_VDI_ADAPTER_DEVICE = 1 << 11,
243     AUDIO_VDI_DP_DEVICE = 1 << 12,
244     AUDIO_VDI_ACCESSORY_DEVICE = 1 << 13,
245     AUDIO_VDI_REMOTE_DEVICE = 1 << 14,
246     AUDIO_VDI_HEARING_AID_DEVICE = 1 << 15,
247     AUDIO_VDI_DEVICE_UNKNOWN,
248     AUDIO_VDI_DEVICE_TYPE_BUTT,
249 };
250 
251 enum AudioEventTypeVdi {
252     AUDIO_VDI_DEVICE_ADD = 1,
253     AUDIO_VDI_DEVICE_REMOVE = 2,
254     AUDIO_VDI_LOAD_SUCCESS = 3,
255     AUDIO_VDI_LOAD_FAILURE = 4,
256     AUDIO_VDI_UNLOAD = 5,
257     AUDIO_VDI_SERVICE_VALID = 7,
258     AUDIO_VDI_SERVICE_INVALID = 8,
259     AUDIO_VDI_CAPTURE_THRESHOLD = 9,
260     AUDIO_VDI_EVENT_UNKNOWN = 10,
261     AUDIO_VDI_EVENT_TYPE_BUTT,
262 };
263 
264 enum AudioExtParamKeyVdi {
265     AUDIO_VDI_EXT_PARAM_KEY_NONE = 0,
266     AUDIO_VDI_EXT_PARAM_KEY_VOLUME = 1,
267     AUDIO_VDI_EXT_PARAM_KEY_FOCUS = 2,
268     AUDIO_VDI_EXT_PARAM_KEY_BUTTON = 3,
269     AUDIO_VDI_EXT_PARAM_KEY_EFFECT = 4,
270     AUDIO_VDI_EXT_PARAM_KEY_STATUS = 5,
271     AUDIO_VDI_EXT_PARAM_KEY_USB_DEVICE = 101,
272     AUDIO_VDI_EXT_PARAM_KEY_PERF_INFO = 201,
273     AUDIO_VDI_EXT_PARAM_KEY_MMI = 301,
274     AUDIO_VDI_EXT_PARAM_KEY_LOWPOWER = 1000,
275     AUDIO_VDI_EXT_PARAM_KEY_BUTT,
276 };
277 
278 struct AudioDeviceStatusVdi {
279     uint32_t pnpStatus;
280 } __attribute__ ((aligned(8)));
281 
282 union SceneDescVdi {
283     uint32_t id;
284 }  __attribute__ ((aligned(8)));
285 
286 struct AudioPortVdi {
287     enum AudioPortDirectionVdi dir;
288     uint32_t portId;
289     char *portName;
290 };
291 
292 struct AudioAdapterDescriptorVdi {
293     char *adapterName;
294     struct AudioPortVdi *ports;
295     uint32_t portsLen;
296 };
297 
298 struct AudioDeviceDescriptorVdi {
299     uint32_t portId;
300     enum AudioPortPinVdi pins;
301     char *desc;
302 };
303 
304 struct AudioSceneDescriptorVdi {
305     union SceneDescVdi scene;
306     struct AudioDeviceDescriptorVdi desc;
307 };
308 
309 enum AudioInputTypeVdi {
310     AUDIO_VDI_INPUT_DEFAULT_TYPE             = 0,
311     AUDIO_VDI_INPUT_MIC_TYPE                 = 1 << 0,
312     AUDIO_VDI_INPUT_SPEECH_WAKEUP_TYPE       = 1 << 1,
313     AUDIO_VDI_INPUT_VOICE_COMMUNICATION_TYPE = 1 << 2,
314     AUDIO_VDI_INPUT_VOICE_RECOGNITION_TYPE   = 1 << 3,
315     AUDIO_VDI_INPUT_VOICE_UPLINK_TYPE        = 1 << 4,
316     AUDIO_VDI_INPUT_VOICE_DOWNLINK_TYPE      = 1 << 5,
317     AUDIO_VDI_INPUT_VOICE_CALL_TYPE          = 1 << 6,
318     AUDIO_VDI_INPUT_CAMCORDER_TYPE           = 1 << 7,
319     AUDIO_VDI_INPUT_EC_TYPE                  = 1 << 8,
320     AUDIO_VDI_INPUT_NOISE_REDUCTION_TYPE     = 1 << 9,
321     AUDIO_VDI_INPUT_RAW_TYPE                 = 1 << 10,
322     AUDIO_VDI_INPUT_LIVE_TYPE                = 1 << 11,
323     AUDIO_VDI_INPUT_VOICE_TRANSCRIPTION      = 1 << 12,
324 };
325 
326 struct AudioOffloadInfoVdi {
327     uint32_t sampleRate;
328     uint32_t channelCount;
329     uint64_t channelLayout;
330     uint32_t bitRate;
331     uint32_t bitWidth;
332     enum AudioFormatVdi format;
333     uint32_t offloadBufferSize;
334     uint64_t duration;
335 };
336 
337 struct EcSampleAttributesVdi {
338     bool ecInterleaved;
339     enum AudioFormatVdi ecFormat;
340     uint32_t ecSampleRate;
341     uint32_t ecChannelCount;
342     uint64_t ecChannelLayout;
343     uint32_t ecPeriod;
344     uint32_t ecFrameSize;
345     bool ecIsBigEndian;
346     bool ecIsSignedData;
347     uint32_t ecStartThreshold;
348     uint32_t ecStopThreshold;
349     uint32_t ecSilenceThreshold;
350 };
351 
352 struct AudioCaptureFrameInfoVdi {
353     int8_t* frame;
354     uint32_t frameLen;
355     uint64_t replyBytes;
356     int8_t* frameEc;
357     uint32_t frameEcLen;
358     uint64_t replyBytesEc;
359 };
360 
361 struct AudioSampleAttributesVdi {
362     enum AudioCategoryVdi type;
363     bool interleaved;
364     enum AudioFormatVdi format;
365     uint32_t sampleRate;
366     uint32_t channelCount;
367     uint64_t channelLayout;
368     uint32_t period;
369     uint32_t frameSize;
370     bool isBigEndian;
371     bool isSignedData;
372     uint32_t startThreshold;
373     uint32_t stopThreshold;
374     uint32_t silenceThreshold;
375     int32_t streamId;
376     int32_t sourceType;
377     struct AudioOffloadInfoVdi offloadInfo;
378     struct EcSampleAttributesVdi ecSampleAttributes;
379 } __attribute__ ((aligned(8)));
380 
381 struct AudioTimeStampVdi {
382     int64_t tvSec;
383     int64_t tvNSec;
384 } __attribute__ ((aligned(8)));
385 
386 struct AudioSubPortCapabilityVdi {
387     uint32_t portId;
388     char *desc;
389     enum AudioPortPassthroughModeVdi mask;
390 };
391 
392 struct AudioPortCapabilityVdi {
393     uint32_t deviceType;
394     uint32_t deviceId;
395     bool hardwareMode;
396     uint32_t formatNum;
397     enum AudioFormatVdi *formats;
398     uint32_t formatsLen;
399     uint32_t sampleRateMasks;
400     enum AudioChannelMaskVdi channelMasks;
401     uint32_t channelCount;
402     struct AudioSubPortCapabilityVdi *subPorts;
403     uint32_t subPortsLen;
404     enum AudioSampleFormatVdi *supportSampleFormats;
405     uint32_t supportSampleFormatsLen;
406 };
407 
408 struct AudioMmapBufferDescriptorVdi {
409     int8_t *memoryAddress;
410     uint32_t memoryAddressLen;
411     int32_t memoryFd;
412     int32_t totalBufferFrames;
413     int32_t transferFrameSize;
414     int32_t isShareable;
415     uint32_t offset;
416     char *filePath;
417     uint32_t syncInfoSize;
418 };
419 
420 struct AudioDevExtInfoVdi {
421     int32_t moduleId;
422     enum AudioPortPinVdi type;
423     char *desc;
424 };
425 
426 struct AudioMixExtInfoVdi {
427     int32_t moduleId;
428     int32_t streamId;
429     int32_t source;
430 } __attribute__ ((aligned(8)));
431 
432 struct AudioSessionExtInfoVdi {
433     enum AudioSessionTypeVdi sessionType;
434 } __attribute__ ((aligned(8)));
435 
436 struct AudioInfoVdi {
437     struct AudioDevExtInfoVdi device;
438     struct AudioMixExtInfoVdi mix;
439     struct AudioSessionExtInfoVdi session;
440 };
441 
442 struct AudioRouteNodeVdi {
443     int32_t portId;
444     enum AudioPortRoleVdi role;
445     enum AudioPortTypeVdi type;
446     struct AudioInfoVdi ext;
447 };
448 
449 struct AudioRouteVdi {
450     struct AudioRouteNodeVdi *sources;
451     uint32_t sourcesLen;
452     struct AudioRouteNodeVdi *sinks;
453     uint32_t sinksLen;
454 };
455 
456 struct AudioEventVdi {
457     uint32_t eventType;
458     uint32_t deviceType;
459 } __attribute__ ((aligned(8)));
460 
461 /**
462  * @brief Called when an event defined in {@link AudioCallbackType} occurs.
463  *
464  * @param AudioCallbackTypeVdi Indicates the occurred event that triggers this callback.
465  * @param reserved Indicates the pointer to a reserved field.
466  * @param cookie Indicates the pointer to the cookie for data transmission.
467  * @return Returns <b>0</b> if the callback is successfully executed; returns a negative value otherwise.
468  * @see RegCallback
469  */
470 typedef int32_t (*RenderCallbackVdi)(enum AudioCallbackTypeVdi, void *reserved, void *cookie);
471 
472 /**
473  * @brief Register audio extra param callback that will be invoked during audio param event.
474  *
475  * @param key Indicates param change event.
476  * @param condition Indicates the param condition.
477  * @param value Indicates the param value.
478  * @param reserved Indicates reserved param.
479  * @param cookie Indicates the pointer to the callback parameters;
480  * @return Returns <b>0</b> if the operation is successful; returns a negative value otherwise.
481  */
482 typedef int32_t (*ParamCallbackVdi)(enum AudioExtParamKeyVdi key, const char *condition, const char *value,
483     void *reserved, void *cookie);
484 #ifdef __cplusplus
485 }
486 #endif /* __cplusplus */
487 
488 #endif /* OHOS_VDI_AUDIO_V1_0_AUDIOTYPES_H */