CN113079408B - 视频播放方法、装置和系统 - Google Patents
视频播放方法、装置和系统 Download PDFInfo
- Publication number
- CN113079408B CN113079408B CN201911302738.2A CN201911302738A CN113079408B CN 113079408 B CN113079408 B CN 113079408B CN 201911302738 A CN201911302738 A CN 201911302738A CN 113079408 B CN113079408 B CN 113079408B
- Authority
- CN
- China
- Prior art keywords
- context object
- sub
- video
- main
- screen rendering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000009877 rendering Methods 0.000 claims abstract description 97
- 230000015654 memory Effects 0.000 claims abstract description 50
- 230000003993 interaction Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44012—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44004—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
- H04N21/4438—Window management, e.g. event handling following interaction with the user interface
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
本发明实施例公开了视频播放方法、装置和系统。视频播放方法例如包括:在主线程创建视频播放窗口,其中视频播放窗口具有主上下文对象和当前屏幕渲染表面;创建M个子线程、并为M个子线程创建N个子上下文对象,M、N分别为正整数,且N大于等于M;创建离屏渲染表面,并将离屏渲染表面与N个子上下文对象中的至少一个子上下文对象关联,离屏渲染表面的格式与当前屏幕渲染表面的格式匹配;将至少一个子上下文对象与主上下文对象关联,以使至少一个子上下文对象作为主上下文对象的共享上下文对象;控制主线程利用主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在视频播放窗口,视频帧数据是由共享上下文对象传输至纹理缓冲区。
Description
技术领域
本发明涉及视频播放技术领域,尤其涉及一种视频播放方法、一种视频播放装置、一种视频播放系统。
背景技术
开放图形库(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个子上下文对象中的至少一个子上下文对象关联,其中所述离屏渲染表面的格式与所述当前屏幕渲染表面的格式匹配;将所述至少一个子上下文对象与所述主上下文对象关联,以使所述至少一个子上下文对象作为所述主上下文对象的共享上下文对象;控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口,其中所述视频帧数据是由所述共享上下文对象传输至所述纹理缓冲区。
在上述技术方案中,所述视频播放方法通过创建具有主上下文对象和当前屏幕渲染表面的视频播放窗口,并创建子线程且为子线程创建子上下文对象,以及创建其格式与主上下文对象所对应的当前屏幕渲染表面格式匹配的离屏渲染表面,并将离屏渲染表面与至少一个子上下文对象相关联,以及将所述至少一个子上下文对象与主上下对象关联而成为主上下文的共享子上下文对象,这样一来,共享上下文对象负责传输视频帧数据至显存内的纹理缓冲区,而主线程只需利用主上下文对象负责访问并绘制显示;从而避免了现有技术中需要由主线程将视频帧数据传输至显存的纹理缓冲区而造成主线程阻塞的问题,主线程执行绘制的时间大大减少,用户交互的时间增多。
在本发明的一个实施例中,所述共享上下文对象包括所述M个子线程中同一个子线程的多个子上下文对象,其中所述多个子上下文对象用于分别传输多个视频源的视频帧数据至所述纹理缓冲区。
在本发明的一个实施例中,所述共享上下文对象包括所述M个子线程中的多个子线程的子上下文对象。
在本发明的一个实施例中,所述视频播放方法还包括:在所述控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口之前,在所述主线程创建第二视频播放窗口,其中所述第二视频播放窗口具有第二主上下文对象和第二当前屏幕渲染表面;创建第二离屏渲染表面,并将所述第二离屏渲染表面与所述共享上下文对象关联,其中所述第二离屏渲染表面的格式与所述第二当前屏幕渲染表面的格式匹配;将所述共享上下文对象与所述第二主上下文对象关联;控制所述主线程利用所述第二主上下文对象访问所述显存内的所述纹理缓冲区中的所述视频帧数据、并绘制显示在所述第二视频播放窗口。
所述视频帧数据是由所述共享上下文对象通过像素缓冲对象方式传输至所述纹理缓冲区,所述N个子上下文对象分别为开放图形库上下文对象。
另一方面,本发明实施例提供的一种视频播放装置,包括:窗口创建模块,用于在主线程创建视频播放窗口,其中所述视频播放窗口具有主上下文对象和当前屏幕渲染表面;子线程创建模块,用于创建M个子线程、并为所述M个子线程创建N个子上下文对象,其中M、N分别为正整数,且N大于等于M;渲染表面创建模块,用于创建离屏渲染表面,并将所述离屏渲染表面与所述N个子上下文对象中的至少一个子上下文对象关联,其中所述离屏渲染表面的格式与所述当前屏幕渲染表面的格式匹配;上下文对象关联模块,用于将所述至少一个子上下文对象与所述主上下文对象关联,以使所述至少一个子上下文对象作为所述主上下文对象的共享上下文对象;访问绘制模块,用于控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口,其中所述视频帧数据是由所述共享上下文对象传输至所述纹理缓冲区。
在上述技术方案中,视频播放装置其所包括的各个模块对应地创建具有主上下文对象和当前屏幕渲染表面的视频播放窗口,并创建子线程且为子线程创建子上下文对象,以及创建其格式与主上下文对象所对应的当前屏幕渲染表面格式匹配的离屏渲染表面,并将离屏渲染表面与至少一个子上下文对象相关联,以及将所述至少一个子上下文对象与主上下对象关联而成为主上下文的共享子上下文对象,这样一来,共享上下文对象负责传输视频帧数据至显存内的纹理缓冲区,而主线程只需利用主上下文对象负责访问并绘制显示;从而避免了现有技术中需要由主线程将视频帧数据传输至显存的纹理缓冲区而造成主线程阻塞的问题,主线程执行绘制的时间大大减少,用户交互的时间增多。
在本发明的一个实施例中,所述共享上下文对象包括所述M个子线程中同一个子线程的多个子上下文对象,其中所述多个子上下文对象用于分别传输多个视频源的视频帧数据至所述纹理缓冲区。
在本发明的一个实施例中,所述共享上下文对象包括所述M个子线程中的多个子线程的子上下文对象。
在本发明的一个实施例中,所述窗口创建模块还用于:在主线程创建第二视频播放窗口,其中所述第二视频播放窗口具有第二主上下文对象和第二当前屏幕渲染表面;所述渲染表面创建模块还用于:创建第二离屏渲染表面,并将所述第二离屏渲染表面与所述共享上下文对象关联,其中所述第二离屏渲染表面的格式与所述第二当前屏幕渲染表面的格式匹配;所述上下文对象关联模块还用于:将所述共享上下文对象与所述第二主上下文对象关联;所述访问绘制模块还用于:控制所述主线程利用所述第二主上下文对象访问所述显存内的所述纹理缓冲区中的所述视频帧数据、并绘制显示在所述第二视频播放窗口。
再一方面,本发明实施例提供了一种视频播放系统,包括:处理器和连接所述处理器的存储器;其中所述存储器存储有所述处理器执行的指令,且所述指令使得所述处理器执行操作以进行上述任意一种视频播放方法。
又一方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于执行上述任意一种视频播放方法。
上述一个或多个技术方案可以具有以下优点或有益效果:所述视频播放方法和视频播放装置通过创建具有主上下文对象和当前屏幕渲染表面的视频播放窗口,并创建子线程且为子线程创建子上下文对象,以及创建其格式与主上下文对象所对应的当前屏幕渲染表面格式匹配的离屏渲染表面,并将离屏渲染表面与至少一个子上下文对象相关联,以及将所述至少一个子上下文对象与主上下对象关联而成为主上下文的共享子上下文对象,这样一来,共享上下文对象负责传输视频帧数据至显存内的纹理缓冲区,而主线程只需利用主上下文对象负责访问并绘制显示;从而避免了现有技术中需要由主线程将视频帧数据传输至显存的纹理缓冲区而造成主线程阻塞的问题,主线程执行绘制的时间大大减少,用户交互的时间增多。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明第一实施例提供的一种视频播放方法的流程示意图。
图2为本发明第一实施例的视频播放方法中涉及的上下文对象关联的示意图。
图3为本发明第二实施例提供的一种视频播放装置的模块示意图。
图4为本发明第三实施例提供的一种视频播放系统的结构示意图。
图5为本发明第四实施例提供的一种计算机可读存储介质的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
【第一实施例】
参见图1,其为本发明第一实施例的视频播放方法的流程示意图。该视频播放方法例如包括如下步骤:
S101,在主线程创建视频播放窗口,其中所述视频播放窗口具有主上下文对象和当前屏幕渲染表面;
S102,创建M个子线程、并为所述M个子线程创建N个子上下文对象,其中M、N分别为正整数,且N大于等于M;
S103,创建离屏渲染表面,并将所述离屏渲染表面与所述N个子上下文对象中的至少一个子上下文对象关联,其中所述离屏渲染表面的格式与所述当前屏幕渲染表面的格式匹配;
S104,将所述至少一个子上下文对象与所述主上下文对象关联,以使所述至少一个子上下文对象作为所述主上下文对象的共享上下文对象;
S105,控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口,其中所述视频帧数据是由所述共享上下文对象传输至所述纹理缓冲区。
下面对本发明第一实施例的视频播放方法进行详细描述。
具体地,所述视频播放方法可例如由PC机或其他视频处理设备上的视频播放软件上执行。
具体地,首先,视频播放软件创建主线程即GPU线程,并在主线程创建视频播放窗口,其中视频播放窗口具有主上下文对象和当前屏幕渲染表面(On-Screen RenderingSurface),主上下文对象为OpenGL Context对象。
之后,视频播放软件创建M个子线程、并为所述M个子线程创建N个子上下文对象,其中M、N分别为正整数,且N大于等于M,所述子上下文对象为OpenGL Context对象。需要说明的是,在此一个子线程可以对应有一个或多个子上下文对象。
然后,视频播放软件创建离屏渲染表面(QOffscreenSurface),并将所述离屏渲染表面与所述N个子上下文对象中的至少一个子上下文对象关联,其中所述离屏渲染表面的格式与所述当前屏幕渲染表面的格式匹配。在此,这里“将所述离屏渲染表面与所述N个子上下文对象中的至少一个子上下文对象关联”即表示所述至少一个子上下文对象与所述离屏渲染表面相对应,使得所述至少一个子上下文对象在所述离屏渲染表面上进行渲染。在此,离屏渲染表面的格式与当前屏幕渲染表面的格式匹配可为所述离屏渲染表面的格式与所述当前屏幕渲染表面的格式相同或者相当。所述格式可以包括下述项中的一者或多者:双重缓冲、单一缓冲、颜色缓冲区、深度缓冲、模板缓冲、累积缓冲区以及多重采样的样本数。值得一提的是,在此QoffscreenSurface应用于创建OpenGL资源,例如纹理或者缓冲区对象,这样就能够在任意线程使用OpenGL进行渲染,并且将QoffscreenSurface与上下文对象结合使用,可以在不需要QWindow的情况下切换上下文资源。
接下来,视频播放软件将所述至少一个子上下文对象与所述主上下文对象关联,以使所述至少一个子上下文对象作为所述主上下文对象的共享上下文对象。在此,所述“将至少一个子上下文对象与所述主上下文对象关联”即所述至少一个子上下文对象与所述主上下文对象指向显存中的同一个纹理缓冲区。举例来说,所述共享上下文对象可包括所述M个子线程中同一个子线程的多个子上下文对象,其中所述多个子上下文对象用于分别传输多个视频源的视频帧数据至所述纹理缓冲区。可选地,所述共享上下文对象可包括所述M个子线程中的多个子线程的子上下文对象,也就是说,一个主上下文对象可以对应于所创建的M个子线程中的至少两个子线程的上下文对象或者全部子线程的上下文对象,当然,具体所述主上下文对象对应于所述至少两个子线程中的每个子线程的哪几个子上下文对象或者对应于全部子线程中的各个子线程的哪几个子上下文对象,本实施例不进行具体限定。
最后,视频播放软件控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口,其中所述视频帧数据是由所述共享上下文对象传输至所述纹理缓冲区。需要说明的是,所述视频帧数据可以是由所述共享上下文对象通过像素缓冲对象方式(PBO,Pixel Buffer Object)从内存传输至所述纹理缓冲区,PBO传输可以使用DMA(Direct Memory Access,直接内存访问)传输,在此通过PBO传输视频帧数据可以减少CPU执行时间。当然所述视频帧数据也可以通过除PBO方式以外的其他方式进行传输,本发明实施例并不以此为限。
在上述方案中,通过创建具有主上下文对象和当前屏幕渲染表面的视频播放窗口,并创建子线程且为子线程创建子上下文对象,以及创建其格式与主上下文对象所对应的当前屏幕渲染表面格式匹配的离屏渲染表面,并将离屏渲染表面与至少一个子上下文对象相关联,以及将所述至少一个子上下文对象与主上下对象关联而成为主上下文的共享子上下文对象,这样一来,共享上下文对象负责传输视频帧数据至显存内的纹理缓冲区,而主线程只需利用主上下文对象负责访问并绘制显示,本发明实施例中的视频帧数据上传至显存这一耗时过程由子线程执行,主线程执行绘制的时间大大减少,从而用户交互的时间增多,从而避免了现有技术中主线程需要将视频帧数据传输至显存的纹理缓冲区而造成主线程阻塞的问题。再者,通过上述方案主上下文对象、子线程以及子上下文对象的灵活关联关系,可以实现多个视频帧数据分别在不同子线程通过不同的子上下文对象同时从内存上传至显存,实现真正意义上的异步传输。
承上述,在所述视频播放软件控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口之前,视频播放软件还可以执行如下操作:在所述主线程创建第二视频播放窗口,其中所述第二视频播放窗口具有第二主上下文对象和第二当前屏幕渲染表面;创建第二离屏渲染表面,并将所述第二离屏渲染表面与所述共享上下文对象关联,其中所述第二离屏渲染表面的格式与所述第二当前屏幕渲染表面的格式匹配;将所述共享上下文对象与所述第二主上下文对象关联;控制所述主线程利用所述第二主上下文对象访问所述显存内的所述纹理缓冲区中的所述视频帧数据、并绘制显示在所述第二视频播放窗口。在此技术方案中,通过创建两个视频播放窗口,并将这两个视频播放窗口对应的第一主上下文对象和第二主上下文对象均与共享上下文对象(即,上述至少一个上下文对象)相关联,从而实现了第一主上下文对象和第二主上下文对象均可以访问由共享上下文对象上传至纹理缓冲区中的视频帧数据,从而实现了将相同的视频帧数据同时绘制至视频播放窗口和第二视频播放窗口。
需要说明的是,主上下文对象和子上下文对象的关联方式可以是一个主上下文对象与一个子上下文对象关联,或者一个主上下文对象与多个子上下文关联,为了便于理解,下面参考图3进行具体阐述。如图3所示,GUI线程下具有主上下文对象A、主上下文对象B、主上下文对象C和主上下文对象D。存在4个子线程,即,子线程1、子线程2、子线程3和子线程4,其分别对应有子上下文对象a、子上下文对象b、子上下文对象c和子上下文对象d。通过视频播放软件设置主上下文对象A与子上下文对象a关联、主上下文对象B与子上下文对象a关联、主上下文对象C与子上下文对象b和子上下文对象c关联,以及主上下文对象D与子上下文对象d关联,使得:主上下文对象A可以访问通过子上下文对象a从内存上传至显存的纹理缓冲区的视频帧从而对其进行渲染显示;主上下文对象B可以访问通过子上下文对象a从内存上传至显存的纹理缓冲区的视频帧从而对其进行渲染显示;主上下文对象C可以访问通过子上下文对象b和子上下文对象c从内存上传至显存的纹理缓冲区的视频帧从而对其进行渲染显示,这样实现了主上下文对象C对应的一个窗口可以用于呈现多个视频画面。主上下文对象D可以访问通过子上下文对象d从内存上传至显存的纹理缓冲区的视频帧从而对其进行渲染显示。在此,不再枚举主上下文对象与子上下文对象关联的其他示例,只要主上下文对象和子上下文对象通过关联使得子上下文对象成为主上下文对象的共享上下文对象,那么主上下文对象就可以访问与其对应的共享上下文对象上传至纹理缓冲区的视频帧数据。
另外,尽管上述说明均是以一个子线程对应有一个子上下文对象的情况为例,但是一个子线程对应有多个子上下文对象的情况也在本发明实施例的保护范围之内。
【第二实施例】
如图3所示,本发明第二实施例提供了一种视频播放装置200。视频播放装置200例如包括窗口创建模块202、子线程创建模块204、渲染表面创建模块206、上下文对象关联模块208以及访问绘制模块210。
具体地,窗口创建模块202用于在主线程创建视频播放窗口,其中所述视频播放窗口具有主上下文对象和当前屏幕渲染表面。
子线程创建模块204用于创建M个子线程、并为所述M个子线程创建N个子上下文对象,其中M、N分别为正整数,且N大于等于M。
渲染表面创建模块206用于创建离屏渲染表面,并将所述离屏渲染表面与所述N个子上下文对象中的至少一个子上下文对象关联,其中所述离屏渲染表面的格式与所述当前屏幕渲染表面的格式匹配。
上下文对象关联模块208用于将所述至少一个子上下文对象与所述主上下文对象关联,以使所述至少一个子上下文对象作为所述主上下文对象的共享上下文对象。
访问绘制模块210用于控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口,其中所述视频帧数据是由所述共享上下文对象传输至所述纹理缓冲区。
在本发明的一个具体实施方式中,所述共享上下文对象包括所述M个子线程中同一个子线程的多个子上下文对象,其中所述多个子上下文对象用于分别传输多个视频源的视频帧数据至所述纹理缓冲区。
在本发明的一个具体实施方式中,所述共享上下文对象包括所述M个子线程中的多个子线程的子上下文对象。
在本发明的一个具体实施方式中,所述窗口创建模块202还用于在主线程创建第二视频播放窗口,其中所述第二视频播放窗口具有第二主上下文对象和第二当前屏幕渲染表面;所述渲染表面创建模块206还用于创建第二离屏渲染表面,并将所述第二离屏渲染表面与所述共享上下文对象关联,其中所述第二离屏渲染表面的格式与所述第二当前屏幕渲染表面的格式匹配;所述上下文对象关联模块还用于208将所述共享上下文对象与所述第二主上下文对象关联;所述访问绘制模块还用于210控制所述主线程利用所述第二主上下文对象访问所述显存内的所述纹理缓冲区中的所述视频帧数据、并绘制显示在所述第二视频播放窗口。
本实施例中的视频播放装置200中的各模块之间的具体工作过程和技术效果参见前述第一实施例的相关步骤描述,在此不再赘述。
【第三实施例】
如图4所示,本发明第三实施例提供一种视频播放系统300。视频播放系统300例如包括处理器330和与处理器330连接的存储器310。存储器310可例如为非易失性存储器,其上存储有处理器330执行的指令311。处理器330可例如包括嵌入式处理器。处理器330执行指令311时执行前述第一实施例提供的视频播放方法。
【第四实施例】
如图5所示,本发明第四实施例提供一种计算机可读存储介质400,存储有计算机可执行指令410。计算机可执行指令410用于执行如前述第一实施例的视频播放方法。计算机可读存储介质400例如为非易失性存储器,如包括:磁介质(如硬盘、软盘和磁带),光介质(如CDROM盘和DVD),磁光介质(如光盘)以及专门构造为用于存储和执行计算机可执行指令的硬件装置(如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。计算机可读存储介质400可由一个或多个处理器或处理装置来执行计算机可执行指令410。
此外,可以理解的是,前述各个实施例仅为本发明的示例性说明,在技术特征不冲突、结构不矛盾、不违背本发明的发明目的前提下,各个实施例的技术方案可以任意组合、搭配使用。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多路单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多路网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元/模块可以集成在一个处理单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一个单元/模块中。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用硬件加软件功能单元/模块的形式实现。
上述以软件功能单元/模块的形式实现的集成的单元/模块,可以存储在一个计算机可读取介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)的一个或多个处理器执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种视频播放方法,其特征在于,包括:
在主线程创建视频播放窗口,其中所述视频播放窗口具有主上下文对象和当前屏幕渲染表面;
创建M个子线程、并为所述M个子线程创建N个子上下文对象,其中M、N分别为正整数,且N大于等于M;
创建离屏渲染表面,并将所述离屏渲染表面与所述N个子上下文对象中的至少一个子上下文对象关联,其中所述离屏渲染表面的格式与所述当前屏幕渲染表面的格式匹配;
将所述至少一个子上下文对象与所述主上下文对象关联,以使所述至少一个子上下文对象作为所述主上下文对象的共享上下文对象;
控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口,其中所述视频帧数据是由所述共享上下文对象传输至所述纹理缓冲区。
2.根据权利要求1所述的视频播放方法,其特征在于,所述共享上下文对象包括所述M个子线程中同一个子线程的多个子上下文对象,其中所述多个子上下文对象用于分别传输多个视频源的视频帧数据至所述纹理缓冲区。
3.根据权利要求1所述的视频播放方法,其特征在于,所述共享上下文对象包括所述M个子线程中的多个子线程的子上下文对象。
4.根据权利要求1所述的视频播放方法,其特征在于,还包括:在所述控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口之前,
在所述主线程创建第二视频播放窗口,其中所述第二视频播放窗口具有第二主上下文对象和第二当前屏幕渲染表面;
创建第二离屏渲染表面,并将所述第二离屏渲染表面与所述共享上下文对象关联,其中所述第二离屏渲染表面的格式与所述第二当前屏幕渲染表面的格式匹配;
将所述共享上下文对象与所述第二主上下文对象关联;
控制所述主线程利用所述第二主上下文对象访问所述显存内的所述纹理缓冲区中的所述视频帧数据、并绘制显示在所述第二视频播放窗口。
5.根据权利要求1至4任意一项所述的视频播放方法,其特征在于,所述视频帧数据是由所述共享上下文对象通过像素缓冲对象方式传输至所述纹理缓冲区,所述N个子上下文对象分别为开放图形库上下文对象。
6.一种视频播放装置,其特征在于,包括:
窗口创建模块,用于在主线程创建视频播放窗口,其中所述视频播放窗口具有主上下文对象和当前屏幕渲染表面;
子线程创建模块,用于创建M个子线程、并为所述M个子线程创建N个子上下文对象,其中M、N分别为正整数,且N大于等于M;
渲染表面创建模块,用于创建离屏渲染表面,并将所述离屏渲染表面与所述N个子上下文对象中的至少一个子上下文对象关联,其中所述离屏渲染表面的格式与所述当前屏幕渲染表面的格式匹配;
上下文对象关联模块,用于将所述至少一个子上下文对象与所述主上下文对象关联,以使所述至少一个子上下文对象作为所述主上下文对象的共享上下文对象;
访问绘制模块,用于控制所述主线程利用所述主上下文对象访问显存内的纹理缓冲区中的视频帧数据、并绘制显示在所述视频播放窗口,其中所述视频帧数据是由所述共享上下文对象传输至所述纹理缓冲区。
7.根据权利要求6所述的视频播放装置,其特征在于,所述共享上下文对象包括所述M个子线程中同一个子线程的多个子上下文对象,其中所述多个子上下文对象用于分别传输多个视频源的视频帧数据至所述纹理缓冲区。
8.根据权利要求6所述的视频播放装置,其特征在于,所述共享上下文对象包括所述M个子线程中的多个子线程的子上下文对象。
9.根据权利要求6所述的视频播放装置,其特征在于,
所述窗口创建模块还用于:在主线程创建第二视频播放窗口,其中所述第二视频播放窗口具有第二主上下文对象和第二当前屏幕渲染表面;
所述渲染表面创建模块还用于:创建第二离屏渲染表面,并将所述第二离屏渲染表面与所述共享上下文对象关联,其中所述第二离屏渲染表面的格式与所述第二当前屏幕渲染表面的格式匹配;
所述上下文对象关联模块还用于:将所述共享上下文对象与所述第二主上下文对象关联;
所述访问绘制模块还用于:控制所述主线程利用所述第二主上下文对象访问所述显存内的所述纹理缓冲区中的所述视频帧数据、并绘制显示在所述第二视频播放窗口。
10.一种视频播放系统,其特征在于,包括:处理器和连接所述处理器的存储器;其中所述存储器存储有所述处理器执行的指令,且所述指令使得所述处理器执行操作以进行如权利要求1至5任意一项所述的视频播放方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911302738.2A CN113079408B (zh) | 2019-12-17 | 2019-12-17 | 视频播放方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911302738.2A CN113079408B (zh) | 2019-12-17 | 2019-12-17 | 视频播放方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113079408A CN113079408A (zh) | 2021-07-06 |
CN113079408B true CN113079408B (zh) | 2022-11-18 |
Family
ID=76608291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911302738.2A Active CN113079408B (zh) | 2019-12-17 | 2019-12-17 | 视频播放方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113079408B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791851B (zh) * | 2021-08-13 | 2022-11-04 | 中国航空无线电电子研究所 | 一种适用于机载图形显示的多窗口管理方法 |
CN115361583B (zh) * | 2022-08-10 | 2024-05-17 | 吉林动画学院 | 针对APP与Unity实时渲染视频帧纹理的方法 |
CN116661790B (zh) * | 2023-08-01 | 2023-12-22 | 腾讯科技(深圳)有限公司 | 跨平台渲染方法、装置以及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917237A (zh) * | 2012-06-21 | 2013-02-06 | 深圳市茁壮网络股份有限公司 | 一种3d视频播放方法、装置和系统 |
CN103336816A (zh) * | 2013-06-28 | 2013-10-02 | 广州市动景计算机科技有限公司 | 安卓系统上基于GPU实现的Canvas元素渲染方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090248476A1 (en) * | 2008-03-27 | 2009-10-01 | Mitel Networks Corporation | Method, system and apparatus for controlling an application |
US8634695B2 (en) * | 2010-10-27 | 2014-01-21 | Microsoft Corporation | Shared surface hardware-sensitive composited video |
CN105761200A (zh) * | 2016-03-15 | 2016-07-13 | 广州爱九游信息技术有限公司 | 用于纹理处理的方法、设备、模拟器和电子设备 |
CN109064538B (zh) * | 2018-08-01 | 2023-05-12 | Oppo广东移动通信有限公司 | 视图渲染方法、装置、存储介质及智能终端 |
-
2019
- 2019-12-17 CN CN201911302738.2A patent/CN113079408B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917237A (zh) * | 2012-06-21 | 2013-02-06 | 深圳市茁壮网络股份有限公司 | 一种3d视频播放方法、装置和系统 |
CN103336816A (zh) * | 2013-06-28 | 2013-10-02 | 广州市动景计算机科技有限公司 | 安卓系统上基于GPU实现的Canvas元素渲染方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113079408A (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113079408B (zh) | 视频播放方法、装置和系统 | |
CN109600666B (zh) | 游戏场景中的视频播放方法、装置、介质以及电子设备 | |
US20240005591A1 (en) | Method and system for rendering panoramic video | |
US7667704B2 (en) | System for efficient remote projection of rich interactive user interfaces | |
US11902613B2 (en) | Video transparent playing processing method, intelligent television, and storage medium | |
US8264489B2 (en) | Interface remoting | |
JP2014160469A (ja) | グラフィックコンテンツの外部ディスプレイへのミラーリング | |
US10672362B2 (en) | Systems and methods for digital content creation and rendering | |
CN111432262B (zh) | 页面视频渲染方法及装置 | |
CN113473226B (zh) | 提高视频渲染效率的方法、装置、计算机设备及存储介质 | |
CN112804410A (zh) | 多显示屏同步显示方法及装置、视频处理设备和存储介质 | |
US20240292009A1 (en) | Method and apparatus for processing video compression, and medium | |
CN112307403B (zh) | 页面渲染方法、装置、存储介质以及终端 | |
CN111586489A (zh) | 弹幕渲染方法、装置、计算机设备及存储介质 | |
CN104811785A (zh) | 智能终端的显示图形用户界面的控制方法及装置 | |
CN110401866B (zh) | 直播视频的显示方法、装置、终端和存储介质 | |
CN116821040B (zh) | 基于gpu直接存储器访问的显示加速方法、装置及介质 | |
CN112700519A (zh) | 动画展示方法、装置、电子设备及计算机可读存储介质 | |
CN111679738A (zh) | 一种屏幕切换方法、装置、电子设备及存储介质 | |
CN113365150B (zh) | 视频处理方法和视频处理装置 | |
CN112565869B (zh) | 一种视频重定向的窗口融合方法、装置及设备 | |
CN117609646A (zh) | 场景渲染方法、装置、电子设备及存储介质 | |
CN112929682B (zh) | 对图像背景进行透明处理的方法、装置、系统及电子设备 | |
CN110719493A (zh) | 弹幕显示方法、装置、电子设备及可读存储介质 | |
CN115705668A (zh) | 一种视图绘制的方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |