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 */