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