• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AudioDecoder
2
3## 概述
4
5AudioDecoder模块提供用于音频解码的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
6
7\@syscap SystemCapability.Multimedia.Media.AudioDecoder
8
9**起始版本:**
10
119
12
13## 汇总
14
15### 文件
16
17| 名称                                                                 | 描述                                                                                                        |
18| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
19| [native_avcodec_audiodecoder.h](native__avcodec__audiodecoder_8h.md)    | 声明用于音频解码的Native API。<br>**引用文件**:<multimedia/player_framework/native_avcodec_audiodecoder.h> <br>**库**:libnative_media_adec.so|
20| [avcodec_audio_channel_layout.h](avcodec__audio__channel__layout_8h.md) | 声明用于音频编解码的枚举。<br>**引用文件**:<multimedia/player_framework/avcodec_audio_channel_layout.h> <br>**库**:libnative_media_codecbase.so                   |
21
22### 枚举
23
24| 名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 描述                                                                  |
25| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
26| [AudioChannelSet](#audiochannelset) : uint64_t {<br/>**FRONT_LEFT** = 1ULL &lt;&lt; 0U, <br/>**FRONT_RIGHT** = 1ULL &lt;&lt; 1U, <br/>**FRONT_CENTER** = 1ULL &lt;&lt; 2U, <br/>**LOW_FREQUENCY** = 1ULL &lt;&lt; 3U,<br/>**BACK_LEFT** = 1ULL &lt;&lt; 4U, <br/>**BACK_RIGHT** = 1ULL &lt;&lt; 5U, <br/>**FRONT_LEFT_OF_CENTER** = 1ULL &lt;&lt; 6U, <br/>**FRONT_RIGHT_OF_CENTER** = 1ULL &lt;&lt; 7U,<br/>**BACK_CENTER** = 1ULL &lt;&lt; 8U, <br/>**SIDE_LEFT** = 1ULL &lt;&lt; 9U, <br/>**SIDE_RIGHT** = 1ULL &lt;&lt; 10U, <br/>**TOP_CENTER** = 1ULL &lt;&lt; 11U,<br/>**TOP_FRONT_LEFT** = 1ULL &lt;&lt; 12U, <br/>**TOP_FRONT_CENTER** = 1ULL &lt;&lt; 13U, <br/>**TOP_FRONT_RIGHT** = 1ULL &lt;&lt; 14U, <br/>**TOP_BACK_LEFT** = 1ULL &lt;&lt; 15U,<br/>**TOP_BACK_CENTER** = 1ULL &lt;&lt; 16U, <br/>**TOP_BACK_RIGHT** = 1ULL &lt;&lt; 17U, <br/>**STEREO_LEFT** = 1ULL &lt;&lt; 29U, <br/>**STEREO_RIGHT** = 1ULL &lt;&lt; 30U,<br/>**WIDE_LEFT** = 1ULL &lt;&lt; 31U, <br/>**WIDE_RIGHT** = 1ULL &lt;&lt; 32U, <br/>**SURROUND_DIRECT_LEFT** = 1ULL &lt;&lt; 33U, <br/>**SURROUND_DIRECT_RIGHT** = 1ULL &lt;&lt; 34U,<br/>**LOW_FREQUENCY_2** = 1ULL &lt;&lt; 35U, <br/>**TOP_SIDE_LEFT** = 1ULL &lt;&lt; 36U, <br/>**TOP_SIDE_RIGHT** = 1ULL &lt;&lt; 37U, <br/>**BOTTOM_FRONT_CENTER** = 1ULL &lt;&lt; 38U,<br/>**BOTTOM_FRONT_LEFT** = 1ULL &lt;&lt; 39U, <br/>**BOTTOM_FRONT_RIGHT** = 1ULL &lt;&lt; 40U, <br/>**AMBISONICS_ACN0** = 1ULL &lt;&lt; 41U, <br/>**AMBISONICS_ACN1** = 1ULL &lt;&lt; 42U,<br/>**AMBISONICS_ACN2** = 1ULL &lt;&lt; 43U, <br/>**AMBISONICS_ACN3** = 1ULL &lt;&lt; 44U, <br/>**AMBISONICS_W** = AMBISONICS_ACN0, <br/>**AMBISONICS_Y** = AMBISONICS_ACN1,<br/>**AMBISONICS_Z** = AMBISONICS_ACN2, <br/>**AMBISONICS_X** = AMBISONICS_ACN3, <br/>**AMBISONICS_ACN4** = 1ULL &lt;&lt; 45U, <br/>**AMBISONICS_ACN5** = 1ULL &lt;&lt; 46U,<br/>**AMBISONICS_ACN6** = 1ULL &lt;&lt; 47U, <br/>**AMBISONICS_ACN7** = 1ULL &lt;&lt; 48U, <br/>**AMBISONICS_ACN8** = 1ULL &lt;&lt; 49U, <br/>**AMBISONICS_ACN9** = 1ULL &lt;&lt; 50U,<br/>**AMBISONICS_ACN10** = 1ULL &lt;&lt; 51U, <br/>**AMBISONICS_ACN11** = 1ULL &lt;&lt; 52U, <br/>**AMBISONICS_ACN12** = 1ULL &lt;&lt; 53U, <br/>**AMBISONICS_ACN13** = 1ULL &lt;&lt; 54U, <br/>**AMBISONICS_ACN14** = 1ULL &lt;&lt; 55U, <br/>**AMBISONICS_ACN15** = 1ULL &lt;&lt; 56U}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 音频声道数集合, 将每一个声道数映射为int64的变量。                    |
27| [AudioChannelLayout](#audiochannellayout) : uint64_t {<br/>**UNKNOWN_CHANNEL_LAYOUT** = 0, <br/>**MONO** = (AudioChannelSet::FRONT_CENTER), <br/>**STEREO** = (AudioChannelSet::FRONT_LEFT \| AudioChannelSet::FRONT_RIGHT), <br/>**CH_2POINT1** = (STEREO \| AudioChannelSet::LOW_FREQUENCY),<br/>**CH_2_1** = (STEREO \| AudioChannelSet::BACK_CENTER), <br/>**SURROUND** = (STEREO \| AudioChannelSet::FRONT_CENTER), <br/>**CH_3POINT1** = (SURROUND \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_4POINT0** = (SURROUND \| AudioChannelSet::BACK_CENTER),<br/>**CH_4POINT1** = (CH_4POINT0 \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_2_2** = (STEREO \| AudioChannelSet::SIDE_LEFT \| AudioChannelSet::SIDE_RIGHT), <br/>**QUAD** = (STEREO \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), <br/>**CH_5POINT0** = (SURROUND \| AudioChannelSet::SIDE_LEFT \| AudioChannelSet::SIDE_RIGHT),<br/>**CH_5POINT1** = (CH_5POINT0 \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_5POINT0_BACK** = (SURROUND \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), <br/>**CH_5POINT1_BACK** = (CH_5POINT0_BACK \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_6POINT0** = (CH_5POINT0 \| AudioChannelSet::BACK_CENTER),<br/>**CH_6POINT0_FRONT** = (CH_2_2 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), <br/>**HEXAGONAL** = (CH_5POINT0_BACK \| AudioChannelSet::BACK_CENTER), <br/>**CH_6POINT1** = (CH_5POINT1 \| AudioChannelSet::BACK_CENTER), <br/>**CH_6POINT1_BACK** = (CH_5POINT1_BACK \| AudioChannelSet::BACK_CENTER),<br/>**CH_6POINT1_FRONT** = (CH_6POINT0_FRONT \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_7POINT0** = (CH_5POINT0 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), <br/>**CH_7POINT0_FRONT** = (CH_5POINT0 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), <br/>**CH_7POINT1** = (CH_5POINT1 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT),<br/>**CH_7POINT1_WIDE** = (CH_5POINT1 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), <br/>**CH_7POINT1_WIDE_BACK**, <br/>**CH_3POINT1POINT2** = (CH_3POINT1 \| AudioChannelSet::TOP_FRONT_LEFT \| AudioChannelSet::TOP_FRONT_RIGHT), <br/>**CH_5POINT1POINT2** = (CH_5POINT1 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT),<br/>**CH_5POINT1POINT4**, <br/>**CH_7POINT1POINT2** = (CH_7POINT1 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT), <br/>**CH_7POINT1POINT4**, <br/>**CH_9POINT1POINT4** = (CH_7POINT1POINT4 \| AudioChannelSet::WIDE_LEFT \| AudioChannelSet::WIDE_RIGHT),<br/>**CH_9POINT1POINT6** = (CH_9POINT1POINT4 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT), <br/>**CH_10POINT2**, <br/>**CH_22POINT2**, <br/>**OCTAGONAL** = (CH_5POINT0 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_CENTER \| AudioChannelSet::BACK_RIGHT),<br/>**HEXADECAGONAL**, <br/>**STEREO_DOWNMIX** = (AudioChannelSet::STEREO_LEFT \| AudioChannelSet::STEREO_RIGHT), <br/>**HOA_FIRST**, <br/>**HOA_SECOND** <br/>**HOA_THIRD**} | 音频声道数类型, 将用户申请的解码器输出格式表示为编解码器的声道类型。 |
28
29### 函数
30
31| 名称                                                                                                                                          | 描述                                                                                                 |
32| --------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
33| \*[OH_AudioDecoder_CreateByMime](#oh_audiodecoder_createbymime) (const char \*mime)                                                 | 根据MIME类型创建音频解码器实例,大多数场景下建议使用此方式。                                         |
34| \*[OH_AudioDecoder_CreateByName](#oh_audiodecoder_createbyname) (const char \*name)                                                 | 通过音频解码器名称创建音频解码器实例,使用此接口的前提是知道解码器的确切名称。                       |
35| [OH_AudioDecoder_Destroy](#oh_audiodecoder_destroy) (OH_AVCodec \*codec)                                                            | 清理解码器内部资源,销毁解码器实例。                                                                 |
36| [OH_AudioDecoder_SetCallback](#oh_audiodecoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,使您的应用程序可以响应音频解码器生成的事件。                                       |
37| [OH_AudioDecoder_Configure](#oh_audiodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format)                                  | 要配置音频解码器,通常需要配置从容器中提取的音频描述信息。                                           |
38| [OH_AudioDecoder_Prepare](#oh_audiodecoder_prepare) (OH_AVCodec \*codec)                                                            | 准备解码器的内部资源,在调用此接口之前必须调用Configure接口。                                        |
39| [OH_AudioDecoder_Start](#oh_audiodecoder_start) (OH_AVCodec \*codec)                                                                | Prepare成功后调用此接口启动解码器。                                                                  |
40| [OH_AudioDecoder_Stop](#oh_audiodecoder_stop) (OH_AVCodec \*codec)                                                                  | 停止解码器。                                                                                         |
41| [OH_AudioDecoder_Flush](#oh_audiodecoder_flush) (OH_AVCodec \*codec)                                                                | 清除解码器中缓存的输入和输出数据。                                                                   |
42| [OH_AudioDecoder_Reset](#oh_audiodecoder_reset) (OH_AVCodec \*codec)                                                                | 重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例 。                               |
43| \*[OH_AudioDecoder_GetOutputDescription](#oh_audiodecoder_getoutputdescription) (OH_AVCodec \*codec)                                | 获取解码器输出数据的描述信息,详细信息请参见**OH_AVFormat**。                                  |
44| [OH_AudioDecoder_SetParameter](#oh_audiodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format)                            | 配置解码器的动态参数。注意:该接口必须在解码器启动后才能调用。另外,参数配置错误可能会导致解码失败。 |
45| [OH_AudioDecoder_PushInputData](#oh_audiodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr)     | 将填充有数据的输入缓冲区提交给音频解码器。                                                           |
46| [OH_AudioDecoder_FreeOutputData](#oh_audiodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index)                              | 将处理后的输出缓冲区返回给解码器。                                                                   |
47| [OH_AudioDecoder_IsValid](#oh_audiodecoder_isvalid) (OH_AVCodec \*codec, bool \*isValid)                                            | 检查当前解码器实例是否有效。                                                                         |
48
49## 枚举类型说明
50
51### AudioChannelLayout
52
53```
54enum AudioChannelLayout : uint64_t
55```
56
57**描述:**
58
59音频声道数类型, 将用户申请的解码器输出格式表示为编解码器的声道类型。
60
61\@syscap SystemCapability.Multimedia.Media.CodecBase
62
63**起始版本:**
64
6510
66
67### AudioChannelSet
68
69```
70enum AudioChannelSet : uint64_t
71```
72
73**描述:**
74
75音频声道数集合, 将每一个声道数映射为int64的变量。
76
77\@syscap SystemCapability.Multimedia.Media.CodecBase
78
79**起始版本:**
80
8110
82
83| 枚举值           | 描述                   |
84| ---------------- | ---------------------- |
85| AMBISONICS_ACN1  | 零阶立体声声道数 0     |
86| AMBISONICS_ACN2  | 一阶立体声声道数 1     |
87| AMBISONICS_ACN3  | 一阶立体声声道数 2     |
88| AMBISONICS_W     | 一阶立体声声道数 3     |
89| AMBISONICS_Y     | 同于零阶立体声声道数 0 |
90| AMBISONICS_Z     | 同于一阶立体声声道数 1 |
91| AMBISONICS_X     | 同于一阶立体声声道数 2 |
92| AMBISONICS_ACN4  | 同于一阶立体声声道数 3 |
93| AMBISONICS_ACN5  | 二阶立体声声道数 4     |
94| AMBISONICS_ACN6  | 二阶立体声声道数 5     |
95| AMBISONICS_ACN7  | 二阶立体声声道数 6     |
96| AMBISONICS_ACN8  | 二阶立体声声道数 7     |
97| AMBISONICS_ACN9  | 二阶立体声声道数 8     |
98| AMBISONICS_ACN10 | 三阶立体声声道数 9     |
99| AMBISONICS_ACN11 | 三阶立体声声道数 10    |
100| AMBISONICS_ACN12 | 三阶立体声声道数 11    |
101| AMBISONICS_ACN13 | 三阶立体声声道数 12    |
102| AMBISONICS_ACN14 | 三阶立体声声道数 13    |
103| AMBISONICS_ACN15 | 三阶立体声声道数 14    |
104
105## 函数说明
106
107### OH_AudioDecoder_Configure()
108
109```
110OH_AVErrCode OH_AudioDecoder_Configure (OH_AVCodec * codec, OH_AVFormat * format )
111```
112
113**描述:**
114
115要配置音频解码器,通常需要配置从容器中提取的音频描述信息。
116
117在调用Prepare之前,必须调用此接口。
118
119\@syscap SystemCapability.Multimedia.Media.AudioDecoder
120
121**参数:**
122
123| 名称   | 描述                                                |
124| ------ | --------------------------------------------------- |
125| codec  | 指向OH_AVCodec实例的指针。                          |
126| format | 指向OH_AVFormat的指针,给出要解码的音频轨道的描述。 |
127
128**返回:**
129
130如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
131
132**起始版本:**
133
1349
135
136### OH_AudioDecoder_CreateByMime()
137
138```
139OH_AVCodec* OH_AudioDecoder_CreateByMime (const char * mime)
140```
141
142**描述:**
143
144根据MIME类型创建音频解码器实例,大多数场景下建议使用此方式。
145
146\@syscap SystemCapability.Multimedia.Media.AudioDecoder
147
148**参数:**
149
150| 名称 | 描述                                                    |
151| ---- | ------------------------------------------------------- |
152| mime | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 |
153
154**返回:**
155
156返回指向OH_AVCodec实例的指针。
157
158**起始版本:**
159
1609
161
162### OH_AudioDecoder_CreateByName()
163
164```
165OH_AVCodec* OH_AudioDecoder_CreateByName (const char * name)
166```
167
168**描述:**
169
170通过音频解码器名称创建音频解码器实例,使用此接口的前提是知道解码器的确切名称。
171
172\@syscap SystemCapability.Multimedia.Media.AudioDecoder
173
174**参数:**
175
176| 名称 | 描述             |
177| ---- | ---------------- |
178| name | 音频解码器名称。 |
179
180**返回:**
181
182返回指向OH_AVCodec实例的指针。
183
184**起始版本:**
185
1869
187
188### OH_AudioDecoder_Destroy()
189
190```
191OH_AVErrCode OH_AudioDecoder_Destroy (OH_AVCodec * codec)
192```
193
194**描述:**
195
196清理解码器内部资源,销毁解码器实例。
197
198\@syscap SystemCapability.Multimedia.Media.AudioDecoder
199
200**参数:**
201
202| 名称  | 描述                       |
203| ----- | -------------------------- |
204| codec | 指向OH_AVCodec实例的指针。 |
205
206**返回:**
207
208如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
209
210**起始版本:**
211
2129
213
214### OH_AudioDecoder_Flush()
215
216```
217OH_AVErrCode OH_AudioDecoder_Flush (OH_AVCodec * codec)
218```
219
220**描述:**
221
222清除解码器中缓存的输入和输出数据。
223
224调用此接口后,以前通过异步回调上报的所有缓冲区索引都将失效,请确保不要访问这些索引对应的缓冲区。
225
226\@syscap SystemCapability.Multimedia.Media.AudioDecoder
227
228**参数:**
229
230| 名称  | 描述                       |
231| ----- | -------------------------- |
232| codec | 指向OH_AVCodec实例的指针。 |
233
234**返回:**
235
236如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
237
238**起始版本:**
239
2409
241
242### OH_AudioDecoder_FreeOutputData()
243
244```
245OH_AVErrCode OH_AudioDecoder_FreeOutputData (OH_AVCodec * codec, uint32_t index )
246```
247
248**描述:**
249
250将处理后的输出缓冲区返回给解码器。
251
252\@syscap SystemCapability.Multimedia.Media.AudioDecoder
253
254**参数:**
255
256| 名称  | 描述                           |
257| ----- | ------------------------------ |
258| codec | 指向OH_AVCodec实例的指针。     |
259| index | 输出缓冲区Buffer对应的索引值。 |
260
261**返回:**
262
263如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
264
265**起始版本:**
266
2679
268
269### OH_AudioDecoder_GetOutputDescription()
270
271```
272OH_AVFormat* OH_AudioDecoder_GetOutputDescription (OH_AVCodec * codec)
273```
274
275**描述:**
276
277获取解码器输出数据的描述信息,详细信息请参见**OH_AVFormat**。 需要注意的是,返回值所指向的OH_AVFormat实例的生命周期需要调用者手动释放。
278
279\@syscap SystemCapability.Multimedia.Media.AudioDecoder
280
281**参数:**
282
283| 名称  | 描述                       |
284| ----- | -------------------------- |
285| codec | 指向OH_AVCodec实例的指针。 |
286
287**返回:**
288
289返回OH_AVFormat句柄指针,生命周期将使用下一个GetOutputDescription 刷新,或使用OH_AVCodec销毁。
290
291**起始版本:**
292
2939
294
295### OH_AudioDecoder_IsValid()
296
297```
298OH_AVErrCode OH_AudioDecoder_IsValid (OH_AVCodec * codec, bool * isValid )
299```
300
301**描述:**
302
303检查当前解码器实例是否有效。
304
305\@syscap SystemCapability.Multimedia.Media.AudioDecoder
306
307**参数:**
308
309| 名称    | 描述                                                              |
310| ------- | ----------------------------------------------------------------- |
311| codec   | 指向OH_AVCodec实例的指针。                                        |
312| isValid | 指向布尔实例的指针,true:解码器实例有效,false:解码器实例无效。 |
313
314**返回:**
315
316如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
317
318**起始版本:**
319
32010
321
322### OH_AudioDecoder_Prepare()
323
324```
325OH_AVErrCode OH_AudioDecoder_Prepare (OH_AVCodec * codec)
326```
327
328**描述:**
329
330准备解码器的内部资源,在调用此接口之前必须调用Configure接口。
331
332\@syscap SystemCapability.Multimedia.Media.AudioDecoder
333
334**参数:**
335
336| 名称  | 描述                       |
337| ----- | -------------------------- |
338| codec | 指向OH_AVCodec实例的指针。 |
339
340**返回:**
341
342如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
343
344**起始版本:**
345
3469
347
348### OH_AudioDecoder_PushInputData()
349
350```
351OH_AVErrCode OH_AudioDecoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr )
352```
353
354**描述:**
355
356将填充有数据的输入缓冲区提交给音频解码器。
357
358**OH_AVCodecOnNeedInputData**回调将报告可用的输入缓冲区和相应的索引值。一旦具有指定索引的缓冲区提交到音频解码器,则无法再次访问此缓冲区, 直到再次收到**OH_AVCodecOnNeedInputData**回调,收到相同索引时此缓冲区才可使用。 此外,对于某些解码器,需要在开始时向解码器输入特定配置参数,以初始化解码器的解码过程。
359
360\@syscap SystemCapability.Multimedia.Media.AudioDecoder
361
362**参数:**
363
364| 名称  | 描述                           |
365| ----- | ------------------------------ |
366| codec | 指向OH_AVCodec实例的指针。     |
367| index | 输入缓冲区Buffer对应的索引值。 |
368| attr  | 描述缓冲区中包含的数据的信息。 |
369
370**返回:**
371
372如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
373
374**起始版本:**
375
3769
377
378### OH_AudioDecoder_Reset()
379
380```
381OH_AVErrCode OH_AudioDecoder_Reset (OH_AVCodec * codec)
382```
383
384**描述:**
385
386重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例。
387
388\@syscap SystemCapability.Multimedia.Media.AudioDecoder
389
390**参数:**
391
392| 名称  | 描述                       |
393| ----- | -------------------------- |
394| codec | 指向OH_AVCodec实例的指针。 |
395
396**返回:**
397
398如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。。
399
400**起始版本:**
401
4029
403
404### OH_AudioDecoder_SetCallback()
405
406```
407OH_AVErrCode OH_AudioDecoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData )
408```
409
410**描述:**
411
412设置异步回调函数,使您的应用程序可以响应音频解码器生成的事件。
413
414在调用Prepare之前,必须调用此接口。
415
416\@syscap SystemCapability.Multimedia.Media.AudioDecoder
417
418**参数:**
419
420| 名称     | 描述                                                          |
421| -------- | ------------------------------------------------------------- |
422| codec    | 指向OH_AVCodec实例的指针。                                    |
423| callback | 所有回调函数的集合,请参见**OH_AVCodecAsyncCallback**。 |
424| userData | 用户特定数据。                                                |
425
426**返回:**
427
428如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
429
430**起始版本:**
431
4329
433
434### OH_AudioDecoder_SetParameter()
435
436```
437OH_AVErrCode OH_AudioDecoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format )
438```
439
440**描述:**
441
442配置解码器的动态参数。
443
444注意,该接口必须在解码器启动后才能调用。另外,参数配置错误可能会导致解码失败。
445
446\@syscap SystemCapability.Multimedia.Media.AudioDecoder
447
448**参数:**
449
450| 名称   | 描述                       |
451| ------ | -------------------------- |
452| codec  | 指向OH_AVCodec实例的指针。 |
453| format | OH_AVFormat句柄指针。      |
454
455**返回:**
456
457如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
458
459**起始版本:**
460
4619
462
463### OH_AudioDecoder_Start()
464
465```
466OH_AVErrCode OH_AudioDecoder_Start (OH_AVCodec * codec)
467```
468
469**描述:**
470
471Prepare成功后调用此接口启动解码器。
472
473启动后,解码器将开始上报OH_AVCodecOnNeedInputData事件。
474
475\@syscap SystemCapability.Multimedia.Media.AudioDecoder
476
477**参数:**
478
479| 名称  | 描述                       |
480| ----- | -------------------------- |
481| codec | 指向OH_AVCodec实例的指针。 |
482
483**返回:**
484
485如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
486
487**起始版本:**
488
4899
490
491### OH_AudioDecoder_Stop()
492
493```
494OH_AVErrCode OH_AudioDecoder_Stop (OH_AVCodec * codec)
495```
496
497**描述:**
498
499停止解码器。
500
501停止后,您可以通过Start重新进入已启动状态,但需要注意的是, 如果解码器之前已输入数据,则需要重新输入解码器数据。
502
503\@syscap SystemCapability.Multimedia.Media.AudioDecoder
504
505**参数:**
506
507| 名称  | 描述                       |
508| ----- | -------------------------- |
509| codec | 指向OH_AVCodec实例的指针。 |
510
511**返回:**
512
513如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
514
515**起始版本:**
516
5179
518