显示帧率调整方法及装置、终端及存储介质与流程

文档序号:33143047发布日期:2023-02-03 20:47阅读:80来源:国知局
1.本技术涉及显示
技术领域
:,尤其涉及一种显示帧率调整方法及装置、终端及存储介质。
背景技术
::2.帧率(framerate),也即刷新率,表示屏幕的图象每秒钟重绘多少次,也就是每秒钟屏幕刷新的次数,以hz(赫兹)为单位,高的刷新率可以获得更流畅、逼真的显示效果。但是,高刷新率会导致终端产品的图像处理速度和压力成倍增加,且在使用过程中给终端带来非常大的调度压力和负载,同时也导致了较大的功耗问题,大大缩短了终端单次充电的可用时长。3.因此,相关产品中通常会采用动态刷新率以节省功耗及降低终端负载,比如,终端设置刷新率为120hz,进入到某个视频应用,会自动切换到60hz运行。但动态刷新率相应需要动态调整垂直同步信号vsync的周期长度,而垂直同步信号vsync的周期长度的调整过程中容易出现由于丢帧问题导致的卡顿现象。技术实现要素:4.有鉴于此,本公开实施例提供了一种显示帧率调整方法及装置、终端及存储介质。5.根据本公开实施例的第一方面,提供一种显示帧率调整方法,包括:6.接收帧率调节指令,其中,所述帧率调节指令,指示显示帧率调整到第二帧率;7.根据当前的第一帧率对应的垂直同步信号vsync的第一周期长度接收图像帧;8.对接收的图像帧进行帧处理,得到帧处理后的图像帧,其中,所述帧处理包括:插帧处理或者抽帧处理;9.在所述帧处理后的图像帧的帧率调整到所述第二帧率时,将所述vsync的周期长度从所述第一周期长度调整到与所述第二帧率对应的第二周期长度,以将所述显示帧率调整到所述第二帧率。10.在一个实施例中,所述对接收的图像帧进行帧处理,得到帧处理后的图像帧,包括:11.若所述第一帧率大于所述第二帧率,对接收的图像帧进行抽帧处理,得到帧处理后的图像帧;12.若所述第一帧率小于所述第二帧率,对接收的图像帧进行插帧处理,得到帧处理后的图像帧。13.在一个实施例中,所述方法还包括:14.获取帧处理周期及所述帧处理周期对应的目标帧数,其中,不同所述帧处理周期对应的目标帧数不同;15.所述对接收的图像帧进行帧处理,得到帧处理后的图像帧,包括:16.根据所述目标帧数对接收的图像帧进行抽帧处理或插帧处理,得到所述帧处理后的图像帧。17.在一个实施例中,所述根据所述目标帧数对接收的图像帧进行抽帧处理或插帧处理,得到所述帧处理后的图像帧,包括:18.确定所述帧处理周期对应的处理帧数,其中,所述处理帧数随所述帧处理周期所处的时间增长递增;19.基于所述处理帧数,根据所述目标帧数对接收的图像帧进行抽帧处理或插帧处理,得到帧处理后的图像帧。20.在一个实施例中,所述处理帧数根据所述帧处理周期对应的帧处理系数和预设帧处理步长确定,其中,所述帧处理系数随所述帧处理周期所处的时间增长递增。21.在一个实施例中,所述帧处理周期对应的帧处理系数,由上一个所述帧处理周期的实际帧率与所述第二帧率的帧率差值的绝对值所确定,所述帧率差值的绝对值越小,所述帧处理系数越大。22.在一个实施例中,在基于所述处理帧数,根据所述目标帧数对接收的图像帧进行抽帧处理或插帧处理的方式包括以下至少之一:23.在帧处理周期内随机抽取或插入处理帧数个图像帧;24.以第一预设位置为起始位置,帧处理周期内随机抽取或插入处理帧数个图像帧;25.以第二预设位置为终止位置,帧处理周期内随机抽取或插入处理帧数个图像帧;26.以第三预设位置为起始位置,预设步长为抽取或插入图像帧的间隔帧数,帧处理周期内抽取或插入处理帧数个图像帧;27.以第四预设位置为起始位置,在帧处理周期内抽取或插入处理帧数个图像帧,其中,相邻两次抽取或插入图像帧的间隔帧数随时间的增长递增;28.以第五预设位置为起始位置,在帧处理周期内抽取或插入处理帧数个图像帧,其中,相邻两次抽取或插入图像帧的间隔帧数随时间的增长递减。29.根据本公开实施例的第二方面,提供一种显示帧率调整装置,包括:30.第一接收模块,用于接收帧率调节指令,其中,所述帧率调节指令,指示显示帧率调整到第二帧率;31.第二接收模块,用于根据当前的第一帧率对应的垂直同步信号vsync的第一周期长度接收图像帧;32.帧处理模块,用于对接收的图像帧进行帧处理,得到帧处理后的图像帧,其中,所述帧处理包括:插帧处理或者抽帧处理;33.调整模块,用于在所述帧处理后的图像帧的帧率调整到所述第二帧率时,将所述vsync的周期长度从所述第一周期长度调整到与所述第二帧率对应的第二周期长度,以将所述显示帧率调整到所述第二帧率。34.在一个实施例中,所述帧处理模块,用于:35.若所述第一帧率大于所述第二帧率,对接收的图像帧进行抽帧处理,得到帧处理后的图像帧;36.若所述第一帧率小于所述第二帧率,对接收的图像帧进行插帧处理,得到帧处理后的图像帧。37.在一个实施例中,所述装置还包括:38.获取模块,用于获取帧处理周期及所述帧处理周期对应的目标帧数,其中,不同所述帧处理周期对应的目标帧数不同;39.所述帧处理模块,用于根据所述目标帧数对接收的图像帧进行抽帧处理或插帧处理,得到所述帧处理后的图像帧。40.在一个实施例中,所述帧处理模块,包括:41.确定单元,用于确定所述帧处理周期对应的处理帧数,其中,所述处理帧数随所述帧处理周期所处的时间的增长递增;42.帧处理单元,用于基于所述处理帧数,根据所述目标帧数对接收的图像帧进行抽帧处理或插帧处理,得到帧处理后的图像帧。43.根据本公开实施例的第三方面,提供一种终端,所述终端第二方面所述的装置。44.根据本公开实施例的第四方面,提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现第一方面所述的方法。45.本公开实施例提供的显示帧率调整方法及装置、终端及存储介质,在接收帧率调节指令后,继续根据当前第一帧率对应的垂直同步信号vsync的第一周期长度接收图像帧;并对接收的图像帧进行帧处理,直至帧处理后的图像帧的帧率调整到目标帧率(第二帧率)时,将vsync的周期长度从第一周期长度调整到与目标帧率对应的第二周期长度,以将所述显示帧率调整到第二帧率。本公开实施例在帧率调整过程中,终端对基于当前vsync周期长度接收的图像帧进行帧处理,通过使送显的图像帧帧率逐步调整到目标帧率后,再调整vsync的周期长度,将vsync的周期长度调整过程中的明显掉帧问题,分散至每一次帧处理过程中,从而可以掩盖vsync的周期长度调整过程中明显的掉帧问题,减少突变调整导致的卡顿现象。46.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开实施例。附图说明47.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开实施例,并与说明书一起用于解释本公开实施例的原理。48.图1是相关技术中帧率调整过程中出现卡顿现象的示意图;49.图2是根据一示例性实施例示出的第一种显示帧率调整方法的流程示意图;50.图3是根据一示例性实施例示出的第二种显示帧率调整方法的流程示意图;51.图4是根据一示例性实施例示出的第三种显示帧率调整方法的流程示意图;52.图5是根据一示例性实施例示出的第四种显示帧率调整方法的流程示意图;53.图6是根据一示例性实施例示出的第五种显示帧率调整方法的流程示意图;54.图7是根据一示例性实施例示出的显示帧率调整过程中帧处理的示意图;55.图8是根据一示例性实施例示出的第一种显示帧率调整装置的框图;56.图9是根据一示例性实施例示出的第二种显示帧率调整装置的框图;57.图10是根据一示例性实施例示出的第三种显示帧率调整装置的框图;58.图11是根据一示例性实施例示出的一种显示帧率调整装置的组成结构框图。具体实施方式59.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开实施例的一些方面相一致的装置和方法的例子。60.在本公开实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开实施例。在本公开实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。61.应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。62.本公开实施例的显示帧率调整方法可应用于支持视频播放或图像显示的终端,包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、智能手环、掌上游戏机、计步器、智能家电、数字tv和台式计算机等。63.相关技术中,vsync(verticalsynchronization,垂直同步信号)可由终端的处理芯片发出或者由软件模拟发出,终端的应用层基于vsync合成图像帧,终端的ddic(displaydriverintergratedcircuit,显示驱动芯片)则基于vsync读取图像缓存中的图像并刷新到屏幕上,从而,通过vsync确保合成图像帧速率和显示帧率保持一致。其中,显示帧率(framerate),也即屏幕刷新率,是指每秒钟读取图像缓存中图像,并刷新到屏幕上的目标帧数;合成图像帧速率是指终端每秒钟合成的图像目标帧数。64.可以理解地,不同的显示帧率分别对应不同的vsync的周期长度,假设显示帧率为fps,周期长度为period(单位为:ms),显示帧率和周期长度的关系可以表示为:fps=1000/period,这里,vsync的周期长度指的是相邻两个vsync的间隔时长。例如,当显示帧率为60hz时,对应的周期长度约为16.666ms;当显示帧率为90hz时,对应的周期长度约为11.111ms,依此类推。65.屏幕的刷新过程是每一行从左到右刷新(行刷新,水平刷新,horizontalscanning),从上到下刷新(屏幕刷新,垂直刷新,verticalscanning)。当整个屏幕刷新完毕,即一个垂直刷新周期完成,会有短暂的空白期,此时发出vsync。vsync可以认为是终端进行屏幕刷新的节拍器,终端的屏幕刷新遵循生产者消费者模型,所有的图像都是由应用层绘制,surfaceflinger控制合成,再显示驱动芯片刷新至屏幕,整个过程都是由vsync控制节奏,所有的步骤都要在一个vsync周期内完成。66.而一旦在连续刷新的过程中,帧率发生变化,整个屏幕刷新的节拍发生变化。例如,上一个vsync周期较短,而下一个vsync周期较长时,加上android系统有缓冲的buffer,非常容易使已经合成好并放置至buffer中的图像数据由于vsync周期的变化,被新合成好的图像数据给替换掉,从而产生一次卡顿,即如图1所示的jank。67.如图1所示,横轴表示时间,cpu和gpu为生成图像帧的不同阶段的执行者,cpu和gpu在横轴方向上对应的长方形为不同阶段的图像帧,长方形内的数字为生成的图像帧的序号,长方形的长度为该节点图像帧处理的时长;display对应于终端的屏幕,为图像帧的显示者;vsync代表垂直同步信号vsync。68.继续参考图1,假设一个vsync长度(即,周期长度)为8.3ms,即120hz刷新率(即,显示帧率)下的一个帧的时间长度,在第0个vsync阶段,缓冲器中的图像帧m+1在vsync0周期内被送至屏幕display,而在vsync1周期内,由于vsync周期长度被调节成了16.6ms,但之后vsync马上又被调节成8.3ms,那么,在这一瞬间,图像帧m+2仅仅是送到缓冲器中,从而屏幕display连续在vsync0周期和vsync1周期内(即2*8.3ms)都显示图像帧m+1,画面就会显得卡了一帧。而且,在实际应用过程中,由于系统硬件vsync和软件vsync同步时的代码逻辑,往往会卡住不止一帧,这就形成了调帧过程中的卡顿现象(jank),这种卡顿现象在降帧调帧时尤其严重。69.本公开实施例中,在接收帧率调节指令后,终端仍基于调整前的第一帧率对应的vsync合成图像帧以及读取图像帧,同时,在该过程中,进一步对读取的图像帧进行插帧处理或者抽帧处理后刷新到屏幕上,在刷新到屏幕上的图像帧的帧率调整到第二帧率时,通过将vsync的周期长度从第一周期长度调整到与第二帧率对应的第二周期长度,相应地,终端也基于第二周期长度发出vsync,进而实现基于第二帧率对应的vsync合成图像帧以及读取图像帧。70.具体地,如图2所示,本示例性实施例提供一种显示帧率调整方法,包括:71.步骤s101:接收帧率调节指令,其中,所述帧率调节指令,指示显示帧率调整到第二帧率;72.步骤s102:根据当前的第一帧率对应的垂直同步信号vsync的第一周期长度接收图像帧;73.步骤s104:对接收的图像帧进行帧处理,得到帧处理后的图像帧,其中,所述帧处理包括:插帧处理或者抽帧处理;74.步骤s105:在所述帧处理后的图像帧的帧率调整到所述第二帧率时,将所述vsync的周期长度从所述第一周期长度调整到与所述第二帧率对应的第二周期长度,以将所述显示帧率调整到所述第二帧率。75.在本实施例中,帧率调节指令可基于帧率调节事件或周期性触发发出。例如:在终端启动或唤醒应用、当前应用切换到下一应用等场景下,均可触发发出帧率调节指令;又例如,设置触发周期,统计每一触发周期的实际显示帧率,若触发周期内的显示帧率满足预设条件(如实际显示帧率大于预设的最大显示帧率),则触发发出帧率调节指令。当然,除了以上列举的帧率调节指令的触发方式之外,还可以采用其他方式触发发出帧率调节指令,本公开实施例不作限制。76.终端的处理芯片接收上层(如,应用层)发出的指示显示帧率调整到第二帧率的帧率调节指令后,处理芯片并未直接调整发出vsync的周期长度将显示帧率调整至第二帧率,而是继续以第一帧率对应的vsync的第一周期长度发出vsync,显示驱动芯片则继续根据第一帧率对应的vsync的第一周期长度从应用层接收图像帧,即以第一周期长度频率接收图像帧。77.这里,在显示图像过程中,采用扫描方式,将显示缓存中的图像数据一行一行的进行显示,在扫描时,通常采用从左至右的顺序,扫描完终端的整个屏幕的各行称为一帧图像。在扫描过程中,当扫描完一帧图像后,需要重新回到第一行以进入下一次的循环扫描,此时有一段时间空隙,该时间空隙为两帧图像进行切换的时间点,可通过生成的vsync控制该切换点,终端的显示驱动芯片在每次接收到该vsync时,将显示缓存中的图像数据在屏幕上进行显示,进而控制屏幕显示各帧图像。78.然后,再对以第一周期长度为频率从应用层接收的图像帧,进行插帧处理或者抽帧处理,得到帧处理后的图像帧,帧处理后的图像帧为最终刷新到屏幕上的图像帧,通过插帧处理或者抽帧处理,改变实际刷新到屏幕上的显示帧率。79.最后,在实际刷新到屏幕上的显示帧率调整到第二帧率时,将vsync的周期长度从第一周期长度调整到第二周期长度。相应地,处理芯片调整为以第二帧率对应的vsync的第二周期长度发出vsync,显示驱动芯片根据第二周期长度从应用层接收图像帧。80.例如,帧率调节指令指示显示帧率由第一显示帧率120hz调整到第二显示帧率60hz,相应地,第一显示帧率对应的vsync的第一周期长度约为8.333ms,第二显示帧率对应的vsync的第二周期长度约为16.666ms。处理芯片接收到该帧率调节指令后,继续以8.333ms为周期发出vsync,显示驱动芯片则继续以8.333ms为周期从应用层接收图像帧,并对接收的图像帧进行抽帧处理,在抽帧处理后的图像帧的周期长度调整为第二周期长度16.666ms时,将vsync的周期长度从第一周期长度调整到与第二帧率对应的第二周期长度,即,处理芯片以16.666ms为周期发出vsync,显示驱动芯片则相应以16.666ms为周期从应用层接收图像帧。81.又例如,帧率调节指令指示显示帧率由第一显示帧率60hz调整到第二显示帧率120hz,相应地,第一显示帧率对应的vsync的第一周期长度约为16.666ms,第二显示帧率对应的vsync的第二周期长度约为8.333ms。处理芯片接收到该帧率调节指令后,继续以16.666ms为周期发出vsync,显示驱动芯片则继续以16.666ms为周期从应用层接收图像帧,并对接收的图像帧进行抽帧处理,在抽帧处理后的图像帧的周期长度调整为第二周期长度8.333ms时,将vsync的周期长度从第一周期长度调整到与第二帧率对应的第二周期长度,即,处理芯片以8.333ms为周期发出vsync,显示驱动芯片则相应以8.333ms为周期从应用层接收图像帧。82.本公开实施例提供的显示帧率调整方法及装置、终端及存储介质,在接收帧率调节指令后,继续根据当前第一帧率对应的vsync的第一周期长度接收图像帧;并对接收的图像帧进行帧处理,直至帧处理后的图像帧的帧率调整到目标帧率(第二帧率)时,将vsync的周期长度从第一周期长度调整到与目标帧率对应的第二周期长度,以将所述显示帧率调整到所述第二帧率。本公开实施例在帧率调整过程中,终端对基于当前vsync周期长度接收的图像帧进行帧处理,通过使送显的图像帧帧率逐步调整到目标帧率后,再调整vsync的周期长度,将vsync的周期长度调整过程中的明显掉帧问题,分散至每一次帧处理过程中,从而可以掩盖vsync的周期长度调整过程中明显的掉帧问题,减少突变调整导致的卡顿现象。83.在一些可能的实施方式中,上述步骤s104,在对根据所述第一周期长度的vsync从应用层接收的图像帧进行帧处理时,可根据当前第一帧率和第二帧率的大小关系,确定对从应用层接收的图像帧进行抽帧处理或者插帧处理。84.具体地,若所述第一帧率大于所述第二帧率,对接收的图像帧进行抽帧处理,得到帧处理后的图像帧;85.若所述第一帧率小于所述第二帧率,对接收的图像帧进行插帧处理,得到帧处理后的图像帧。86.例如,第一帧率为120hz,第二帧率为80hz,则对根据第一帧率对应的第一周期长度8.333ms的vsync从应用层接收的图像帧进行抽帧处理,通过抽帧,增大实际显示的图像帧的周期长度,使实际显示的图像帧的周期长度调整到第二帧率80hz对应的12.5ms。87.例如,第一帧率为60hz,第二帧率为80hz,则对根据第一帧率对应的第一周期长度16.666ms的vsync从应用层接收的图像帧进行插帧处理,通过插帧,减小实际显示的图像帧的周期长度,使实际显示的图像帧的周期长度调整到第二帧率80hz对应的12.5ms。88.进一步地,若第一帧率等于第二帧率,可对接收的图像帧进行抽帧处理或者插帧处理,也可以不对接收的图像帧做任何处理。89.在一些可能的实施方式中,如图3所示,所述方法还包括:90.步骤s103:获取帧处理周期及所述帧处理周期对应的目标帧数,其中,不同所述帧处理周期对应的目标帧数不同。91.所述步骤s104,包括:92.步骤s104’:根据所述目标帧数对接收的图像帧进行抽帧处理或插帧处理,得到所述帧处理后的图像帧。93.在本实施例中,在对根据所述第一周期长度的vsync从应用层接收的图像帧进行帧处理前,还获取帧处理周期及所述帧处理周期对应的目标帧数,根据帧处理周期及其对应的目标帧数,对从应用层接收的图像帧进行帧处理,使处理后的图像帧的帧数等于该帧处理周期对应的目标帧数。94.这里,帧处理周期及所述帧处理周期对应的目标帧数可为预先存储在终端的参数,或者,帧处理周期可为通过外部输入获得,然后,再进一步根据帧处理周期确定所述帧处理周期对应的目标帧数。95.可以理解地,帧处理周期设置得越小,则通过帧处理将帧处理后的图像帧的帧率调整到第二帧率的速度相对而言也越快,相应地,由于帧处理过程中插帧或者抽帧的速度过快,呈现给用户的图像平滑度也会受到一定影响。96.由于在进行帧处理后,帧处理周期内得到处理后的图像帧的个数为目标帧数,从而使得帧处理后的帧率调整为第二帧率,因此,目标帧数由帧处理周期和第二帧率确定,即,目标帧数=帧处理周期/第二帧率。97.例如:第二帧率为60hz,帧处理周期为100ms,则目标帧数为6;98.又例如:第二帧率为60hz,帧处理周期为200ms,则目标帧数为12;99.再例如:第二帧率为120hz,帧处理周期为200ms,则目标帧数为24。100.在一些可能的实施方式中,步骤s104’可以为步骤s104”:根据所述第一周期长度的vsync从应用层接收的图像帧,在至少一个帧处理周期内进行等于所述目标帧数的抽帧处理或插帧处理,得到所述帧处理后的图像帧。101.在本实施例中,可以通过在连续的至少一个帧处理周期内进行抽帧处理或插帧处理,使连续的至少一个帧处理周期内得到的处理后的图像帧的数量逐渐趋近直至等于目标帧数。102.例如,第一帧率为120hz,第二帧率为60hz,帧处理周期为200ms,相应地,目标帧数为12,同时,还确定出一个帧处理周期内第一帧率对应的帧数为24。则,在进行帧处理时,可以以下任一方式实现通过在连续的至少一个帧处理周期内进行抽帧处理,使连续的至少一个帧处理周期内得到的处理后的图像帧的数量逐渐趋近直至等于目标帧数:103.第一种方式:在1个帧处理周期内进行抽帧处理,在该帧处理周期内抽取12个图像帧,处理后的图像帧的数量为1。104.第二种方式:在2个连续的帧处理周期内进行抽帧处理,在第1个帧处理周期内抽取6个图像帧,处理后的图像帧的数量为18;在第2个帧处理周期内抽取12个图像帧,处理后的图像帧的数量为12。105.第三种方式:在3个连续的帧处理周期内进行抽帧处理,在第1个帧处理周期内抽取4个图像帧,处理后的图像帧的数量为20;在第2个帧处理周期内抽取8个图像帧,处理后的图像帧的数量为16;在第3个帧处理周期内抽取12个图像帧,处理后的图像帧的数量为12。106.第四种方式:在4个连续的帧处理周期内进行抽帧处理,在第1个帧处理周期内抽取4个图像帧,处理后的图像帧的数量为20;在第2个帧处理周期内抽取8个图像帧,处理后的图像帧的数量为16;在第3个帧处理周期内抽取10个图像帧,处理后的图像帧的数量为14;在第4个帧处理周期内抽取12个图像帧,处理后的图像帧的数量为12。107.……108.依次类推,通过在连续的至少一个帧处理周期内进行抽帧处理或插帧处理,使连续的至少一个帧处理周期内得到的处理后的图像帧的数量逐渐趋近直至等于目标帧数。109.在一些可能的实施方式中,如图4所示,步骤s104’包括:110.步骤s1041:确定所述帧处理周期对应的处理帧数,其中,所述处理帧数随所述帧处理周期所处的时间增长递增;111.步骤s1042:基于所述处理帧数,根据所述目标帧数对接收的图像帧进行抽帧处理或插帧处理,得到帧处理后的图像帧。112.以下,具体区分抽帧处理和插帧处理进行说明。113.对于抽帧处理,如图5所示,步骤s104’包括:114.步骤s1041’:确定所述帧处理周期对应的处理帧数,其中,所述处理帧数随所述帧处理周期所处的时间的增长递增;115.步骤s1042’:基于所述抽帧数,根据所述目标帧数对接收的图像帧进行抽帧处理或插帧处理,得到帧处理后的图像帧。116.这里,一个抽帧周期也即一个帧处理周期,抽帧数即处理帧数。117.在本实施例中,在通过多个抽帧周期持续进行抽帧处理时,需要确定每个抽帧周期对应的抽帧数,例如:第一帧率为120hz,第二帧率为60hz,帧处理周期为200ms,相应地,目标帧数为12,同时,还确定出一个帧处理周期内第一帧率对应的帧数为24,则确定:118.第1个抽帧周期的抽帧数为4,抽帧处理后的图像帧的数量为20;119.第2个抽帧周期的抽帧数为8,抽帧处理后的图像帧的数量为16;120.第3个抽帧周期的抽帧数为10,抽帧处理后的图像帧的数量为14;121.第4个抽帧周期的抽帧数为12,抽帧处理后的图像帧的数量为12,至此,抽帧处理后的图像帧的数量等于目标帧数,抽帧处理结束。122.在本实施例中,通过使每个抽帧周期对应的抽帧数随时间的增长递增,可以使得抽帧数量逐步增加,相应地,屏幕显示的图像帧逐步减少,尽可能保证屏幕显示的平滑性。123.在一些可能的实施方式中,每个抽帧周期对应的抽帧数随时间的增长等量递增。124.在一些可能的实施方式中,所述抽帧数根据所述抽帧周期对应的抽帧系数和预设抽帧步长确定,其中,所述抽帧系数随所述抽帧周期所处的时间增长递增。125.例如,ni=ki*l,其中,ni为第i个抽帧周期对应的抽帧数,ki为第i个抽帧周期对应的抽帧系数,l为预设抽帧步长,且ki+1>ki。126.在一些可能的实施方式中,所述抽帧周期对应的抽帧系数,为上一个所述抽帧周期的实际帧率与所述第二帧率的帧率差值的绝对值所确定,所述帧率差值的绝对值越小,所述抽帧系数越大。127.例如,帧率差值为qi,即第i-1个抽帧周期进行抽帧处理后的实际帧率与第二帧率的差值的绝对值,抽帧系数ki=p/qi,p为大于0的常数。128.在本实施例中,在对屏幕送显的图像帧进行抽帧的过程中,逐步增大抽帧频率,使送显的图像帧的帧率逐步接近第二帧率,使得整个抽帧过程相对平稳,避免了突变导致明显的卡顿。129.在一些可能的实施方式中,在确定每个抽帧周期对应的抽帧数后,可以按照以下方式至少之一抽取抽帧周期内对应位置处的图像帧:130.在抽帧周期内随机抽取抽帧数个图像帧;131.以第一预设位置为起始位置,抽帧周期内随机抽取抽帧数个图像帧,例如,第一预设位置为抽帧周期内的前10%个图像帧,假设抽帧周期内图像帧总共有20个,则第一预设位置可为第1个图像帧或第2个图像帧;132.以第二预设位置为终止位置,抽帧周期内随机抽取抽帧数个图像帧,例如,第二预设位置为抽帧周期内的后10%个图像帧,假设抽帧周期内图像帧总共有20个,则第二预设位置可为第19个图像帧或第20个图像帧;133.以第三预设位置为起始位置,预设步长为抽取图像帧的间隔帧数,抽帧周期内抽取抽帧数个图像帧,例如,第三预设位置为抽帧周期内的前10%个图像帧,预设步长基于抽帧周期内的图像帧总数和抽帧数确定,假设抽帧周期内图像帧总共有20个,抽帧数为4个,预设步长为图像帧总数与抽帧数的商,即5,则以第三预设位置为第2个图像帧为例,将依次抽取抽帧周期内第2、7、12、17个图像帧;134.以第四预设位置为起始位置,在抽帧周期内抽取抽帧数个图像帧,其中,相邻两次抽取图像帧的间隔帧数随抽取时间的增长递增;例如,第四预设位置为抽帧周期内的前10%个图像帧,假设抽帧周期内图像帧总共有20个,抽帧数为4个,初始帧数间隔为2帧,之后每抽取一次图像帧,帧数间隔增加3帧,则以第四预设位置为第2个图像帧为例,将依次抽取抽帧周期内第2、4、9、17个图像帧;135.以第五预设位置为起始位置,在抽帧周期内抽取抽帧数个图像帧,其中,相邻两次抽取图像帧的间隔帧数随抽取时间的增长递减,例如,第五预设位置为抽帧周期内的前10%个图像帧,假设抽帧周期内图像帧总共有20个,抽帧数为4个,初始帧数间隔为8帧,之后每抽取一次图像帧,间隔帧数减少2帧,则以第五预设位置为第2个图像帧为例,将依次抽取抽帧周期内第2、10、16、20个图像帧。136.在一些可能的实施方式中,抽取的图像帧为非关键帧,如果按照上述方法确定的抽取的帧为关键帧,则改为抽取该帧之后的最近一帧非关键帧。此处的非关键帧可包括视频内的b帧和/或p帧,这里,p帧是指通过充分降低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧;b帧是指既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧。137.对于插帧处理,如图6所示,步骤s104’包括:138.步骤s1041”:确定每个插帧周期对应的插帧数,所述插帧数随所述插帧周期所处的时间增长递增;139.步骤s1042”:基于所述插帧数,对接收的图像帧按照所述插帧周期进行等于所述目标帧数的插帧处理,得到帧处理后的图像帧。140.这里,一个插帧周期也即一个帧处理周期,插帧数即处理帧数。141.在本实施例中,在通过多个插帧周期持续进行插帧处理时,需要确定每个插帧周期对应的插帧数,例如:第一帧率为60hz,第二帧率为120hz,帧处理周期为200ms,相应地,目标帧数为24,同时,还确定出一个帧处理周期内第一帧率对应的帧数为12,则确定:142.第1个插帧周期的插帧数为4,插帧处理后的图像帧的数量为16;143.第2个插帧周期的插帧数为8,插帧处理后的图像帧的数量为20;144.第3个插帧周期的插帧数为10,插帧处理后的图像帧的数量为22;145.第4个插帧周期的插帧数为12,插帧处理后的图像帧的数量为24,至此,插帧处理后的图像帧的数量等于目标帧数,插帧处理结束。146.在本实施例中,插帧时插入的图像帧可以为从应用层接收到的最近的一个或多个图像帧。147.在本实施例中,通过使每个插帧周期对应的插帧数随时间的增长递增,可以使得插帧数量逐步增加,相应地,屏幕显示的图像帧逐步增加,尽可能保证屏幕显示的连续性。148.在一些可能的实施方式中,每个插帧周期对应的插帧数随时间的增长等量递增。149.在一些可能的实施方式中,所述插帧数根据所述插帧周期对应的插帧系数和预设步长确定,所述插帧系数随所述插帧周期所处的时间增长递增。150.例如,mi=li*s,其中,mi为第i个插帧周期对应的插帧数,li为第i个插帧周期对应的插帧系数,s为预设插帧步长,且li+1>li。151.在一些可能的实施方式中,所述插帧周期对应的插帧系数,为上一个所述插帧周期的实际帧率与所述第二帧率的帧率差值的绝对值所确定,所述帧率差值的绝对值越小,所述插帧系数越大。152.例如,帧率差值为oi,即第i-1个插帧周期进行插帧处理后的实际帧率与第二帧率的差值的绝对值,插帧系数li=r/oi,r为大于0的常数。153.在本实施例中,在对屏幕送显的图像帧进行插帧的过程中,逐步增大插帧频率,使送显的图像帧的帧率逐步接近第二帧率,使得整个插帧过程相对平稳,避免了突变导致明显的卡顿。154.在一些可能的实施方式中,在确定每个插帧周期对应的插帧数后,可以按照以下方式至少之一插入插帧周期内对应位置处的图像帧:155.插帧周期内随机插入插帧数个图像帧;156.以第一预设位置为起始位置,插帧周期内随机插入插帧数个图像帧,例如,第一预设位置为插帧周期内的前20%个图像帧之间,假设插帧周期内图像帧总共有20个,则第一预设位置可在第1个图像帧和第4个图像帧之间;157.以第二预设位置为终止位置,插帧周期内随机插入插帧数个图像帧,例如,第二预设位置为插帧周期内的后20%个图像帧,假设插帧周期内图像帧总共有20个,则第二预设位置可为第16个图像帧和第20个图像帧之间;158.以第三预设位置为起始位置,预设步长为插入图像帧的间隔帧数,插帧周期内插入插帧数个图像帧,例如,第三预设位置为插帧周期内的前20%个图像帧,预设步长基于插帧周期内的图像帧总数和抽帧数确定,假设插帧周期内图像帧总共有20个,插帧数为4个,预设步长为图像帧总数与插帧数的商,即5,则以第三预设位置为第2个图像帧和第3个图像帧之间为例,将依次在插帧周期内第2个图像帧和第3个图像帧之间、第7个图像帧和第8个图像帧之间、第12个图像帧和第13个图像帧之间、第17个图像帧和第18个图像帧之间;159.以第四预设位置为起始位置,在插帧周期内插入插帧数个图像帧,其中,相邻两次插入图像帧的间隔帧数随插入时间的增长递增,例如,第四预设位置为插帧周期内的前20%个图像帧,假设插帧周期内图像帧总共有20个,插帧数为4个,初始帧数间隔为2帧,之后每插入一次图像帧,帧数间隔增加3帧,则以第就预设位置为第2个图像帧和第3个图像帧为例,将依次在插帧周期内第2个图像帧和第3个图像帧之间、第4个图像帧和第5个图像帧之间、第9个图像帧和第10个图像帧之间、第17个图像帧和第18个图像帧之间插入图像帧;160.以第五预设位置为起始位置,在插帧周期内插入插帧数个图像帧,其中,相邻两次插入图像帧的间隔帧数随插入时间的增长递减,例如,第十预设位置为插帧周期内的前20%个图像帧,假设插帧周期内图像帧总共有20个,插帧数为4个,初始帧数间隔为8帧,之后每插入一次图像帧,间隔帧数减少2帧,则以第十预设位置为第2个图像帧和第3个图像帧之间为例,将依次在插帧周期内第2个图像帧和第3个图像帧之间、第10个图像帧和第11个图像帧之间、第16个图像帧和第17个图像帧之间、第20个图像帧和第21个图像帧之间插入图像帧。161.在一些可能的实施方式中,插入的图像帧为与插入位置最接近的前一帧图像帧的复制帧。162.应该理解的是,上述实施例中,显示帧率调整方法的各个步骤的执行顺序并没有严格的顺序限制,些步骤可以以其它的顺序执行,除非本文中有明确的说明。而且,上述实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。163.以下结合上述任意实施例提供一个具体示例:164.为了应对调帧过程中出现的卡顿现象,使调帧过程中的图像显示更为平滑,本示例性实施例采用的显示帧率调整方法如下:165.a1:在屏幕以稳定帧率进行屏幕刷新时,随机性地发生一次帧率调整事件,要求调整显示帧率,假设此时屏幕以高帧率(第一帧率)进行屏幕刷新,上层(如,应用层)要求屏幕以低帧率(第二帧率)进行屏幕刷新;166.a2:实时操作系统(kernel)接收到上层的降帧调节刷新率要求s1(即,帧率调节指令)后,立即把该降帧调节刷新率要求s1同步给显示驱动芯片,同时进入延迟调帧模式m1,等待显示驱动芯片回复;167.a3:显示驱动芯片收到降帧调节刷新率要求s1后,ddic(displaydriverintergratedcircuit,显示驱动芯片)会保持当前vsync周期,对于应用层送过来的短vsync周期(第一周期长度)图片按照ddic预设步长进行逐步抽帧,这里关于抽帧有两个属性需要定义,抽帧步长和抽帧位置;168.a31:抽帧步长(即,抽帧数)指高刷新率降到低刷新率时,降到目标帧数每秒减少的步长,该步长由一个系数决定,而不是一个直接使用常量。由于高刷新率降低的前半部分时间,本身处于一个较高的刷新率,抽帧不会让人眼的视觉暂留效应受到明显影响,但是随着帧率降低,抽帧数量应该随之减少,否则人眼的视觉暂留会明显感觉到帧间间隔在扩大。169.因此,这里定义步长的系数(即,抽帧系数)为α,当前帧率与目标帧率的差值为y,时间为x,那么,当前帧率与目标帧率的差值和时间的关系为:y=ax+b,其中,0<a<1。抽帧的间隔可视步长而定。170.a32:由于ddic端接到的图像数据是数据流,无法识别到具体的图像信息,所以,抽帧的位置可以采用分散抽取或随机抽取等方式。171.a4:ddic端抽帧操作直至实际显示刷新率降到目标刷新率(第二帧率)为止,此时发送调帧完成信号s3回复给实时操作系统,表示已经调帧完成,并进行下一步调整vsync周期的动作,实时操作系统收到ddic端的回复s3后,发送确认信号s4给到ddic端;172.a5:ddic端收到实时操作系统发来的确认信号s4,正式修改硬件vsync至目标刷新率对应的vsync周期,整个屏幕刷新的节拍正式被改变,同时,屏幕已经按照目标刷新率在运行,所以绝对不会出现前述的jank现象。173.vsync间隔是屏幕刷新率控制的硬件同步信号,本示例性实施例通过在调帧过程中,在屏幕硬件侧延迟调整目标vsync需要设定的时间,实时操作系统检测到vsync间隔需要从短到长调整时,即帧率降低时,硬件同步信号vsync保持不变,否则会有撕裂问题产生,同时在实时操作系统保持之前帧率,而显示驱动芯片本身在进行图像刷新时,模仿类似于背光渐变dimming的过程,逐步对应用层送到屏幕的图片进行抽帧,直到硬件刷新率实际达到目标刷新率时,将屏幕硬件的vsync改成目标刷新率对应的时间间隔,由于在此过程中,硬件vsync保持不变,只是显示驱动芯片对刷新的内容进行了抽帧,从而,在保证屏幕没有撕裂效应产生的同时,调帧过程也无明显卡顿。174.如图7所示,在收到帧率调节指令指示显示帧率调整到第二帧率60hz,当前第一帧率为120hz,基于本技术实施例显示帧率调整方法,硬件vsync保持原8.3ms周期,应用层也继续基于原8.3ms周期合成图像帧,但是,送显至屏幕display的图像帧会被按照预设策略抽取,如,应用层合成的图像帧m+2并未被送显至屏幕display,而是连续2*8.3ms在屏幕display显示图像帧m+1。可以理解地,这里抽帧造成的屏幕显示影响,相对于直接调整硬件vsync的发送周期造成的影响要可控且更微弱。unit)、微处理器(microprocessor)、或其他电子元件实现,用于执行前述方法。194.图11是根据一示例性实施例示出的一种帧率调节装置800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。195.参照图11,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(i/o)的接口812,传感器组件814,以及通信组件816。196.处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。197.存储器804被配置为存储各种类型的数据以支持在装置800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。198.电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。199.多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当装置800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。200.音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。201.i/o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。202.传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到装置800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。203.通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如wifi,4g或5g,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。204.在示例性实施例中,装置800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。205.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。206.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开实施例的其它实施方案。本技术旨在涵盖本公开实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开实施例的一般性原理并包括本公开实施例未公开的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开实施例的真正范围和精神由下面的权利要求指出。207.应当理解的是,本公开实施例并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开实施例的范围仅由所附的权利要求来限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1