• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AudioCodec
2
3<!--Kit: AVCodec Kit-->
4<!--Subsystem: Multimedia-->
5<!--Owner: @mr-chencxy-->
6<!--Designer: @dpy2650--->
7<!--Tester: @baotianhao-->
8<!--Adviser: @zengyawen-->
9
10## 概述
11
12AudioCodec模块提供用于音频编解码功能的函数。
13
14开发者可根据实际的开发需求,参考对应的开发指南及样例:
15
16- [音频编码](../../media/avcodec/audio-encoding.md)
17- [音频解码](../../media/avcodec/audio-decoding.md)
18
19**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
20
21**起始版本:** 11
22
23
24## 汇总
25
26
27### 文件
28
29| 名称 | 描述 |
30| -------- | -------- |
31| [native_avcodec_audiocodec.h](native__avcodec__audiocodec_8h.md) | 音频编解码Native API的声明。 |
32
33
34### 函数
35
36| 名称 | 描述 |
37| -------- | -------- |
38| [OH_AVCodec](_codec_base.md#oh_avcodec) \* [OH_AudioCodec_CreateByMime](#oh_audiocodec_createbymime) (const char \*mime, bool isEncoder) | 根据[MIME](_codec_base.md#媒体编解码格式)类型创建音频编解码器实例。 |
39| [OH_AVCodec](_codec_base.md#oh_avcodec) \* [OH_AudioCodec_CreateByName](#oh_audiocodec_createbyname) (const char \*name) | 通过音频编解码器名称创建音频编解码器实例。  |
40| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_Destroy](#oh_audiocodec_destroy) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 清理编解码器内部资源,销毁编解码器实例。 |
41| [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之前,必须调用此接口。  |
42| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_Configure](#oh_audiocodec_configure) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, const [OH_AVFormat](_core.md#oh_avformat) \*format) | 配置音频描述信息。音频编解码器通常会根据音频描述信息进行配置。 |
43| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_Prepare](#oh_audiocodec_prepare) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 准备编解码器的内部资源。 |
44| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_Start](#oh_audiocodec_start) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 调用此接口启动编解码器,在Prepare成功后执行。 |
45| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_Stop](#oh_audiocodec_stop) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 停止编解码器。 |
46| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_Flush](#oh_audiocodec_flush) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 清除编解码器中缓存的输入和输出数据。 |
47| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_Reset](#oh_audiocodec_reset) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 重置编解码器。此时会清空已配置的参数和输入输出数据。<br>如果要继续编解码,需要再次调用Configure接口配置编解码器实例。  |
48| [OH_AVFormat](_core.md#oh_avformat) \* [OH_AudioCodec_GetOutputDescription](#oh_audiocodec_getoutputdescription) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 获取编解码器输出数据的描述信息。  |
49| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_SetParameter](#oh_audiocodec_setparameter) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, const [OH_AVFormat](_core.md#oh_avformat) \*format) | 配置编解码器的动态参数。  |
50| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_PushInputBuffer](#oh_audiocodec_pushinputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 通知音频编解码器已完成对index所对应缓冲区进行输入数据的填充。  |
51| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_FreeOutputBuffer](#oh_audiocodec_freeoutputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 将处理后的输出缓冲区返回给编解码器。  |
52| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_IsValid](#oh_audiocodec_isvalid) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, bool \*isValid) | 检查当前编解码器实例是否有效。<br>可用于后台故障恢复或应用程序从后台恢复时检测编解码器有效状态。  |
53| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_SetDecryptionConfig](#oh_audiocodec_setdecryptionconfig) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, MediaKeySession \*mediaKeySession, bool secureAudio) | 设置解密信息。  |
54| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_QueryInputBuffer](#oh_audiocodec_queryinputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t *index, int64_t timeoutUs) | 同步接口,查询编解码器可用的输入缓冲区。|
55| [OH_AVBuffer](_core.md#oh_avbuffer) *[OH_AudioCodec_GetInputBuffer](#oh_audiocodec_getinputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 通过输入缓冲区索引,获取编解码器对应的输入缓冲区。|
56| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AudioCodec_QueryOutputBuffer](#oh_audiocodec_queryoutputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t *index, int64_t timeoutUs) | 同步接口,查询编解码器可用的输出缓冲区。|
57| [OH_AVBuffer](_core.md#oh_avbuffer) *[OH_AudioCodec_GetOutputBuffer](#oh_audiocodec_getoutputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 通过输出缓冲区索引,获取编解码器对应的输出缓冲区。|
58
59## 函数说明
60
61### OH_AudioCodec_Configure()
62
63```
64OH_AVErrCode OH_AudioCodec_Configure (OH_AVCodec *codec, const OH_AVFormat *format)
65```
66**描述**
67配置音频描述信息。音频编解码器通常会根据音频描述信息进行配置。在调用Prepare之前,必须调用此接口。
68
69**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
70
71**起始版本:** 11
72
73**参数:**
74
75| 名称 | 描述 |
76| -------- | -------- |
77| codec | 指向OH_AVCodec实例的指针。 |
78| format | 指向OH_AVFormat的指针,给出要编解码的音频轨道的描述。 |
79
80**返回:**
81
82如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
83
84
85### OH_AudioCodec_CreateByMime()
86
87```
88OH_AVCodec* OH_AudioCodec_CreateByMime (const char *mime, bool isEncoder)
89```
90**描述**
91根据MIME类型创建音频编解码器实例,大多数场景下建议使用此方式。
92
93**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
94
95**起始版本:** 11
96
97**参数:**
98
99| 名称 | 描述 |
100| -------- | -------- |
101| mime | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 |
102| isEncoder | true表示需要创建编码器,false表示需要创建解码器。 |
103
104**返回:**
105
106返回OH_AVCodec实例的指针。
107
108
109### OH_AudioCodec_CreateByName()
110
111```
112OH_AVCodec* OH_AudioCodec_CreateByName (const char *name)
113```
114**描述**
115通过音频编解码器名称创建音频编解码器实例,使用此接口的前提是知道编解码器的确切名称,编解码器的名称可以通过[能力查询](_a_v_capability.md#oh_avcapability_getname)获取。
116
117**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
118
119**起始版本:** 11
120
121**参数:**
122
123| 名称 | 描述 |
124| -------- | -------- |
125| name | 音频编解码器名称。 |
126
127**返回:**
128
129返回OH_AVCodec实例的指针。
130
131
132### OH_AudioCodec_Destroy()
133
134```
135OH_AVErrCode OH_AudioCodec_Destroy (OH_AVCodec *codec)
136```
137**描述**
138清理编解码器内部资源,销毁编解码器实例。注意不能进行重复销毁,否则将会导致程序崩溃。
139
140**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
141
142**起始版本:** 11
143
144**参数:**
145
146| 名称 | 描述 |
147| -------- | -------- |
148| codec | 指向OH_AVCodec实例的指针。  |
149
150**返回:**
151
152如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
153
154
155### OH_AudioCodec_Flush()
156
157```
158OH_AVErrCode OH_AudioCodec_Flush (OH_AVCodec *codec)
159```
160**描述**
161清除编解码器中缓存的输入和输出数据。调用此接口后,以前通过异步回调上报的所有缓冲区索引都将失效,请确保不要访问这些索引对应的缓冲区。
162
163**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
164
165**起始版本:** 11
166
167**参数:**
168
169| 名称 | 描述 |
170| -------- | -------- |
171| codec | 指向OH_AVCodec实例的指针。 |
172
173**返回:**
174
175如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
176
177
178### OH_AudioCodec_FreeOutputBuffer()
179
180```
181OH_AVErrCode OH_AudioCodec_FreeOutputBuffer (OH_AVCodec *codec, uint32_t index)
182```
183**描述**
184将处理后的输出缓冲区返回给编解码器。使用完输出缓冲区后需及时调用此接口进行释放,否则会阻塞编解码流程。
185
186**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
187
188**起始版本:** 11
189
190**参数:**
191
192| 名称 | 描述 |
193| -------- | -------- |
194| codec | 指向OH_AVCodec实例的指针。 |
195| index | 输出[OH_AVCodecOnNewOutputBuffer](_codec_base.md#oh_avcodeconnewoutputbuffer)给出的索引值。 |
196
197**返回:**
198
199如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
200
201
202### OH_AudioCodec_GetInputBuffer()
203
204```
205OH_AVBuffer *OH_AudioCodec_GetInputBuffer(OH_AVCodec *codec, uint32_t index)
206```
207**描述**
208输入索引值,获取对应音频编解码器中该索引值对应的输入缓冲区,可在获取到的缓冲区中填充新的输入数据。
209该缓冲区填充后,使用[OH_AudioCodec_PushInputBuffer](#oh_audiocodec_pushinputbuffer)输入对应索引值,将缓冲区数据送到编解码器。
210送到编解码器后,该索引值对应的输入缓冲区无法再次访问。
211
212**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
213
214**起始版本:** 20
215
216**参数:**
217
218| 名称 | 描述 |
219| -------- | -------- |
220| codec | 指向OH_AVCodec实例的指针。 |
221| index | 输入缓冲区的索引值。该索引值通过接口[OH_AudioCodec_QueryInputBuffer](#oh_audiocodec_queryinputbuffer)获取|
222
223**返回:**
224
225如果执行成功,则返回一个指向OH_AVBuffer实例的指针,否则返回NULL。
226
227
228### OH_AudioCodec_GetOutputBuffer()
229
230```
231OH_AVBuffer *OH_AudioCodec_GetOutputBuffer(OH_AVCodec *codec, uint32_t index)
232```
233**描述**
234输入索引值,获取对应音频编解码器中该索引值对应的输出缓冲区。
235使用完缓冲区后,需要调用[OH_AudioCodec_FreeOutputBuffer](#oh_audiocodec_freeoutputbuffer)接口进行释放。释放后无法再次使用,长期不释放会阻塞编解码流程。
236
237**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
238
239**起始版本:** 20
240
241**参数:**
242
243| 名称 | 描述 |
244| -------- | -------- |
245| codec | 指向OH_AVCodec实例的指针。 |
246| index | 输出缓冲区的索引值。该索引值通过接口[OH_AudioCodec_QueryOutputBuffer](#oh_audiocodec_queryoutputbuffer)获取。|
247
248**返回:**
249
250如果执行成功,则返回一个指向OH_AVBuffer实例的指针,否则返回NULL。
251
252
253### OH_AudioCodec_GetOutputDescription()
254
255```
256OH_AVFormat* OH_AudioCodec_GetOutputDescription (OH_AVCodec *codec)
257```
258**描述**
259获取编解码器输出数据的OH_AVFormat信息。
260
261
262需要注意的是,返回值所指向的OH_AVFormat实例需要开发者调用[OH_AVFormat_Destroy](_core.md#oh_avformat_destroy)接口手动释放。
263
264**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
265
266**起始版本:** 11
267
268**参数:**
269
270| 名称 | 描述 |
271| -------- | -------- |
272| codec | 指向OH_AVCodec实例的指针。 |
273
274**返回:**
275
276返回OH_AVFormat句柄指针,生命周期将使用下一个GetOutputDescription刷新,或使用OH_AVCodec销毁。
277
278
279### OH_AudioCodec_IsValid()
280
281```
282OH_AVErrCode OH_AudioCodec_IsValid (OH_AVCodec *codec, bool *isValid)
283```
284**描述**
285检查当前编解码器实例是否有效。<br>可用于后台故障恢复或应用程序从后台恢复时检测编解码器有效状态。
286
287**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
288
289**起始版本:** 11
290
291**参数:**
292
293| 名称 | 描述 |
294| -------- | -------- |
295| codec | 指向OH_AVCodec实例的指针。 |
296| isValid | 输出参数。指向布尔类型的指针,true:编解码器实例有效,false:编解码器实例无效。 |
297
298**返回:**
299
300如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
301
302
303### OH_AudioCodec_Prepare()
304
305```
306OH_AVErrCode OH_AudioCodec_Prepare (OH_AVCodec *codec)
307```
308**描述**
309准备编解码器的内部资源,在调用此接口之前必须调用Configure接口。
310
311**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
312
313**起始版本:** 11
314
315**参数:**
316
317| 名称 | 描述 |
318| -------- | -------- |
319| codec | 指向OH_AVCodec实例的指针。 |
320
321**返回:**
322
323如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
324
325
326### OH_AudioCodec_PushInputBuffer()
327
328```
329OH_AVErrCode OH_AudioCodec_PushInputBuffer (OH_AVCodec *codec, uint32_t index)
330```
331**描述**
332通知音频编解码器已完成对index所对应缓冲区进行输入数据的填充。
333
334[OH_AVCodecOnNeedInputBuffer](_codec_base.md#oh_avcodeconneedinputbuffer)回调将报告可用的输入缓冲区和对应的索引值。一旦具有指定索引的缓冲区被提交给音频编解码器,该缓冲区将无法再次访问, 直到再次收到[OH_AVCodecOnNeedInputBuffer](_codec_base.md#oh_avcodeconneedinputbuffer)回调,收到相同索引时此缓冲区才可使用。
335
336此外,对于某些编解码器,需要在开始时向编解码器输入编解码特定配置数据(Codec-Specific-Data),以初始化编解码器的编解码过程。
337
338> **注意:**
339>
340> 当返回值为AV_ERR_UNKNOWN时此次调用不生效,输入缓冲区仍为未处理状态,需根据返回的特定错误代码处理后输入相同的index重新调用[OH_AudioCodec_PushInputBuffer](#oh_audiocodec_pushinputbuffer)。
341
342**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
343
344**起始版本:** 11
345
346**参数:**
347
348| 名称 | 描述 |
349| -------- | -------- |
350| codec | 指向OH_AVCodec实例的指针。 |
351| index | 输入回调[OH_AVCodecOnNeedInputBuffer](_codec_base.md#oh_avcodeconneedinputbuffer)给出的索引值。 |
352
353**返回:**
354
355如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
356
357AV_ERR_OK:执行成功。
358
359AV_ERR_INVALID_VAL:输入的index已使用或无效,需使用其他[OH_AVCodecOnNeedInputBuffer](_codec_base.md#oh_avcodeconneedinputbuffer)回调返回的index。
360
361AV_ERR_INVALID_STATE:编解码器状态错误,调用[OH_AudioCodec_PushInputBuffer](#oh_audiocodec_pushinputbuffer)前需确保按顺序成功调用[OH_AudioCodec_Configure](#oh_audiocodec_configure)、[OH_AudioCodec_Prepare](#oh_audiocodec_prepare)、[OH_AudioCodec_Start](#oh_audiocodec_start)。
362
363AV_ERR_UNKNOWN:输入buffer size无效,需确保buffer设置了正确的buffer size和flags。
364
365
366### OH_AudioCodec_QueryInputBuffer()
367
368```
369OH_AVErrCode OH_AudioCodec_QueryInputBuffer(OH_AVCodec *codec, uint32_t *index, int64_t timeoutUs)
370```
371**描述**
372在设置的超时时间内,尝试查询对应音频编解码器可用的输入缓冲区的索引值。
373
374**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
375
376**起始版本:** 20
377
378**参数:**
379
380| 名称 | 描述 |
381| -------- | -------- |
382| codec | 指向OH_AVCodec实例的指针。 |
383| index | 输出参数,获取到的输入缓冲区的索引值。|
384| timeoutUs | 超时时间,单位:微秒。设置为负值时表示无限等待。|
385
386**返回:**
387
388接口返回结果:
389
390AV_ERR_OK:执行成功。
391
392AV_ERR_INVALID_VAL:执行失败,输入参数错误。
393
394AV_ERR_INVALID_STATE:执行失败,状态非法,没有启动编解码器等。
395
396AV_ERR_OPERATE_NOT_PERMIT:执行失败,不允许非同步模式下调用。
397
398AV_ERR_TRY_AGAIN_LATER:执行失败,超时时间内获取不到可用的缓冲区。
399
400### OH_AudioCodec_QueryOutputBuffer()
401
402```
403OH_AVErrCode OH_AudioCodec_QueryOutputBuffer(struct OH_AVCodec *codec, uint32_t *index, int64_t timeoutUs)
404```
405**描述**
406在设置的超时时间内,尝试查询对应音频编解码器可用的输出缓冲区的索引值。
407
408**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
409
410**起始版本:** 20
411
412**参数:**
413
414| 名称 | 描述 |
415| -------- | -------- |
416| codec | 指向OH_AVCodec实例的指针。 |
417| index | 输出参数,获取到的输出缓冲区的索引值。|
418| timeoutUs | 超时时间,单位:微秒。设置为负值时表示无限等待。|
419
420**返回:**
421
422接口返回结果:
423AV_ERR_OK:执行成功。
424
425AV_ERR_INVALID_VAL:执行失败,输入参数错误。
426
427AV_ERR_INVALID_STATE:执行失败,状态非法,没有启动编解码器等。
428
429AV_ERR_OPERATE_NOT_PERMIT:执行失败,不允许非同步模式下调用。
430
431AV_ERR_STREAM_CHANGED:解码输出流格式发生变化, 可以通过调用[OH_AudioCodec_GetOutputDescription](#oh_audiocodec_getoutputdescription)接口获取新的流信息。
432
433AV_ERR_TRY_AGAIN_LATER:执行失败,超时时间内获取不到可用的缓冲区。
434
435### OH_AudioCodec_RegisterCallback()
436
437```
438OH_AVErrCode OH_AudioCodec_RegisterCallback (OH_AVCodec *codec, OH_AVCodecCallback callback, void *userData)
439```
440**描述**
441设置异步回调函数,使应用可以响应音频编解码器生成的事件。在调用Prepare之前,必须调用此接口。
442
443**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
444
445**起始版本:** 11
446
447**参数:**
448
449| 名称 | 描述 |
450| -------- | -------- |
451| codec | 指向OH_AVCodec实例的指针。 |
452| callback | 所有回调函数的集合,请参阅 [OH_AVCodecCallback](_o_h___a_v_codec_callback.md)。 |
453| userData | 用户特定数据。 |
454
455**返回:**
456
457如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
458
459
460### OH_AudioCodec_Reset()
461
462```
463OH_AVErrCode OH_AudioCodec_Reset (OH_AVCodec *codec)
464```
465**描述**
466重置编解码器。此时会清空已配置的参数和输入输出数据。<br>如果要继续编解码,需要再次调用Configure接口配置编解码器实例。
467
468**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
469
470**起始版本:** 11
471
472**参数:**
473
474| 名称 | 描述 |
475| -------- | -------- |
476| codec | 指向OH_AVCodec实例的指针。  |
477
478**返回:**
479
480如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
481
482
483### OH_AudioCodec_SetDecryptionConfig()
484
485```
486OH_AVErrCode OH_AudioCodec_SetDecryptionConfig (OH_AVCodec *codec, MediaKeySession *mediaKeySession, bool secureAudio)
487```
488**描述**
489设置解密信息。
490
491**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
492
493**起始版本:** 12
494
495**参数:**
496
497| 名称 | 描述 |
498| -------- | -------- |
499| codec | 指向OH_AVCodec实例的指针。  |
500| mediaKeySession | 带有解密功能的媒体秘钥会话实例。  |
501| secureAudio | 是否使用安全解码器。使用安全解码器为true,否则为false。<br>注意:当前音频解密尚不支持使用安全解码器。  |
502
503**返回:**
504
505返回函数结果代码[OH_AVErrCode](_core.md#oh_averrcode):
506
507AV_ERR_OK:操作成功。
508
509AV_ERR_INVALID_VAL:OH_AVCodec实例为nullptr或无效,mediaKeySystemInfo实例为nullptr或无效。
510
511AV_ERR_INVALID_STATE:解码器服务不可用。
512
513
514### OH_AudioCodec_SetParameter()
515
516```
517OH_AVErrCode OH_AudioCodec_SetParameter (OH_AVCodec *codec, const OH_AVFormat *format)
518```
519**描述**
520配置编解码器的动态参数。注意,该接口必须在编解码器启动后才能调用。另外,参数配置错误可能会导致编解码失败。
521
522**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
523
524**起始版本:** 11
525
526**参数:**
527
528| 名称 | 描述 |
529| -------- | -------- |
530| codec | 指向OH_AVCodec实例的指针。 |
531| format | OH_AVFormat句柄指针。 |
532
533**返回:**
534
535如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
536
537
538### OH_AudioCodec_Start()
539
540```
541OH_AVErrCode OH_AudioCodec_Start (OH_AVCodec *codec)
542```
543**描述**
544调用此接口启动编解码器,在Prepare成功后执行。启动后,编解码器将开始上报OH_AVCodecOnNeedInputBuffer事件。
545
546**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
547
548**起始版本:** 11
549
550**参数:**
551
552| 名称 | 描述 |
553| -------- | -------- |
554| codec | 指向OH_AVCodec实例的指针。 |
555
556**返回:**
557
558如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
559
560
561### OH_AudioCodec_Stop()
562
563```
564OH_AVErrCode OH_AudioCodec_Stop (OH_AVCodec *codec)
565```
566**描述**
567停止编解码器。停止后,可以通过Start重新进入已启动状态(started),但需要注意的是,如果编解码器之前已输入数据,则需要重新输入编解码器数据。
568
569**系统能力:** SystemCapability.Multimedia.Media.AudioCodec
570
571**起始版本:** 11
572
573**参数:**
574
575| 名称 | 描述 |
576| -------- | -------- |
577| codec | 指向OH_AVCodec实例的指针。 |
578
579**返回:**
580
581如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
582