垂直同步方法、装置、终端及存储介质与流程

文档序号:18188331发布日期:2019-07-17 05:27阅读:261来源:国知局
垂直同步方法、装置、终端及存储介质与流程

本申请实施例涉及终端技术领域,特别涉及一种垂直同步方法、装置、终端及存储介质。



背景技术:

垂直同步(verticalsynchronization,vsync)是一种提高终端画面流畅度的技术。

终端应用垂直同步技术后,应用程序接收到垂直同步信号时,即进行画面绘制;合成线程接收到垂直同步信号时,即对多个可见图层进行合成,并将合成的图像帧数据发送至显示屏;显示屏接收到垂直同步信号时,即对图像帧进行更新。



技术实现要素:

本申请实施例提供了一种垂直同步方法、装置、终端及存储介质,所述技术方案如下:

一方面,本申请实施例提供了一种垂直同步方法,所述方法包括:

接收请求方发送的垂直同步信号请求,所述垂直同步信号请求用于请求获取垂直同步信号;

获取所述垂直同步信号请求的第一请求时刻,以及上一次接收到所述垂直同步信号请求的第二请求时刻;

若所述第一请求时刻与所述第二请求时刻之间的请求时间间隔大于时长阈值,则向所述请求方发送模拟垂直同步信号,所述请求方用于根据所述模拟垂直同步信号执行预定操作。

另一方面,本申请实施例提供了一种垂直同步装置,所述装置包括:

请求接收模块,用于接收请求方发送的垂直同步信号请求,所述垂直同步信号请求用于请求获取垂直同步信号;

获取模块,用于获取所述垂直同步信号请求的第一请求时刻,以及上一次接收到所述垂直同步信号请求的第二请求时刻;

第一发送模块,用于当所述第一请求时刻与所述第二请求时刻之间的请求时间间隔大于时长阈值时,向所述请求方发送模拟垂直同步信号,所述请求方用于根据所述模拟垂直同步信号执行预定操作。

另一方面,本申请提供了一种终端,所述终端包括处理器、与所述处理器相连的存储器和显示屏,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如上述方面所述的垂直同步方法。

另一方面,提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令被处理器执行时实现如上述方面所述的垂直同步方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

本申请实施例中,接收到请求方发送的垂直同步信号请求后,根据该垂直同步信号请求的第一请求时刻,以及上一次接收到该垂直同步信号请求的第二请求时刻,计算请求时间间隔,并在请求时间间隔大于时长阈值时,向请求方发送模拟垂直同步信号,以便请求方根据模拟垂直同步信号执行预定操作;相较于相关技术中需要等待真实的垂直同步请求才能执行操作,通过引入垂直同步信号模拟机制,使得请求方无需等待真实的垂直同步信号也可以执行预定操作,从而缩短了请求方等待垂直同步信号的时间,有助于提高显示屏显示画面的速度。

附图说明

图1是本申请一个示例性实施例所提供的终端的结构示意图;

图2是android系统中图形显示过程的原理示意图;

图3是相关技术中垂直同步过程的原理示意图;

图4示出了本申请一个示例性实施例提供的垂直同步方法的方法流程图;

图5示出了本申请另一个示例性实施例提供的垂直同步方法的方法流程图;

图6是图5所示垂直同步方法实施过程的原理示意图;

图7示出了本申请另一个示例性实施例提供的垂直同步方法的方法流程图;

图8是图7所示垂直同步方法实施过程的原理示意图;

图9示出了本申请另一个示例性实施例提供的垂直同步方法的方法流程图;

图10是图9所示垂直同步方法实施过程的原理示意图;

图11是本申请一个实施例提供的垂直同步装置的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

在对本申请实施例进行解释说明之前,首先对本申请实施例的应用场景进行说明。图1示出了本申请一个示例性实施例所提供的终端的结构示意图。

该终端100是安装有目标应用程序的电子设备。该目标应用程序可以是系统程序或者第三方应用程序。其中,第三方应用程序是除了用户和操作系统之外的第三方制作的应用程序。比如,该目标应用程序可以是游戏应用程序或视频播放应用程序。

可选的,该终端100中包括:处理器120和存储器140。

处理器120可以包括一个或者多个处理核心。处理器120利用各种接口和线路连接整个终端100内的各个部分,通过运行或执行存储在存储器140内的指令、程序、代码集或指令集,以及调用存储在存储器140内的数据,执行终端100的各种功能和处理数据。可选的,处理器120可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器120可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器120中,单独通过一块芯片进行实现。

存储器140可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。可选的,该存储器140包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。存储器140可用于存储指令、程序、代码、代码集或指令集。存储器140可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储下面各个方法实施例中涉及到的数据等。

本申请实施例中的终端120还包括显示屏160。可选的,显示屏160是触摸显示屏,用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作,以及显示各个应用程序的用户界面。显示屏160通常设置在终端100的前面板,或者,同时设置在终端100的前面板和后面板。显示屏160可被设计成为全面屏、曲面屏或异型屏。显示屏160还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本实施例对此不加以限定。

除此之外,本领域技术人员可以理解,上述附图所示出的终端100的结构并不构成对终端100的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端100中还包括射频电路、输入单元、传感器、音频电路、无线保真(wirelessfidelity,wifi)模块、电源、蓝牙模块等部件,在此不再赘述。

为了便于理解,下面首先对终端中的图形显示系统进行说明,且下述实施例以安卓(android)图形显示系统为例进行示意性说明。

终端的图形显示过程分为图层绘制、图层合成以及图像帧更新这三个阶段。其中,图层绘制由应用程序执行,图层合成由合成线程执行,图像帧更新则由显示屏执行。

如图2所示,显示屏21从帧缓冲区中读取图像帧数据,且读取的过程为:从帧缓冲区的起始地址开始,按照从上往下,从左往右的顺序进行扫描,从而将扫描到的内容映射在显示屏上。

由于显示屏21中显示的内容需要不断更新,若在同一帧缓冲区内进行读取和写入操作,将会导致显示屏21中同时显示多帧内容,因此,终端采用双缓冲机制,其中,双缓冲区中的一个缓冲区用于内容读取显示,而另一个缓冲区用于后台图形合成和写入。

示意性的,如图2所示,前缓冲区22为显示屏所要显示内容的帧缓冲区,后缓冲区23为用于合成下一帧图形的帧缓冲区。当前一帧显示完毕,后一帧写入完毕时,显示屏21即读取后缓冲区23中的内容,相应的,前缓冲区22中即进行下一帧图形的合成(前后缓冲区角色互换)。

surfaceflinger作为图层的合成者(其中包括合成线程),用于对上层(应用程序)传递的多个图层(surface)进行合成,并提交到显示屏21的缓冲区中,供显示屏21读取显示。如图2所示,后缓冲区23中的内容由surfaceflinger对多个surface24合成而成。其中,每个surface对应上层的一个窗口(window),比如对话框、状态栏、活动(activity)。

为了使应用程序和合成线程能够根据显示屏的刷新频率进行画面绘制及合成,从而避免出现画面卡顿,显示屏根据硬件垂直同步信号(硬件垂直同步信号的产生频率与显示屏的刷新频率一致)进行图像帧更新,而应用程序和合成线程则通过请求软件垂直同步信号(与硬件同步信号保持同步)的方式进行画面绘制和合成。

如图3所示,其示出了相关技术中垂直同步过程的原理示意图。当应用程序需要进行图层绘制时,向surfaceflinger发送垂直同步信号请求,等待surfaceflinger在下一个垂直同步时间点,向应用程序反馈垂直同步信号。应用程序接收到垂直同步信号后,即进行图层绘制,并将绘制得到的图层数据发送给surfaceflinger。surfaceflinger接收到图层数据后,在到达下一个垂直同步时间点时,根据图层数据进行图层合成,并将生成的图像帧数据发送给显示屏。若当前正在显示图像帧,显示屏则在下一个垂直同步时间点处根据接收到的图像帧数据进行图像帧更新。

可见,相关技术中,应用程序、surfaceflinger和显示屏都需要在接收到垂直同步信号后才能工作,而应用程序、surfaceflinger和显示屏在等待垂直同步信号将会造成画面显示出现延迟。比如,对于刷新频率为60hz的显示屏,其垂直同步信号间隔为16.7ms,在极端情况下,若应用程序、surfaceflinger和显示屏都等待了16.7ms,一帧图像的绘制到显示将经过50ms。

为了解决相关技术中,由于垂直同步信号等待时间较长,导致画面显示出现延迟的问题,本申请实施例提供的垂直同步方法中,通过在接收到垂直同步信号请求时,根据本次垂直同步信号请求的请求时刻以及上一次垂直同步信号请求的请求时刻,确定两次请求之间的请求时间间隔是否过长,从而在请求时间间隔过长时,模拟一个垂直同步信号给请求方,以便请求方根据模拟出的垂直同步信号立即执行相应操作,缩短请求方等待垂直同步信号的时间,进而降低画面的显示延迟。下面采用示意性的实施例进行说明。

请参考图4,其示出了本申请一个示例性实施例提供的垂直同步方法的方法流程图。该方法可以包括如下步骤。

步骤401,接收请求方发送的垂直同步信号请求,垂直同步信号请求用于请求获取垂直同步信号。

可选的,该请求方包括应用程序和合成线程中的至少一种,相应的,该垂直同步信号请求是应用程序在进行图层绘制前发送的垂直同步信号请求,或者,是合成线程在进行图层合成前发送的垂直同步信号请求。

步骤402,获取垂直同步信号请求的第一请求时刻,以及上一次接收到垂直同步信号请求的第二请求时刻。

本申请实施例中,终端每次接收请求方发送的垂直同步信号请求后,都会记录垂直同步信号请求的请求时刻。当再次接收到该请求方发送的垂直同步信号请求时,终端即获取当前垂直同步信号请求的第一请求时刻,以及该请求方上一次发送垂直同步信号请求的第二请求时刻,并根据第一请求时刻和第二请求时刻计算相邻两次垂直同步信号请求之间的请求时间间隔,其中,请求时间间隔=第一请求时刻-第二请求时刻。

步骤403,若第一请求时刻与第二请求时刻之间的请求时间间隔大于时长阈值,则向请求方发送模拟垂直同步信号,请求方用于根据模拟垂直同步信号执行预定操作。

在一种可能的实施方式中,surfaceflinger进程中包含信号生成线程以及信号发送线程,其中,信号生成线程用于产生标准垂直同步信号,而信号发送线程则用于对标准垂直同步信号进行处理(比如增加时间偏置)后,将垂直同步信号发送给请求方。

不同于相关技术中,信号发送线程需要接收到信号生成线程生成的标准垂直同步信号后,才会向请求方反馈垂直同步信号,可选的,本申请实施例中,当请求方相邻两次请求之间的请求时间间隔大于时长阈值时(表明前一次发送垂直同步信号请求后,经过较长的等待时间才接收到垂直同步信号),信号发送线程生成模拟垂直同步信号,并将该模拟垂直同步信号发送给请求方。

可选的,本申请实施例中的信号发送线程具有生成模拟垂直同步信号的功能,且生成的模拟垂直同步信号与真实垂直同步信号(根据标准垂直同步信号向请求方发送的垂直同步信号)相同。

相应的,请求方接收到模拟垂直同步信号后,根据模拟垂直同步信号执行预定操作。由于无需等待真实垂直同步信号,因此请求方请求垂直同步信号的时间得到的缩短,进而降低了画面的显示延迟。

在一种可能的实施方式中,该时长阈值根据垂直同步信号周期确定,垂直同步信号周期用于指示相邻两个垂直同步信号之间的时间间隔,且时长阈值大于等于垂直同步信号周期。比如,时长阈值为一个垂直同步信号周期,或1.2个垂直同步信号周期,或1.5个垂直同步信号周期。

在一个示意性的例子中,当显示屏的刷新频率为60hz时,该垂直同步信号周期为16.7ms,相应的,将时长阈值被确定为16.7ms。

可选的,当请求方相邻两次请求之间的请求时间间隔小于时长阈值时,信号发送线程根据信号生成线程生成的标准垂直同步信号,向请求方发送(真实)垂直同步信号,以便请求方根据垂直同步信号执行预定操作。

综上所述,本申请实施例中,接收到请求方发送的垂直同步信号请求后,根据该垂直同步信号请求的第一请求时刻,以及上一次接收到该垂直同步信号请求的第二请求时刻,计算请求时间间隔,并在请求时间间隔大于时长阈值时,向请求方发送模拟垂直同步信号,以便请求方根据模拟垂直同步信号执行预定操作;相较于相关技术中需要等待真实的垂直同步请求才能执行操作,通过引入垂直同步信号模拟机制,使得请求方无需等待真实的垂直同步信号也可以执行预定操作,从而缩短了请求方等待垂直同步信号的时间,有助于提高显示屏显示画面的速度。

在一种可能的实施方式中,surfaceflinger进程中包括产生标准垂直同步信号(即软件垂直同步信号)的信号生成线程(vsyncthread)、关注应用程序的垂直同步信号的第一活动线程(eventthread(app))、关注合成线程的垂直同步信号的第二活动线程(eventthread(surface))、根据标准垂直同步信号发送垂直同步信号的信号发送线程(dispsyncthread)以及负责合成图层的合成线程。下面采用实施例,分别对应用程序请求获取垂直同步信号以及合成线程请求获取垂直同步信号的过程进行说明。

请参考图5,其示出了本申请另一个示例性实施例提供的垂直同步方法的方法流程图。该方法可以包括如下步骤。

步骤501,接收应用程序发送的第一垂直同步信号请求。

在一种可能的实施方式中,当应用程序需要绘制图层时,即向surfaceflinger进程中的第一活动线程发送第一垂直同步信号请求,由第一活动线程向信号发送线程发送该第一垂直同步信号请求。相应的,信号发送线程接收该第一垂直同步信号请求。

步骤502,获取第一垂直同步信号请求的第一请求时刻,以及上一次接收到垂直同步信号请求的第二请求时刻。

与上述步骤402相似的,surfaceflinger进程的信号发送线程获取到第一垂直同步信号请求的第一请求时刻,以及上一次接收到应用程序发送的第一垂直同步信号请求的第二请求时刻,并计算第一请求时刻与第二请求时刻之间的请求时间间隔。

在一个示意性的例子中,如图6所示,surfaceflinger进程(信号发送线程)获取到第一请求时刻为t1,第二请求时刻为t2,并计算得到请求时间间隔为t1-t2=20ms。

步骤503,若第一请求时刻与第二请求时刻之间的请求时间间隔大于时长阈值,则向应用程序发送第一模拟垂直同步信号,应用程序用于根据第一模拟垂直同步信号进行画面绘制。

可选的,该时长阈值为显示屏的一个垂直同步信号周期。比如,当终端的显示屏为60hz时,该垂直同步信号周期为16.7ms。

相应的,当第一请求时刻与第二请求时刻之间的请求时间间隔大于一个垂直同步信号周期时,surfaceflinger线程中的信号发送线程则通过垂直同步信号模拟功能,生成第一模拟垂直同步信号,并将第一模拟垂直同步信号发送给应用程序(首先将第一模拟垂直同步信号发送给第一活动线程,由第一活动线程发送给应用程序)。

结合上述步骤502中的示例,由于相邻两次请求之间的请求时间间隔(20ms)大于一个垂直同步信号周期(16.7ms),因此,surfaceflinger立即向应用程序发送第一模拟垂直同步信号。

在其他可能的实施方式中,当连续n(n≥3)次第一垂直同步信号请求之间的n-1个请求时间间隔均大于时长阈值时,终端通过surfaceflinger进程向应用程序发送第一模拟垂直同步信号,本实施例对此不做限定。

可选的,应用程序接收到该第一模拟垂直同步信号后,进行图层绘制,并将绘制得到的图层数据发送给surfaceflinger。示意性的,如图6所示,应用程序接收到第一模拟垂直同步信号后进行图层绘制,并将图层数据发送至surfaceflinger进程(中的合成线程)。

步骤504,若第一请求时刻与第二请求时刻之间的请求时间间隔小于时长阈值,则根据标准垂直同步信号生成第一垂直同步信号,标准垂直同步信号由信号生成线程生成。

当相邻两次请求之间的请求时间间隔小于时长阈值时,表明应用程序等待垂直同步信号的时间较短,因此终端可以根据标准垂直同步信号生成第一垂直同步信号。

在一种可能的实施方式中,当请求时间间隔小于时长阈值时,信号发送线程即在接收到信号生成线程产生的标准垂直同步信号后,生成第一垂直同步信号。

步骤505,向应用程序发送第一垂直同步信号,应用程序用于根据第一垂直同步信号进行画面绘制。

进一步的,终端向应用程序发送第一垂直同步信号,以便应用程序根据第一垂直同步信号进行画面绘制。

在一种可能的实施方式中,信号发送线程将第一垂直同步信号发送至第一活动线程,由第一活动线程将第一垂直同步信号发送给应用程序。

本实施例中,当应用程序相邻两次请求的请求时间间隔大于时长阈值时,通过模拟一个垂直同步信号给应用程序,使得应用程序能够立即进行图层绘制,避免应用程序长时间得到真实的垂直同步信号,从而提高了应用程序的画面绘制效率。

在一种可能的实施方式中,surfaceflinger进程中的合成线程接收到应用程序发送的图层数据后,会向surfaceflinger进程中的信号发送线程请求垂直同步信号。为了降低合成线程等待垂直同步信号的时长,信号发送线程可以在(合成线程)相邻两次请求之间的请求时间间隔过长时,向合成线程发送模拟垂直同步信号。请参考图7,其示出了本申请另一个示例性实施例提供的垂直同步方法的方法流程图。该方法可以包括如下步骤。

步骤701,接收合成线程发送的第二垂直同步信号请求。

在一种可能的实施方式中,当合成线程接收到应用程序发送的图层数据,并需要进行图层合成时,即向surfaceflinger进程中的第二活动线程发送第二垂直同步信号请求,由第二活动线程向信号发送线程发送该第二垂直同步信号请求。相应的,信号发送线程接收该第二垂直同步信号请求。

步骤702,获取第二垂直同步信号请求的第一请求时刻,以及上一次接收到第二垂直同步信号请求的第二请求时刻。

与上述步骤402相似的,surfaceflinger进程的信号发送线程获取到第二垂直同步信号请求的第一请求时刻,以及上一次接收到合成线程发送的第二垂直同步信号请求的第二请求时刻,并计算第一请求时刻与第二请求时刻之间的请求时间间隔。

在一个示意性的例子中,如图8所示,surfaceflinger进程(信号发送线程)获取到第一请求时刻为t1,第二请求时刻为t2,并计算得到请求时间间隔为t1-t2=25ms。

步骤703,若第一请求时刻与第二请求时刻之间的请求时间间隔大于时长阈值,向合成线程发送第二模拟垂直同步信号,合成线程用于根据第二模拟垂直同步信号进行图层合成。

可选的,该时长阈值为显示屏的一个垂直同步信号周期。比如,当终端的显示屏为60hz时,该垂直同步信号周期为16.7ms。

相应的,当第一请求时刻与第二请求时刻之间的请求时间间隔大于一个垂直同步信号周期时,surfaceflinger线程中的信号发送线程则通过垂直同步信号模拟功能,生成第二模拟垂直同步信号,并将第二模拟垂直同步信号发送给合成线程(首先将第二模拟垂直同步信号发送给第二活动线程,由第二活动线程发送给合成线程)。

结合上述步骤702中的示例,由于相邻两次请求之间的请求时间间隔(25ms)大于一个垂直同步信号周期(16.7ms),因此,surfaceflinger立即向合成线程发送第二模拟垂直同步信号。

在其他可能的实施方式中,当连续n(n≥3)次第二垂直同步信号请求之间的n-1个请求时间间隔均大于时长阈值时,终端通过surfaceflinger进程向合成线程发送第二模拟垂直同步信号,本实施例对此不做限定。

可选的,合成线程接收到该第二模拟垂直同步信号后,进行图层合成,并将合成得到的图像帧数据发送给显示屏。

结合上述步骤中的示例,如图8所示,由于相邻两次请求的请求时间间隔(25ms)大于一个垂直同步信号周期(16.7ms),因此,surfaceflinger进程中的信号发送线程(图中未示出)向合成线程发送第二模拟垂直同步信号。合成线程接收到第二模拟垂直同步信号后,无需等待真实垂直同步信号即可进行图层合成,从而将合成得到的图像帧数据发送至显示屏。

步骤704,若第一请求时刻与第二请求时刻之间的请求时间间隔小于时长阈值,则根据标准垂直同步信号生成第二垂直同步信号,标准垂直同步信号由信号生成线程生成。

当相邻两次请求之间的请求时间间隔小于时长阈值时,表明合成线程等待垂直同步信号的时间较短,因此终端可以根据标准垂直同步信号生成第二垂直同步信号。

在一种可能的实施方式中,当请求时间间隔小于时长阈值时,信号发送线程即在接收到信号生成线程产生的标准垂直同步信号后,生成第二垂直同步信号。

步骤705,向合成线程发送第二垂直同步信号,应用程序用于根据第二垂直同步信号进行图层合成。

进一步的,终端向合成线程发送第二垂直同步信号,以便合成线程根据第二垂直同步信号进行图层合成。

在一种可能的实施方式中,信号发送线程将第二垂直同步信号发送至第二活动线程,由第二活动线程将第二垂直同步信号发送给合成线程。

本实施例中,当合成线程相邻两次请求的请求时间间隔大于时长阈值时,通过模拟一个垂直同步信号给合成线程,使得合成线程能够立即进行图层合成操作,避免合成线程长时间得到真实的垂直同步信号,从而提高了图层的合成效率。

为了验证上述垂直同步方法的优化效果,测试人员分别对桌面点击场景、应用内点击场景下,绘制到画面显示的平均时长进行统计,得到的实验数据如表一所示。

表一

通过表一中的数据可以发现,应用上述垂直同步方法后,绘制到画面显示的平均时长分别优化了8ms(桌面点击场景)和9ms(应用内点击场景),且标准差更小,即画面帧率更加稳定。

上述实施例提供的垂直同步方式是针对软件层面的优化,为了进一步降低画面显示延迟,在一种可能的实施方式中,可以从硬件层面对显示屏更新图像帧时的等待时间进行优化。在图7的基础上,如图9所示,步骤703和705之后还可以包括如下步骤。

步骤706,通过合成线程向显示屏发送图像帧数据,图像帧数据由合成线程进行图层合成后得到。

相应的,显示屏接收到该图像帧数据后,即将图像帧数据写入缓冲区中。

步骤707,获取显示屏当前显示图像帧的显示次数。

相关技术中,合成线程发送的图像帧数据被写入显示屏的缓冲区,当接收到硬件垂直同步信号时,显示屏根据缓冲区内的图像帧数据进行图像帧更新。

在一种可能的场景下,若未接收到合成线程发送的新的图像帧数据,显示屏需要重复显示上一图像帧,直至合成线程发送新的图像帧数据后,在下一个垂直同步信号周期内更新图像帧,即同一图像帧存在重复显示多次的情况。为了提高这种场景下图像帧的更新速度,本申请实施例中,当接收到合成线程发送的图像帧数据时,终端并非固定在接收到硬件垂直同步信号时才会进行图像帧更新,而是根据显示屏当前显示的图像帧确定是否需要立即进行图像帧更新。

在一种可能的实施方式中,显示屏进行显示时,会记录当前图像帧的显示次数,当接收到合成线程发送的图像帧数据时,终端即获取当前图像帧的显示次数。其中,当显示次数为1次时,表明当前图像帧为首次显示,当显示次数大于1,表明当前图像帧正在重复显示。

步骤708,若显示次数大于1,则重置显示屏的垂直同步信号起点,并根据图像帧数据更新显示屏显示的图像帧。

若在重复显示当前图像帧的过程中接收到新的图像帧数据,为了尽快对图像帧进行更新,终端无需根据硬件垂直同步信号进行图像帧更新,而是重置显示屏的垂直同步信号起点,并立即根据接收到的图像帧数据更新显示屏显示的图像帧。

其中,终端通过修改显示屏的寄存器来重置垂直同步信号起点,且重置垂直同步信号起点后,显示屏从该垂直同步信号起点开始,重新根据垂直同步信号周期产生硬件垂直同步信号。

在一个示意性的例子中,如图10所示,显示屏在0-t1这一垂直同步信号周期内显示a帧图像帧,且在显示0-t1这一时间段内收到b帧的图像帧数据,从而在t1-t2这一垂直同步信号周期内显示b帧图像帧。然而,由于在t1-t2这一垂直同步信号周期内,显示屏并未收到新的图像帧数据,因此,显示屏需要等待新的图像帧数据并再次显示b帧图像帧。当在t3(t3与t2的间隔小于垂直同步信号周期)时刻接收到c帧的图像帧数据时,由于显示屏当前显示的b帧图像帧的显示次数大于1,因此,终端t3这一时刻重置垂直同步信号起点,并在t3-t4这一垂直同步信号周期内显示c帧图像帧。

由于重置垂直同步信号起点时需要一定的开销,因此为了避免出现重置代价过大的情况,在一种可能的实施方式中,本步骤可以包括如下步骤:

一、根据当前硬件状态确定重置垂直同步信号起点的重置代价,重置代价包括重置时间。

可选的,若当前图像帧的显示次数大于1时,终端首先根据当前硬件状态确定重置垂直同步信号起点的重置代价,该重置代价至少包括重置时间。其中,该重置时间可以为终端重置显示屏的寄存器的时间。

可选的,当前硬件状态包括处理器负载、显示屏刷新频率、内存剩余量中的至少一种,本实施例对此不做限定。

二、若重置代价小于代价阈值,则重置垂直同步信号起点,并根据图像帧数据更新显示屏显示的图像帧。

可选的,该代价阈值根据等待代价确定,该等待代价可以距离下一个垂直同步信号的时长。

当重置代价小于代价阈值时,终端则重置垂直同步信号起点;若重置代价大于代价阈值时,终端则继续显示当前图像帧,直到接收到硬件垂直同步信号时进行图像帧更新。

不同于相关技术中需要等到硬件垂直同步信号时才能进行图像帧更新,本申请实施例中通过引入动态垂直同步信号周期机制,使得显示屏能够根据接收到的图像帧数据立即进行图像帧更新,从而提高图像的显示速度。

在另一种可能的应用场景下,对于支持命令(command)模式的显示屏,当显示屏处理睡眠状态(睡眠状态下,显示屏根据自身存储器中的图像帧数据进行图像显示)且接收到新的图像帧数据时,相关技术中,显示屏需要对其硬件垂直同步信号后才能进行图像帧更新,导致图像更新存在延迟。为了降低图像更新延迟,可选的,当接收到合成线程发送的图像帧数据,且显示屏处于睡眠状态时,终端重置显示屏的垂直同步信号起点,并根据图像帧数据更新显示屏显示的图像帧。其中,重置显示屏的垂直同步信号起点的过程可以参考上述步骤708,本实施例在此不再赘述。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参考图11,其示出了本申请一个实施例提供的垂直同步装置的结构示意图。该装置可以通过专用硬件电路,或者,软硬件的结合实现成为图1中的终端的全部或一部分,该装置包括:

请求接收模块1101,用于接收请求方发送的垂直同步信号请求,所述垂直同步信号请求用于请求获取垂直同步信号;

获取模块1102,用于获取所述垂直同步信号请求的第一请求时刻,以及上一次接收到所述垂直同步信号请求的第二请求时刻;

第一发送模块1103,用于当所述第一请求时刻与所述第二请求时刻之间的请求时间间隔大于时长阈值时,向所述请求方发送模拟垂直同步信号,所述请求方用于根据所述模拟垂直同步信号执行预定操作。

可选的,所述时长阈值根据垂直同步信号周期确定,所述垂直同步信号周期用于指示相邻两个垂直同步信号之间的时间间隔,且所述时长阈值大于等于所述垂直同步信号周期。

可选的,所述请求方为应用程序;

所述请求接收模块1101,用于:

接收所述应用程序发送的第一垂直同步信号请求;

所述第一发送模块1103,用于:

向所述应用程序发送第一模拟垂直同步信号,所述应用程序用于根据所述第一模拟垂直同步信号进行画面绘制。

可选的,所述装置还包括:

第一生成模块,用于若所述第一请求时刻与所述第二请求时刻之间的请求时间间隔小于所述时长阈值,则根据标准垂直同步信号生成第一垂直同步信号,所述标准垂直同步信号由信号生成线程生成;

第二发送模块,用于向所述应用程序发送所述第一垂直同步信号,所述应用程序用于根据所述第一垂直同步信号进行画面绘制。

可选的,所述请求方为合成线程;

所述请求接收模块1101,用于:

接收所述合成线程发送的第二垂直同步信号请求;

所述第一发送模块1103,用于:

向所述合成线程发送第二模拟垂直同步信号,所述合成线程用于根据所述第二模拟垂直同步信号进行图层合成。

可选的,所述装置还包括:

第二生成模块,用于若所述第一请求时刻与所述第二请求时刻之间的请求时间间隔小于所述时长阈值,则根据标准垂直同步信号生成第二垂直同步信号,所述标准垂直同步信号由信号生成线程生成;

第三发送模块,用于向所述合成线程发送所述第二垂直同步信号,所述应用程序用于根据所述第二垂直同步信号进行图层合成。

可选的,所述装置还包括:

数据发送模块,用于通过所述合成线程向显示屏发送图像帧数据,所述图像帧数据由所述合成线程进行图层合成后得到;

次数获取模块,用于获取所述显示屏当前显示图像帧的显示次数;

第一重置模块,用于若所述显示次数大于1,则重置所述显示屏的垂直同步信号起点,并根据所述图像帧数据更新所述显示屏显示的图像帧。

可选的,所述装置还包括:第二重置模块,用于当所述显示屏处于命令command模式下的睡眠状态时,重置所述显示屏的垂直同步信号起点,并根据所述图像帧数据更新所述显示屏显示的图像帧。

可选的,所述第一重置模块和所述第二重置模块,包括:

代价计算单元,用于根据当前硬件状态确定重置垂直同步信号起点的重置代价,所述重置代价包括重置时间;

重置单元,用于若所述重置代价小于代价阈值,则重置垂直同步信号起点,并根据所述图像帧数据更新所述显示屏显示的图像帧。

综上所述,本申请实施例中,接收到请求方发送的垂直同步信号请求后,根据该垂直同步信号请求的第一请求时刻,以及上一次接收到该垂直同步信号请求的第二请求时刻,计算请求时间间隔,并在请求时间间隔大于时长阈值时,向请求方发送模拟垂直同步信号,以便请求方根据模拟垂直同步信号执行预定操作;相较于相关技术中需要等待真实的垂直同步请求才能执行操作,通过引入垂直同步信号模拟机制,使得请求方无需等待真实的垂直同步信号也可以执行预定操作,从而缩短了请求方等待垂直同步信号的时间,有助于提高显示屏显示画面的速度。

需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将终端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本申请还提供一种计算机可读介质,其上存储有程序指令,程序指令被处理器执行时实现上述各个方法实施例提供的垂直同步方法。

本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个实施例所述的垂直同步方法。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的帧率控制方法中全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1