1# VideoDecoder 2 3 4## 概述 5 6VideoDecoder模块提供用于视频解码的函数。 7 8**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 9 10**起始版本:** 9 11 12 13## 汇总 14 15 16### 文件 17 18| 名称 | 描述 | 19| -------- | -------- | 20| [native_avcodec_videodecoder.h](native__avcodec__videodecoder_8h.md) | 声明用于视频解码的Native API。 | 21 22 23### 函数 24 25| 名称 | 描述 | 26| -------- | -------- | 27| [OH_AVCodec](_codec_base.md#oh_avcodec) \* [OH_VideoDecoder_CreateByMime](#oh_videodecoder_createbymime) (const char \*mime) | 从MIME类型创建视频解码器实例。 | 28| [OH_AVCodec](_codec_base.md#oh_avcodec) \* [OH_VideoDecoder_CreateByName](#oh_videodecoder_createbyname) (const char \*name) | 通过视频解码器名称创建视频解码器实例。 | 29| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_Destroy](#oh_videodecoder_destroy) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 清理解码器内部资源,销毁解码器实例。 | 30| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_SetCallback](#oh_videodecoder_setcallback) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置异步回调函数,让应用可以响应视频解码器生成的事件。 | 31| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_RegisterCallback](#oh_videodecoder_registercallback) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, [OH_AVCodecCallback](_o_h___a_v_codec_callback.md) callback, void \*userData) | 注册异步回调函数,让应用可以响应视频解码器生成的事件。 | 32| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_SetSurface](#oh_videodecoder_setsurface) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, [OHNativeWindow](_codec_base.md#ohnativewindow) \*window) | 指定输出表面以提供视频解码输出,必须在调用Prepare之前调用此接口。 | 33| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_Configure](#oh_videodecoder_configure) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, [OH_AVFormat](_core.md#oh_avformat) \*format) | 配置视频解码器,通常需要配置解码视频轨迹的描述信息,这些信息可以从OH_AVSource中提取。 | 34| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_Prepare](#oh_videodecoder_prepare) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 要准备解码器的内部资源。 | 35| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_Start](#oh_videodecoder_start) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 启动解码器,准备成功后必须调用此接口。 | 36| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_Stop](#oh_videodecoder_stop) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 停止解码器。 | 37| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_Flush](#oh_videodecoder_flush) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 清除解码器中缓存的输入和输出数据。 | 38| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_Reset](#oh_videodecoder_reset) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 重置解码器。 | 39| [OH_AVFormat](_core.md#oh_avformat) \* [OH_VideoDecoder_GetOutputDescription](#oh_videodecoder_getoutputdescription) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 获取解码器输出数据的描述信息。 | 40| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_SetParameter](#oh_videodecoder_setparameter) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, [OH_AVFormat](_core.md#oh_avformat) \*format) | 设置解码器的动态参数。 | 41| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_PushInputData](#oh_videodecoder_pushinputdata) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | 将填充数据的输入缓冲区提交给视频解码器。 | 42| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_RenderOutputData](#oh_videodecoder_renderoutputdata) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 将处理后的输出Buffer返回给解码器,并通知解码器完成在输出表面上渲染Buffer中包含的解码数据。 | 43| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_FreeOutputData](#oh_videodecoder_freeoutputdata) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 将处理后的输出缓冲区返回到解码器。 | 44| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_PushInputBuffer](#oh_videodecoder_pushinputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 将填充数据的输入缓冲区提交给视频解码器。 | 45| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_RenderOutputBuffer](#oh_videodecoder_renderoutputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 将处理后的输出缓冲返回给解码器,并通知解码器完成在输出表面上渲染,输出缓冲包含解码数据。 | 46| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_FreeOutputBuffer](#oh_videodecoder_freeoutputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 将处理后的输出缓冲区返回到解码器。 | 47| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_IsValid](#oh_videodecoder_isvalid) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, bool \*isValid) | 检查当前解码实例是否有效。 | 48| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoDecoder_SetDecryptionConfig](#oh_videodecoder_setdecryptionconfig) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, MediaKeySession \*mediaKeySession, bool secureVideoPath) | 设置解密配置。 | 49 50 51## 函数说明 52 53 54### OH_VideoDecoder_Configure() 55 56``` 57OH_AVErrCode OH_VideoDecoder_Configure (OH_AVCodec *codec, OH_AVFormat *format ) 58``` 59 60**描述** 61 62配置视频解码器,通常需要配置解码视频轨迹的描述信息,这些信息可以从OH_AVSource中提取。在调用准备之前,必须调用此接口。 63 64**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 65 66**起始版本:** 9 67 68**参数:** 69 70| 名称 | 描述 | 71| -------- | -------- | 72| codec | 指向视频解码实例的指针。 | 73| format | 指向OH_AVFormat的指针,用于给出要解码的视频轨道的描述。 | 74 75**返回:** 76 77如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 78 79 80### OH_VideoDecoder_CreateByMime() 81 82``` 83OH_AVCodec* OH_VideoDecoder_CreateByMime (const char *mime) 84``` 85 86**描述** 87 88从MIME类型创建视频解码器实例,大多数情况下建议使用。 89 90**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 91 92**起始版本:** 9 93 94**参数:** 95 96| 名称 | 描述 | 97| -------- | -------- | 98| mime | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 | 99 100**返回:** 101 102返回一个指向视频解码实例的指针。 103 104 105### OH_VideoDecoder_CreateByName() 106 107``` 108OH_AVCodec* OH_VideoDecoder_CreateByName (const char *name) 109``` 110 111**描述** 112 113通过视频解码器名称创建视频解码器实例。使用此接口的前提是知道解码器的确切名称。 114 115**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 116 117**起始版本:** 9 118 119**参数:** 120 121| 名称 | 描述 | 122| -------- | -------- | 123| name | 视频解码器名称。 | 124 125**返回:** 126 127返回指向视频解码实例的指针。 128 129 130### OH_VideoDecoder_Destroy() 131 132``` 133OH_AVErrCode OH_VideoDecoder_Destroy (OH_AVCodec *codec) 134``` 135 136**描述** 137 138清理解码器内部资源,销毁解码器实例。 139 140**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 141 142**起始版本:** 9 143 144**参数:** 145 146| 名称 | 描述 | 147| -------- | -------- | 148| codec | 指向视频解码实例的指针。 | 149 150**返回:** 151 152如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 153 154 155### OH_VideoDecoder_Flush() 156 157``` 158OH_AVErrCode OH_VideoDecoder_Flush (OH_AVCodec *codec) 159``` 160 161**描述** 162 163清除解码器中缓存的输入和输出数据。 调用此接口后,以前通过异步回调上报的所有缓冲区索引都将失效,请确保不要访问这些索引对应的缓冲区。 164 165**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 166 167**起始版本:** 9 168 169**参数:** 170 171| 名称 | 描述 | 172| -------- | -------- | 173| codec | 指向视频解码实例的指针。 | 174 175**返回:** 176 177如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 178 179 180### OH_VideoDecoder_FreeOutputBuffer() 181 182``` 183OH_AVErrCode OH_VideoDecoder_FreeOutputBuffer (OH_AVCodec *codec, uint32_t index ) 184``` 185 186**描述** 187 188将处理后的输出缓冲区返回到解码器。 189 190**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 191 192**起始版本:** 11 193 194**参数:** 195 196| 名称 | 描述 | 197| -------- | -------- | 198| codec | 指向视频解码实例的指针。 | 199| index | 输出Buffer对应的索引值。 | 200 201**返回:** 202 203如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 204 205 206### OH_VideoDecoder_FreeOutputData() 207 208``` 209OH_AVErrCode OH_VideoDecoder_FreeOutputData (OH_AVCodec *codec, uint32_t index ) 210``` 211 212**描述** 213 214将处理后的输出缓冲区返回到解码器。 215 216**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 217 218**起始版本:** 9 219 220**废弃版本:** 11 221 222**替代接口:**[OH_VideoDecoder_FreeOutputBuffer](#oh_videodecoder_freeoutputbuffer) 223 224**参数:** 225 226| 名称 | 描述 | 227| -------- | -------- | 228| codec | 指向视频解码实例的指针。 | 229| index | 输出Buffer对应的索引值。 | 230 231**返回:** 232 233如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 234 235 236### OH_VideoDecoder_GetOutputDescription() 237 238``` 239OH_AVFormat* OH_VideoDecoder_GetOutputDescription (OH_AVCodec *codec) 240``` 241 242**描述** 243 244获取解码器输出数据的描述信息。 245 246需要注意的是,返回值指向的OH_AVFormat实例的生命周期需要调用者手动释放。 247 248**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 249 250**起始版本:** 9 251 252**参数:** 253 254| 名称 | 描述 | 255| -------- | -------- | 256| codec | 指向视频解码实例的指针。 | 257 258**返回:** 259 260返回指向OH_AVFormat实例的指针。 261 262 263### OH_VideoDecoder_IsValid() 264 265``` 266OH_AVErrCode OH_VideoDecoder_IsValid (OH_AVCodec *codec, bool *isValid ) 267``` 268 269**描述** 270 271检查当前解码实例是否有效。 272 273**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 274 275**起始版本:** 10 276 277**参数:** 278 279| 名称 | 描述 | 280| -------- | -------- | 281| codec | 指向视频解码实例的指针。 | 282| isValid | 输出参数。指向布尔实例的指针,如果解码器实例有效,则为true,如果解码器实例无效,则为false。 | 283 284**返回:** 285 286如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 287 288 289### OH_VideoDecoder_Prepare() 290 291``` 292OH_AVErrCode OH_VideoDecoder_Prepare (OH_AVCodec *codec) 293``` 294 295**描述** 296 297要准备解码器的内部资源,在调用该接口之前,必须调用Configure接口。 298 299**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 300 301**起始版本:** 9 302 303**参数:** 304 305| 名称 | 描述 | 306| -------- | -------- | 307| codec | 指向视频解码实例的指针。 | 308 309**返回:** 310 311如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 312 313 314### OH_VideoDecoder_PushInputBuffer() 315 316``` 317OH_AVErrCode OH_VideoDecoder_PushInputBuffer (OH_AVCodec *codec, uint32_t index ) 318``` 319 320**描述** 321 322将填充数据的输入缓冲区提交给视频解码器。 323 324输入回调将报告可用的输入缓冲区和相应的索引值,请参阅[OH_AVCodecOnNeedInputBuffer](_codec_base.md#oh_avcodeconneedinputbuffer)。 一旦具有指定索引的缓冲区提交到视频解码器,则无法再次访问缓冲区,直到再次收到输入回调,报告具有相同索引的缓冲区可用。 325 326此外,对于某些解码器,需要在开始时向解码器输入编解码特定数据,以初始化解码器的解码过程,如H264格式的PPS/SPS数据。 327 328**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 329 330**起始版本:** 11 331 332**参数:** 333 334| 名称 | 描述 | 335| -------- | -------- | 336| codec | 指向视频解码实例的指针。 | 337| index | 输入Buffer对应的索引值。 | 338 339**返回:** 340 341如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 342 343 344### OH_VideoDecoder_PushInputData() 345 346``` 347OH_AVErrCode OH_VideoDecoder_PushInputData (OH_AVCodec *codec, uint32_t index, OH_AVCodecBufferAttr attr ) 348``` 349 350**描述** 351 352将填充数据的输入缓冲区提交给视频解码器。 353 354输入回调将报告可用的输入缓冲区和相应的索引值,请参阅[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)。 一旦具有指定索引的缓冲区提交到视频解码器,则无法再次访问缓冲区,直到再次收到输入回调,报告具有相同索引的缓冲区可用。 355 356此外,对于某些解码器,需要在开始时向解码器输入编解码特定数据,以初始化解码器的解码过程,如H264格式的PPS/SPS数据。 357 358**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 359 360**起始版本:** 9 361 362**废弃版本:** 11 363 364**替代接口:**[OH_VideoDecoder_PushInputBuffer](#oh_videodecoder_pushinputbuffer) 365 366**参数:** 367 368| 名称 | 描述 | 369| -------- | -------- | 370| codec | 指向视频解码实例的指针。 | 371| index | 输入Buffer对应的索引值。 | 372| attr | 描述缓冲区中包含的数据的信息。 | 373 374**返回:** 375 376如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 377 378 379### OH_VideoDecoder_RegisterCallback() 380 381``` 382OH_AVErrCode OH_VideoDecoder_RegisterCallback (OH_AVCodec *codec, OH_AVCodecCallback callback, void *userData ) 383``` 384 385**描述** 386 387注册异步回调函数,让应用可以响应视频解码器生成的事件。在调用Prepare之前,必须调用此接口。 388 389**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 390 391**起始版本:** 11 392 393**参数:** 394 395| 名称 | 描述 | 396| -------- | -------- | 397| codec | 指向视频解码器实例的指针。 | 398| callback | 所有回调函数的集合,请参见[OH_AVCodecCallback](_o_h___a_v_codec_callback.md)。 | 399| userData | 用户特定数据。 | 400 401**返回:** 402 403如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 404 405 406### OH_VideoDecoder_RenderOutputBuffer() 407 408``` 409OH_AVErrCode OH_VideoDecoder_RenderOutputBuffer (OH_AVCodec *codec, uint32_t index ) 410``` 411 412**描述** 413 414将处理后的输出缓冲返回给解码器,并通知解码器完成在输出表面上渲染,输出缓冲包含解码数据。 415 416如果之前没有配置输出表面,则调用此接口仅将指定索引对应的输出缓冲区返回给解码器。 417 418**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 419 420**起始版本:** 11 421 422**参数:** 423 424| 名称 | 描述 | 425| -------- | -------- | 426| codec | 指向视频解码实例的指针。 | 427| index | 输出Buffer对应的索引值。 | 428 429**返回:** 430 431如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 432 433 434### OH_VideoDecoder_RenderOutputData() 435 436``` 437OH_AVErrCode OH_VideoDecoder_RenderOutputData (OH_AVCodec *codec, uint32_t index ) 438``` 439 440**描述** 441 442将处理后的输出Buffer返回给解码器,并通知解码器完成在输出表面上渲染Buffer中包含的解码数据。 443 444如果之前没有配置输出表面,则调用此接口仅将指定索引对应的输出缓冲区返回给解码器。 445 446**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 447 448**起始版本:** 9 449 450**废弃版本:** 11 451 452**替代接口:**[OH_VideoDecoder_RenderOutputBuffer](#oh_videodecoder_renderoutputbuffer) 453 454**参数:** 455 456| 名称 | 描述 | 457| -------- | -------- | 458| codec | 指向视频解码实例的指针。 | 459| index | 输出Buffer对应的索引值。 | 460 461**返回:** 462 463如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 464 465 466### OH_VideoDecoder_Reset() 467 468``` 469OH_AVErrCode OH_VideoDecoder_Reset (OH_AVCodec *codec) 470``` 471 472**描述** 473 474重置解码器。如果要继续解码,需要再次调用Configure接口配置解码器实例。 475 476**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 477 478**起始版本:** 9 479 480**参数:** 481 482| 名称 | 描述 | 483| -------- | -------- | 484| codec | 指向视频解码实例的指针。 | 485 486**返回:** 487 488如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 489 490 491### OH_VideoDecoder_SetCallback() 492 493``` 494OH_AVErrCode OH_VideoDecoder_SetCallback (OH_AVCodec *codec, OH_AVCodecAsyncCallback callback, void *userData ) 495``` 496 497**描述** 498 499设置异步回调函数,让应用可以响应视频解码器生成的事件。在调用Prepare之前,必须调用此接口。 500 501**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 502 503**起始版本:** 9 504 505**废弃版本:** 11 506 507**替代接口:**[OH_VideoDecoder_RegisterCallback](#oh_videodecoder_registercallback) 508 509**参数:** 510 511| 名称 | 描述 | 512| -------- | -------- | 513| codec | 指向视频解码实例的指针。 | 514| callback | 所有回调函数的集合,请参阅[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)。 | 515| userData | 用户特定数据。 | 516 517**返回:** 518 519如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 520 521 522### OH_VideoDecoder_SetDecryptionConfig() 523 524``` 525OH_AVErrCode OH_VideoDecoder_SetDecryptionConfig (OH_AVCodec *codec, MediaKeySession *mediaKeySession, bool secureVideoPath) 526``` 527**描述** 528 529设置解密配置。在调用准备之前,可选择调用此接口。 530 531**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 532 533**起始版本:** 11 534 535**参数:** 536 537| 名称 | 描述 | 538| -------- | -------- | 539| codec | 指向视频解码实例的指针。 | 540| mediaKeySession | 指向带有解密功能的DRM会话实例的指针,请参阅**MediaKeySession**。 | 541| secureVideoPath | 安全视频通路。指定安全视频通路为true,否则为false。 | 542 543**返回:** 544 545如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 546 547 548### OH_VideoDecoder_SetParameter() 549 550``` 551OH_AVErrCode OH_VideoDecoder_SetParameter (OH_AVCodec *codec, OH_AVFormat *format ) 552``` 553 554**描述** 555 556设置解码器的动态参数。 557 558注意,该接口只能在解码器启动后调用。同时,参数配置错误可能会导致解码失败。 559 560**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 561 562**起始版本:** 9 563 564**参数:** 565 566| 名称 | 描述 | 567| -------- | -------- | 568| codec | 指向视频解码实例的指针。 | 569| format | 指向OH_AVFormat实例的指针。 | 570 571**返回:** 572 573如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 574 575 576### OH_VideoDecoder_SetSurface() 577 578``` 579OH_AVErrCode OH_VideoDecoder_SetSurface (OH_AVCodec *codec, OHNativeWindow *window ) 580``` 581 582**描述** 583 584指定输出表面以提供视频解码输出,必须在调用Prepare之前调用此接口。 585 586**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 587 588**起始版本:** 9 589 590**参数:** 591 592| 名称 | 描述 | 593| -------- | -------- | 594| codec | 指向视频解码实例的指针。 | 595| window | 指向OHNativeWindow实例的指针。 | 596 597**返回:** 598 599如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 600 601 602### OH_VideoDecoder_Start() 603 604``` 605OH_AVErrCode OH_VideoDecoder_Start (OH_AVCodec *codec) 606``` 607 608**描述** 609 610启动解码器,准备成功后必须调用此接口。成功启动后,解码器将开始报告注册的回调事件。 611 612**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 613 614**起始版本:** 9 615 616**参数:** 617 618| 名称 | 描述 | 619| -------- | -------- | 620| codec | 指向视频解码实例的指针。 | 621 622**返回:** 623 624如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 625 626 627### OH_VideoDecoder_Stop() 628 629``` 630OH_AVErrCode OH_VideoDecoder_Stop (OH_AVCodec *codec) 631``` 632 633**描述** 634 635停止解码器。停止后,可以通过Start重新进入Started状态。 636 637需要注意的是,如果编解码器特定数据以前已输入到解码器,则需要再次输入。 638 639**系统能力:** SystemCapability.Multimedia.Media.VideoDecoder 640 641**起始版本:** 9 642 643**参数:** 644 645| 名称 | 描述 | 646| -------- | -------- | 647| codec | 指向视频解码实例的指针。 | 648 649**返回:** 650 651如果执行成功,则返回AV_ERR_OK,否则返回特定错误代码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 652