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