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