一种视频渲染的方法、装置、系统及存储介质制造方法及图纸

技术编号:37162215 阅读:23 留言:0更新日期:2023-04-06 22:28
本发明专利技术提供了一种视频渲染的方法与系统,包括在Qt框架中,创建出供D3D进行视频绘制的窗体,屏蔽窗体上Qt的渲染消息,并在窗体上创建D3D的渲染设施,以由D3D接管窗体的绘制;在创建用于解码的D3D纹理时使解码后的D3D纹理可以被绑定到D3D着色器上进行渲染;建立一个渲染中间层,渲染中间层用于将OpenGL着色器解析成D3D着色器以及将D3D函数封装成OpenGL的形式,以使用户可以通过OpenGL的方式创建和编译D3D着色器。利用上述技术方案,可提高视频渲染效率,减少用户的学习成本,对显卡驱动的支持范围更广,而且业务代码可以很容易地移植到支持OpenGL的平台。支持OpenGL的平台。支持OpenGL的平台。

【技术实现步骤摘要】
一种视频渲染的方法、装置、系统及存储介质


[0001]本专利技术涉及视频渲染,特别是涉及一种视频渲染的方法、装置、系统及存储介质。

技术介绍

[0002]目前行业中常用的Qt上视频硬解码渲染方案主要有两种:
[0003]1、将DXVA硬解码生成的D3D纹理数据拷贝到内存中,再将数据作为OpenGL纹理拷贝到显存中进行渲染。该方案缺点在于大量的CPU资源被消耗在数据拷贝的过程中。
[0004]2、利用OpenGL扩展WGL_NV_DX_interop,将DXVA硬解码生成的数据与OpenGL进行共享,从而避免了CPU进行数据拷贝。该方案缺点在于受限与显卡驱动,若驱动不提供WGL_NV_DX_interop扩展则无法实现该功能。

技术实现思路

[0005]本专利技术的实施例提供了一种视频渲染的方法与系统,以通过D3D与Qt混合的方式实现高效的视频渲染。
[0006]为了实现上述目的,一方面,提供一种视频渲染的方法,使用D3D与Qt进行混合视频渲染,包括以下步骤:
[0007]S1:在Qt框架中,创建出本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种视频渲染的方法,其特征在于,使用D3D与Qt进行混合视频渲染,包括以下步骤:S1:在Qt框架中,创建出供D3D进行视频绘制的窗体,屏蔽所述窗体上Qt的渲染消息,并在所述窗体上创建D3D的渲染设施,以由D3D接管所述窗体的绘制;S2:在创建用于解码的D3D纹理时将其指定为D3D11_BIND_SHADER_RESOURCE,使解码后的D3D纹理可以被绑定到D3D着色器上进行渲染;S3:建立一个渲染中间层,所述渲染中间层用于将OpenGL着色器解析成D3D着色器以及将D3D函数封装成OpenGL的形式,以使用户可以通过OpenGL的方式创建和编译D3D着色器。2.根据权利要求1所述的方法,其特征在于,所述在Qt框架中,创建出可以让D3D进行视频绘制的窗体,具体包括:通过Qt提供的类QWindow创建一个窗体,并且利用QWidget提供方法将所述窗体封装成QWidget控件,所述QWidget控件可以被嵌入到QWidget实现的UI中。3.根据权利要求1所述的方法,其特征在于,所述屏蔽所述窗体上Qt的渲染消息,在所述窗体上创建D3D的渲染设施,从而由D3D接管所述窗体的绘制,具体包括:通过重载QWindow的event方法屏蔽Qt的渲染事件,在所述窗体上创建D3D的渲染设施,并在所述窗体上创建SwapChain,以将渲染方式从Qt转换到D3D中;其中,视频部分全部由D3D渲染,非视频部分由Qt绘制。4.根据权利要求3所述的方法,其特征在于,所述视频部分全部由D3D渲染,非视频部分由Qt绘制,具体包括:Qt实现UI绘制,D3D利用着色器实现视频、OSD以及视频特效的生成与渲染。5.根据权利要求1所述的方法,其特征在于,所述使解码后的D3D纹理可以被绑定到D3D着色器上进行渲染,具体包括:对DXVA解码后生成的YUV格式的纹理数据进行映射,从而在D3D着色器中对所述纹理数据实现YUV格式到RGB格式的转换:将所述纹理数据的Y分量映射成仅包含R分量的第一纹理,将所述纹理数据的UV分量映射成包含RG分量的第二纹理;并且,在着色器中,通过所述第一纹理的R分量访问Y数据,通过所述第二纹理的RG分量访问UV数据。6.根...

【专利技术属性】
技术研发人员:林建成王氚
申请(专利权)人:厦门星纵物联科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1