Toybrick

如何在QT中实现0拷贝解码视频显示

MadDog

中级会员

积分
402
楼主
发表于 2021-1-27 20:09:09    查看: 11743|回复: 3 | [复制链接]    打印 | 只看该作者
大家好:
我的系统是debian10+3399ProD,我希望达到的目标是实时解码多路视频然后进行界面显示;

目前我实现了基于drm的0拷贝的多路画面显示,实现思路是:解码得到内存handle1,RGA进行格式转换(NV12到RGBA)得到handle2,
然后通过drmModeSetCrtc将handle2刷新出去。

但是我的应用是基于QT来实现的,如何将我的视频画面和QT的界面结合在一起呢?
我看其他人的帖子的思路是通过openGLES来实现,看完代码后有一个问题没有搞清楚,我理解openGLES起的作用是把解码得到的Buffer,
拷贝到texture中,然后通过shader转换为RGBA格式绘制到frameBuffer中,然后通过drmModeSetPlane显示出去。
在这个过程中,存在一次内存拷贝(Buffer到纹理),openGLES在其中起到的作用是高效转换格式,这个完全可以用RGA进行替代,那
为什么还要用openGLES ?

不知道我的理解是否有问题,哪位高人在这个方面有经验,请指教一二。
谢谢
回复

使用道具 举报

wtmelen

注册会员

积分
81
沙发
发表于 2022-9-12 21:03:51 | 只看该作者
同求,楼主实现了么
回复

使用道具 举报

sanshixiong

新手上路

积分
42
板凳
发表于 2022-12-9 17:33:29 | 只看该作者
wtmelen 发表于 2022-9-12 21:03
同求,楼主实现了么

你好,层主实现了吗
回复

使用道具 举报

sanshixiong

新手上路

积分
42
地板
发表于 2023-1-5 16:37:32 | 只看该作者
直接用Qmediaplayer 就可以,可实现用mpp解码与调用gpu绘图
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表