[发明专利]视频播放方法、装置和系统有效
申请号: | 201911302738.2 | 申请日: | 2019-12-17 |
公开(公告)号: | CN113079408B | 公开(公告)日: | 2022-11-18 |
发明(设计)人: | 朱进杰;周晶晶 | 申请(专利权)人: | 北京嗨动视觉科技有限公司 |
主分类号: | H04N21/44 | 分类号: | H04N21/44;H04N21/431;H04N21/443 |
代理公司: | 深圳精智联合知识产权代理有限公司 44393 | 代理人: | 邓铁华 |
地址: | 100097 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 视频 播放 方法 装置 系统 | ||
本发明实施例公开了视频播放方法、装置和系统。视频播放方法例如包括:在主线程创建视频播放窗口,其中视频播放窗口具有主上下文对象和当前屏幕渲染表面;创建M个子线程、并为M个子线程创建N个子上下文对象,M、N分别为正整数,且N大于等于M;创建离屏渲染表面,并将离屏渲染表面与N个子上下文对象中的至少一个子上下文对象关联,离屏渲染表面的格式与当前屏幕渲染表面的格式匹配;将至少一个子上下文对象与主上下文对象关联,以使至少一个子上下文对象作为主上下文对象的共享上下文对象;控制主线程利用主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在视频播放窗口,视频帧数据是由共享上下文对象传输至纹理缓冲区。
技术领域
本发明涉及视频播放技术领域,尤其涉及一种视频播放方法、一种视频播放装置、一种视频播放系统。
背景技术
开放图形库(OpenGL)是非常高效的跨语言跨平台的图形应用程序编程接口,支持2D和3D的渲染,而OpenGL的实现依赖于具体的显卡厂商。OpenGL采用服务器客户端的模式,由客户端提供绘制命令和素材(图像),服务端进行实际的绘制,OpenGL能够实现高效渲染原因在于服务端所执行的绘制指令位于GPU(Graphics Processing Unit,图形处理器)中。
另外,Qt是目前非常流行的跨平台C++图形界面,可以同时支持GUI(GraphicalUser Interface,图形用户界面)和非GUI程序。Qt具有接口简单易用,功能丰富的特点,然而,由于Qt界面元素的绘制在GUI线程(即主线程)当中,用户交互也位于GUI线程,如果短时间内界面需要绘制大量的元素,那么就会导致用户交互阻塞,界面卡顿不流畅等一系列问题。因此,Qt中的Qt OpenGL模块内部封装了OpenGL的接口,使得开发者可以在Qt中使用OpenGL的特性,从而提升了视频渲染的性能。
然而,尽管采用Qt与OpenGL结合能够应用于很多场景,但是在某些交互性和实时性强的场景例如视频播放场景中,会出现视频解码后的视频帧数据(即纹理)上传至GPU的这一耗时过程造成GUI线程阻塞,从而影响用户的实时交互。
因此,目前亟需解决的技术问题是如何解决GUI线程阻塞的问题。
发明内容
因此,为克服现有技术的缺陷和不足,本发明实施例提供一种视频播放方法、一种视频播放装置、一种视频播放系统以及一种计算机可读存储介质,解决了现有技术中GUI线程堵塞的问题。
一方面,本发明实施例提供的一种视频播放方法,包括:在主线程创建视频播放窗口,其中所述视频播放窗口具有主上下文对象和当前屏幕渲染表面;创建M个子线程、并为所述M个子线程创建N个子上下文对象,其中M、N分别为正整数,且N大于等于M;创建离屏渲染表面,并将所述离屏渲染表面与所述N个子上下文对象中的至少一个子上下文对象关联,其中所述离屏渲染表面的格式与所述当前屏幕渲染表面的格式匹配;将所述至少一个子上下文对象与所述主上下文对象关联,以使所述至少一个子上下文对象作为所述主上下文对象的共享上下文对象;控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口,其中所述视频帧数据是由所述共享上下文对象传输至所述纹理缓冲区。
在上述技术方案中,所述视频播放方法通过创建具有主上下文对象和当前屏幕渲染表面的视频播放窗口,并创建子线程且为子线程创建子上下文对象,以及创建其格式与主上下文对象所对应的当前屏幕渲染表面格式匹配的离屏渲染表面,并将离屏渲染表面与至少一个子上下文对象相关联,以及将所述至少一个子上下文对象与主上下对象关联而成为主上下文的共享子上下文对象,这样一来,共享上下文对象负责传输视频帧数据至显存内的纹理缓冲区,而主线程只需利用主上下文对象负责访问并绘制显示;从而避免了现有技术中需要由主线程将视频帧数据传输至显存的纹理缓冲区而造成主线程阻塞的问题,主线程执行绘制的时间大大减少,用户交互的时间增多。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京嗨动视觉科技有限公司,未经北京嗨动视觉科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911302738.2/2.html,转载请声明来源钻瓜专利网。