基于海思3559 高效率的 0延时 0拷贝 qt播放器方案

海思的有很好的mpp SDK, 播放视频流的,可以快速的从VDEC(解码)到 VO(显示),但是当我们UI需求比较复杂的时候,需要很多操作界面,比如快进,后退,比如调节摄像头位置等等,这些复杂的UI 功能,我们能想到的使用qt开源的平台的方案实现,但是如果视频在qt界面上播放怎么办呢?VO 是无法嵌入到qt的。我有如下方案:

一,编译支持opengl的qt,用opengl渲染 解码的yuv 或者rgb数据。这里会有一个问题,qt只能访问解码器的虚拟地址,从虚拟地址读取数据yuv 或者rgb的速度是很慢的。测试发现虽然3559可以解码8k视频,但是用虚拟地址读数据,读取1080的yuv或者rgb数据一帧,需要45毫秒。非常耗时。这个方案对分辨率不是很高的播放需求还可以满足。但是对分辨率和帧率高一些的方案无法满足。于是有了方案2.

二,方案二,我们可以不从虚拟地址获取yuv数据,我们直接用物理地址转成opengl的纹理。

     1,eglCreateImageKHR 创建用物理地址一个egl 图像。我理解是应该是图像物理地址的一个映射。

2,glEGLImageTargetTexture2DOES ,相当于glTexImage2D函数的作用,把图像贴到纹理上。

在实施过程中,特别注意海思的eglCreateImageKHR 只支持rgba 的格式。Demo里面 关于yuv的根本跑不起来。

方案一图:













   方案二图:

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值