RK3568的MPP解码H264流程

RK3568是瑞芯微性能比较好的芯片,它的性能主要体现在解码能力上。因为RK3568能够同时解码16路视频数据,这个解码能力在目前的芯片市场上是首屈一指的。

RK的MPP解码H264流程

对于瑞芯微系列,MPP是提供一系列硬件编码、解码的API。所以说熟悉MPP的开发对于我们开发瑞芯微的产品来说至关重要。我们来看看一个普通的MPP解码的流程。

图片

上图是一个经典的MPP解码H264流程,对于解码来说,一般都需要两个线程以上处理,分别是读取线程和解码线程,这是由于解码线程非常耗时,如果它和读取线程耦合在一起的话,会对客户体验很不好。如这个DEMO,我们分为两个线程去处理,一个是read_file_thread线程(文件读取线程)、另外一个是rk3568_decode_trhead线程(3568解码线程)。

read_file_thread线程:这个线程主要功能是通过fread读取每一帧H264码流,然后存放到视频队列。

rk3568_decode_thread线程:这个线程主要功能是rk3568的解码流程。这里有几个步骤是比较重要的:

  • 1). 把编码视频的数据从队列拿出来(get_video_queue),并把数据转换成mpp的数据(使用mpp_packet_init进行转换)。
  • 2). 把mpp数据送到rk3568的硬件解码器,使用的api是decode_put_packet
  • 3).获取每一帧解码数据,调用的api是decode_get_frame,并保存到YUV数据

上面这个DEMO就是一个H264文件使用MPP框架解码成YUV数据的总体流程。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论