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