CN117971087A - 数据处理方法和相关装置 - Google Patents
数据处理方法和相关装置 Download PDFInfo
- Publication number
- CN117971087A CN117971087A CN202211318725.6A CN202211318725A CN117971087A CN 117971087 A CN117971087 A CN 117971087A CN 202211318725 A CN202211318725 A CN 202211318725A CN 117971087 A CN117971087 A CN 117971087A
- Authority
- CN
- China
- Prior art keywords
- frame
- thread
- rendering
- timestamp
- vsync
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 21
- 238000009877 rendering Methods 0.000 claims abstract description 179
- 238000000034 method Methods 0.000 claims abstract description 89
- 238000012545 processing Methods 0.000 claims description 61
- 230000015654 memory Effects 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 17
- 239000000523 sample Substances 0.000 claims 1
- 230000008569 process Effects 0.000 description 50
- 230000015572 biosynthetic process Effects 0.000 description 37
- 238000003786 synthesis reaction Methods 0.000 description 37
- 230000006870 function Effects 0.000 description 27
- 238000003780 insertion Methods 0.000 description 22
- 230000037431 insertion Effects 0.000 description 22
- 230000002194 synthesizing effect Effects 0.000 description 22
- 238000006073 displacement reaction Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 239000000203 mixture Substances 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 8
- 230000000903 blocking effect Effects 0.000 description 7
- 230000033001 locomotion Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 4
- 230000009191 jumping Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 238000009432 framing Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001502 supplementing effect Effects 0.000 description 2
- 238000001356 surgical procedure Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241000764238 Isis Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000001795 light effect Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04817—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
- G06F3/04883—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请实施例提供数据处理方法和相关装置,应用于终端技术领域。该方法包括:响应于滑动操作,获取滑动操作对应的输入事件;基于第一move事件绘制渲染第N帧,第一move事件是基于第一Vsync信号的时间戳从滑动操作对应的输入事件中提取得到的;显示第N帧;在第N帧的绘制渲染的时长大于Vsync周期的情况下,在第N帧绘制渲染完成之后,基于第二move事件绘制渲染第N+1帧,第二move事件是基于第一时间戳从滑动操作对应的输入事件中提取得到的,第一时间戳为第一Vsync信号的时间戳与Vsync周期之和;显示第N+1帧。这样,通过插帧的方式将由于绘制渲染超时导致的丢帧补回,增加显示的流畅性。
Description
技术领域
本申请涉及终端技术领域,尤其涉及数据处理方法和相关装置。
背景技术
目前,用户可以通过终端设备的显示屏查阅各类内容。当内容较多时,显示屏不能一次显示全部内容。终端设备可以响应于用户在显示屏上的滑动操作,控制所显示的内容进行跟手或不跟手的滑动以方便用户浏览相关内容。
终端设备的显示屏的界面显示通常需要经过绘制、渲染和合成等过程。示例性的,终端设备的界面绘制过程可以包括背景绘制、子视图的绘制、滚动条的绘制等过程。终端设备的界面合成过程可以包括顶点处理和像素处理等处理过程。
但是,当终端设备在绘制超时时,可能会出现显示卡顿、跳变等异常现象。
发明内容
本申请实施例提供一种数据处理方法和相关装置,应用于终端技术领域,在绘制渲染超时的场景中,通过插帧的方式将由于绘制渲染超时导致的丢帧补回,增加显示的流畅性。
第一方面,本申请实施例提出一种数据处理方法。该方法包括:终端设备响应于滑动操作,获取滑动操作对应的输入事件;终端设备基于第一move事件绘制渲染第N帧,第一move事件是基于第一Vsync信号的时间戳从滑动操作对应的输入事件中提取得到的;终端设备显示第N帧;在第N帧的绘制渲染的时长大于Vsync周期的情况下,终端设备在第N帧绘制渲染完成之后,基于第二move事件绘制渲染第N+1帧,第二move事件是基于第一时间戳从滑动操作对应的输入事件中提取得到的,第一时间戳为第一Vsync信号的时间戳与Vsync周期之和;终端设备显示第N+1帧。
这样,通过插帧的方式将由于绘制渲染超时导致的丢帧补回,增加显示的流畅性。
可选的,在第N帧的绘制渲染的时长大于Vsync周期的情况下,终端设备在第N帧绘制渲染完成之后,基于第二move事件绘制渲染第N+1帧,包括:第一时刻,终端设备的UI线程向终端设备的SF线程发送Vsync信号请求,第一时刻晚于第一Vsync信号的时间戳;在第一值大于Vsync周期的情况下,终端设备在第N帧绘制渲染完成之后基于第二move事件绘制渲染第N+1帧,第一值为第一时刻与第一Vsync信号的时间戳之差。
这样,通过Vsync信号请求的时间,对第N帧图像的绘制渲染时长进行判断,进而将由于Vsync信号请求晚导致的丢帧补回,增加显示的流畅性。
可选的,在第一值大于Vsync周期的情况下,终端设备在第N帧绘制完成之后基于第二move事件绘制渲染第N+1帧,包括:当第一值大于Vsync周期,终端设备的插帧模块向UI线程发送第一时间戳;UI线程基于第一时间戳从终端设备的输入线程中读取第二move事件;UI线程在第N帧绘制渲染完成之后,基于第二move事件绘制渲染第N+1帧。
这样,通过插帧模块确定第一时间戳,方便后续UI线程确定第二move事件,以及对第N+1帧的绘制渲染。
可选的,在第一值大于Vsync周期的情况下,终端设备在第N帧绘制完成时基于第二move事件绘制渲染第N+1帧,包括:当第一值大于Vsync周期,终端设备的插帧模块基于第一时刻从终端设备的输入线程中读取第二move事件;插帧模块向UI线程发送第二move事件;UI线程在第N帧绘制完成之后基于第二move事件绘制渲染第N+1帧。
这样,通过插帧模块确定第二move事件,方便后续UI线程对第N+1帧的绘制渲染。
可选的,方法还包括:终端设备基于第二Vsync信号的时间戳确定的输入事件为down事件,第二Vsync信号的时间戳早于第一Vsync信号的时间戳;终端设备基于第三move事件绘制渲染第M帧,第三move事件是基于第三Vsync信号的时间戳从滑动操作对应的输入事件中提取得到的,第三Vsync信号的时间戳晚于第二Vsync信号的时间戳一个Vsync周期,第三Vsync信号的时间戳早于或等于第一Vsync信号的时间戳;终端设备显示第M帧;终端设备在第M帧绘制完成之后开始绘制渲染插帧图像,插帧图像对应的坐标与第M帧对应的坐标之间的偏移量小于或等于第二值,第二值为第M帧对应的坐标与第M-1帧对应的坐标之间的偏移量;终端设备显示插帧图像。
这样,在滑动操作初始阶段,插入一帧进行绘制渲染,使得缓存队列中多缓存一帧,可以减少后续绘制渲染超时导致的无帧合成的情况,减少显示的卡顿,提升用户体验
可选的,当第M帧对应的坐标与第M-1帧对应的坐标之间的偏移量小于第一阈值时,插帧图像对应的坐标与第M帧对应的坐标之间的偏移量等于第二值;当第M帧对应的坐标与第M-1帧对应的坐标之间的偏移量大于或等于第一阈值时,第M帧对应的坐标与第M-1帧对应的坐标之间的偏移量等于第一阈值。
这样,取较小的偏移量进行插帧,可以减少插入的图像不符合滑动操作的规律,提升流畅性,提升用户体验。
可选的,终端设备在第M帧绘制完成之后开始绘制渲染插帧图像,包括:插帧模块基于down事件和第二move事件确定插帧图像对应的坐标与第M帧对应的坐标之间的偏移量;插帧模块向UI线程发送插帧图像对应的坐标与第M帧对应的坐标之间的偏移量;UI线程在第M帧绘制完成之后,基于插帧图像对应的坐标与第M帧对应的坐标之间的偏移量绘制渲染插帧图像。
这样,在相邻两个Vsync信号对应的输入事件分别为down事件和move事件时,插入一帧图像,使得缓存队列中多缓存一帧,可以减少后续绘制渲染超时导致的无帧合成的情况。
第二方面,本申请实施例提供一种终端设备,终端设备也可以称为终端(terminal)、用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等。终端设备可以是手机(mobile phone)、智能电视、穿戴式设备、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。
该终端设备包括:包括:处理器和存储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得终端设备执行如第一方面的方法。
第三方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序。计算机程序被处理器执行时实现如第一方面的方法。
第四方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括计算机程序,当计算机程序被运行时,使得计算机执行如第一方面的方法。
第五方面,本申请实施例提供了一种芯片,芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行如第一方面所述的方法。
应当理解的是,本申请的第二方面至第五方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的一种终端设备的硬件结构示意图;
图2为本申请实施例提供的一种终端设备的软件结构示意图;
图3为本申请实施例提供的一种终端设备的界面示意图;
图4为可能的设计中一种终端设备的界面显示处理的流程示意图;
图5为可能的设计中一种终端设备的界面显示处理的流程示意图;
图6为本申请实施例提供的一种数据处理方法的流程示意图;
图7为本申请实施例提供的一种终端设备的界面显示处理的流程示意图;
图8为本申请实施例提供的一种数据处理方法的流程示意图;
图9为本申请实施例提供的一种终端设备的界面显示处理的流程示意图;
图10为本申请实施例提供的一种终端设备的界面显示处理的流程示意图;
图11为本申请实施例提供的一种内部模块交互的流程示意图;
图12为本申请实施例提供的一种终端设备的界面显示处理的流程示意图;
图13为本申请实施例提供的一种数据处理装置的结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1、帧:是指界面显示中最小单位的单幅画面。一帧可以理解为一副静止的画面,快速连续地显示多个相连的帧可以形成物体运动的假象。帧率是指在1秒钟时间里刷新图片的帧数,也可以理解为终端设备中图形处理器每秒钟刷新画面的次数。高的帧率可以得到更流畅和更逼真的动画。每秒钟帧数越多,所显示的动作就会越流畅。
需要说明的是,界面显示帧前通常需要经过绘制、渲染、合成等过程。
2、帧绘制:是指显示界面的图片绘制。显示界面可以由一个或多个视图组成,各个视图可以由视图系统的可视控件绘制,各个视图由子视图组成,一个子视图对应视图中的一个小部件,例如,其中的一个子视图对应图片视图中的一个符号。
3、帧渲染:是将绘制后的视图进行着色操作或增加3D效果等。例如:3D效果可以是灯光效果、阴影效果和纹理效果等。
4、帧合成:是将多个上述一个或多个渲染后的视图合成为显示界面的过程。
5、垂直同步(vetical synchronization,Vsync)信号:用于控制帧的绘制渲染、合成、送显等进程起始的信号。
Vsync信号为周期性信号,Vsync信号周期可以根据屏幕刷新率进行设置,例如,屏幕刷新率为60Hz时,Vsync信号周期可以为16.6ms,即终端设备每间隔16.6ms生成一个控制信号使Vsync信号周期触发。为了保证显示的流畅性,避免出现显示卡顿等现象,终端设备一般基于Vsync信号进行显示,以对图像的绘制、渲染、合成和屏幕刷新显示等流程进行同步。Vsync信号包括软件Vsync(Vsync-APP或Vsync-SF)和硬件Vsync(Vsync-HW)。Vsync-APP用于触发绘制渲染流程。Vsync-SF用于触发合成流程。硬件Vsync信号(Vsync-HW)用于触发屏幕显示刷新流程。通常情况下,软件Vsync和硬件Vsync保持周期同步。以60Hz和120Hz变化为例,若Vsync-HW从60Hz切换到120Hz,Vsync-APP、Vsync-SF同步变化,从60Hz切换到120Hz。
6、其他术语
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a--c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
7、终端设备
本申请实施例的终端设备也可以为任意形式的电子设备,例如,电子设备可以包括具有图像处理功能的手持式设备、车载设备等。例如,一些电子设备为:手机(mobilephone)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。
作为示例而非限定,在本申请实施例中,该电子设备还可以是可穿戴设备。可穿戴设备也可以称为穿戴式智能设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
此外,在本申请实施例中,电子设备还可以是物联网(internet of things,IoT)系统中的终端设备,IoT是未来信息技术发展的重要组成部分,其主要技术特点是将物品通过通信技术与网络连接,从而实现人机互连,物物互连的智能化网络。
本申请实施例中的电子设备也可以称为:终端设备、用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置等。
在本申请实施例中,电子设备或各个网络设备包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。该硬件层包括中央处理器(centralprocessing unit,CPU)、内存管理单元(memory management unit,MMU)和内存(也称为主存)等硬件。该操作系统可以是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。
示例性的,图1示出了终端设备的结构示意图。
终端设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对终端设备的具体限定。在本申请另一些实施例中,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从上述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备的结构限定。在本申请另一些实施例中,终端设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
终端设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
终端设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备的各种功能应用以及数据处理。例如,可以执行本申请实施例的数据处理方法。
终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明终端设备的软件结构。
图2是本申请实施例的终端设备的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,可以将Android系统分为四层,分别为应用程序层(applications)、应用程序框架层(applicationframework)、安卓运行时(Android runtime)和系统库、以及内核层(kernel)。
应用层可以包括一系列应用程序包。应用程序层通过调用应用程序框架层所提供的应用程序接口(application programming interface,API)运行应用程序。如图2所示,应用程序包可以包括电话、邮箱、日历、相机等应用程序。
如图2所示,应用程序框架层可以包括窗口管理器、surface flinger(图像合成系统,SF线程)、视图系统、包管理器、输入管理器、活动管理器和资源管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
SF线程用于控制图像合成,以及产生垂直同步(vetical synchronization,Vsync)信号。
示例性的,SF线程包括:合成线程、Vsync线程、缓存队列(quene buffer)线程。合成线程用于被Vsync信号唤醒进行合成。Vsync线程用于根据Vsync信号请求生成下一个Vsync信号。缓存队列线程用于存放缓存、产生Vsync信号请求,以及唤醒合成线程等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
包管理器用于系统内的程序管理,例如:应用程序安装、卸载和升级等。
输入管理器用于管理输入设备的程序。例如,输入管理器可以确定鼠标点击操作、键盘输入操作和触摸滑动等输入操作。
活动管理器用于管理各个应用程序的生命周期以及导航回退功能。负责Android的主线程创建,各个应用程序的生命周期的维护。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用层和应用程序框架层运行在虚拟机中。虚拟机将应用层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:图像渲染库、图像合成库、函数库、媒体库和输入处理库等。
图像渲染库用于二维或三维图像的渲染。图像合成库用于二维或三维图像的合成。
可能的实现方式中,应用通过图像渲染库对图像进行绘制渲染,然后应用将绘制渲染后的图像发送至SF线程的缓存队列中。每当Vsync信号到来时,SF线程从缓存队列中按顺序获取待合成的一帧图像,然后通过图像合成库进行图像合成。
函数库提供C语言中所使用的宏、类型定义、字符串操作函数、数学计算函数以及输入输出函数等。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等。
输入处理库用于处理输入设备的库,可以实现鼠标、键盘和触摸输入处理等。
内核层是硬件和软件之间的层。内核层至少包含触控(touch panel,TP)驱动、显示驱动、蓝牙驱动、WIFI驱动、键盘驱动、共用存储器驱动和相机驱动等。
硬件可以是音频设备、蓝牙设备、相机设备、传感器设备等。
应理解,在一些实施例中,可以将实现相同功能的层称为其他名称,或者将能够实现多个层的功能的层作为一层,或者将能够实现多个层的功能的层划分为多层。本申请实施例对此不做限制。
下面结合应用程序启动或应用程序中发生界面切换的场景,示例性说明终端设备100软件以及硬件的工作流程。
当触控面板中触摸传感器180K接收到触摸操作时,内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸力度,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。内核层通过输入处理库将原始输入事件上报至应用程序框架层的输入管理器。应用程序框架层的输入管理器解析该原始输入事件的信息(包括:操作类型和报点位置等)和根据当前焦点确定焦点应用,并将解析后的信息发送至焦点应用。焦点可以是触摸操作中触碰点或者鼠标点击操作中点击位置。焦点应用为终端设备前台运行的应用或者触摸操作中触碰位置对应的应用。焦点应用根据解析后的原始输入事件的信息(例如,报点位置)确定该原始输入事件所对应的控件。
以该触摸操作是触摸滑动操作,该触摸滑动操作所对应的控件为微信应用的列表控件为例,微信应用通过应用程序框架层的视图系统,调用系统库中图像渲染库对图像进行绘制渲染。微信应用将绘制渲染后的图像发送至SF线程的缓存队列中。通过系统库中图像合成库将SF线程中绘制渲染后的图像合成为微信界面。SF线程通过内核层的显示驱动,使得屏幕(显示屏)显示微信应用的相应界面。
在目前的一些场景下,用户可以在终端设备的显示屏上进行滑动操作,响应于用户的滑动操作,终端设备可以控制所显示的内容进行跟手或不跟手的滑动。
示例性的,图3为本申请实施例提供的终端设备的界面示意图。如图3所示,终端设备可以显示如图3中的a所示的社交应用的界面、如图3中的b所示的设置相关界面、如图3中的c所示的文档界面、如图3中的d所示的商品浏览界面,在显示这些界面时,终端设备可以响应用户的上滑操作或下滑操作,以更新显示内容。终端设备还可以显示如图3中的e所示的界面、如图3中的f所示的电子书界面等界面。在显示这些界面时,终端设备可以响应用户的左滑操作或右滑动操作,以更新显示内容。当终端设备在显示图3所示的界面接收到用户的滑动操作时,终端设备可以基于滑动操作进行帧绘制、渲染、合成等过程,更新显示屏显示的内容。
可以理解的是,终端设备的显示屏的界面显示通常需要经过绘制、渲染和合成等过程。示例性的,终端设备的界面绘制过程可以包括背景绘制、子视图的绘制、滚动条的绘制等过程。终端设备的界面合成过程可以包括顶点处理和像素处理等处理过程。
但是,若终端设备在绘制渲染图像(帧)时超时(例如,超过一个Vsync周期),终端设备可能会出现显示卡顿、跳变等异常现象。
下面结合图4和图5对终端设备的界面显示处理流程进行说明。
示例性的,图4为可能的实现中一种终端设备界面显示处理流程的示意图。如图4所示,t1时刻至t7时刻表示终端设备基于滑动操作进行更新的图像顺序。t1时刻至t7时刻中,相邻两个时刻之间的时间间隔均为Vsync周期。每当Vsync信号到来时,UI线程开始绘制渲染图像、SF线程开始合成图像、显示驱动驱动显示屏刷新显示的图像。
具体的,以帧1的显示为例,若t1时刻,Vsync信号到来,终端设备的UI线程通过应用程序框架层的视图系统,对帧1进行绘制渲染。帧1绘制渲染完成后,终端设备的UI线程将绘制渲染好的帧1发送至SF线程。SF线程对绘制渲染好的帧1进行合成。帧1完成合成后,终端设备可以通过调用内核层启动显示驱动,在屏幕(显示屏)显示帧1对应的内容。帧2-帧7类似于帧1的过程也进行合成和显示,此处不再赘述。
需要说明的是,UI线程在绘制渲染图像时,会向SF线程发送Vsync信号请求,以请求下一个Vsync信号进行绘制渲染。SF线程设置发送Vsync信号的定时器。SF线程在计时器计时结束后,反馈Vsync信号至UI线程。
示例性的,UI线程在绘制渲染帧1时,会向SF线程发送Vsync信号请求以请求t2时刻对应的Vsync信号进行绘制渲染。SF线程在计时结束后,反馈t2时刻对应的Vsync信号至UI线程。
图4所示的显示处理过程中,帧1至帧7的绘制渲染均在1个Vsync周期完成,而在终端设备的实际应用中,可能会由于终端设备的系统负载大(中央处理器CPU占用和图形处理器GPU占用等)或网络差等多种原因,导致终端设备绘制渲染帧的时间增加,进而导致丢帧情况。此外,绘制渲染超时还可能使得终端设备在合成时无帧可取,导致显示出现卡顿,下面结合图5进行说明。
示例性的,图5为可能的实现中一种终端设备界面显示处理流程的示意图。如图5所示,t1时刻至t7时刻表示终端设备基于滑动操作进行更新的图像。t1时刻至t7时刻中,相邻两个时刻之间的时间间隔均为Vsync周期。
图5中当终端设备接收到用户滑动操作时,终端设备显示的内容依次对应于帧1、帧2、帧2、帧3、帧5,终端设备对图5中的帧1、帧2、帧3、帧5、帧6和帧7分别进行绘制渲染、合成和显示,具体可以参照图4对应的描述。
与图4不同的是,图5中帧3由于各种原因导致绘制渲染时间超过1个Vsync周期时间,例如,原因包括图形绘制的复杂或者系统负载受到下载数据等影响存在波动等。t4时刻,UI线程继续绘制渲染帧3,SF线程中没有待合成的图像,不进行合成,显示驱动驱动显示屏显示帧2;t5时刻,终端设备中的UI线程开始绘制渲染帧5,SF线程中开始合成帧3,显示驱动驱动显示屏显示帧2。t6时刻,终端设备中的UI线程开始绘制渲染帧6,SF线程中开始合成帧5,显示驱动驱动显示屏显示帧3。t7时刻,终端设备中的UI线程开始绘制渲染帧7,SF线程中开始合成帧6,显示驱动驱动显示屏显示帧5。
可以理解的是,图5所示的流程中,由于t4时刻帧3绘制渲染未完成,t4时刻SF线程中没有待合成的图像,不进行合成,进而帧3的显示时间延后至t6时刻,终端设备在t4时刻至t6时刻显示帧2。相比较于图4所示的流程,图5所示的流程中帧2的显示时间为两个Vsync周期,使得画面出现卡顿现象。
此外,图5所示的流程中,由于t4时刻帧3绘制渲染未完成,UI线程继续绘制渲染帧3,未进行帧4的绘制渲染,则后续不显示帧4,出现丢帧情况。
可能的设计中,UI线程在绘制渲染第N帧时,会调用scheduleVsyncLocked函数向SF线程发送Vsync信号请求,以请求下一个Vsync信号。但是,当第N帧绘制超时时,scheduleVsyncLocked函数调用较晚,使得UI线程由于没有SF线程的VSync信号而不绘制第N+1帧。
图5所示的流程中,帧3绘制渲染超时,UI线程在t3时刻至t4时刻期间未向SF线程发送Vsync信号请求,SF线程未向UI线程反馈t4时刻对应的Vsync信号。因此,终端设备不会绘制渲染帧4,导致丢帧。
从图4和图5中可以看出,当终端设备出现绘制渲染超时时,可能会出现SF线程无帧可取的情况,进而导致后续显示的卡顿。此外,当终端设备出现绘制渲染超时时,还可能会错过Vsync信号导致丢帧,进而画面出现跳变,用户体验差。
需要说明的是,在滑动操作的过程中(例如,不离手的滑动场景),通常不会出现连续多帧绘制渲染超时的情况。示例性的,以微信中朋友圈界面为例,当朋友圈中的广告或视频在第一次加载时,可能会引起绘制渲染超时。
有鉴于此,本申请实施例提供数据处理方法和相关装置,在开始滑动时,插入一帧绘制渲染并缓存在缓存队列中;在绘制超时时,插入一帧进行绘制渲染。这样,在开始滑动时,插入一帧绘制渲染并缓存在缓存队列中,从而减少绘制渲染时间长导致的无帧可取问题,减少卡顿现象。在绘制渲染超时时,插入一帧进行绘制渲染,减少由于错过Vsync信号导致的丢帧,减少滑动时的跳变现象。
下面通过具体的实施例对本申请实施例的数据处理方法进行详细说明。下面的实施例可以相互结合或独立实施,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图6为本申请实施例提供的一种数据处理方法的流程示意图。如图6所示,该方法包括:
S601、终端设备响应于滑动操作,获取滑动操作对应的输入事件。
可以理解的是,当终端设备接收到用户的滑动操作时,滑动操作对应的输入事件的类型为按压(down)、移动(move)和抬起(up)。一次滑动操作中可以包含一个按压事件、一个或多个移动事件,以及一个抬起事件。也可以理解为,滑动操作对应的输入事件包括:一个down事件、一个或多个move事件,以及一个up事件。
具体的,当终端设备接收到滑动操作时,终端设备的显示屏可以采集到滑动操作对应的输入事件,并将输入事件上报至输入线程以进行记录。
S602、终端设备基于第一move事件绘制渲染第N帧,第一move事件是基于第一Vsync信号的时间戳从滑动操作对应的输入事件中提取得到的。
本申请实施例中,第一Vsync信号可以为滑动操作中用户手指等移动时对应的任一个Vsync信号。第一move事件与第一Vsync信号相对应。
可以理解的是,当终端设备接收到滑动操作时,显示屏可以采集到滑动操作对应的输入事件,并将输入事件上报至输入线程。UI线程可以基于Vsync信号的时间戳从输入线程中读取到相应的输入事件,以进行绘制渲染,更新显示屏显示的内容。
本申请实施例中,UI线程在接收到Vsync信号后,基于Vsync信号的时间戳从输入线程记录的滑动操作对应的输入事件中读取,得到用于绘制图像的输入事件。
第一move事件可以为采集到滑动操作对应的输入事件,也可以为对采集到滑动操作对应的输入事件处理后生成的新的输入事件,本申请实施例对于输入线程对上报的输入事件的处理不做限定。
S603、终端设备显示第N帧。
S604、在第N帧的绘制渲染的时长大于Vsync周期的情况下,终端设备在第N帧绘制渲染完成之后,基于第二move事件绘制渲染第N+1帧。
本申请实施例中,第二move事件是基于第一时间戳从滑动操作对应的输入事件中提取得到的。第一时间戳晚于第一Vsync信号的时间戳,第一时间戳早于第N帧的绘制渲染结束后UI线程接收到的第一个Vsync信号的时间戳。
可选的,第一时间戳为第一Vsync信号的时间戳与Vsync周期之和。
这样,插入的图像对应的时间戳与第N帧图像对应的时间戳之差为一个Vsync周期,方便终端设备确定插入的图像信息,计算简单,易于实现。
示例性的,如图7所示,若在t4时刻至t5时刻之间,UI线程向SF线程发送Vsync信号请求。则第一值大于Vsync周期。终端设备在第3帧绘制渲染完成时,开始绘制渲染第4帧。这样,在绘制渲染超时时,插入一帧图像,减少由于Vsync信号请求晚导致的丢帧,增加显示的流畅性。
一些实施例中,通过Vsync信号请求的时间确定第N帧绘制渲染是否超时。可以理解的是,应用在一帧图像的绘制渲染时,会向SF线程发送Vsync信号请求以绘制渲染下一帧图像。因此,应用在接收到Vsync信号后的一个Vsync周期内未发送Vsync信号请求,可以确定此帧图像的绘制渲染的时长超过一个Vsync周期。
S605、终端设备显示第N+1帧。
综上,在绘制渲染超时后,通过插帧的方式将由于绘制渲染超时导致的丢帧补回,增加显示的流畅性。
可选的,在第N帧的绘制渲染的时长大于Vsync周期的情况下,终端设备在第N帧绘制渲染完成之后,基于第二move事件绘制渲染第N+1帧,包括:第一时刻,终端设备的UI线程向终端设备的SF线程发送Vsync信号请求,第一时刻晚于第一Vsync信号的时间戳;在第一值大于Vsync周期的情况下,终端设备在第N帧绘制渲染完成之后基于第二move事件绘制渲染第N+1帧,第一值为第一时刻与第一Vsync信号的时间戳之差。
示例性的,如图7所示,若第N帧为图7中的帧3,第一时刻可以为t4时刻至t5时刻之间的任一时刻。
可选的,在第一值大于Vsync周期的情况下,终端设备在第N帧绘制完成之后基于第二move事件绘制渲染第N+1帧,包括:在第一值大于Vsync周期的情况下,终端设备的插帧模块向UI线程发送第一时间戳;UI线程基于第一时间戳从终端设备的输入线程中读取第二move事件;UI线程在第N帧绘制渲染完成之后,基于第二move事件绘制渲染第N+1帧。
这样,UI线程基于第一时间戳读取到第二move事件,方便后续补回由于Vsync信号请求晚导致的丢帧。
可选的,在第一值大于Vsync周期的情况下,终端设备在第N帧绘制完成之后基于第二move事件绘制渲染第N+1帧,包括:当第一值大于Vsync周期,终端设备的插帧模块基于第一时刻从终端设备的输入线程中读取第二move事件;插帧模块向UI线程发送第二move事件;UI线程在第N帧绘制完成之后基于第二move事件绘制渲染第N+1帧。
这样,插帧模块基于第一时间戳读取到第二move事件,并将第二move事件发送至UI线程,以补回由于Vsync信号请求晚导致的丢帧。
下面结合图7对图6所示的数据处理方法进行说明。示例性的,图7为本申请实施例提供的一种终端设备界面显示处理流程的示意图。t1时刻至t7时刻表示图像更新的时间顺序。t1时刻至t7时刻中,相邻两个时刻之间的时间间隔为Vsync周期。
用户的手指在显示屏上进行滑动操作时,显示屏可以将滑动操作对应的输入事件上报至输入线程,以供应用中的UI线程读取进行图像绘制,进而更新图像。
如图7所示,t1时刻,UI线程接收到Vsync1信号,终端设备基于Vsync1信号的时间戳读取到move事件1,基于move事件1对应的坐标开始绘制渲染帧1。
t1时刻至t2时刻,UI线程完成帧1的绘制渲染,并将绘制渲染好的帧1发送至SF线程中的缓存队列中以等待合成。
t2时刻,UI线程接收到Vsync2信号,终端设备基于Vsync2信号的时间戳读取到move事件2,并基于move事件2对应的坐标开始绘制渲染帧2,SF线程开始合成绘制渲染好的帧1。
t2时刻至t3时刻,UI线程完成帧2的绘制渲染,并将绘制渲染好的帧2发送至SF线程中的缓存队列中以等待合成。
t3时刻,UI线程接收到Vsync3信号,终端设备基于Vsync3信号的时间戳读取到move事件3,并基于move事件3对应的坐标开始绘制渲染帧3,SF线程开始合成绘制渲染好的帧2,显示驱动驱动显示屏显示合成后的帧1。
t4时刻,UI线程继续绘制渲染帧3,缓存队列中没有待合成的帧,SF线程不进行合成,显示驱动驱动显示屏显示合成后的帧2。
由于帧3在t4时刻前未完成绘制且未请求下一VSync信号,使得错过Vsync4信号。终端设备通过插帧的方式插入帧4,在帧3绘制渲染结束时,开始绘制渲染帧4。
基于第一时间戳读取输入事件,基于读取到的move事件4绘制渲染帧4。第一时间戳晚于t3时刻,早于UI线程发送Vsync信号请求时间。
t4时刻至t5时刻,UI线程完成帧3和帧4的绘制渲染,并将绘制渲染好的帧3和绘制渲染好的帧4发送至SF线程中的缓存队列中以等待合成。
t5时刻,UI线程接收到Vsync5信号,终端设备基于Vsync5信号的时间戳读取到move事件5,并基于move事件5对应的坐标开始绘制渲染帧5,SF线程开始合成绘制渲染好的帧3,显示驱动驱动显示屏显示合成后的帧2。
t5时刻至t6时刻,UI线程完成帧5的绘制渲染,并将绘制渲染好的帧5发送至SF线程中的缓存队列中以等待合成。
t6时刻,UI线程接收到Vsync6信号,终端设备基于Vsync6信号的时间戳读取到move事件6,并基于move事件6对应的坐标开始绘制渲染帧6,SF线程开始合成绘制渲染好的帧4,显示驱动驱动显示屏显示合成后的帧3。
t6时刻至t7时刻,UI线程完成帧6的绘制渲染,并将绘制渲染好的帧6发送至SF线程中的缓存队列中以等待合成。
t7时刻,UI线程接收到Vsync7信号,终端设备基于Vsync7信号的时间戳读取到move事件7,并基于move事件7对应的坐标开始绘制渲染帧7,SF线程开始合成绘制渲染好的帧5,显示驱动驱动显示屏显示合成后的帧4。
t7时刻至t8时刻,UI线程完成帧7的绘制渲染,并将t3时刻帧7发送至SF线程中的缓存队列中以等待合成。
t8时刻,UI线程接收到Vsync7信号,SF线程开始合成帧6,显示驱动驱动显示屏显示帧5。相比较于图5所示的处理流程,图7所示的处理流程中在帧3绘制渲染超过一个Vsync周期时,通过补帧的方式插入帧4。在帧5显示前还显示有帧4,减少从帧3跳变到帧5显示的情况,增加显示的流畅性。
图8为本申请实施例提供的一种数据处理方法的流程示意图。如图8所示,该方法包括:
S801、终端设备基于第二Vsync信号的时间戳确定的输入事件为down事件。
S802、终端设备基于第三move事件绘制渲染第M帧,第三move事件是基于第三Vsync信号的时间戳得到的。
本申请实施例中,第三Vsync信号的时间戳晚于第二Vsync信号的时间戳一个Vsync周期,第三Vsync信号的时间戳早于或等于第一Vsync信号的时间戳。第三move事件也可以理解为终端设备读取到的滑动操作中的第一个move事件。
可以理解的是,当终端设备确认相邻两次Vsync信号对应的输入事件分别为down事件和move事件时,终端设备进行插帧。
S803、终端设备显示第M帧。
S804、终端设备在第M帧绘制完成时开始绘制渲染插帧图像。
本申请实施例中,插帧图像对应的坐标与第M帧对应的坐标之间的偏移量小于或等于第二值,第二值为第M帧对应的坐标与第M-1帧对应的坐标之间的偏移量。
插帧图像相对于第M帧的偏移量小于或等于第M帧相对于第M-1帧的偏移量,第M帧相对于第M-1帧的偏移量与第三move事件对应的坐标和down事件对应的坐标相关。
一些实施例中,偏移量也可以理解为位移量。示例性的,插帧图像的位移量为插帧图像对应的坐标与第M帧的对应的坐标之差。
可能的实现方式一中,插帧图像对应的坐标与第三move事件对应的坐标的差值等于第一阈值。
第一阈值可以为10像素(px),也可以为其他任意数值。本申请实施例对此不作限定。一些实施例中,第一阈值与用户使用习惯相关,终端设备可以基于之前用户多次滑动操作对应的位移值确定第一阈值。
这样,限制插入图像的偏移量,可以减少插入的图像不符合滑动操作的规律,提升流畅性,提升用户体验。
可能的实现方式二中,插帧图像对应的坐标与第三move事件对应的坐标的差值等于第一位移值,第一位移值为第三move事件对应的坐标与down事件对应的坐标的差值。
这样,限制插帧图像的偏移量与前一帧图像的偏移量相同,可以减少插入的图像不符合滑动操作的规律,提升流畅性,提升用户体验。
可能的实现方式三中,插帧图像对应的坐标与第三move事件对应的坐标的差值为第一阈值与第一位移值之间的最小值。
这样,取较小的偏移量进行插帧,可以减少插入的图像不符合滑动操作的规律,提升流畅性,提升用户体验。
S805、终端设备显示插帧图像。
综上,预先插入一帧进行绘制渲染,进而缓存队列中多缓存一帧,减少后续绘制渲染超时导致的无帧合成的情况,减少显示的卡顿,提升用户体验。
可选的,当第M帧对应的坐标与第M-1帧对应的坐标之间的偏移量小于第一阈值时,插帧图像对应的坐标与第M帧对应的坐标之间的偏移量等于第二值;当第M帧对应的坐标与第M-1帧对应的坐标之间的偏移量大于或等于第一阈值时,第M帧对应的坐标与第M-1帧对应的坐标之间的偏移量等于第一阈值。这样,取较小的偏移量进行插帧,可以减少插入的图像不符合滑动操作的规律,提升流畅性,提升用户体验。
可选的,终端设备在第M帧绘制完成之后开始绘制渲染插帧图像,包括:插帧模块基于down事件和第二move事件确定插帧图像对应的坐标与第M帧对应的坐标之间的偏移量;插帧模块向UI线程发送插帧图像对应的坐标与第M帧对应的坐标之间的偏移量;UI线程在第M帧绘制完成之后,基于插帧图像对应的坐标与第M帧对应的坐标之间的偏移量绘制渲染插帧图像。
可以理解的是,上述图6和图8所示的方法可以单独在终端设备中使用,也可以进行结合同时在终端设备中使用。
下面结合图9和图10对图8所示的数据处理方法进行说明。示例性的,图9为本申请实施例提供的一种终端设备界面显示处理流程的示意图。t1时刻至t8时刻表示终端设备基于滑动操作进行更新的图像顺序。t1时刻至t8时刻中,相邻两个时刻之间的时间间隔均为Vsync周期。
如图9所示,t1时刻,UI线程接收到Vsync1信号,终端设备基于Vsync1信号的时间戳读取到move事件1,基于move事件1对应的坐标开始绘制渲染帧1。
由于终端设备在t0时刻读取到的输入事件为down事件,终端设备插入move事件1',基于move事件1'对应的坐标绘制渲染帧1'。UI线程在完成帧1的绘制渲染后,绘制渲染帧1'。
move事件1'对应的坐标为move事件1对应的坐标与第一阈值之和。或者,move事件1'对应的坐标为2倍的move事件1对应的坐标与down事件对应的坐标之差。
这样,使得帧1'对应的位移量小于或等于帧1对应的位移量,进而减少帧1'与滑动操作不符的情况,使得帧1'更加符合滑动操作的规律,提升显示的流畅性。
可以理解的是,帧1对应的位移量为移动事件1对应的坐标与down事件对应的坐标之差。帧1'对应的位移量为移动事件1'对应的坐标与移动事件1对应的坐标之差。
t1时刻至t2时刻,UI线程完成帧1和帧1'的绘制渲染,并将绘制渲染好的帧1和绘制渲染好的帧1'发送至SF线程中的缓存队列中以等待合成。
t2时刻,UI线程接收到Vsync2信号,终端设备基于Vsync2信号的时间戳读取到move事件2,并基于move事件2对应的坐标开始绘制渲染帧2,SF线程开始合成绘制渲染好的帧1。
t2时刻至t3时刻,UI线程完成帧2的绘制渲染,并将绘制渲染好的帧2发送至SF线程中的缓存队列中以等待合成。
t3时刻,UI线程接收到Vsync3信号,终端设备基于Vsync3信号的时间戳读取到move事件3,并基于move事件3对应的坐标开始绘制渲染帧3,SF线程开始合成绘制渲染好的帧1',显示驱动驱动显示屏显示合成后的帧1。
t4时刻,UI线程继续绘制渲染帧3,SF线程开始合成绘制渲染好的帧2,显示驱动驱动显示屏显示合成后的帧1'。
t4时刻至t5时刻,UI线程完成帧3的绘制渲染,并将绘制渲染好的帧3发送至SF线程中的缓存队列中以等待合成。
t5时刻,UI线程接收到Vsync5信号,终端设备基于Vsync5信号的时间戳读取到move事件5,并基于move事件5对应的坐标开始绘制渲染帧5,SF线程开始合成绘制渲染好的帧3,显示驱动驱动显示屏显示合成后的帧2。
t5时刻至t6时刻,UI线程完成帧5的绘制渲染,并将绘制渲染好的帧5发送至SF线程中的缓存队列中以等待合成。
t6时刻,UI线程接收到Vsync6信号,终端设备基于Vsync6信号的时间戳读取到move事件6,并基于move事件6对应的坐标开始绘制渲染帧6,SF线程开始合成绘制渲染好的帧5,显示驱动驱动显示屏显示合成后的帧3。
t6时刻至t7时刻,UI线程完成帧6的绘制渲染,并将绘制渲染好的帧6发送至SF线程中的缓存队列中以等待合成。
t7时刻,UI线程接收到Vsync7信号,终端设备基于Vsync7信号的时间戳读取到move事件7,并基于move事件7对应的坐标开始绘制渲染帧7,SF线程开始合成绘制渲染好的帧6,显示驱动驱动显示屏显示合成后的帧5。
t7时刻至t8时刻,UI线程完成帧7的绘制渲染,并将绘制渲染好的帧7发送至SF线程中的缓存队列中以等待合成。
t8时刻,UI线程接收到Vsync7信号,SF线程开始合成绘制渲染好的帧7,显示驱动驱动显示屏显示合成后的帧6。
可以理解的是,图5所示的处理流程中,当帧3绘制渲染超时时,会导致帧2显示2个Vsync周期;而图9所示的处理流程中,当帧3绘制渲染超时时,帧2显示1个Vsync周期,帧2显示时间缩短。图9所示的处理流程中插入帧1',SF线程中多缓存有一帧图像。当帧3绘制渲染超时时,可以减少无帧合成的情况,进而减少显示卡顿现象,增加显示的流畅性。
示例性的,图10为本申请实施例提供的另一种终端设备界面显示处理流程的示意图。t1时刻至t8时刻表示终端设备基于滑动操作进行更新的图像顺序。t1时刻至t8时刻中,相邻两个时刻之间的时间间隔均为Vsync周期。
如图10所示,t1时刻,UI线程接收到Vsync1信号,终端设备基于Vsync1信号的时间戳读取到move事件1,基于move事件1对应的坐标开始绘制渲染帧1。
由于终端设备在t0时刻读取到的输入事件为按压事件,终端设备插入帧1'。UI线程在完成帧1的绘制渲染后,绘制渲染帧1'。
t1时刻至t2时刻,UI线程完成帧1的绘制渲染,并将绘制渲染好的帧1发送至SF线程中的缓存队列中以等待合成。
t2时刻,UI线程继续绘制帧1',SF线程开始合成绘制渲染好的帧1。
由于UI线程在t2时刻未完成帧1'的绘制渲染,错过Vsync2信号,终端设备通过补帧的方式插入帧2,在帧1'绘制渲染结束后,开始绘制渲染帧2。
t2时刻至t3时刻,UI线程完成帧1'和帧2的绘制渲染,并将绘制渲染好的帧1'和绘制渲染好的帧2发送至SF线程中的缓存队列中以等待合成。
后续t3时刻-t8时刻期间,终端设备的显示过程可以参照上述图9中t3时刻-t8时刻期间的流程类似,此处不再赘述。
相比较于图5所示的流程,图10所示的处理流程中,当帧3绘制渲染超时时,帧2显示8.3ms,帧2显示时间缩短。图10所示的处理流程中插入帧1',SF线程中多缓存有一帧图像。当帧3绘制渲染超时时,可以减少无帧合成的情况,进而减少显示卡顿现象,增加显示的流畅性。
为方便理解,下面结合图11对本申请实施例提供的数据处理方法中涉及的各个模块之间交互的过程进行说明。
示例性的,图11为本申请实施例提供的数据处理方法中各个模块之间交互的过程示意图。涉及的模块包括:输入线程(input线程)、UI线程、插帧模块和SF线程(surfaceflinger)和显示驱动。其中,输入线程、UI线程和插帧模块均位于应用层。UI线程也可以称为逻辑线程,或者称为应用主线程。SF线程位于框架层,显示驱动位于内核层。
输入线程负责记录从输入管理器上传的输入信息,并基于输入信息确定用户操作类型,例如,点击操作、滑动操作等。输入线程还负责基于Vsync信号的时间戳确定向UI线程发送的输入信息。
UI线程负责接收和处理应用的各种更新消息和回调。例如,输入事件的处理、动画相关处理(animation)、遍历操作(traversal)等。遍历操作包括:测量(measure)、布局(layout)、绘制(draw)等。UI线程还负责请求和接收Vsync信号。
S1101、在用户的滑动操作过程中,输入线程记录输入管理器解析到的输入信息。输入信息包括但不限于:输入事件类型,输入事件对应的坐标等。
可以理解的是,滑动操作中,终端设备实时采集用户操作对应的输入事件。终端设备采集输入事件的频率可以与刷新率相同,也可以不同,本申请实施例对此不作限定。
S1102、UI线程基于Vsync0信号的时间戳从输入线程中读取输入信息,并将Vsync0信号的时间戳和读取到的第一输入信息传递至插帧模块。第一输入信息包括down事件和第一坐标。
本申请实施例中,Vsync0信号为终端设备读取到本次滑动操作中down事件时对应的Vsync信号。
示例性的,UI线程向输入线程发送Vsync0信号的时间戳。输入线程基于Vsync0信号的时间戳确定第一输入信息,并向UI线程发送第一输入信息。
可能的实现方式中,输入线程基于Vsync0信号的时间戳,对一个Vsync周期内的输入事件进行处理,生成第一输入信息。
S1103、UI线程在读取到第一输入信息后,向SF线程发送Vsync信号请求,以请求下一个Vsync信号。
示例性的,如图12所示,t0时刻为UI线程接收到的Vsync0信号,UI线程基于Vsync0信号的时间戳从输入线程读取到第一输入信息。
S1104、SF线程在计时器计时结束后,反馈S1103请求的Vsync1信号至UI线程。可能的实现方式中,SF线程在接收到Vsync信号请求后,设置发送Vsync信号的定时器。SF线程在计时器计时结束后,反馈Vsync信号至UI线程。
S1105、UI线程基于Vsync1信号的时间戳读取输入信息,得到第二输入信息。
本申请实施例中,第二输入信息包括move事件和第二坐标。一些实施例中,第二输入信息还包括操作类型,例如,滑动操作。
可能的实现方式一中,基于Vsync0信号的时间戳和Vsync1信号的时间戳,记录的输入信息计算得到第二输入信息。
示例性的,以图12中,t0时刻为UI线程接收到的Vsync0信号为例,若t0时刻至t1时刻,输入管理器向UI线程依次上报输入事件1、输入事件2、输入事件3。UI线程在t1时刻接收到Vsync1信号时,读取到的第二输入信息为输入线程基于3个输入事件对应的输入信息计算得到的。
可能的实现方式二中,基于Vsync1信号的时间戳,读取时间最近的输入信息为第二输入信息。
示例性的,以图12中,t0时刻为UI线程接收到的Vsync0信号为例,若t0时刻至t1时刻,输入管理器向UI线程依次上报输入事件1、输入事件2、输入事件3。UI线程在t1时刻接收到Vsync1信号时,读取输入事件3对应的输入信息为第二输入信息。
S1106、UI线程基于第二输入信息绘制渲染图像1。
示例性的,如图12所示,t1时刻为UI线程接收到的Vsync1信号,UI线程基于Vsync1信号的时间戳从输入线程读取到第二输入信息。UI线程基于第一输入信息开始绘制渲染帧1。
可能的实现方式中,UI线程计算第二坐标与第一坐标的差值,得到第一位移值以确定图像1的布局。
S1107、UI线程将绘制渲染后的图像1发送至SF线程。
S1108、SF线程在接收到绘制渲染后的图像后,开始合成图像1。
S1109、SF线程将合成后的图像1发送至显示驱动。
S1110、显示驱动接收到合成后的图像后,驱动显示屏显示合成后的图像1。
终端设备在执行上述S1105后,还执行有S1111。
S1111、UI线程在读取到向插帧模块发送Vsync1信号的时间戳和读取到的第二输入信息。
S1112、插帧模块在接收到第二输入信息后,基于第一输入信息和第二输入信息确定相邻两次输入事件的序列为down事件和move事件,生成第三输入信息。
可以理解的是,插帧模块确定相邻两次输入事件的序列为down事件和move事件,确定插入一帧。
本申请实施例中,第三输入信息包括move事件和第三坐标。
可能的实现方式一中,第三坐标与第二坐标的差值等于第一阈值。
可能的实现方式二中,第三坐标与第二坐标的差值满足等于第一位移值,第一位移值为第二坐标与第一坐标的差值。
可能的实现方式三中,第三坐标与第二坐标的差值为第一阈值与第一位移值之间的最小值。
S1113、插帧模块将第三输入信息发送至UI线程。
S1114、UI线程在绘制渲染图像1结束后,基于第三输入信息绘制渲染插帧图像。
可以理解的是,UI线程将绘制渲染后的插帧图像发送至SF线程;SF线程在接收到绘制渲染后的插帧图像后,开始合成插帧图像;SF线程将合成后的插帧图像发送至显示驱动。显示驱动驱动显示屏显示插帧图像。
示例性的,如图12所示,t1时刻,UI线程接收到Vsync1信号,开始绘制渲染帧1。t1时刻至t2时刻,终端设备确认相邻两次输入事件为down事件和move事件,生成第三输入信息。UI线程在完成帧1的绘制渲染后,基于第三输入信息开始绘制渲染帧1'。
S1115、UI线程向SF线程发送Vsync信号请求,以请求下一个Vsync信号。
一些实施例中,UI线程在帧1绘制时发送Vsync信号请求;另一些实施例中,UI线程在帧1'绘制时发送Vsync信号请求。本申请实施例对于发送Vsync信号请求的具体时间不做限定。
S1116、UI线程在发送Vsync信号请求时,向插帧模块发送S1115的执行时间。
当基于S1115的执行时间和Vsync1的时间戳之差小于或等于Vsync周期时,插帧模块进行不进行插帧处理。当基于S1115的执行时间和Vsync1的时间戳之差大于Vsync周期时,插帧模块进行插帧处理。插帧处理的具体流程可以参照下述S1127-S1129,此处不做赘述。
S1117、SF线程在计时器计时结束后,反馈S1115请求的Vsync2信号至UI线程。
示例性的,如图12所示,t3时刻,UI线程接收到Vsync2信号,开始绘制渲染帧2。
S1118、UI线程在接收到Vsync2信号后,基于Vsync2信号的时间戳从输入线程中读取输入信息,得到第四输入信息。
本申请实施例中,第四输入信息包括move事件和第四坐标。
可能的实现方式一中,基于Vsync1信号的时间戳和Vsync2信号的时间戳,记录的输入信息计算得到第四输入信息。
可能的实现方式二中,基于Vsync2信号的时间戳,读取时间最近的输入信息为第四输入信息。
适应性的,终端设备基于第四输入信息进行绘制渲染、合成、显示。此处不做详细赘述。具体过程可以参照上述S1106-S1110。此处不再详细赘述。
S1119、UI线程向插帧模块发送Vsync2信号的时间戳和第四输入信息。
可以理解的是,由于相邻两次输入信息为move事件和move事件,不进行插帧。
S1120、UI线程,向SF线程发送Vsync信号请求。
S1121、UI线程向插帧模块发送S1120的执行时间。
当基于S1120的执行时间和Vsync2的时间戳之差小于或等于Vsync周期时,插帧模块进行不进行插帧处理。当基于S1120的执行时间和Vsync2的时间戳之差大于Vsync周期时,插帧模块进行插帧处理。插帧处理的具体流程与下述S1120-S1122类似,此处不做详细赘述。
S1122、SF线程在计时器计时结束后,反馈S1120请求的Vsync3信号至UI线程。
S1123、UI线程在接收到Vsync3信号后,基于Vsync3信号的时间戳从输入线程中读取输入信息,得到第五输入信息。
本申请实施例中,第五输入信息包括move事件和第五坐标。
可能的实现方式一中,基于Vsync2信号的时间戳和Vsync3信号的时间戳,记录的输入信息计算得到第四输入信息。
可能的实现方式二中,基于Vsync3信号的时间戳,读取时间最近的输入信息为第四输入信息。
适应性的,终端设备基于第五输入信息进行图像3的绘制渲染、合成、显示。此处不做详细赘述。具体过程可以参照上述S1106-S1110。此处不再详细赘述。
S1124、UI线程向插帧模块发送Vsync3信号的时间戳和读取到的第五输入信息传递至插帧模块。
可以理解的是,由于相邻两次输入信息为move事件和move事件,不进行插帧。
S1125、UI线程向SF线程发送Vsync信号请求。
S1126、UI线程向插帧模块发送S1125的执行时间。
当基于S1125的执行时间和Vsync3的时间戳之差小于或等于Vsync周期时,插帧模块进行不进行插帧处理。当基于S1125的执行时间和Vsync3的时间戳之差大于Vsync周期时,插帧模块进行插帧处理。插帧处理的具体流程与下述S1120-S1122类似,此处不做详细赘述
S1127、插帧模块确定S1125的执行时间与Vsync3信号的时间戳之差大于一个Vsync周期,进行插帧处理。
一些实施例中,插帧模块将第一时间戳发送至UI线程;UI线程基于第一时间戳从输入线程读取到第六输入信息。
第一时间戳为S1125的执行时间与Vsync3信号的时间戳之间的时间戳。
可能的实现方式一中,第一时间戳为Vsync3信号的时间戳与一个Vsync周期之和。
示例性的,以屏幕刷新率为120Hz为例,若Vsync3信号的时间戳为24.9ms。则第一时间戳为24.9ms+8.3ms,即33.2ms。
可能的实现方式二中,第一时间戳为Vsync3信号的时间戳与A个Vsync周期之和,其中,A为的整数值。
示例性的,以屏幕刷新率为120Hz为例,若S1125的执行时间为33.6ms,Vsync3信号的时间戳为24.9ms。则N为1,第一时间戳为24.9ms+8.3ms,即33.2ms。
示例性的,以屏幕刷新率为120Hz为例,若Vsync3信号的时间戳为42ms,Vsync3信号的时间戳为24.9ms。则N为2,第一时间戳为24.9ms+8.3ms+8.3ms,即41.5ms。
可以理解的是,除上述两种方式,插帧模块还可以有其他确定第一时间戳的方式,本申请实施例对此不作限定。
本申请实施例中,第六输入信息包括move事件和第六坐标。第六坐标与第五坐标的差值等于四位移值;第四位移值为第五输入信息中第五坐标与第四输入信息中第四坐标的差值
另一些实施例中,插帧模块基于第一时间戳从输入线程中读取到第六输入信息;插帧模块将第六输入信息发送至UI线程。
S1128、插帧模块将第一时间戳发送至UI线程。
S1129、UI线程基于第一时间戳从输入线程读取到第六输入信息。并且,UI线程在图像3绘制渲染完成时,基于第六输入信息绘制渲染图像4。
适应性的,终端设备基于第五输入信息进行图像3的绘制渲染、合成、显示。终端设备基于第六输入信息进行图像4的绘制渲染、合成、显示。此处不做详细赘述。具体过程可以参照上述S1106-S1110。
示例性的,如图12所示,t4时刻至t5时刻之间,由于UI线程发送Vsync信号请求的时间与t4时刻之差大于一个Vsync周期,终端设备通过补帧的方式插入帧4,在帧3绘制渲染结束时,开始绘制渲染帧4。
这样,在滑动操作初期预先插入一帧进行绘制渲染,进而缓存队列中多缓存一帧,减少后续绘制渲染超时导致的无帧合成的情况,减少显示的卡顿,提升用户体验。在绘制渲染超时时,通过补帧的方式增加一帧图像,减少由于绘制渲染超时错过Vsync信号导致的丢帧,增加显示的流畅性。
需要说明的是,图像的绘制渲染包括测量(measure)、布局(layout)、绘制(draw)等多个步骤。UI线程可以在图像绘制渲染结束时向SF线程发送Vsync信号请求。UI线程也可以在测量(measure)、布局(layout)、绘制(draw)中任一步骤结束时,向SF线程发送Vsync信号请求。本申请实施例对于UI线程发送Vsync信号请求的触发条件不做具体限定。
下面结合图12对上述图11所示的流程进行说明。示例性的,图12为本申请实施例提供的一种终端设备界面显示处理流程的示意图。t0时刻至t7时刻表示终端设备基于滑动操作进行更新的图像顺序。t1时刻至t7时刻中,相邻两个时刻之间的时间间隔均为Vsync周期。
如图12所示,t0时刻,UI线程接收到Vsync0信号,UI线程基于Vsync0信号的时间戳读取到第一输入信息。
t1时刻,UI线程接收到Vsync1信号,UI线程基于Vsync1信号的时间戳读取到第二输入信息,并开始绘制渲染帧1。此外,t1时刻,终端设备确认相邻两次输入事件为down事件和move事件,生成第三输入信息。UI线程在完成帧1的绘制渲染后,基于第三输入信息绘制渲染帧1'。
可能的实现方式中,帧1'对应的位移量小于或等于帧1对应的位移量。帧1对应的位移量为第二输入信息对应的第二坐标与第一输入信息对应的第一坐标之差。帧1'对应的位移量为第三输入信息对应的第三坐标与第二坐标之差。
t1时刻至t2时刻,UI线程完成帧1和帧1'的绘制渲染,并将绘制渲染好的帧1和绘制渲染好的帧1'发送至SF线程中的缓存队列中以等待合成。
t2时刻,UI线程接收到Vsync2信号,终端设备基于Vsync2信号的时间戳读取到第四输入信息,并基于第四输入信息中的第四坐标开始绘制渲染帧2,SF线程开始合成绘制渲染好的帧1。此外,t2时刻,终端设备确认相邻两次输入事件为move事件和move事件,不进行插帧处理。t2时刻至t3时刻,UI线程完成帧2的绘制渲染,并将绘制渲染好的帧2发送至SF线程中的缓存队列中以等待合成。
t3时刻,UI线程接收到Vsync3信号,终端设备基于Vsync3信号的时间戳读取到第五输入信息,并基于第五输入信息的第五坐标开始绘制渲染帧3,SF线程开始合成绘制渲染好的帧1',显示驱动驱动显示屏显示合成后的帧1。此外,t3时刻,终端设备确认相邻两次输入事件为move事件和move事件,不进行插帧处理。
t4时刻,UI线程继续绘制渲染帧3,SF线程开始合成绘制渲染好的帧2,显示驱动驱动显示屏显示合成后的帧1'。此外,t4时刻,终端设备确认相邻两次输入事件为move事件和move事件,不进行插帧处理。
由于UI线程发送Vsync信号请求的时间与t4时刻之差大于一个Vsync周期,终端设备通过插帧的方式插入帧4,在帧3绘制渲染结束时,开始绘制渲染帧4。
t4时刻至t5时刻,完成帧3和帧4的绘制渲染,并将绘制渲染好的帧3和绘制渲染好的帧4发送至SF线程中的缓存队列中以等待合成。
t5时刻,UI线程接收到Vsync5信号,终端设备基于Vsync5信号的时间戳读取到第五输入信息,并基于第五输入信息中的坐标开始绘制渲染帧5,SF线程开始合成绘制渲染好的帧3,显示驱动驱动显示屏显示合成后的帧2。此外,t5时刻,终端设备确认相邻两次输入事件为move事件和move事件,不进行插帧处理。t5时刻至t6时刻,UI线程完成帧5的绘制渲染,并将帧5发送至SF线程中的缓存队列中以等待合成。
t6时刻,UI线程接收到Vsync6信号,终端设备基于Vsync6信号的时间戳读取到第六输入信息,并基于第六输入信息中的坐标开始绘制渲染帧6,SF线程开始合成绘制渲染好的帧5,显示驱动驱动显示屏显示合成后的帧3。此外,t6时刻,终端设备确认相邻两次输入事件为move事件和move事件,不进行插帧处理。t6时刻至t7时刻,UI线程完成帧6的绘制渲染,并将绘制渲染好的帧6发送至SF线程中的缓存队列中以等待合成。
t7时刻,UI线程接收到Vsync7信号,终端设备基于Vsync7信号的时间戳读取到第七输入信息,并基于第七输入信息中的坐标开始绘制渲染帧7,SF线程开始合成绘制渲染好的帧6,显示驱动驱动显示屏显示合成后的帧4。
t7时刻至t8时刻,UI线程完成帧7的绘制渲染,并将绘制渲染好的帧7发送至SF线程中的缓存队列中以等待合成。t8时刻,UI线程接收到Vsync7信号,SF线程开始合成绘制渲染好的帧7,显示驱动驱动显示屏显示合成后的帧4。
相比较于图5所示的处理流程,图12所示的处理流程中插入帧1',SF线程中多缓存有一帧图像。当帧3绘制渲染超时时,可以减少无帧合成的情况,进而减少显示卡顿现象,增加显示的流畅性。并且,图12所示的处理流程中,在帧3绘制渲染超过一个Vsync周期时,通过补帧的方式插入帧4。在帧5显示前还显示有帧4,减少从帧3跳变到帧5显示的情况,增加显示的流畅性。
需要说明的是,本申请实施例中的“在……时”,可以为在某种情况发生的瞬时,也可以为在某种情况发生后的一段时间内,本申请实施例对此不作具体限定。此外,本申请实施例提供的显示界面仅作为示例,显示界面还可以包括更多或更少的内容。
上面已对本申请实施例的数据处理方法进行了说明,下面对本申请实施例提供的执行上述数据处理方法的装置进行描述。本领域技术人员可以理解,方法和装置可以相互结合和引用,本申请实施例提供的相关装置可以执行上述数据处理方法中的步骤。
如图13所示,图13为本申请实施例提供的一种数据处理装置的结构示意图,该数据处理装置可以是本申请实施例中的终端设备,也可以是终端设备内的芯片或芯片系统。
如图13所示,数据处理装置2100可以用于通信设备、电路、硬件组件或者芯片中,该数据处理装置包括:显示单元2101、以及处理单元2102。其中,显示单元2101用于支持数据处理装置2100执行的显示的步骤;处理单元2102用于支持数据处理装置2100执行信息处理的步骤。
可能的实现方式中,该数据处理装置2100中也可以包括通信单元2103。具体的,通信单元用于支持数据处理装置2100执行数据的发送以及数据的接收的步骤。其中,该通信单元2103可以是输入或者输出接口、管脚或者电路等。
可能的实施例中,数据处理装置还可以包括:存储单元2104。处理单元2102、存储单元2104通过线路相连。存储单元2104可以包括一个或者多个存储器,存储器可以是一个或者多个设备、电路中用于存储程序或者数据的器件。存储单元2104可以独立存在,通过通信线路与数据处理装置具有的处理单元2102相连。存储单元2104也可以和处理单元2102集成在一起。
存储单元2104可以存储终端设备中的方法的计算机执行指令,以使处理单元2102执行上述实施例中的方法。存储单元2104可以是寄存器、缓存或者RAM等,存储单元2104可以和处理单元2102集成在一起。存储单元2104可以是只读存储器(read-only memory,ROM)或者可存储静态信息和指令的其他类型的静态存储设备,存储单元2104可以与处理单元2102相独立。
本申请实施例提供的数据处理方法,可以应用在具备显示功能的电子设备中。电子设备包括终端设备,终端设备的具体设备形态等可以参照上述相关说明,此处不再赘述。
本申请实施例提供一种终端设备,该终端设备包括:包括:处理器和存储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得终端设备执行上述方法。
本申请实施例提供一种芯片。芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行上述实施例中的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
本申请实施例还提供了一种计算机可读存储介质。计算机可读存储介质存储有计算机程序。计算机程序被处理器执行时实现上述方法。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或者在计算机可读介质上传输。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
一种可能的实现方式中,计算机可读介质可以包括RAM,ROM,只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(Digital Subscriber Line,DSL)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(Digital Versatile Disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
本申请实施例提供一种计算机程序产品,计算机程序产品包括计算机程序,当计算机程序被运行时,使得计算机执行上述方法。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
终端设备响应于滑动操作,获取所述滑动操作对应的输入事件;
所述终端设备基于第一move事件绘制渲染第N帧,所述第一move事件是基于第一Vsync信号的时间戳从所述滑动操作对应的输入事件中提取得到的;
所述终端设备显示所述第N帧;
在所述第N帧的绘制渲染的时长大于Vsync周期的情况下,所述终端设备在所述第N帧绘制渲染完成之后,基于第二move事件绘制渲染第N+1帧,所述第二move事件是基于第一时间戳从所述滑动操作对应的输入事件中提取得到的,所述第一时间戳为所述第一Vsync信号的时间戳与所述Vsync周期之和;
所述终端设备显示所述第N+1帧。
2.根据权利要求1所述的方法,其特征在于,所述在所述第N帧的绘制渲染的时长大于Vsync周期的情况下,所述终端设备在所述第N帧绘制渲染完成之后,基于第二move事件绘制渲染第N+1帧,包括:
第一时刻,所述终端设备的UI线程向所述终端设备的SF线程发送Vsync信号请求,所述第一时刻晚于所述第一Vsync信号的时间戳;
在第一值大于所述Vsync周期的情况下,所述终端设备在所述第N帧绘制渲染完成之后基于所述第二move事件绘制渲染所述第N+1帧,所述第一值为所述第一时刻与所述第一Vsync信号的时间戳之差。
3.根据权利要求2所述的方法,其特征在于,所述在第一值大于所述Vsync周期的情况下,所述终端设备在所述第N帧绘制完成之后基于所述第二move事件绘制渲染所述第N+1帧,包括:
在所述第一值大于Vsync周期的情况下,所述终端设备的插帧模块向所述UI线程发送所述第一时间戳;
所述UI线程基于所述第一时间戳从所述终端设备的输入线程中读取所述第二move事件;
所述UI线程在所述第N帧绘制渲染完成之后,基于所述第二move事件绘制渲染所述第N+1帧。
4.根据权利要求2所述的方法,其特征在于,所述在第一值大于所述Vsync周期的情况下,所述终端设备在所述第N帧绘制完成时基于第二move事件绘制渲染第N+1帧,包括:
当所述第一值大于所述Vsync周期,所述终端设备的插帧模块基于所述第一时间戳从所述终端设备的输入线程中读取所述第二move事件;
所述插帧模块向所述UI线程发送所述第二move事件;
所述UI线程在所述第N帧绘制完成之后基于所述第二move事件绘制渲染所述第N+1帧。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
所述终端设备基于所述第二Vsync信号的时间戳确定的输入事件为down事件,所述第二Vsync信号的时间戳早于所述第一Vsync信号的时间戳;
所述终端设备基于第三move事件绘制渲染第M帧,所述第三move事件是基于第三Vsync信号的时间戳从所述滑动操作对应的输入事件中提取得到的,所述第三Vsync信号的时间戳晚于所述第二Vsync信号的时间戳一个所述Vsync周期,所述第三Vsync信号的时间戳早于或等于所述第一Vsync信号的时间戳;
所述终端设备显示所述第M帧;
所述终端设备在所述第M帧绘制完成之后绘制渲染插帧图像,所述插帧图像对应的坐标与所述第M帧对应的坐标之间的偏移量小于或等于第二值,所述第二值为所述第M帧对应的坐标与所述第M-1帧对应的坐标之间的偏移量;
所述终端设备显示所述插帧图像。
6.根据权利要求5所述的方法,其特征在于,
当所述第M帧对应的坐标与所述第M-1帧对应的坐标之间的偏移量小于第一阈值时,所述插帧图像对应的坐标与所述第M帧对应的坐标之间的偏移量等于所述第二值;当所述第M帧对应的坐标与所述第M-1帧对应的坐标之间的偏移量大于或等于所述第一阈值时,所述第M帧对应的坐标与所述第M-1帧对应的坐标之间的偏移量等于所述第一阈值。
7.根据权利要求5或6所述的方法,其特征在于,所述终端设备在所述第M帧绘制完成之后开始绘制渲染插帧图像,包括:
所述插帧模块基于所述down事件和所述第二move事件确定所述插帧图像对应的坐标与所述第M帧对应的坐标之间的偏移量;
所述插帧模块向UI线程发送所述插帧图像对应的坐标与所述第M帧对应的坐标之间的偏移量;
所述UI线程在所述第M帧绘制完成之后,基于所述插帧图像对应的坐标与所述第M帧对应的坐标之间的偏移量绘制渲染所述插帧图像。
8.一种终端设备,其特征在于,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述终端设备执行如权利要求1-7任一项所述的方法。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被运行时,使得计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211318725.6A CN117971087A (zh) | 2022-10-26 | 2022-10-26 | 数据处理方法和相关装置 |
PCT/CN2023/120777 WO2024087970A1 (zh) | 2022-10-26 | 2023-09-22 | 数据处理方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211318725.6A CN117971087A (zh) | 2022-10-26 | 2022-10-26 | 数据处理方法和相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117971087A true CN117971087A (zh) | 2024-05-03 |
Family
ID=90829944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211318725.6A Pending CN117971087A (zh) | 2022-10-26 | 2022-10-26 | 数据处理方法和相关装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117971087A (zh) |
WO (1) | WO2024087970A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753262B (zh) * | 2019-01-04 | 2022-06-28 | Oppo广东移动通信有限公司 | 帧显示处理方法、装置、终端设备及存储介质 |
CN110609645B (zh) * | 2019-06-25 | 2021-01-29 | 华为技术有限公司 | 一种基于垂直同步信号的控制方法及电子设备 |
CN110503708A (zh) * | 2019-07-03 | 2019-11-26 | 华为技术有限公司 | 一种基于垂直同步信号的图像处理方法及电子设备 |
CN113096054A (zh) * | 2020-01-09 | 2021-07-09 | 北京小米移动软件有限公司 | 图像帧合成方法、装置及存储介质 |
CN116847039A (zh) * | 2020-09-30 | 2023-10-03 | 华为技术有限公司 | 一种基于垂直同步信号的图像处理方法及电子设备 |
CN114327127B (zh) * | 2021-11-27 | 2022-12-23 | 荣耀终端有限公司 | 滑动丢帧检测的方法和装置 |
-
2022
- 2022-10-26 CN CN202211318725.6A patent/CN117971087A/zh active Pending
-
2023
- 2023-09-22 WO PCT/CN2023/120777 patent/WO2024087970A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024087970A1 (zh) | 2024-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114518817B (zh) | 一种显示方法、电子设备及存储介质 | |
CN114579075B (zh) | 数据处理方法和相关装置 | |
CN113254120B (zh) | 数据处理方法和相关装置 | |
CN111225138A (zh) | 摄像头的控制方法、装置、存储介质及终端 | |
CN113132526B (zh) | 一种页面绘制方法及相关装置 | |
CN114648951A (zh) | 控制屏幕刷新率动态变化的方法及电子设备 | |
CN115048012B (zh) | 数据处理方法和相关装置 | |
WO2024041047A1 (zh) | 一种屏幕刷新率切换方法及电子设备 | |
CN113141537A (zh) | 视频插帧方法、装置、存储介质以及终端 | |
CN115097994B (zh) | 数据处理方法和相关装置 | |
WO2023001163A1 (zh) | 一种可提升动效性能的屏幕刷新方法及设备 | |
CN111127469A (zh) | 缩略图显示方法、装置、存储介质以及终端 | |
CN116688495B (zh) | 帧率调整方法及相关装置 | |
WO2023005751A1 (zh) | 渲染方法及电子设备 | |
CN118043772A (zh) | 绘制方法及电子设备 | |
CN117971087A (zh) | 数据处理方法和相关装置 | |
CN113034653A (zh) | 一种动画渲染方法及装置 | |
CN116075804A (zh) | 一种图像数据处理的装置和方法 | |
WO2024016798A9 (zh) | 图像显示方法和相关装置 | |
CN115904184B (zh) | 数据处理方法和相关装置 | |
WO2024099206A1 (zh) | 一种图形界面处理方法以及装置 | |
WO2022247541A1 (zh) | 一种应用程序动效衔接的方法及装置 | |
WO2023124227A9 (zh) | 帧率切换方法及装置 | |
EP4236301A1 (en) | Frame rate switching method and apparatus | |
WO2024045701A1 (zh) | 数据处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |