1# AudioDecoder 2 3## 概述 4 5AudioDecoder模块提供用于音频解码的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。 6 7\@syscap SystemCapability.Multimedia.Media.AudioDecoder 8 9**起始版本:** 10 119 12 13## 汇总 14 15### 文件 16 17| 名称 | 描述 | 18| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | 19| [native_avcodec_audiodecoder.h](native__avcodec__audiodecoder_8h.md) | 声明用于音频解码的Native API。<br>**引用文件**:<multimedia/player_framework/native_avcodec_audiodecoder.h> <br>**库**:libnative_media_adec.so| 20| [avcodec_audio_channel_layout.h](avcodec__audio__channel__layout_8h.md) | 声明用于音频编解码的枚举。<br>**引用文件**:<multimedia/player_framework/avcodec_audio_channel_layout.h> <br>**库**:libnative_media_codecbase.so | 21 22### 枚举 23 24| 名称 | 描述 | 25| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | 26| [AudioChannelSet](#audiochannelset) : uint64_t {<br/>**FRONT_LEFT** = 1ULL << 0U, <br/>**FRONT_RIGHT** = 1ULL << 1U, <br/>**FRONT_CENTER** = 1ULL << 2U, <br/>**LOW_FREQUENCY** = 1ULL << 3U,<br/>**BACK_LEFT** = 1ULL << 4U, <br/>**BACK_RIGHT** = 1ULL << 5U, <br/>**FRONT_LEFT_OF_CENTER** = 1ULL << 6U, <br/>**FRONT_RIGHT_OF_CENTER** = 1ULL << 7U,<br/>**BACK_CENTER** = 1ULL << 8U, <br/>**SIDE_LEFT** = 1ULL << 9U, <br/>**SIDE_RIGHT** = 1ULL << 10U, <br/>**TOP_CENTER** = 1ULL << 11U,<br/>**TOP_FRONT_LEFT** = 1ULL << 12U, <br/>**TOP_FRONT_CENTER** = 1ULL << 13U, <br/>**TOP_FRONT_RIGHT** = 1ULL << 14U, <br/>**TOP_BACK_LEFT** = 1ULL << 15U,<br/>**TOP_BACK_CENTER** = 1ULL << 16U, <br/>**TOP_BACK_RIGHT** = 1ULL << 17U, <br/>**STEREO_LEFT** = 1ULL << 29U, <br/>**STEREO_RIGHT** = 1ULL << 30U,<br/>**WIDE_LEFT** = 1ULL << 31U, <br/>**WIDE_RIGHT** = 1ULL << 32U, <br/>**SURROUND_DIRECT_LEFT** = 1ULL << 33U, <br/>**SURROUND_DIRECT_RIGHT** = 1ULL << 34U,<br/>**LOW_FREQUENCY_2** = 1ULL << 35U, <br/>**TOP_SIDE_LEFT** = 1ULL << 36U, <br/>**TOP_SIDE_RIGHT** = 1ULL << 37U, <br/>**BOTTOM_FRONT_CENTER** = 1ULL << 38U,<br/>**BOTTOM_FRONT_LEFT** = 1ULL << 39U, <br/>**BOTTOM_FRONT_RIGHT** = 1ULL << 40U, <br/>**AMBISONICS_ACN0** = 1ULL << 41U, <br/>**AMBISONICS_ACN1** = 1ULL << 42U,<br/>**AMBISONICS_ACN2** = 1ULL << 43U, <br/>**AMBISONICS_ACN3** = 1ULL << 44U, <br/>**AMBISONICS_W** = AMBISONICS_ACN0, <br/>**AMBISONICS_Y** = AMBISONICS_ACN1,<br/>**AMBISONICS_Z** = AMBISONICS_ACN2, <br/>**AMBISONICS_X** = AMBISONICS_ACN3, <br/>**AMBISONICS_ACN4** = 1ULL << 45U, <br/>**AMBISONICS_ACN5** = 1ULL << 46U,<br/>**AMBISONICS_ACN6** = 1ULL << 47U, <br/>**AMBISONICS_ACN7** = 1ULL << 48U, <br/>**AMBISONICS_ACN8** = 1ULL << 49U, <br/>**AMBISONICS_ACN9** = 1ULL << 50U,<br/>**AMBISONICS_ACN10** = 1ULL << 51U, <br/>**AMBISONICS_ACN11** = 1ULL << 52U, <br/>**AMBISONICS_ACN12** = 1ULL << 53U, <br/>**AMBISONICS_ACN13** = 1ULL << 54U, <br/>**AMBISONICS_ACN14** = 1ULL << 55U, <br/>**AMBISONICS_ACN15** = 1ULL << 56U} | 音频声道数集合, 将每一个声道数映射为int64的变量。 | 27| [AudioChannelLayout](#audiochannellayout) : uint64_t {<br/>**UNKNOWN_CHANNEL_LAYOUT** = 0, <br/>**MONO** = (AudioChannelSet::FRONT_CENTER), <br/>**STEREO** = (AudioChannelSet::FRONT_LEFT \| AudioChannelSet::FRONT_RIGHT), <br/>**CH_2POINT1** = (STEREO \| AudioChannelSet::LOW_FREQUENCY),<br/>**CH_2_1** = (STEREO \| AudioChannelSet::BACK_CENTER), <br/>**SURROUND** = (STEREO \| AudioChannelSet::FRONT_CENTER), <br/>**CH_3POINT1** = (SURROUND \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_4POINT0** = (SURROUND \| AudioChannelSet::BACK_CENTER),<br/>**CH_4POINT1** = (CH_4POINT0 \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_2_2** = (STEREO \| AudioChannelSet::SIDE_LEFT \| AudioChannelSet::SIDE_RIGHT), <br/>**QUAD** = (STEREO \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), <br/>**CH_5POINT0** = (SURROUND \| AudioChannelSet::SIDE_LEFT \| AudioChannelSet::SIDE_RIGHT),<br/>**CH_5POINT1** = (CH_5POINT0 \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_5POINT0_BACK** = (SURROUND \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), <br/>**CH_5POINT1_BACK** = (CH_5POINT0_BACK \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_6POINT0** = (CH_5POINT0 \| AudioChannelSet::BACK_CENTER),<br/>**CH_6POINT0_FRONT** = (CH_2_2 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), <br/>**HEXAGONAL** = (CH_5POINT0_BACK \| AudioChannelSet::BACK_CENTER), <br/>**CH_6POINT1** = (CH_5POINT1 \| AudioChannelSet::BACK_CENTER), <br/>**CH_6POINT1_BACK** = (CH_5POINT1_BACK \| AudioChannelSet::BACK_CENTER),<br/>**CH_6POINT1_FRONT** = (CH_6POINT0_FRONT \| AudioChannelSet::LOW_FREQUENCY), <br/>**CH_7POINT0** = (CH_5POINT0 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT), <br/>**CH_7POINT0_FRONT** = (CH_5POINT0 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), <br/>**CH_7POINT1** = (CH_5POINT1 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_RIGHT),<br/>**CH_7POINT1_WIDE** = (CH_5POINT1 \| AudioChannelSet::FRONT_LEFT_OF_CENTER \| AudioChannelSet::FRONT_RIGHT_OF_CENTER), <br/>**CH_7POINT1_WIDE_BACK**, <br/>**CH_3POINT1POINT2** = (CH_3POINT1 \| AudioChannelSet::TOP_FRONT_LEFT \| AudioChannelSet::TOP_FRONT_RIGHT), <br/>**CH_5POINT1POINT2** = (CH_5POINT1 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT),<br/>**CH_5POINT1POINT4**, <br/>**CH_7POINT1POINT2** = (CH_7POINT1 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT), <br/>**CH_7POINT1POINT4**, <br/>**CH_9POINT1POINT4** = (CH_7POINT1POINT4 \| AudioChannelSet::WIDE_LEFT \| AudioChannelSet::WIDE_RIGHT),<br/>**CH_9POINT1POINT6** = (CH_9POINT1POINT4 \| AudioChannelSet::TOP_SIDE_LEFT \| AudioChannelSet::TOP_SIDE_RIGHT), <br/>**CH_10POINT2**, <br/>**CH_22POINT2**, <br/>**OCTAGONAL** = (CH_5POINT0 \| AudioChannelSet::BACK_LEFT \| AudioChannelSet::BACK_CENTER \| AudioChannelSet::BACK_RIGHT),<br/>**HEXADECAGONAL**, <br/>**STEREO_DOWNMIX** = (AudioChannelSet::STEREO_LEFT \| AudioChannelSet::STEREO_RIGHT), <br/>**HOA_FIRST**, <br/>**HOA_SECOND** <br/>**HOA_THIRD**} | 音频声道数类型, 将用户申请的解码器输出格式表示为编解码器的声道类型。 | 28 29### 函数 30 31| 名称 | 描述 | 32| --------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | 33| \*[OH_AudioDecoder_CreateByMime](#oh_audiodecoder_createbymime) (const char \*mime) | 根据MIME类型创建音频解码器实例,大多数场景下建议使用此方式。 | 34| \*[OH_AudioDecoder_CreateByName](#oh_audiodecoder_createbyname) (const char \*name) | 通过音频解码器名称创建音频解码器实例,使用此接口的前提是知道解码器的确切名称。 | 35| [OH_AudioDecoder_Destroy](#oh_audiodecoder_destroy) (OH_AVCodec \*codec) | 清理解码器内部资源,销毁解码器实例。 | 36| [OH_AudioDecoder_SetCallback](#oh_audiodecoder_setcallback) (OH_AVCodec \*codec, OH_AVCodecAsyncCallback callback, void \*userData) | 设置异步回调函数,使您的应用程序可以响应音频解码器生成的事件。 | 37| [OH_AudioDecoder_Configure](#oh_audiodecoder_configure) (OH_AVCodec \*codec, OH_AVFormat \*format) | 要配置音频解码器,通常需要配置从容器中提取的音频描述信息。 | 38| [OH_AudioDecoder_Prepare](#oh_audiodecoder_prepare) (OH_AVCodec \*codec) | 准备解码器的内部资源,在调用此接口之前必须调用Configure接口。 | 39| [OH_AudioDecoder_Start](#oh_audiodecoder_start) (OH_AVCodec \*codec) | Prepare成功后调用此接口启动解码器。 | 40| [OH_AudioDecoder_Stop](#oh_audiodecoder_stop) (OH_AVCodec \*codec) | 停止解码器。 | 41| [OH_AudioDecoder_Flush](#oh_audiodecoder_flush) (OH_AVCodec \*codec) | 清除解码器中缓存的输入和输出数据。 | 42| [OH_AudioDecoder_Reset](#oh_audiodecoder_reset) (OH_AVCodec \*codec) | 重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例 。 | 43| \*[OH_AudioDecoder_GetOutputDescription](#oh_audiodecoder_getoutputdescription) (OH_AVCodec \*codec) | 获取解码器输出数据的描述信息,详细信息请参见**OH_AVFormat**。 | 44| [OH_AudioDecoder_SetParameter](#oh_audiodecoder_setparameter) (OH_AVCodec \*codec, OH_AVFormat \*format) | 配置解码器的动态参数。注意:该接口必须在解码器启动后才能调用。另外,参数配置错误可能会导致解码失败。 | 45| [OH_AudioDecoder_PushInputData](#oh_audiodecoder_pushinputdata) (OH_AVCodec \*codec, uint32_t index, OH_AVCodecBufferAttr attr) | 将填充有数据的输入缓冲区提交给音频解码器。 | 46| [OH_AudioDecoder_FreeOutputData](#oh_audiodecoder_freeoutputdata) (OH_AVCodec \*codec, uint32_t index) | 将处理后的输出缓冲区返回给解码器。 | 47| [OH_AudioDecoder_IsValid](#oh_audiodecoder_isvalid) (OH_AVCodec \*codec, bool \*isValid) | 检查当前解码器实例是否有效。 | 48 49## 枚举类型说明 50 51### AudioChannelLayout 52 53``` 54enum AudioChannelLayout : uint64_t 55``` 56 57**描述:** 58 59音频声道数类型, 将用户申请的解码器输出格式表示为编解码器的声道类型。 60 61\@syscap SystemCapability.Multimedia.Media.CodecBase 62 63**起始版本:** 64 6510 66 67### AudioChannelSet 68 69``` 70enum AudioChannelSet : uint64_t 71``` 72 73**描述:** 74 75音频声道数集合, 将每一个声道数映射为int64的变量。 76 77\@syscap SystemCapability.Multimedia.Media.CodecBase 78 79**起始版本:** 80 8110 82 83| 枚举值 | 描述 | 84| ---------------- | ---------------------- | 85| AMBISONICS_ACN1 | 零阶立体声声道数 0 | 86| AMBISONICS_ACN2 | 一阶立体声声道数 1 | 87| AMBISONICS_ACN3 | 一阶立体声声道数 2 | 88| AMBISONICS_W | 一阶立体声声道数 3 | 89| AMBISONICS_Y | 同于零阶立体声声道数 0 | 90| AMBISONICS_Z | 同于一阶立体声声道数 1 | 91| AMBISONICS_X | 同于一阶立体声声道数 2 | 92| AMBISONICS_ACN4 | 同于一阶立体声声道数 3 | 93| AMBISONICS_ACN5 | 二阶立体声声道数 4 | 94| AMBISONICS_ACN6 | 二阶立体声声道数 5 | 95| AMBISONICS_ACN7 | 二阶立体声声道数 6 | 96| AMBISONICS_ACN8 | 二阶立体声声道数 7 | 97| AMBISONICS_ACN9 | 二阶立体声声道数 8 | 98| AMBISONICS_ACN10 | 三阶立体声声道数 9 | 99| AMBISONICS_ACN11 | 三阶立体声声道数 10 | 100| AMBISONICS_ACN12 | 三阶立体声声道数 11 | 101| AMBISONICS_ACN13 | 三阶立体声声道数 12 | 102| AMBISONICS_ACN14 | 三阶立体声声道数 13 | 103| AMBISONICS_ACN15 | 三阶立体声声道数 14 | 104 105## 函数说明 106 107### OH_AudioDecoder_Configure() 108 109``` 110OH_AVErrCode OH_AudioDecoder_Configure (OH_AVCodec * codec, OH_AVFormat * format ) 111``` 112 113**描述:** 114 115要配置音频解码器,通常需要配置从容器中提取的音频描述信息。 116 117在调用Prepare之前,必须调用此接口。 118 119\@syscap SystemCapability.Multimedia.Media.AudioDecoder 120 121**参数:** 122 123| 名称 | 描述 | 124| ------ | --------------------------------------------------- | 125| codec | 指向OH_AVCodec实例的指针。 | 126| format | 指向OH_AVFormat的指针,给出要解码的音频轨道的描述。 | 127 128**返回:** 129 130如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 131 132**起始版本:** 133 1349 135 136### OH_AudioDecoder_CreateByMime() 137 138``` 139OH_AVCodec* OH_AudioDecoder_CreateByMime (const char * mime) 140``` 141 142**描述:** 143 144根据MIME类型创建音频解码器实例,大多数场景下建议使用此方式。 145 146\@syscap SystemCapability.Multimedia.Media.AudioDecoder 147 148**参数:** 149 150| 名称 | 描述 | 151| ---- | ------------------------------------------------------- | 152| mime | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 | 153 154**返回:** 155 156返回指向OH_AVCodec实例的指针。 157 158**起始版本:** 159 1609 161 162### OH_AudioDecoder_CreateByName() 163 164``` 165OH_AVCodec* OH_AudioDecoder_CreateByName (const char * name) 166``` 167 168**描述:** 169 170通过音频解码器名称创建音频解码器实例,使用此接口的前提是知道解码器的确切名称。 171 172\@syscap SystemCapability.Multimedia.Media.AudioDecoder 173 174**参数:** 175 176| 名称 | 描述 | 177| ---- | ---------------- | 178| name | 音频解码器名称。 | 179 180**返回:** 181 182返回指向OH_AVCodec实例的指针。 183 184**起始版本:** 185 1869 187 188### OH_AudioDecoder_Destroy() 189 190``` 191OH_AVErrCode OH_AudioDecoder_Destroy (OH_AVCodec * codec) 192``` 193 194**描述:** 195 196清理解码器内部资源,销毁解码器实例。 197 198\@syscap SystemCapability.Multimedia.Media.AudioDecoder 199 200**参数:** 201 202| 名称 | 描述 | 203| ----- | -------------------------- | 204| codec | 指向OH_AVCodec实例的指针。 | 205 206**返回:** 207 208如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 209 210**起始版本:** 211 2129 213 214### OH_AudioDecoder_Flush() 215 216``` 217OH_AVErrCode OH_AudioDecoder_Flush (OH_AVCodec * codec) 218``` 219 220**描述:** 221 222清除解码器中缓存的输入和输出数据。 223 224调用此接口后,以前通过异步回调上报的所有缓冲区索引都将失效,请确保不要访问这些索引对应的缓冲区。 225 226\@syscap SystemCapability.Multimedia.Media.AudioDecoder 227 228**参数:** 229 230| 名称 | 描述 | 231| ----- | -------------------------- | 232| codec | 指向OH_AVCodec实例的指针。 | 233 234**返回:** 235 236如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 237 238**起始版本:** 239 2409 241 242### OH_AudioDecoder_FreeOutputData() 243 244``` 245OH_AVErrCode OH_AudioDecoder_FreeOutputData (OH_AVCodec * codec, uint32_t index ) 246``` 247 248**描述:** 249 250将处理后的输出缓冲区返回给解码器。 251 252\@syscap SystemCapability.Multimedia.Media.AudioDecoder 253 254**参数:** 255 256| 名称 | 描述 | 257| ----- | ------------------------------ | 258| codec | 指向OH_AVCodec实例的指针。 | 259| index | 输出缓冲区Buffer对应的索引值。 | 260 261**返回:** 262 263如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 264 265**起始版本:** 266 2679 268 269### OH_AudioDecoder_GetOutputDescription() 270 271``` 272OH_AVFormat* OH_AudioDecoder_GetOutputDescription (OH_AVCodec * codec) 273``` 274 275**描述:** 276 277获取解码器输出数据的描述信息,详细信息请参见**OH_AVFormat**。 需要注意的是,返回值所指向的OH_AVFormat实例的生命周期需要调用者手动释放。 278 279\@syscap SystemCapability.Multimedia.Media.AudioDecoder 280 281**参数:** 282 283| 名称 | 描述 | 284| ----- | -------------------------- | 285| codec | 指向OH_AVCodec实例的指针。 | 286 287**返回:** 288 289返回OH_AVFormat句柄指针,生命周期将使用下一个GetOutputDescription 刷新,或使用OH_AVCodec销毁。 290 291**起始版本:** 292 2939 294 295### OH_AudioDecoder_IsValid() 296 297``` 298OH_AVErrCode OH_AudioDecoder_IsValid (OH_AVCodec * codec, bool * isValid ) 299``` 300 301**描述:** 302 303检查当前解码器实例是否有效。 304 305\@syscap SystemCapability.Multimedia.Media.AudioDecoder 306 307**参数:** 308 309| 名称 | 描述 | 310| ------- | ----------------------------------------------------------------- | 311| codec | 指向OH_AVCodec实例的指针。 | 312| isValid | 指向布尔实例的指针,true:解码器实例有效,false:解码器实例无效。 | 313 314**返回:** 315 316如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 317 318**起始版本:** 319 32010 321 322### OH_AudioDecoder_Prepare() 323 324``` 325OH_AVErrCode OH_AudioDecoder_Prepare (OH_AVCodec * codec) 326``` 327 328**描述:** 329 330准备解码器的内部资源,在调用此接口之前必须调用Configure接口。 331 332\@syscap SystemCapability.Multimedia.Media.AudioDecoder 333 334**参数:** 335 336| 名称 | 描述 | 337| ----- | -------------------------- | 338| codec | 指向OH_AVCodec实例的指针。 | 339 340**返回:** 341 342如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 343 344**起始版本:** 345 3469 347 348### OH_AudioDecoder_PushInputData() 349 350``` 351OH_AVErrCode OH_AudioDecoder_PushInputData (OH_AVCodec * codec, uint32_t index, OH_AVCodecBufferAttr attr ) 352``` 353 354**描述:** 355 356将填充有数据的输入缓冲区提交给音频解码器。 357 358**OH_AVCodecOnNeedInputData**回调将报告可用的输入缓冲区和相应的索引值。一旦具有指定索引的缓冲区提交到音频解码器,则无法再次访问此缓冲区, 直到再次收到**OH_AVCodecOnNeedInputData**回调,收到相同索引时此缓冲区才可使用。 此外,对于某些解码器,需要在开始时向解码器输入特定配置参数,以初始化解码器的解码过程。 359 360\@syscap SystemCapability.Multimedia.Media.AudioDecoder 361 362**参数:** 363 364| 名称 | 描述 | 365| ----- | ------------------------------ | 366| codec | 指向OH_AVCodec实例的指针。 | 367| index | 输入缓冲区Buffer对应的索引值。 | 368| attr | 描述缓冲区中包含的数据的信息。 | 369 370**返回:** 371 372如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 373 374**起始版本:** 375 3769 377 378### OH_AudioDecoder_Reset() 379 380``` 381OH_AVErrCode OH_AudioDecoder_Reset (OH_AVCodec * codec) 382``` 383 384**描述:** 385 386重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例。 387 388\@syscap SystemCapability.Multimedia.Media.AudioDecoder 389 390**参数:** 391 392| 名称 | 描述 | 393| ----- | -------------------------- | 394| codec | 指向OH_AVCodec实例的指针。 | 395 396**返回:** 397 398如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。。 399 400**起始版本:** 401 4029 403 404### OH_AudioDecoder_SetCallback() 405 406``` 407OH_AVErrCode OH_AudioDecoder_SetCallback (OH_AVCodec * codec, OH_AVCodecAsyncCallback callback, void * userData ) 408``` 409 410**描述:** 411 412设置异步回调函数,使您的应用程序可以响应音频解码器生成的事件。 413 414在调用Prepare之前,必须调用此接口。 415 416\@syscap SystemCapability.Multimedia.Media.AudioDecoder 417 418**参数:** 419 420| 名称 | 描述 | 421| -------- | ------------------------------------------------------------- | 422| codec | 指向OH_AVCodec实例的指针。 | 423| callback | 所有回调函数的集合,请参见**OH_AVCodecAsyncCallback**。 | 424| userData | 用户特定数据。 | 425 426**返回:** 427 428如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 429 430**起始版本:** 431 4329 433 434### OH_AudioDecoder_SetParameter() 435 436``` 437OH_AVErrCode OH_AudioDecoder_SetParameter (OH_AVCodec * codec, OH_AVFormat * format ) 438``` 439 440**描述:** 441 442配置解码器的动态参数。 443 444注意,该接口必须在解码器启动后才能调用。另外,参数配置错误可能会导致解码失败。 445 446\@syscap SystemCapability.Multimedia.Media.AudioDecoder 447 448**参数:** 449 450| 名称 | 描述 | 451| ------ | -------------------------- | 452| codec | 指向OH_AVCodec实例的指针。 | 453| format | OH_AVFormat句柄指针。 | 454 455**返回:** 456 457如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 458 459**起始版本:** 460 4619 462 463### OH_AudioDecoder_Start() 464 465``` 466OH_AVErrCode OH_AudioDecoder_Start (OH_AVCodec * codec) 467``` 468 469**描述:** 470 471Prepare成功后调用此接口启动解码器。 472 473启动后,解码器将开始上报OH_AVCodecOnNeedInputData事件。 474 475\@syscap SystemCapability.Multimedia.Media.AudioDecoder 476 477**参数:** 478 479| 名称 | 描述 | 480| ----- | -------------------------- | 481| codec | 指向OH_AVCodec实例的指针。 | 482 483**返回:** 484 485如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 486 487**起始版本:** 488 4899 490 491### OH_AudioDecoder_Stop() 492 493``` 494OH_AVErrCode OH_AudioDecoder_Stop (OH_AVCodec * codec) 495``` 496 497**描述:** 498 499停止解码器。 500 501停止后,您可以通过Start重新进入已启动状态,但需要注意的是, 如果解码器之前已输入数据,则需要重新输入解码器数据。 502 503\@syscap SystemCapability.Multimedia.Media.AudioDecoder 504 505**参数:** 506 507| 名称 | 描述 | 508| ----- | -------------------------- | 509| codec | 指向OH_AVCodec实例的指针。 | 510 511**返回:** 512 513如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 514 515**起始版本:** 516 5179 518