• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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};