1/* 2 * Copyright (c) 2022 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 16package ohos.hdi.audio.v1_0; 17 18enum AudioPortDirection { 19 PORT_OUT = 1, /**< Output port */ 20 PORT_IN = 2, /**< Input port */ 21 PORT_OUT_IN = 3, /**< Input/output port, supporting both audio input and output */ 22}; 23enum AudioPortPin { 24 PIN_NONE = 0, /**< Invalid pin */ 25 PIN_OUT_SPEAKER = 1 << 0, /**< Speaker output pin */ 26 PIN_OUT_HEADSET = 1 << 1, /**< Wired headset pin for output */ 27 PIN_OUT_LINEOUT = 1 << 2, /**< Line-out pin */ 28 PIN_OUT_HDMI = 1 << 3, /**< HDMI output pin */ 29 PIN_OUT_USB = 1 << 4, /**< USB output pin */ 30 PIN_OUT_USB_EXT = 1 << 5, /**< Extended USB output pin*/ 31 PIN_OUT_EARPIECE = 1 << 5 | 1 << 4, /**< Earpiece output pin */ 32 PIN_OUT_BLUETOOTH_SCO = 1 << 6, /**< Bluetooth SCO output pin */ 33 PIN_OUT_DAUDIO_DEFAULT = 1 << 7, 34 PIN_IN_MIC = 1 << 27 | 1 << 0, /**< Microphone input pin */ 35 PIN_IN_HS_MIC = 1 << 27 | 1 << 1, /**< Wired headset microphone pin for input */ 36 PIN_IN_LINEIN = 1 << 27 | 1 << 2, /**< Line-in pin */ 37 PIN_IN_USB_EXT = 1 << 27 | 1 << 3, /**< Extended USB input pin*/ 38 PIN_IN_BLUETOOTH_SCO_HEADSET = 1 << 27 | 1 << 4, /**< Bluetooth SCO headset input pin */ 39 PIN_IN_DAUDIO_DEFAULT = 1 << 27 | 1 << 5, 40}; 41enum AudioCategory { 42 AUDIO_IN_MEDIA = 0, 43 AUDIO_IN_COMMUNICATION = 1, 44 AUDIO_IN_RINGTONE = 2, 45 AUDIO_IN_CALL = 3, 46}; 47enum AudioFormat { 48 AUDIO_FORMAT_PCM_8_BIT = 1 << 0, /**< 8-bit PCM */ 49 AUDIO_FORMAT_PCM_16_BIT = 1 << 1, /**< 16-bit PCM */ 50 AUDIO_FORMAT_PCM_24_BIT = 1 << 1 | 1 << 0, /**< 24-bit PCM */ 51 AUDIO_FORMAT_PCM_32_BIT = 1 << 2, /**< 32-bit PCM */ 52 AUDIO_FORMAT_AAC_MAIN = 1 << 24 | 1 << 0, /**< AAC main */ 53 AUDIO_FORMAT_AAC_LC = 1 << 24 | 1 << 1, /**< AAC LC */ 54 AUDIO_FORMAT_AAC_LD = 1 << 24 | 1 << 1 | 1 << 0, /**< AAC LD */ 55 AUDIO_FORMAT_AAC_ELD = 1 << 24 | 1 << 2, /**< AAC ELD */ 56 AUDIO_FORMAT_AAC_HE_V1 = 1 << 24 | 1 << 2 | 1 << 0, /**< AAC HE_V1 */ 57 AUDIO_FORMAT_AAC_HE_V2 = 1 << 24 | 1 << 2 | 1 << 1, /**< AAC HE_V2 */ 58 AUDIO_FORMAT_G711A = 1 << 25 | 1 << 0, /**< G711A */ 59 AUDIO_FORMAT_G711U = 1 << 25 | 1 << 1, /**< G711u */ 60 AUDIO_FORMAT_G726 = 1 << 25 | 1 << 1 | 1 << 0, /**< G726 */ 61}; 62enum AudioChannelMask { 63 AUDIO_CHANNEL_FRONT_LEFT = 1, /**< Front left channel */ 64 AUDIO_CHANNEL_FRONT_RIGHT = 2, /**< Front right channel */ 65 AUDIO_CHANNEL_MONO = 1, /**< Mono channel */ 66 AUDIO_CHANNEL_STEREO = 3, /**< Stereo channel, consisting of front left and front right channels */ 67}; 68enum AudioSampleRatesMask { 69 AUDIO_SAMPLE_RATE_MASK_8000 = 1 << 0, /**< 8 kHz */ 70 AUDIO_SAMPLE_RATE_MASK_12000 = 1 << 1, /**< 12 kHz */ 71 AUDIO_SAMPLE_RATE_MASK_11025 = 1 << 2, /**< 11.025 kHz */ 72 AUDIO_SAMPLE_RATE_MASK_16000 = 1 << 3, /**< 16 kHz */ 73 AUDIO_SAMPLE_RATE_MASK_22050 = 1 << 4, /**< 22.050 kHz */ 74 AUDIO_SAMPLE_RATE_MASK_24000 = 1 << 5, /**< 24 kHz */ 75 AUDIO_SAMPLE_RATE_MASK_32000 = 1 << 6, /**< 32 kHz */ 76 AUDIO_SAMPLE_RATE_MASK_44100 = 1 << 7, /**< 44.1 kHz */ 77 AUDIO_SAMPLE_RATE_MASK_48000 = 1 << 8, /**< 48 kHz */ 78 AUDIO_SAMPLE_RATE_MASK_64000 = 1 << 9, /**< 64 kHz */ 79 AUDIO_SAMPLE_RATE_MASK_96000 = 1 << 10, /**< 96 kHz */ 80 AUDIO_SAMPLE_RATE_MASK_INVALID = 4294967295, /**< Invalid sampling rate */ 81}; 82enum AudioPortPassthroughMode { 83 PORT_PASSTHROUGH_LPCM = 1, 84 PORT_PASSTHROUGH_RAW = 2, 85 PORT_PASSTHROUGH_HBR2LBR = 4, 86 PORT_PASSTHROUGH_AUTO = 8, 87}; 88enum AudioSampleFormat { 89 AUDIO_SAMPLE_FORMAT_S8 = 0, 90 AUDIO_SAMPLE_FORMAT_S8P = 1, 91 AUDIO_SAMPLE_FORMAT_U8 = 2, 92 AUDIO_SAMPLE_FORMAT_U8P = 3, 93 AUDIO_SAMPLE_FORMAT_S16 = 4, 94 AUDIO_SAMPLE_FORMAT_S16P = 5, 95 AUDIO_SAMPLE_FORMAT_U16 = 6, 96 AUDIO_SAMPLE_FORMAT_U16P = 7, 97 AUDIO_SAMPLE_FORMAT_S24 = 8, 98 AUDIO_SAMPLE_FORMAT_S24P = 9, 99 AUDIO_SAMPLE_FORMAT_U24 = 10, 100 AUDIO_SAMPLE_FORMAT_U24P = 11, 101 AUDIO_SAMPLE_FORMAT_S32 = 12, 102 AUDIO_SAMPLE_FORMAT_S32P = 13, 103 AUDIO_SAMPLE_FORMAT_U32 = 14, 104 AUDIO_SAMPLE_FORMAT_U32P = 15, 105 AUDIO_SAMPLE_FORMAT_S64 = 16, 106 AUDIO_SAMPLE_FORMAT_S64P = 17, 107 AUDIO_SAMPLE_FORMAT_U64 = 18, 108 AUDIO_SAMPLE_FORMAT_U64P = 19, 109 AUDIO_SAMPLE_FORMAT_F32 = 20, 110 AUDIO_SAMPLE_FORMAT_F32P = 21, 111 AUDIO_SAMPLE_FORMAT_F64 = 22, 112 AUDIO_SAMPLE_FORMAT_F64P = 23, 113}; 114enum AudioChannelMode { 115 AUDIO_CHANNEL_NORMAL = 0, 116 AUDIO_CHANNEL_BOTH_LEFT = 1, 117 AUDIO_CHANNEL_BOTH_RIGHT = 2, 118 AUDIO_CHANNEL_EXCHANGE = 3, 119 AUDIO_CHANNEL_MIX = 4, 120 AUDIO_CHANNEL_LEFT_MUTE = 5, 121 AUDIO_CHANNEL_RIGHT_MUTE = 6, 122 AUDIO_CHANNEL_BOTH_MUTE = 7, 123}; 124enum AudioDrainNotifyType { 125 AUDIO_DRAIN_NORMAL_MODE = 0, 126 AUDIO_DRAIN_EARLY_MODE = 1, 127}; 128enum AudioCallbackType { 129 AUDIO_NONBLOCK_WRITE_COMPELETED = 0, 130 AUDIO_DRAIN_COMPELETED = 1, 131 AUDIO_FLUSH_COMPLETED = 2, 132 AUDIO_RENDER_FULL = 3, 133 AUDIO_ERROR_OCCUR = 4, 134}; 135enum AudioPortRole { 136 AUDIO_PORT_UNASSIGNED_ROLE = 0, 137 AUDIO_PORT_SOURCE_ROLE = 1, 138 AUDIO_PORT_SINK_ROLE = 2, 139}; 140enum AudioPortType { 141 AUDIO_PORT_UNASSIGNED_TYPE = 0, 142 AUDIO_PORT_DEVICE_TYPE = 1, 143 AUDIO_PORT_MIX_TYPE = 2, 144 AUDIO_PORT_SESSION_TYPE = 3, 145}; 146enum AudioSessionType { 147 AUDIO_OUTPUT_STAGE_SESSION = 0, 148 AUDIO_OUTPUT_MIX_SESSION = 1, 149 AUDIO_ALLOCATE_SESSION = 2, 150 AUDIO_INVALID_SESSION = 3, 151}; 152enum AudioDeviceType { 153 AUDIO_LINEOUT = 1 << 0, 154 AUDIO_HEADPHONE = 1 << 1, 155 AUDIO_HEADSET = 1 << 2, 156 AUDIO_USB_HEADSET = 1 << 3, 157 AUDIO_USB_HEADPHONE = 1 << 4, 158 AUDIO_USBA_HEADSET = 1 << 5, 159 AUDIO_USBA_HEADPHONE = 1 << 6, 160 AUDIO_PRIMARY_DEVICE = 1 << 7, 161 AUDIO_USB_DEVICE = 1 << 8, 162 AUDIO_A2DP_DEVICE = 1 << 9, 163 AUDIO_DEVICE_UNKOWN, 164}; 165enum AudioEventType { 166 AUDIO_DEVICE_ADD = 1, 167 AUDIO_DEVICE_REMOVE = 2, 168 AUDIO_LOAD_SUCCESS = 3, 169 AUDIO_LOAD_FAILURE = 4, 170 AUDIO_UNLOAD = 5, 171 AUDIO_SERVICE_VALID = 7, 172 AUDIO_SERVICE_INVALID = 8, 173 AUDIO_CAPTURE_THRESHOLD = 9, 174 AUDIO_EVENT_UNKOWN = 10, 175}; 176enum AudioExtParamKey { 177 AUDIO_EXT_PARAM_KEY_NONE = 0, /**< Distributed audio extra param key none */ 178 AUDIO_EXT_PARAM_KEY_VOLUME = 1, /**< Distributed audio extra param key volume event */ 179 AUDIO_EXT_PARAM_KEY_FOCUS = 2, /**< Distributed audio extra param key focus event */ 180 AUDIO_EXT_PARAM_KEY_BUTTON = 3, /**< Distributed audio extra param key media button event */ 181 AUDIO_EXT_PARAM_KEY_EFFECT = 4, /**< Distributed audio extra param key audio effect event */ 182 AUDIO_EXT_PARAM_KEY_STATUS = 5, /**< Distributed audio extra param key device status event */ 183 AUDIO_EXT_PARAM_KEY_LOWPOWER = 1000, /**< Low power event type */ 184}; 185struct AudioDeviceStatus { 186 unsigned int pnpStatus; 187}; 188union SceneDesc { 189 unsigned int id; 190}; 191struct AudioPort { 192 enum AudioPortDirection dir; 193 unsigned int portId; 194 String portName; 195}; 196struct AudioAdapterDescriptor { 197 String adapterName; 198 struct AudioPort[] ports; 199}; 200struct AudioDeviceDescriptor { 201 unsigned int portId; 202 enum AudioPortPin pins; 203 String desc; 204}; 205struct AudioSceneDescriptor { 206 union SceneDesc scene; 207 struct AudioDeviceDescriptor desc; 208}; 209struct AudioSampleAttributes { 210 enum AudioCategory type; 211 boolean interleaved; 212 enum AudioFormat format; 213 unsigned int sampleRate; 214 unsigned int channelCount; 215 unsigned int period; 216 unsigned int frameSize; 217 boolean isBigEndian; 218 boolean isSignedData; 219 unsigned int startThreshold; 220 unsigned int stopThreshold; 221 unsigned int silenceThreshold; 222 int streamId; 223}; 224struct AudioTimeStamp { 225 long tvSec; 226 long tvNSec; 227}; 228struct AudioSubPortCapability { 229 unsigned int portId; 230 String desc; 231 enum AudioPortPassthroughMode mask; 232}; 233struct AudioPortCapability { 234 unsigned int deviceType; 235 unsigned int deviceId; 236 boolean hardwareMode; 237 unsigned int formatNum; 238 enum AudioFormat[] formats; 239 unsigned int sampleRateMasks; 240 enum AudioChannelMask channelMasks; 241 unsigned int channelCount; 242 struct AudioSubPortCapability[] subPorts; 243 enum AudioSampleFormat[] supportSampleFormats; 244}; 245struct AudioMmapBufferDescripter { 246 byte[] memoryAddress; 247 int memoryFd; 248 int totalBufferFrames; 249 int transferFrameSize; 250 int isShareable; 251 unsigned int offset; 252 String filePath; 253}; 254struct AudioDevExtInfo { 255 int moduleId; 256 enum AudioPortPin type; 257 String desc; 258}; 259struct AudioMixExtInfo { 260 int moduleId; 261 int streamId; 262}; 263struct AudioSessionExtInfo { 264 enum AudioSessionType sessionType; 265}; 266struct AudioInfo { 267 struct AudioDevExtInfo device; 268 struct AudioMixExtInfo mix; 269 struct AudioSessionExtInfo session; 270}; 271struct AudioRouteNode { 272 int portId; 273 enum AudioPortRole role; 274 enum AudioPortType type; 275 struct AudioInfo ext; 276}; 277struct AudioRoute { 278 struct AudioRouteNode[] sources; 279 struct AudioRouteNode[] sinks; 280}; 281struct AudioEvent { 282 unsigned int eventType; /**< @link enum AudioEventType */ 283 unsigned int deviceType; /**< @link enum AudioDeviceType */ 284};