1e41f4b71Sopenharmony_ci# AudioDecoder
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## 概述
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciAudioDecoder模块提供用于音频解码功能的函数。
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci**起始版本:** 9
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci**废弃版本:** 11
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci**替代建议:** 当前模块下的接口均已废弃,开发者可使用[AudioCodec](_audio_codec.md)完成对应功能开发,单个接口的替代关系可查阅具体的接口说明。
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci## 汇总
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_ci### 文件
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci| 名称 | 描述 | 
23e41f4b71Sopenharmony_ci| -------- | -------- |
24e41f4b71Sopenharmony_ci| [native_avcodec_audiodecoder.h](native__avcodec__audiodecoder_8h.md) | 声明用于音频解码的Native API。 | 
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci### 函数
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci| 名称 | 描述 | 
30e41f4b71Sopenharmony_ci| -------- | -------- |
31e41f4b71Sopenharmony_ci| OH_AVCodec \* [OH_AudioDecoder_CreateByMime](#oh_audiodecoder_createbymime) (const char \*mime) | 根据MIME类型创建音频解码器实例。 | 
32e41f4b71Sopenharmony_ci| OH_AVCodec \* [OH_AudioDecoder_CreateByName](#oh_audiodecoder_createbyname) (const char \*name) | 通过音频解码器名称创建音频解码器实例。 | 
33e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_Destroy](#oh_audiodecoder_destroy) (OH_AVCodec \*codec) | 清理解码器内部资源,销毁解码器实例。 | 
34e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_SetCallback](#oh_audiodecoder_setcallback) (OH_AVCodec \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,使应用可以响应音频解码器生成的事件。 | 
35e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_Configure](#oh_audiodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 要配置音频解码器,通常需要配置从容器中提取的音频描述信息。 | 
36e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_Prepare](#oh_audiodecoder_prepare) (OH_AVCodec \*codec) | 准备解码器的内部资源。 | 
37e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_Start](#oh_audiodecoder_start) (OH_AVCodec \*codec) | 调用此接口启动解码器,在Prepare成功后执行。 | 
38e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_Stop](#oh_audiodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。 | 
39e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_Flush](#oh_audiodecoder_flush) (OH_AVCodec \*codec) | 清除解码器中缓存的输入和输出数据。 | 
40e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_Reset](#oh_audiodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例。 | 
41e41f4b71Sopenharmony_ci| OH_AVFormat \* [OH_AudioDecoder_GetOutputDescription](#oh_audiodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取解码器输出数据的描述信息。 | 
42e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_SetParameter](#oh_audiodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置解码器的动态参数。 | 
43e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_PushInputData](#oh_audiodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | 将填充有数据的输入缓冲区提交给音频解码器。 | 
44e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_FreeOutputData](#oh_audiodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回给解码器。 | 
45e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioDecoder_IsValid](#oh_audiodecoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前解码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测解码器有效状态。 | 
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci## 函数说明
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci### OH_AudioDecoder_Configure()
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ci```
54e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_Configure (OH_AVCodec *codec, OH_AVFormat *format)
55e41f4b71Sopenharmony_ci```
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci**描述**
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci要配置音频解码器,通常需要配置从容器中提取的音频描述信息。
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci在调用Prepare之前,必须调用此接口。
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci**起始版本:** 9
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci**废弃版本:** 11
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_Configure](_audio_codec.md#oh_audiocodec_configure)
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci**参数:**
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci| 名称 | 描述 | 
74e41f4b71Sopenharmony_ci| -------- | -------- |
75e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
76e41f4b71Sopenharmony_ci| format | 指向OH_AVFormat的指针,给出要解码的音频轨道的描述。 | 
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ci**返回:**
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci### OH_AudioDecoder_CreateByMime()
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci```
86e41f4b71Sopenharmony_ciOH_AVCodec* OH_AudioDecoder_CreateByMime (const char *mime)
87e41f4b71Sopenharmony_ci```
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci**描述**
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci根据MIME类型创建音频解码器实例,大多数场景下建议使用此方式。
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ci**起始版本:** 9
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci**废弃版本:** 11
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_CreateByMime](_audio_codec.md#oh_audiocodec_createbymime)
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ci**参数:**
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci| 名称 | 描述 | 
104e41f4b71Sopenharmony_ci| -------- | -------- |
105e41f4b71Sopenharmony_ci| mime | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 | 
106e41f4b71Sopenharmony_ci
107e41f4b71Sopenharmony_ci**返回:**
108e41f4b71Sopenharmony_ci
109e41f4b71Sopenharmony_ci返回指向OH_AVCodec实例的指针。
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci### OH_AudioDecoder_CreateByName()
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci```
115e41f4b71Sopenharmony_ciOH_AVCodec* OH_AudioDecoder_CreateByName (const char *name)
116e41f4b71Sopenharmony_ci```
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci**描述**
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci通过音频解码器名称创建音频解码器实例,使用此接口的前提是知道解码器的确切名称。
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci**起始版本:** 9
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci**废弃版本:** 11
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_CreateByName](_audio_codec.md#oh_audiocodec_createbyname)
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci**参数:**
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ci| 名称 | 描述 | 
133e41f4b71Sopenharmony_ci| -------- | -------- |
134e41f4b71Sopenharmony_ci| name | 音频解码器名称。 | 
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci**返回:**
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci返回指向OH_AVCodec实例的指针。
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci### OH_AudioDecoder_Destroy()
142e41f4b71Sopenharmony_ci
143e41f4b71Sopenharmony_ci```
144e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_Destroy (OH_AVCodec *codec)
145e41f4b71Sopenharmony_ci```
146e41f4b71Sopenharmony_ci
147e41f4b71Sopenharmony_ci**描述**
148e41f4b71Sopenharmony_ci
149e41f4b71Sopenharmony_ci清理解码器内部资源,销毁解码器实例。
150e41f4b71Sopenharmony_ci
151e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
152e41f4b71Sopenharmony_ci
153e41f4b71Sopenharmony_ci**起始版本:** 9
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ci**废弃版本:** 11
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_Destroy](_audio_codec.md#oh_audiocodec_destroy)
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci**参数:**
160e41f4b71Sopenharmony_ci
161e41f4b71Sopenharmony_ci| 名称 | 描述 | 
162e41f4b71Sopenharmony_ci| -------- | -------- |
163e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci**返回:**
166e41f4b71Sopenharmony_ci
167e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci### OH_AudioDecoder_Flush()
171e41f4b71Sopenharmony_ci
172e41f4b71Sopenharmony_ci```
173e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_Flush (OH_AVCodec *codec)
174e41f4b71Sopenharmony_ci```
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ci**描述**
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ci清除解码器中缓存的输入和输出数据。
179e41f4b71Sopenharmony_ci
180e41f4b71Sopenharmony_ci调用此接口后,以前通过异步回调上报的所有缓冲区索引都将失效,请确保不要访问这些索引对应的缓冲区。
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci**起始版本:** 9
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci**废弃版本:** 11
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_Flush](_audio_codec.md#oh_audiocodec_flush)
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_ci**参数:**
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ci| 名称 | 描述 | 
193e41f4b71Sopenharmony_ci| -------- | -------- |
194e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci**返回:**
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ci
201e41f4b71Sopenharmony_ci### OH_AudioDecoder_FreeOutputData()
202e41f4b71Sopenharmony_ci
203e41f4b71Sopenharmony_ci```
204e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_FreeOutputData (OH_AVCodec *codec, uint32_t index)
205e41f4b71Sopenharmony_ci```
206e41f4b71Sopenharmony_ci
207e41f4b71Sopenharmony_ci**描述**
208e41f4b71Sopenharmony_ci
209e41f4b71Sopenharmony_ci将处理后的输出缓冲区返回给解码器。
210e41f4b71Sopenharmony_ci
211e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
212e41f4b71Sopenharmony_ci
213e41f4b71Sopenharmony_ci**起始版本:** 9
214e41f4b71Sopenharmony_ci
215e41f4b71Sopenharmony_ci**废弃版本:** 11
216e41f4b71Sopenharmony_ci
217e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_FreeOutputBuffer](_audio_codec.md#oh_audiocodec_freeoutputbuffer)
218e41f4b71Sopenharmony_ci
219e41f4b71Sopenharmony_ci**参数:**
220e41f4b71Sopenharmony_ci
221e41f4b71Sopenharmony_ci| 名称 | 描述 | 
222e41f4b71Sopenharmony_ci| -------- | -------- |
223e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
224e41f4b71Sopenharmony_ci| index | 输出缓冲区Buffer对应的索引值。 | 
225e41f4b71Sopenharmony_ci
226e41f4b71Sopenharmony_ci**返回:**
227e41f4b71Sopenharmony_ci
228e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
229e41f4b71Sopenharmony_ci
230e41f4b71Sopenharmony_ci
231e41f4b71Sopenharmony_ci### OH_AudioDecoder_GetOutputDescription()
232e41f4b71Sopenharmony_ci
233e41f4b71Sopenharmony_ci```
234e41f4b71Sopenharmony_ciOH_AVFormat* OH_AudioDecoder_GetOutputDescription (OH_AVCodec *codec)
235e41f4b71Sopenharmony_ci```
236e41f4b71Sopenharmony_ci
237e41f4b71Sopenharmony_ci**描述**
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_ci获取解码器输出数据的描述信息。
240e41f4b71Sopenharmony_ci
241e41f4b71Sopenharmony_ci需要注意的是,返回值所指向的OH_AVFormat实例的生命周期需要调用者手动释放。
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
244e41f4b71Sopenharmony_ci
245e41f4b71Sopenharmony_ci**起始版本:** 9
246e41f4b71Sopenharmony_ci
247e41f4b71Sopenharmony_ci**废弃版本:** 11
248e41f4b71Sopenharmony_ci
249e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_GetOutputDescription](_audio_codec.md#oh_audiocodec_getoutputdescription)
250e41f4b71Sopenharmony_ci
251e41f4b71Sopenharmony_ci**参数:**
252e41f4b71Sopenharmony_ci
253e41f4b71Sopenharmony_ci| 名称 | 描述 | 
254e41f4b71Sopenharmony_ci| -------- | -------- |
255e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
256e41f4b71Sopenharmony_ci
257e41f4b71Sopenharmony_ci**返回:**
258e41f4b71Sopenharmony_ci
259e41f4b71Sopenharmony_ci返回OH_AVFormat句柄指针,生命周期将使用下一个GetOutputDescription 刷新,或使用OH_AVCodec销毁。
260e41f4b71Sopenharmony_ci
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ci### OH_AudioDecoder_IsValid()
263e41f4b71Sopenharmony_ci
264e41f4b71Sopenharmony_ci```
265e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_IsValid (OH_AVCodec *codec, bool *isValid)
266e41f4b71Sopenharmony_ci```
267e41f4b71Sopenharmony_ci
268e41f4b71Sopenharmony_ci**描述**
269e41f4b71Sopenharmony_ci
270e41f4b71Sopenharmony_ci检查当前解码器实例是否有效,可用于后台故障恢复或应用程序从后台恢复时检测解码器有效状态。
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci**起始版本:** 10
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ci**废弃版本:** 11
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_IsValid](_audio_codec.md#oh_audiocodec_isvalid)
279e41f4b71Sopenharmony_ci
280e41f4b71Sopenharmony_ci**参数:**
281e41f4b71Sopenharmony_ci
282e41f4b71Sopenharmony_ci| 名称 | 描述 | 
283e41f4b71Sopenharmony_ci| -------- | -------- |
284e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
285e41f4b71Sopenharmony_ci| isValid | 指向布尔类型的指针,true:解码器实例有效,false:解码器实例无效。 | 
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci**返回:**
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci
292e41f4b71Sopenharmony_ci### OH_AudioDecoder_Prepare()
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ci```
295e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_Prepare (OH_AVCodec *codec)
296e41f4b71Sopenharmony_ci```
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ci**描述**
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ci准备解码器的内部资源,在调用此接口之前必须调用Configure接口。
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ci**起始版本:** 9
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ci**废弃版本:** 11
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_Prepare](_audio_codec.md#oh_audiocodec_prepare)
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci**参数:**
311e41f4b71Sopenharmony_ci
312e41f4b71Sopenharmony_ci| 名称 | 描述 | 
313e41f4b71Sopenharmony_ci| -------- | -------- |
314e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
315e41f4b71Sopenharmony_ci
316e41f4b71Sopenharmony_ci**返回:**
317e41f4b71Sopenharmony_ci
318e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
319e41f4b71Sopenharmony_ci
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ci### OH_AudioDecoder_PushInputData()
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ci```
324e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_PushInputData (OH_AVCodec *codec, uint32_t index, OH_AVCodecBufferAttr attr)
325e41f4b71Sopenharmony_ci```
326e41f4b71Sopenharmony_ci
327e41f4b71Sopenharmony_ci**描述**
328e41f4b71Sopenharmony_ci
329e41f4b71Sopenharmony_ci将填充有数据的输入缓冲区提交给音频解码器。
330e41f4b71Sopenharmony_ci
331e41f4b71Sopenharmony_ci[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调将报告可用的输入缓冲区和相应的索引值。一旦具有指定索引的缓冲区提交到音频解码器,则无法再次访问此缓冲区, 直到再次收到[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)回调,收到相同索引时此缓冲区才可使用。
332e41f4b71Sopenharmony_ci
333e41f4b71Sopenharmony_ci此外,对于某些解码器,需要在开始时向解码器输入特定配置参数,以初始化解码器的解码过程。
334e41f4b71Sopenharmony_ci
335e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
336e41f4b71Sopenharmony_ci
337e41f4b71Sopenharmony_ci**起始版本:** 9
338e41f4b71Sopenharmony_ci
339e41f4b71Sopenharmony_ci**废弃版本:** 11
340e41f4b71Sopenharmony_ci
341e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_PushInputBuffer](_audio_codec.md#oh_audiocodec_pushinputbuffer)
342e41f4b71Sopenharmony_ci
343e41f4b71Sopenharmony_ci**参数:**
344e41f4b71Sopenharmony_ci
345e41f4b71Sopenharmony_ci| 名称 | 描述 | 
346e41f4b71Sopenharmony_ci| -------- | -------- |
347e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
348e41f4b71Sopenharmony_ci| index | 输入缓冲区Buffer对应的索引值。 | 
349e41f4b71Sopenharmony_ci| attr | 描述缓冲区中包含的数据的信息。 | 
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci**返回:**
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
354e41f4b71Sopenharmony_ci
355e41f4b71Sopenharmony_ci
356e41f4b71Sopenharmony_ci### OH_AudioDecoder_Reset()
357e41f4b71Sopenharmony_ci
358e41f4b71Sopenharmony_ci```
359e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_Reset (OH_AVCodec *codec)
360e41f4b71Sopenharmony_ci```
361e41f4b71Sopenharmony_ci
362e41f4b71Sopenharmony_ci**描述**
363e41f4b71Sopenharmony_ci
364e41f4b71Sopenharmony_ci重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例。
365e41f4b71Sopenharmony_ci
366e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
367e41f4b71Sopenharmony_ci
368e41f4b71Sopenharmony_ci**起始版本:** 9
369e41f4b71Sopenharmony_ci
370e41f4b71Sopenharmony_ci**废弃版本:** 11
371e41f4b71Sopenharmony_ci
372e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_Reset](_audio_codec.md#oh_audiocodec_reset)
373e41f4b71Sopenharmony_ci
374e41f4b71Sopenharmony_ci**参数:**
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ci| 名称 | 描述 | 
377e41f4b71Sopenharmony_ci| -------- | -------- |
378e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
379e41f4b71Sopenharmony_ci
380e41f4b71Sopenharmony_ci**返回:**
381e41f4b71Sopenharmony_ci
382e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
383e41f4b71Sopenharmony_ci
384e41f4b71Sopenharmony_ci
385e41f4b71Sopenharmony_ci### OH_AudioDecoder_SetCallback()
386e41f4b71Sopenharmony_ci
387e41f4b71Sopenharmony_ci```
388e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_SetCallback (OH_AVCodec *codec, OH_AVCodecAsyncCallback callback, void *userData)
389e41f4b71Sopenharmony_ci```
390e41f4b71Sopenharmony_ci
391e41f4b71Sopenharmony_ci**描述**
392e41f4b71Sopenharmony_ci
393e41f4b71Sopenharmony_ci设置异步回调函数,使应用可以响应音频解码器生成的事件。在调用Prepare之前,必须调用此接口。
394e41f4b71Sopenharmony_ci
395e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
396e41f4b71Sopenharmony_ci
397e41f4b71Sopenharmony_ci**起始版本:** 9
398e41f4b71Sopenharmony_ci
399e41f4b71Sopenharmony_ci**废弃版本:** 11
400e41f4b71Sopenharmony_ci
401e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_RegisterCallback](_audio_codec.md#oh_audiocodec_registercallback)
402e41f4b71Sopenharmony_ci
403e41f4b71Sopenharmony_ci**参数:**
404e41f4b71Sopenharmony_ci
405e41f4b71Sopenharmony_ci| 名称 | 描述 | 
406e41f4b71Sopenharmony_ci| -------- | -------- |
407e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
408e41f4b71Sopenharmony_ci| callback | 所有回调函数的集合,请参阅 [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)。 | 
409e41f4b71Sopenharmony_ci| userData | 用户特定数据。 | 
410e41f4b71Sopenharmony_ci
411e41f4b71Sopenharmony_ci**返回:**
412e41f4b71Sopenharmony_ci
413e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
414e41f4b71Sopenharmony_ci
415e41f4b71Sopenharmony_ci
416e41f4b71Sopenharmony_ci### OH_AudioDecoder_SetParameter()
417e41f4b71Sopenharmony_ci
418e41f4b71Sopenharmony_ci```
419e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_SetParameter (OH_AVCodec *codec, OH_AVFormat *format)
420e41f4b71Sopenharmony_ci```
421e41f4b71Sopenharmony_ci
422e41f4b71Sopenharmony_ci**描述**
423e41f4b71Sopenharmony_ci
424e41f4b71Sopenharmony_ci配置解码器的动态参数。
425e41f4b71Sopenharmony_ci
426e41f4b71Sopenharmony_ci注意:该接口必须在解码器启动后才能调用。另外,参数配置错误可能会导致解码失败。
427e41f4b71Sopenharmony_ci
428e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
429e41f4b71Sopenharmony_ci
430e41f4b71Sopenharmony_ci**起始版本:** 9
431e41f4b71Sopenharmony_ci
432e41f4b71Sopenharmony_ci**废弃版本:** 11
433e41f4b71Sopenharmony_ci
434e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_SetParameter](_audio_codec.md#oh_audiocodec_setparameter)
435e41f4b71Sopenharmony_ci
436e41f4b71Sopenharmony_ci**参数:**
437e41f4b71Sopenharmony_ci
438e41f4b71Sopenharmony_ci| 名称 | 描述 | 
439e41f4b71Sopenharmony_ci| -------- | -------- |
440e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
441e41f4b71Sopenharmony_ci| format | OH_AVFormat句柄指针。 | 
442e41f4b71Sopenharmony_ci
443e41f4b71Sopenharmony_ci**返回:**
444e41f4b71Sopenharmony_ci
445e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
446e41f4b71Sopenharmony_ci
447e41f4b71Sopenharmony_ci
448e41f4b71Sopenharmony_ci### OH_AudioDecoder_Start()
449e41f4b71Sopenharmony_ci
450e41f4b71Sopenharmony_ci```
451e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_Start (OH_AVCodec *codec)
452e41f4b71Sopenharmony_ci```
453e41f4b71Sopenharmony_ci
454e41f4b71Sopenharmony_ci**描述**
455e41f4b71Sopenharmony_ci
456e41f4b71Sopenharmony_ci调用此接口启动解码器,在Prepare成功后执行。启动后,解码器将开始上报OH_AVCodecOnNeedInputData事件。
457e41f4b71Sopenharmony_ci
458e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
459e41f4b71Sopenharmony_ci
460e41f4b71Sopenharmony_ci**起始版本:** 9
461e41f4b71Sopenharmony_ci
462e41f4b71Sopenharmony_ci**废弃版本:** 11
463e41f4b71Sopenharmony_ci
464e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_Start](_audio_codec.md#oh_audiocodec_start)
465e41f4b71Sopenharmony_ci
466e41f4b71Sopenharmony_ci**参数:**
467e41f4b71Sopenharmony_ci
468e41f4b71Sopenharmony_ci| 名称 | 描述 | 
469e41f4b71Sopenharmony_ci| -------- | -------- |
470e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
471e41f4b71Sopenharmony_ci
472e41f4b71Sopenharmony_ci**返回:**
473e41f4b71Sopenharmony_ci
474e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
475e41f4b71Sopenharmony_ci
476e41f4b71Sopenharmony_ci
477e41f4b71Sopenharmony_ci### OH_AudioDecoder_Stop()
478e41f4b71Sopenharmony_ci
479e41f4b71Sopenharmony_ci```
480e41f4b71Sopenharmony_ciOH_AVErrCode OH_AudioDecoder_Stop (OH_AVCodec *codec)
481e41f4b71Sopenharmony_ci```
482e41f4b71Sopenharmony_ci
483e41f4b71Sopenharmony_ci**描述**
484e41f4b71Sopenharmony_ci
485e41f4b71Sopenharmony_ci停止解码器。
486e41f4b71Sopenharmony_ci
487e41f4b71Sopenharmony_ci停止后,您可以通过Start重新进入已启动状态,但需要注意的是, 如果解码器之前已输入数据,则需要重新输入解码器数据。
488e41f4b71Sopenharmony_ci
489e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioDecoder
490e41f4b71Sopenharmony_ci
491e41f4b71Sopenharmony_ci**起始版本:** 9
492e41f4b71Sopenharmony_ci
493e41f4b71Sopenharmony_ci**废弃版本:** 11
494e41f4b71Sopenharmony_ci
495e41f4b71Sopenharmony_ci**替代接口:**[OH_AudioCodec_Stop](_audio_codec.md#oh_audiocodec_stop)
496e41f4b71Sopenharmony_ci
497e41f4b71Sopenharmony_ci**参数:**
498e41f4b71Sopenharmony_ci
499e41f4b71Sopenharmony_ci| 名称 | 描述 | 
500e41f4b71Sopenharmony_ci| -------- | -------- |
501e41f4b71Sopenharmony_ci| codec | 指向OH_AVCodec实例的指针。 | 
502e41f4b71Sopenharmony_ci
503e41f4b71Sopenharmony_ci**返回:**
504e41f4b71Sopenharmony_ci
505e41f4b71Sopenharmony_ci如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅 [OH_AVErrCode](_core.md#oh_averrcode)。
506