MPP-解码示例

提取出编码的代码后,现在提取解码例程,供以后需要的时候使用。

完整的解码代码如下,做了一些改动,指令参数全部去除,输入H264数据,解码后的数据保存在本地,官方示例解码后的数据是YUV_420sp和YUV_422sp格式,这里将其改为了YUV_420p格式。

 

具体分析:

1、MPI接口的结构和使用,可以参考上篇内容,解码与编码基本一致。

 

2、解码器接口

decode_put_packet:

MPP_RET decode_put_packet(MppCtx ctx,MppPacket packet)

ctx:MPP解码器实例;

packet:待输入的码流数据;

输入码流的方式:分帧与不分帧。裸码流输入有两种,一种是按帧分段的数据,每一个输入给decode_put_packet函数的数据包都包含完整的一帧,不多也不少。在这种情况下,MPP可以直接按包处理码流。另一种是按长度读取数据,无法判断一个包的数据是否为完整的一帧,需要MPP内部进行分帧处理。在进行这种形式的输入时,需要在mpp_init前,通过control接口的MPP_DEC_SET_PARSER_SPLIT_MODE命令,打开need_split标志。分帧方式效率高,但需要在输入码流前进行解析与分帧,不分帧方式使用简单,效率会受影响。官方解码示例采用的是不分帧方式,因此上述代码也是不分帧方式。

decode_get_frame:

MPP_RET decode_get_frame(MppCtx ctx,MppFrame *frame)

ctx:MPP解码器实例;

frame:用于MppFrame实例的指针;

完整的解码过程是上面两个函数的结合。

 

posted @   为取经而来  阅读(5961)  评论(8编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示