CN110930480B - 液晶仪表的开机动画视频直接渲染方法 - Google Patents
液晶仪表的开机动画视频直接渲染方法 Download PDFInfo
- Publication number
- CN110930480B CN110930480B CN201911208071.XA CN201911208071A CN110930480B CN 110930480 B CN110930480 B CN 110930480B CN 201911208071 A CN201911208071 A CN 201911208071A CN 110930480 B CN110930480 B CN 110930480B
- Authority
- CN
- China
- Prior art keywords
- video file
- video
- memory
- frame
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明的液晶仪表的开机动画视频直接渲染方法涉及一种视频渲染方法,目的是为了克服现有液晶仪表开机动画播放无法对播放画面进行二次处理,以及占用大量资源的问题,方法如下:步骤一、将视频文件转换为YUV格式;步骤二、通过读取线程将视频文件读取到内存中,并通过渲染线程将读取到内存中的视频数据绑定到纹理并进行画面渲染;步骤三、生成一张的空OpenGL材质;步骤四、将内存中的视频文件通过内存直接存取DMA传输到GPU显存,并对视频文件进行解析,逐帧刷新视频文件,令GPU将视频文件直接渲染到OpenGL材质上;每次刷新时,视频文件偏移一帧,直至偏移量超过视频文件大小,视频文件播放完毕。
Description
技术领域
本发明涉及一种视频渲染方法,具体涉及用于液晶仪表基于OpenGL的视频渲染方法。
背景技术
随着全液晶仪表开机动画越来越复杂,通过仪表软件可以实现的动画效果,已经无法满足用户需求。为了解决这一问题,一般有两种方式。一种通过PC机进行动画的制作,然后转换成视频文件,通过播放视频的方式来显示开机动画。但此种方式具有一定的局限性,视频解码器需要一定的初始化时间影响开机速度,同时视频播放程序一般是一套单独的程序,而主应用程序一般采用OpenGL编写,两者不容易嵌套在一起,且无法在运行时对播放视频画面进行二次处理。另一种方式是把视频转换成逐帧的图片,通过OpenGL以序列帧的方式更新图片,从而达到播放视频的效果。此种方式虽然解决了二次编辑的问题,但是该方式无法直接修改材质内容,每次更新画面,都要重新生成材质,并将像素数据传输到GPU显存,耗时较长,且无法通过DMA(直接内存存取)的方式传输,从内存传输到GPU显存时,需要CPU进行干预,占用大量资源。
发明内容
本发明的目的是为了克服现有液晶仪表开机动画播放无法对播放画面进行二次处理,以及占用大量资源的问题,提供了一种液晶仪表的开机动画视频直接渲染方法。
本发明的液晶仪表的开机动画视频直接渲染方法,方法步骤如下:
步骤一、将视频文件转换为YUV格式;
步骤二、以预读取的方式,通过读取线程将视频文件读取到内存中,并通过渲染线程将读取到内存中的视频数据绑定到纹理并进行画面渲染;
步骤三、生成一张的空OpenGL材质,OpenGL材质大小与显示屏分辨率相同;
步骤四、将内存中的视频文件通过内存直接存取DMA传输到GPU显存,并对视频文件进行解析,逐帧刷新视频文件,令GPU将视频文件直接渲染到OpenGL材质上;每次刷新时,视频文件偏移一帧,直至偏移量超过视频文件大小,视频文件播放完毕。
本发明的有益效果是:本发明采用直接将开机动画视频渲染到OpenGL材质的方法,减少了开机程序初始化的时间,同时渲染的视频动画,可以进行二次处理,叠加其他效果,相关代码更容易嵌入到主程序中,使用也更加方便灵活;并且采用DMA方式传输,节省了CPU资源,相比于序列帧的方式占用资源更小,耗时更少,效率更高。
附图说明
图1为本发明的液晶仪表的开机动画视频直接渲染方法的流程图;
图2为图1中步骤二的原理示意图。
具体实施方式
具体实施方式一,如图1所示,本实施方式的液晶仪表的开机动画视频直接渲染方法,方法步骤如下:
步骤一、将视频文件转换为YUV格式;
步骤二、以预读取的方式,通过读取线程将视频文件读取到内存中,并通过渲染线程将读取到内存中的视频数据绑定到纹理并进行画面渲染;
步骤三、生成一张的空OpenGL材质,OpenGL材质大小与显示屏分辨率相同;
步骤四、将内存中的视频文件通过内存直接存取DMA传输到GPU显存,并对视频文件进行解析,逐帧刷新视频文件,令GPU将视频文件直接渲染到OpenGL材质上;每次刷新时,视频文件偏移一帧,直至偏移量超过视频文件大小,视频文件播放完毕。
具体地,传统播放视频的方法需要先初始化视频解码器,将需要播放的视频文件预读到内存缓冲区,解码视频,显示出画面,视频播放完成后切换到主应用程序,通过OpengGL对应用程序画面进行渲染。播放序列帧的方法,每次显示画面,需要重新生成材质,传输像素点数据,耗时较长,且占用CPU资源,对于高分辨率设备,其性能无法满足需求,只能降低分辨率,通过牺牲清晰度的方式来实现开机动画的播放。
本发明的方法直接将视频文件通过DMA传输到GPU显存中,通过直接修改OpenGL材质内容更新显示画面,从而达到视频播放的效果。并且视频文件采用YUV格式,相比于RGB格式的数据,YUV格式占用空间更小,更适用于高分辨率视频的播放。
首先,将视频文件读取到内存中采取预读取的方式,即先读取一部分文件,随着视频播放,再逐步读取后续文件。
接着,生成一张全屏幕大小的材质,采用EGL扩展GL_VIV_direct_texture对材质的长宽,YUV格式进行设置,并将内存中的数据映射到显存,以供DMA传输使用。根据YUV格式对视频文件进行解析,每次刷新时,偏移一帧大小,偏移量超过文件大小时代表视频播放完毕。更新完每帧数据后,将该材质标记成Dirty状态,以通知GPU对材质数据进行更新。每次传输的数据直接渲染到开始生成的材质上,每帧画面不重新生成材质,而是通过修改最开始生成的材质数据,将画面直接渲染到屏幕上。
最佳实施例,本实施例是对实施方式一的进一步说明,本实施例中,步骤二具体包括:
步骤二一、在视频文件播放前,读取线程逐帧读取部分视频文件至内存;
步骤二二、在视频文件播放时,读取线程逐帧读取后续视频文件至内存,且渲染线程对已读取到内存中的视频数据逐帧进行纹理绑定和画面渲染。
具体地,如图2所示,将视频文件读取与视频文件渲染的操作分离,二者采用两个不同的线程进行,以充分利用多核CPU性能。其中读取线程进行文件读取,在读取完一帧完整数据后,置位读取完成标志位。渲染线程进行纹理绑定与画面渲染,但发现要显示的帧未读取完成,则进行等待,直到读取线程读取完该帧数据。采取预读取的方式可以节约读取时间,减少开机画面显示前的黑屏时间。
最佳实施例,本实施例是对实施方式一的进一步说明,本实施例中,步骤三中,采用EGL扩展GL_VIV_direct_texture对OpenGL材质的长、宽,以及YUV格式进行设置。
具体地,EGL是OpenGL ES和原生窗口系统之间的接口。
最佳实施例,本实施例是对实施方式一的进一步说明,本实施例中,YUV格式I420格式。
具体地,YUV根据不同的采样方式分为UV4:4:4、YUV4:2:2、YUV4:2:0、YUV4:1:1等存储格式,为了降低空间占用,采用YUV4:2:0的格式,4个Y采样,对应2个U采样或者2个V采样,平均每个像素占用空间为8+4+0=12位,相比于原始RGB数据8+8+8=24的空间占用仅为前者的一半,节省了存储空间。YUV4:2:0根据UV排列顺序不同,又分为I420,YV12,NV12,NV21等格式。
以I420格式为例,假设屏幕分辨率为WxH,文件按照YVU的顺序存储,Y信号分量占用W*H个字节,接下来为V信号分量占用W*H/4个字节,最后是U信号分量同样占用W*H/4个字节,每帧大小为W*H+W*H/4+W*H*4=3/2*W*H。
Claims (3)
1.液晶仪表的开机动画视频直接渲染方法,其特征在于,所述方法步骤如下:
步骤一、将视频文件转换为YUV格式;
步骤二、以预读取的方式,通过读取线程将视频文件读取到内存中,并通过渲染线程将读取到内存中的视频数据绑定到纹理并进行画面渲染;
所述步骤二具体包括:
步骤二一、在视频文件播放前,读取线程逐帧读取部分视频文件至内存;
步骤二二、在视频文件播放时,读取线程逐帧读取后续视频文件至内存,且渲染线程对已读取到内存中的视频数据逐帧进行纹理绑定和画面渲染;
步骤三、生成一张的空OpenGL材质,所述OpenGL材质大小与显示屏分辨率相同;
步骤四、将内存中的视频文件通过内存直接存取DMA传输到GPU显存,并对视频文件进行解析,逐帧刷新视频文件,令GPU将视频文件直接渲染到所述OpenGL材质上;每次刷新时,视频文件偏移一帧,直至偏移量超过视频文件大小,所述视频文件播放完毕。
2.根据权利要求1所述的液晶仪表的开机动画视频直接渲染方法,其特征在于,步骤三中,采用EGL扩展GL_VIV_direct_texture对OpenGL材质的长、宽,以及YUV格式进行设置。
3.根据权利要求2所述的液晶仪表的开机动画视频直接渲染方法,其特征在于,所述YUV格式I420格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911208071.XA CN110930480B (zh) | 2019-11-30 | 2019-11-30 | 液晶仪表的开机动画视频直接渲染方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911208071.XA CN110930480B (zh) | 2019-11-30 | 2019-11-30 | 液晶仪表的开机动画视频直接渲染方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110930480A CN110930480A (zh) | 2020-03-27 |
CN110930480B true CN110930480B (zh) | 2023-07-21 |
Family
ID=69847066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911208071.XA Active CN110930480B (zh) | 2019-11-30 | 2019-11-30 | 液晶仪表的开机动画视频直接渲染方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110930480B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106570938A (zh) * | 2016-10-21 | 2017-04-19 | 哈尔滨工业大学深圳研究生院 | 基于opengl 的全景监控方法及系统 |
CN109961404A (zh) * | 2017-12-25 | 2019-07-02 | 沈阳灵景智能科技有限公司 | 一种基于gpu并行计算的高清视频图像增强方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170186243A1 (en) * | 2015-12-28 | 2017-06-29 | Le Holdings (Beijing) Co., Ltd. | Video Image Processing Method and Electronic Device Based on the Virtual Reality |
US10559112B2 (en) * | 2016-03-11 | 2020-02-11 | Intel Corporation | Hybrid mechanism for efficient rendering of graphics images in computing environments |
CN105828182A (zh) * | 2016-05-13 | 2016-08-03 | 北京思特奇信息技术股份有限公司 | 一种基于OpenGL渲染实时视频的方法及系统 |
CN105933724A (zh) * | 2016-05-23 | 2016-09-07 | 福建星网视易信息系统有限公司 | 视频制作方法、装置及系统 |
CN107277616A (zh) * | 2017-07-21 | 2017-10-20 | 广州爱拍网络科技有限公司 | 视频特效渲染方法、装置及终端 |
CN107770618B (zh) * | 2017-11-02 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 一种图像处理方法、装置及存储介质 |
CN109194960B (zh) * | 2018-11-13 | 2020-12-18 | 北京奇艺世纪科技有限公司 | 一种图像帧渲染方法、装置及电子设备 |
CN110213657B (zh) * | 2019-06-12 | 2021-07-27 | 海信视像科技股份有限公司 | 一种开机方法及智能电视 |
-
2019
- 2019-11-30 CN CN201911208071.XA patent/CN110930480B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106570938A (zh) * | 2016-10-21 | 2017-04-19 | 哈尔滨工业大学深圳研究生院 | 基于opengl 的全景监控方法及系统 |
CN109961404A (zh) * | 2017-12-25 | 2019-07-02 | 沈阳灵景智能科技有限公司 | 一种基于gpu并行计算的高清视频图像增强方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110930480A (zh) | 2020-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109600666B (zh) | 游戏场景中的视频播放方法、装置、介质以及电子设备 | |
US6208333B1 (en) | Image processing system including image data compression | |
CN101340587A (zh) | 编码输入图像的方法以及播放已编码图像的方法及装置 | |
US10440360B2 (en) | Video processing system | |
US9449585B2 (en) | Systems and methods for compositing a display image from display planes using enhanced blending hardware | |
CN110738975A (zh) | 一种全液晶仪表快速显示开机动画的方法 | |
CN116406504A (zh) | 用于使用多个帧的基于直方图且自适应的色调映射的方法和装置 | |
US7580041B1 (en) | Direct storage of compressed scan converted data | |
US20180129419A1 (en) | Updating data stored in a memory | |
KR102194615B1 (ko) | 그래픽 애플리케이션을 위한 타일 기반 압축 및 압축 해제 | |
JP2009129448A (ja) | データ処理装置、データ処理方法およびデータ処理システム | |
CN112991412B (zh) | 一种液晶仪表序列帧动画性能优化方法及液晶仪表 | |
KR20170113011A (ko) | 슬라이스 업데이트 맵을 이용하는 장치 및 방법 | |
CN110930480B (zh) | 液晶仪表的开机动画视频直接渲染方法 | |
US20050212969A1 (en) | Apparatus and method of image display with real-time compression | |
CN115396674B (zh) | 用于处理至少一个图像帧的方法、装置、介质及计算装置 | |
CN106959897A (zh) | 一种基于Unity3D图像渲染的优化方法及系统 | |
KR100852958B1 (ko) | 서브픽셀 렌더링과 데이터 압축을 이용한 디스플레이드라이버 장치 및 그 제어방법 | |
CN113052748B (zh) | 图形处理器以及视频解码显示方法 | |
CN111541901B (zh) | 图片解码的方法和装置 | |
CN116700943A (zh) | 一种视频播放系统、方法以及电子设备 | |
US11503310B2 (en) | Method and apparatus for an HDR hardware processor inline to hardware encoder and decoder | |
US20060170708A1 (en) | Circuits for processing encoded image data using reduced external memory access and methods of operating the same | |
US8068179B2 (en) | On-screen display device with compressed data and display method thereof | |
CN115690239A (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 |