CN115904184B - 数据处理方法和相关装置 - Google Patents

数据处理方法和相关装置 Download PDF

Info

Publication number
CN115904184B
CN115904184B CN202111163449.6A CN202111163449A CN115904184B CN 115904184 B CN115904184 B CN 115904184B CN 202111163449 A CN202111163449 A CN 202111163449A CN 115904184 B CN115904184 B CN 115904184B
Authority
CN
China
Prior art keywords
frame
frame rate
vsync
rate
thread
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
Application number
CN202111163449.6A
Other languages
English (en)
Other versions
CN115904184A (zh
Inventor
蔡立峰
杜鸿雁
沈赫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202111163449.6A priority Critical patent/CN115904184B/zh
Publication of CN115904184A publication Critical patent/CN115904184A/zh
Application granted granted Critical
Publication of CN115904184B publication Critical patent/CN115904184B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Abstract

本申请实施例提供一种数据处理方法和相关装置,应用于终端技术领域。该方法包括:在对第M帧进行绘制渲染时,为第M帧增加第一标识,第一标识用于指示第一帧率,第一帧率为第M‑1帧执行绘制渲染时对应的帧率,M为大于1的整数;获取第M帧合成时采用的第二帧率,第二帧率大于第一帧率;根据第二帧率与第一帧率的关系,延迟第M帧的显示。这样,在第M帧合成时采用的帧率大于第M帧绘制渲染采用的帧率时,延迟第M帧送显,使得第M帧和第M‑1帧之间的显示间隔与绘制渲染间隔一致,进而图像的显示节奏与绘制渲染节奏一致,进而减少显示间隔与绘制渲染间隔不一致导致的滑动速度发生跳变,减少卡顿,增加用户体验。

Description

数据处理方法和相关装置
技术领域
本申请涉及终端技术领域,尤其涉及数据处理方法和相关装置。
背景技术
目前,用户可以通过终端设备的显示屏查阅各类内容。当内容较多时,显示屏不能一次显示全部内容,用户可在显示幕里滑动翻阅相关内容。
终端设备的显示屏的界面显示通常需要经过绘制、渲染和合成等过程。示例性的,终端设备的界面绘制过程可以包括背景绘制、子视图的绘制、滚动条的绘制等过程。终端设备的界面合成过程可以包括顶点处理和像素处理等处理过程。
但是,当终端设备在屏幕界面变化的过程中发生屏幕刷新率切换,终端设备可能会出现卡顿现象。
发明内容
本申请实施例提供数据处理方法和相关装置,应用于终端设备。该方法用于解决终端设备在屏幕界面变化的过程中发生屏幕刷新率切换,导致的卡顿现象。
第一方面,本申请实施例提出一种数据处理方法,应用于终端设备,该方法包括:在对第M帧进行绘制渲染时,为第M帧增加第一标识,第一标识用于指示第一帧率,第一帧率为第M-1帧执行绘制渲染时对应的帧率,M为大于1的整数;获取第M帧合成时采用的第二帧率,第二帧率大于第一帧率;根据第二帧率与第一帧率的关系,延迟第M帧的显示。
这样,在第M帧合成时采用的帧率大于第M帧绘制渲染采用的帧率时,延迟第M帧送显,使得第M帧和第M-1帧之间的显示间隔与绘制渲染间隔一致,进而图像的显示节奏与绘制渲染节奏一致,进而减少显示间隔与绘制渲染间隔不一致导致的滑动速度发生跳变,减少卡顿,增加用户体验。
可选的,根据第二帧率与第一帧率的关系,延迟第M帧的显示,包括:当N与N最接近的整数的差值小于误差阈值时,延迟第M帧的显示,其中,N为第二帧率与第一帧率的的比值。
这样,减少由于第一帧率不准确导致的判断失误,或者由于第二帧率不准确导致的判断失误。
可选的,延迟第M帧的显示,包括:在合成第M帧时增加休眠流程,休眠流程的时长为N-1个目标垂直同步Vsync周期的时长,目标Vsync周期为第二帧率对应的Vsync周期;在休眠流程结束之后的目标Vsync周期到来时,送显合成后的第M帧。
这样,在合成时休眠N-1个目标垂直同步Vsync周期的时长,进而第M帧的显示延迟,使得第M帧和第M-1帧之间的显示间隔与绘制渲染间隔一致,进而图像的显示节奏与绘制渲染节奏一致,进而减少显示间隔与绘制渲染间隔不一致导致的滑动速度发生跳变,减少卡顿,增加用户体验。
可选的,在合成第M帧时增加休眠流程,包括:在第M帧对应的送显函数中增加休眠函数,休眠函数中设置的休眠时间为N-1个目标垂直同步Vsync周期的时长。
可选的,在指示绘制渲染第M-1帧时有第一Vsync信号生成,在指示绘制渲染第M帧时有第二Vsync信号生成,方法还包括:计算帧间隔的倒数,帧间隔为第一Vsync信号的时间戳与第二Vsync信号的时间戳的差值;在预设的帧率表中获取与倒数对应的帧率值,得到第一帧率。
可选的,在预设的帧率表中获取与倒数对应的帧率值,得到第一帧率,包括:在预设的帧率表中获取与倒数最接近的帧率值,得到第一帧率。
这样,可以减少由于第一帧率不准确导致的判断失误。
可选的,第一标识为帧间隔,或者第一标识为第一帧率。
可选的,获取第M帧合成时采用的第二帧率,包括:获取第M帧合成时终端设备的屏幕刷新率;在预设的帧率表中获取与屏幕刷新率对应的帧率值,得到第二帧率。
这样,可以减少由于第二帧率不准确导致的判断失误。
可选的,获取第M帧合成时采用的第二帧率之前,还包括:查询焦点应用;根据焦点应用确认第M帧待合成。
这样,可以根据焦点应用确认焦点应用对应的缓存队列,进而确认待合成的第M帧。
可选的,终端设备包括:应用和图像合成系统;在对第M帧进行绘制渲染时,为第M帧增加第一标识,包括:应用中的渲染线程在对第M帧进行绘制渲染时,为第M帧增加第一标识;获取第M帧合成时采用的第二帧率,包括:图像合成系统中的合成进程获取第M帧合成时采用的第二帧率;根据第二帧率与第一帧率的关系,延迟第M帧的显示,包括:合成进程根据第二帧率与第一帧率的关系,延迟第M帧的显示。
可选的,合成进程根据第二帧率与第一帧率的关系,延迟第M帧的显示,包括:当N与N最接近的整数的差值小于误差阈值时,延迟第M帧的显示,其中,N为第二帧率与第一帧率的的比值。
可选的,延迟第M帧的显示,包括:合成进程在合成第M帧时增加休眠流程,休眠流程的时长为N-1个目标垂直同步Vsync周期的时长,目标Vsync周期为第二帧率对应的Vsync周期;合成进程在休眠流程结束之后的目标Vsync周期到来时,送显合成后的第M帧。
可选的,合成进程在合成第M帧时增加休眠流程,包括:合成进程在第M帧对应的送显函数中增加休眠函数,休眠函数中设置的休眠时间为N-1个目标垂直同步Vsync周期的时长。
可选的,在指示绘制渲染第M-1帧时有第一Vsync信号生成,在指示绘制渲染第M帧时有第二Vsync信号生成,方法还包括:应用中的主线程计算帧间隔的倒数,帧间隔为第一Vsync信号的时间戳与第二Vsync信号的时间戳的差值;主线程在预设的帧率表中获取与倒数对应的帧率值,得到第一帧率;主线程将第一帧率发送至应用中的渲染线程。
可选的,主线程在预设的帧率表中获取与倒数对应的帧率值,得到第一帧率,包括:主线程在预设的帧率表中获取与倒数最接近的帧率值,得到第一帧率。
可选的,合成进程获取合成第M帧时采用的第二帧率,包括:图像合成系统中的Vsync进程获取第M帧合成时终端设备的屏幕刷新率;Vsync进程在预设的帧率表中获取与屏幕刷新率对应的帧率值,得到第二帧率;Vsync进程发送第二帧率至合成进程。
可选的,终端设备还包括:窗口管理器;合成进程向窗口管理器查询焦点应用;合成进程根据焦点应用确认第M帧待合成。
第二方面,本申请实施例提出一种数据处理方法,应用于终端设备,该方法包括:确定屏幕刷新率切换为第二帧率;在第二帧率大于第一帧率时,延迟第一帧的显示,其中,第一帧率为屏幕刷新率切换前的帧率,第一帧包括:确定屏幕刷新率切换为第二帧率时缓存队列中的帧、确定屏幕刷新率切换为第二帧率时正在绘制渲染的帧和确定屏幕刷新率切换为第二帧率之后绘制渲染的一帧。
这样,通过延迟部分图像的显示,减少帧率切换时相邻帧(图像)之间的显示间隔与绘制渲染间隔一致,进而图像的显示节奏与绘制渲染节奏一致,进而减少显示间隔与绘制渲染间隔不一致导致的滑动速度发生跳变,减少卡顿,增加用户体验。
可选的,延迟第一帧的显示,包括:延迟第一帧K-1个第二帧率对应的Vsync周期显示,其中,K为第二帧率与第一帧率的比值,K为自然数。
可选的,延迟第一帧K-1个第二帧率对应的Vsync周期显示,包括:在合成第一帧时增加休眠流程,休眠流程的时长为K-1个第二帧率对应的Vsync周期的时长;在休眠流程结束之后的第二帧率对应的Vsync周期到来时,送显合成后的第一帧。
可选的,在合成第一帧时增加休眠流程,包括:在第一帧对应的送显函数中增加休眠函数,休眠函数中设置的休眠时间为K-1个第二帧率对应的Vsync周期的时长。
可选的,终端设备包括:帧率控制系统和图像合成系统;确定屏幕刷新率切换为第二帧率,包括:帧率控制系统确定屏幕刷新率切换为第二帧率;帧率控制系统将第二帧率发送至图像合成系统中的Vsync线程;在第二帧率大于第一帧率时,延迟第一帧的显示,包括:图像合成系统中的合成线程从Vsync线程查询屏幕刷新率;合成线程在第二帧率大于第一帧率时,延迟第一帧的显示。
可选的,延迟第一帧的显示,包括:合成线程延迟第一帧K-1个第二帧率对应的Vsync周期显示,其中,K为第二帧率与第一帧率的比值,K为自然数。
可选的,合成线程延迟第一帧K-1个第二帧率对应的Vsync周期显示,包括:合成线程在合成第一帧时增加休眠流程,休眠流程的时长为K-1个第二帧率对应的Vsync周期的时长;合成线程在休眠流程结束之后的第二帧率对应的Vsync周期到来时,送显合成后的第一帧。
可选的,合成线程在合成第一帧时增加休眠流程,包括:合成线程在第一帧对应的送显函数中增加休眠函数,休眠函数中设置的休眠时间为K-1个第二帧率对应的Vsync周期的时长。
第三方面,本申请实施例提供了一种终端设备,终端设备也可以称为终端(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为本申请实施例提供的一种数据处理方法流程示意图;
图14为本申请实施例提供的一种终端设备界面显示处理流程示意图;
图15为本申请实施例提供的一种终端设备界面显示处理流程示意图;
图16为本申请实施例提供的一种终端设备界面显示处理流程示意图;
图17为本申请实施例提供的一种数据处理装置的结构示意图;
图18为本申请实施例提供的一种数据处理装置的硬件结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,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可以是单个,也可以是多个。
本申请实施例提供的滑动显示方法,可以应用在具备显示功能的电子设备中。
电子设备包括终端设备,终端设备也可以称为终端(terminal)、用户设备(userequipment,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示出了终端设备100的结构示意图。终端设备100可以包括处理器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,以及用户标识模块(subscriberidentification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对终端设备100的具体限定。在本申请另一些实施例中,终端设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器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-integratedcircuitsound,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)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现终端设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。I2S接口和PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现终端设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现终端设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为终端设备100充电,也可以用于终端设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,是示意性说明,并不构成对终端设备100的结构限定。在本申请另一些实施例中,终端设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过终端设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为终端设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
终端设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。终端设备100中的天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在终端设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在终端设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,终端设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端设备100可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code divisionmultipleaccess,WCDMA),时分码分多址(time-division code division multipleaccess,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenithsatellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
终端设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像、显示视频和接收滑动操作等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organiclight-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diod,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dotlightemitting diodes,QLED)等。在一些实施例中,终端设备100可以包括1个或N个显示屏194,N为大于1的正整数。
终端设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,终端设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。终端设备100可以支持一种或多种视频编解码器。这样,终端设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现终端设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备100的各种功能应用以及数据处理。
终端设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。终端设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当终端设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。终端设备100可以设置至少一个麦克风170C。在另一些实施例中,终端设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,终端设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。终端设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,终端设备100根据压力传感器180A检测触摸操作强度。终端设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。
陀螺仪传感器180B可以用于确定终端设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定终端设备100围绕三个轴(即,x、y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测终端设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消终端设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,终端设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。终端设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当终端设备100是翻盖机时,终端设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测终端设备100在各个方向上(一般为三轴)加速度的大小。当终端设备100静止时可检测出重力的大小及方向。还可以用于识别终端设备姿态,应用于横竖屏切换,计步器等应用程序。
距离传感器180F,用于测量距离。终端设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,终端设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。终端设备100通过发光二极管向外发射红外光。终端设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定终端设备100附近有物体。当检测到不充分的反射光时,终端设备100可以确定终端设备100附近没有物体。终端设备100可以利用接近光传感器180G检测用户手持终端设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。终端设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测终端设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。终端设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,终端设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,终端设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,终端设备100对电池142加热,以避免低温导致终端设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,终端设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于终端设备100的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端设备100可以接收按键输入,产生与终端设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用程序(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和终端设备100的接触和分离。终端设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。终端设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,终端设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在终端设备100中,不能和终端设备100分离。
终端设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构,等。本申请实施例以分层架构的Android系统为例,示例性说明终端设备100的软件结构。
图2是本申请实施例的终端设备的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为五层,从上至下分别为应用层,应用程序框架层,安卓运行时(Android runtime)和系统库,硬件抽象层,以及内核层。
应用层可以包括一系列应用程序包。
如图2所示,应用程序包可以包括电话、邮箱、日历、相机等应用程序。
应用程序框架层为应用层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括窗口管理器、帧率控制系统、图像合成系统、视图系统、包管理器、输入管理器、活动管理器和资源管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
帧率控制系统用于调节屏幕刷新率。
图像合成系统用于控制图像合成,以及产生垂直同步(veticalsynchronization,Vsync)信号。
图像合成系统包括:合成线程、Vsync线程、缓存队列(quene buffer)线程。合成线程用于被Vsync信号唤醒进行合成。Vsync线程用于根据Vsync信号请求生成下一个Vsync信号。缓存队列线程用于存放缓存、产生Vsync信号请求,以及唤醒合成线程等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
包管理器用于系统内的程序管理,例如:应用程序安装、卸载和升级等。
输入管理器用于管理输入设备的程序。例如,输入系统可以确定鼠标点击操作、键盘输入操作和触摸滑动等输入操作。
活动管理器用于管理各个应用程序的生命周期以及导航回退功能。负责Android的主线程创建,各个应用程序的生命周期的维护。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用层和应用程序框架层运行在虚拟机中。虚拟机将应用层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:图像渲染库、图像合成库、函数库、媒体库和输入处理库等。
图像渲染库用于二维或三维图像的渲染。图像合成库用于二维或三维图像的合成。
可能的实现方式中,应用通过图像渲染库对图像进行绘制渲染,然后应用将绘制渲染后的图像发送至图像合成系统的缓存队列中。每当Vsync信号到来时,图像合成系统(例如,surface flinger)从缓存队列中按顺序获取待合成的一帧图像,然后通过图像合成库进行图像合成。
函数库提供C语言中所使用的宏、类型定义、字符串操作函数、数学计算函数以及输入输出函数等。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等。
输入处理库用于处理输入设备的库,可以实现鼠标、键盘和触摸输入处理等。
硬件抽象层,可以包含多个库模块,库模块如可以为硬件合成器(hwcomposer,HWC)、摄像头库模块等。Android系统可以为设备硬件加载相应的库模块,进而实现应用程序框架层访问设备硬件的目的。设备硬件可以包括如电子设备中的LCD显示屏、摄像头等。
内核层是硬件和软件之间的层。内核层至少包含触控(touch panel,TP)驱动、显示驱动、蓝牙驱动、WIFI驱动、键盘驱动、共用存储器驱动和相机驱动等。
硬件可以是音频设备、蓝牙设备、相机设备、传感器设备等。
下面结合应用程序启动或应用程序中发生界面切换的场景,示例性说明终端设备100软件以及硬件的工作流程。
当触控面板中触摸传感器180K接收到触摸操作时,内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸力度,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。内核层通过输入处理库将原始输入事件上报至应用程序框架层的输入管理器。应用程序框架层的输入管理器解析该原始输入事件的信息(包括:操作类型和报点位置等)和根据当前焦点确定焦点应用,并将解析后的信息发送至焦点应用。焦点可以是触摸操作中触碰点或者鼠标点击操作中点击位置。焦点应用为终端设备前台运行的应用或者触摸操作中触碰位置对应的应用。焦点应用根据解析后的原始输入事件的信息(例如,报点位置)确定该原始输入事件所对应的控件。
以该触摸操作是触摸滑动操作,该触摸滑动操作所对应的控件为微信应用的列表控件为例,微信应用通过应用程序框架层的视图系统,调用系统库中图像渲染库对图像进行绘制渲染。微信应用将绘制渲染后的图像发送至图像合成系统的缓存队列中。通过系统库中图像合成库将图像合成系统中绘制渲染后的图像合成为微信界面。图像合成系统通过内核层的显示驱动,使得屏幕(显示屏)显示微信应用的相应界面。
为了便于理解,示例的给出部分与本申请实施例相关概念的说明以供参考。
1、帧:是指界面显示中最小单位的单幅画面。一帧可以理解为一副静止的画面,快速连续地显示多个相连的帧可以形成物体运动的假象。帧率是指在1秒钟时间里刷新图片的帧数,也可以理解为终端设备中图形处理器每秒钟刷新画面的次数。高的帧率可以得到更流畅和更逼真的动画。每秒钟帧数越多,所显示的动作就会越流畅。
需要说明的是,界面显示帧前通常需要经过绘制、渲染、合成等过程。
2、帧绘制:是指显示界面的图片绘制。显示界面可以由一个或多个视图组成,各个视图可以由视图系统的可视控件绘制,各个视图由子视图组成,一个子视图对应视图中的一个小部件,例如,其中的一个子视图对应图片视图中的一个符号。
3、帧渲染:是将绘制后的视图进行着色操作或增加3D效果等。例如:3D效果可以是灯光效果、阴影效果和纹理效果等。
4、帧合成:是将多个上述一个或多个渲染后的视图合成为显示界面的过程。
下面结合软件以及硬件对终端设备100的界面的显示过程进行说明。
需要说明的是,为了提高显示的流畅性,减少出现显示卡顿等现象,终端设备一般基于Vsync信号进行显示,以对图像的绘制、渲染、合成和屏幕刷新显示等流程进行同步。
可以理解的是,Vsync信号为周期性信号,Vsync信号周期可以根据屏幕刷新率进行设置,例如,屏幕刷新率为60Hz时,Vsync信号周期可以为16.6ms,即终端设备每间隔16.6ms生成一个控制信号使Vsync信号周期触发。
需要说明的是,Vsync信号可以分为软件Vsync信号和硬件Vsync信号。软件Vsync信号包括Vsync-APP和Vsync-SF。Vsync-APP用于触发绘制渲染流程。Vsync-SF用于触发合成流程。硬件Vsync信号(Vsync-HW)用于触发屏幕显示刷新流程。
通常情况下,软件Vsync信号和硬件Vsync信号保持周期同步。以60Hz和120Hz变化为例,若Vsync-HW从60Hz切换到120Hz,Vsync-APP、Vsync-SF同步变化,从60Hz切换到120Hz。
示例性的,图3为可能的实现中一种终端设备界面显示处理流程的示意图。按照时间顺序,终端设备显示的内容依次对应于帧1、帧2、和帧3。
具体的,以帧1的显示为例,终端设备的应用通过应用程序框架层的视图系统,对帧1进行绘制渲染。帧1绘制渲染完成后,终端设备的应用将绘制渲染好的帧1发送至图像合成系统(例如,surface flinger)。图像合成系统对绘制渲染好的帧1进行合成。帧1完成合成后,终端设备可以通过调用内核层启动显示驱动,在屏幕(显示屏)显示帧1对应的内容。帧2和帧3类似于帧1的过程也进行合成和显示,此处不再赘述。图3中每帧从绘制到显示,滞后2个Vsync信号周期,终端设备的显示具有滞后性。
需要说明的是,终端设备可能在系统负载大时,降低屏幕刷新率,以减少卡顿,或者在系统负载小时,升高屏幕刷新率,以增加显示的流畅性。
示例性的,图4为可能的实现中一种帧率切换对应的界面显示处理流程的示意图。按照时间顺序,终端设备显示的内容依次对应于帧0、帧1、帧2、帧3、帧4、帧5和帧6。
具体的,以帧2的显示为例,终端设备的应用通过应用程序框架层的视图系统,对帧2进行绘制渲染。帧2绘制渲染完成后,终端设备的应用将绘制渲染好的帧2发送至图像合成系统(例如,surface flinger)。图像合成系统对绘制渲染好的帧2进行合成。帧2完成合成后,终端设备可以通过调用内核层启动显示驱动,显示帧2对应的内容。帧3、帧4、帧5和帧6类似于帧2的过程也进行合成和显示,此处不再赘述。
在帧3绘制渲染时,终端设备的帧率控制系统决策切换帧率(例如,从60Hz切换至120Hz),在帧4绘制渲染时,进行帧率切换,帧4绘制渲染对应的Vsync信号周期时长改变,完成帧率切换。
需要说明的是,终端设备通过位移量确定图像的布局等。在一些滑动场景(例如离手滑动)中,图像的位移量与前一帧绘制渲染时对应的帧间隔(前一个Vsync周期时长)相关。具体的,匀速滑动场景中,绘制渲染时的当前图像(帧)的位移量是由上一帧帧间隔(当前帧Vsync-App时间戳-上一帧Vsync-App时间戳),乘以当前帧的滑动速度得到的。示例性的,以图4中的帧3为例,帧3的位移量为帧2的帧间隔(Vsync2的时间戳-Vsync1的时间戳)乘以帧3的滑动速度得到的。
而终端设备图像显示的滑动速度是由当前帧位移与前一帧的位移差(当前帧的位移量),除以前一帧显示时对应的帧间隔(前一帧的显示时长)得到。示例性的,以图4中的帧3为例,帧3的滑动速度为帧3的位移量除以帧2显示时对应的帧间隔(Vsync4的时间戳-Vsync3的时间戳)。
因此,当图像绘制渲染时对应的帧间隔与显示时对应的帧间隔一致时,该图像按照预设的滑动速度显示。若图像绘制渲染时对应的帧间隔与显示时对应的帧间隔不一致时,可能会出现显示的滑动速度跳变,进而导致显示画面卡顿、不流畅,用户体验差。
从图4中可以看出,图4中每帧从绘制到显示,滞后2个Vsync信号周期。当屏幕刷新率发生切换时,帧2绘制渲染时对应的帧间隔与帧2显示时对应的帧间隔不一致,同样,帧3绘制渲染时对应的帧间隔与帧3显示时对应的帧间隔不一致。这可能会导致帧3和帧4显示时的滑动速度与预设的滑动速度不符,进而帧3和帧4的显示的滑动速度出现跳变。
下面结合图5和图6对图4中的流程涉及的位移量和滑动速度进行说明。
示例性的,以列表匀速滑动,屏幕刷新率从60Hz切换至120Hz,且滑动速度为每16.6毫秒(ms)移动2像素(pixel)为例。图5为可能的实现中一种界面显示处理流程的示意图。
图5中按照时间顺序,终端设备显示的内容依次对应于帧0、帧1、帧2、帧3、帧4、帧5和帧6。
可以理解的是,位移量为上一帧的帧间隔(当前帧Vsync-App时间戳-上一帧Vsync-App时间戳)与当前帧的滑动速度之积。帧3的位移量为(16.6ms-0ms)×2pixel/16.6ms,即2pixel。同理,帧4的位移量为(33.2ms-16.6ms)×2pixel/16.6ms,2pixel。
如图5所示,终端设备在帧3绘制渲染时,决策帧率切换。在33.2ms帧4开始绘制渲染时,由于未完成帧率切换。因此,帧2的位移量、帧3的位移量和帧4位移量均与切换前的屏幕刷新率(或者帧率切换前的Vsync周期时长)相关,为2pixel。在41.5ms时,完成帧率切换。帧5的位移量和帧6的位移量均与切换后的屏幕刷新率(或者帧率切换后的Vsync周期时长)相关,为1pixel。
从图5中可以看出,帧2在绘制渲染时对应的帧间隔为16.6ms-0ms,即16.6ms,帧2在显示时对应的帧间隔为41.5ms-33.2ms,即8.3ms,终端设备的显示节奏加快,帧3的滑动速度增加。同理,帧4的滑动速度增加。帧4在绘制渲染时对应的帧间隔为41.5ms-33.2ms,即8.3ms,帧4在显示时对应的帧间隔为58.1ms-49.8ms,即8.3ms,帧4的显示节奏与绘制渲染节奏相同,帧5的滑动速度不变。在60Hz切换至120Hz时,终端设备显示的滑动速度先增加后下降,导致用户感知到画面卡顿。
为方便理解,下面结合图6对图5的显示速度进行说明。
可以理解的是,用户在画面切换时,感知到速度变化。因此,滑动速度可以用当前帧位移与前一帧的位移之差(当前帧的位移量),除以前一帧的显示时长表示。
示例性的,图6为图5中帧0、帧1、帧2、帧3、帧4、帧5和帧6对应的界面显示图。如图6所示,在列表界面中有一三角形。以显示屏(屏幕)绝对位置为0-18pixel为例。若帧0中三角形位置在0处,帧1的位移量为2pixel,则帧1中,三角形位置在2pixel处。帧2的位移量、帧3的位移量和帧4位移量均为2pixel。帧5的位移量和帧6的位移量均为1pixel。帧2、帧3、帧4、帧5和帧6中,三角形位置分别位于4pixel、6pixel、8pixel、9pixel、10pixel处。
结合图5,在16.6ms时,Vsync信号到来,终端设备的显示界面从帧0变为帧1,三角形的位置从0移至2pixel,移动速度为2pixel/16.6ms,用户感知到的滑动速度为2pixel/(16.6ms-0ms),即2pixel/16.6ms。在33.2ms时,Vsync信号到来,终端设备的显示界面从帧1变为帧2,三角形的移动速度为2pixel/16.6ms,用户感知到的滑动速度为2pixel/(33.2ms-16.6ms),即2pixel/16.6ms。
在41.5ms时,Vsync信号到来,终端设备的显示界面从帧2变为帧3,三角形的移动速度为2pixel/8.3ms,用户感知到的滑动速度为2pixel/(41.5ms-33.2ms),即2pixel/8.3ms。在49.8ms时,Vsync信号到来,终端设备的显示界面从帧3变为帧4,三角形的移动速度为2pixel/8.3ms,用户感知到的滑动速度为2pixel/(49.8ms-41.5ms),即2pixel/8.3ms。在58.1ms时,Vsync信号到来,终端设备的显示界面从帧4变为帧5,三角形的移动速度为1pixel/8.3ms,用户感知到的滑动速度为1pixel/(58.1ms-49.8ms),即1pixel/8.3ms。在66.4ms时,Vsync信号到来,终端设备的显示界面从帧5变为帧6,三角形的移动速度为1pixel/8.3ms,用户感知到的滑动速度为1pixel/(66.4ms-58.1ms),即1pixel/8.3ms。
图5中,滑动速度从2pixel/16.6ms变为2pixel/8.3ms再变为1pixel/8.3ms。滑动速度发生变化,使得用户感觉到卡顿,用户体验差。
综上,在滑动的过程中终端设备的屏幕刷新率改变,图像绘制渲染时对应的帧间隔可能大于或小于图像显示时对应的帧间隔,导致显示时滑动速度发生跳变(上升或下降),导致画面卡顿。
有鉴于此,本申请实施例提供一种数据处理方法,在绘制渲染时增加用于指示绘制渲染帧率的标识,当终端设备从低帧率切换至高帧率,且高帧率为低帧率的整数倍时,根据标识指示的绘制渲染帧率,在帧合成时,增加休眠流程或者增加用于延迟送显的标识,以调整显示驱动控制屏幕显示的图像,使得前一帧在绘制渲染的帧间隔与前一帧在显示时的帧间隔一致,进而减少卡顿现象,提升用户体验。
下面结合附图对本申请实施例提供的应用场景进行说明。图7为本申请实施例提供的应用场景示意图。
终端设备可以在图7中的a所示的社交应用的界面,或在图7中的b所示的设置相关界面中,图7中的c所示的文档界面,图7中的d所示的商品浏览界面,等接收用户上滑操作或下滑操作。终端设备还可以在图7中的e所示的界面中,图7中的f所示的电子书界面,等接收到用户左滑操作或右滑动操作。当终端设备接收到用户的滑动操作时,终端设备基于滑动操作进行帧绘制、渲染、合成等过程,对滑动操作对应的内容进行显示。
为方便理解,下面结合图8对本申请实施例提供的数据处理方法中涉及的各个模块之间交互的过程进行说明。
示例性的,图8为本申请实施例提供的数据处理方法中各个模块之间交互的过程示意图。
如图8所示,系统可以包括:应用、图像合成系统(surface flinger)、窗口管理器、硬件合成器和显示驱动。其中,应用包括应用主线程和应用渲染线程。图像合成系统包括Vsync线程、缓存线程和合成线程。
在终端设备进入离手滑动流程后,应用主线程开始绘制渲染。
S801、应用主线程向Vsync线程请求Vsync-APP信号。
S802、Vsync线程在计时器计时结束后,发送Vsync-APP信号至应用主线程。Vsync-APP信号用于唤醒应用主线程。
S803、应用主线程在接收到Vsync-APP信号后,根据Vsync-APP信号的时间戳计算帧间隔。
具体的,应用主线程计算此次接收的Vsync-APP信号的时间戳与上一次接收的Vsync-APP信号的时间戳的差值,该差值为前一帧绘制渲染对应的帧间隔。
示例性的,以图5中33.2ms的Vsync-APP信号为例,此次接收的Vsync-APP信号的时间戳为33.2ms,上一次接收的Vsync-APP信号的时间戳为16.6ms。应用主线程计算帧3绘制渲染对应的帧间隔为33.2ms-16.6ms,即16.6ms。
S804、应用主线程计算位移量。
S805、应用主线程将帧间隔和当前帧的位移量发送至应用渲染线程,以唤醒应用渲染线程。
可能的实现方式中,位移量为帧间隔与速度的乘积。需要说明的是,应用主线程可以基于预先存储的速度曲线确定速度。示例性的,以图5中33.2ms的Vsync-APP信号,速度为2pixel/16.6ms为例,当前帧为帧4,帧4的位移量为帧3绘制渲染对应的帧间隔(16.6ms)与2pixel/16.6ms的乘积,即2pixel。应用主线程将帧间隔(16.6ms)和当前帧的位移量(2pixel)发送至应用渲染线程,
可能的实现方式中,应用主线程将当前Vsync-APP时间戳、前一帧Vsync-APP的时间戳和当前帧的位移量发送至应用渲染线程,以唤醒应用渲染线程。示例性的,应用主线程将当前Vsync-APP时间戳(33.2ms)、前一帧Vsync-APP的时间戳(16.6ms)和当前帧的位移量(2pixel)发送至应用渲染线程。
或者,应用主线程将当前帧的速度、当前Vsync-APP时间戳和前一帧Vsync-APP的时间戳发送至应用渲染线程以唤醒应用渲染线程。示例性的,应用主线程将速度(2pixel/16.6ms)、当前帧的Vsync-APP时间戳(33.2ms)和前一帧Vsync-APP的时间戳(16.6ms)发送至应用渲染线程。
S806、应用渲染线程在接收到Vsync-APP信号的时间戳后,被唤醒,开始绘制渲染图像。
S807、应用渲染线程在被唤醒后,向缓存进程请求缓存,以存储绘制渲染后的图像。
S808、缓存线程在接收到应用渲染线程发送的请求缓存命令后,预留出存储绘制渲染后图像的空间,并向应用渲染线程发送用于指示缓存出队的指令。
S809、应用渲染线程接收到用于指示缓存出队的指令后,根据位移量绘制渲染图像,并且应用渲染线程增加用于指示第一帧率的标识。第一帧率为绘制渲染帧率。
具体的,应用渲染进程根据位移量确定图像的布局等,以用于后续的绘制渲染。示例性的,应用渲染线程根据位移量和帧3确定帧4的布局,并对帧4进行绘制渲染。
可以理解的是,第一帧率的计算公式为1/帧间隔。示例性的,第一帧率为1/16.6ms即,60fps。
S810、应用渲染线程将绘制渲染好后的图像发送至缓存线程(缓存入队)。其中,绘制渲染好后的图像携带有用于指示第一帧率的标识。
S811、缓存线程在接收到应用渲染线程发送的绘制渲染好后的图像后,向Vsync线程请求Vsync-SF信号。
S812、Vsync线程在计时器计时结束后发送Vsync信号至合成线程。
S813、合成线程接收到Vsync-SF信号后,开始合成。
S814、合成线程发送查询焦点应用的指令至窗口管理器。
S815、窗口管理器反馈焦点应用至合成线程。
S816、合成线程根据焦点应用在缓存线程中查询焦点应用对应的缓存队列。
S817、确定焦点应用对应的缓存队列的待合成帧的标识
S818、合成线程发送查询第二帧率的指令至Vsync线程。第二帧率用于指示屏幕刷新率。
S819、Vsync线程反馈第二帧率至合成线程。
可以理解的是,第二帧率用于指示屏幕刷新率。第二帧率可以为合成帧率,该Vsync信号与下一个Vsync信号的间隔对应的帧率。当帧率控制系统决策帧率切换后,发送切换后的帧率至图像合成系统中的Vsync线程。Vsync线程在计时器计时结束后,第二帧率为切换后的刷新帧率。
示例性的,以刷新率从60Hz切换为120Hz,Vsync信号的时间戳分别为0、16.6、33.2、41.5ms为例,当帧率控制系统在20ms时决策帧率从60Hz切换至120Hz,图像合成系统中的Vsync线程在计时器结束后,即33.2ms产生Vsync信号。此时,第二帧率为120fps,Vsync线程在8.3ms后(41.5ms时),产生下一个Vsync信号。
S820、合成线程根据第二帧率和焦点应用对应的缓存队列中待合成帧的标识,判断第二帧率与待合成帧对应的第一帧率的比值是否为大于1的整数。
可能实现的方式中,合成线程中设置有误差阈值,在误差阈值范围内的自然数均为整数。
可以理解的是,第一帧率可能不准确。示例性的,当屏幕刷新率为60Hz时,Vsync-APP信号的时间戳差值可能为16.7ms,也可能为16.5ms。第一帧率可能为59fps,也可能为60fps。若第二帧率为120fps,第二帧率与第一帧率的比值可能不是整数。
在合成线程中设置误差阈值,可以减少第一帧率不准确导致的判断失误。误差阈值可能为0.1,也可能为0.2,本申请实施例对此不作限定。
S821、若第二帧率与待合成帧对应的第一帧率的比值为大于1的整数,合成线程在合成时增加休眠流程,设置该帧在一定时间后送显。S822、确定休眠时间结束。
具体的,若第二帧率与待合成帧对应的第一帧率的比值为N,N为大于1的整数,合成线程在合成时设置增加休眠流程,设置该帧在N-1个第二帧率对应的Vsync周期时长后送显。
可能的实现方式中,在合成时增加计时器,设置N-1个第二帧率对应的Vsync周期时长,在计时器计时结束后,执行S821和S822。
可能的实现方式中,在送显函数中增加休眠sleep流程,设置休眠时间为N-1个第二帧率对应的Vsync周期时长,在休眠结束后,执行S821和S822。示例性的,若第二帧率为120Hz,N为2,则第二帧率对应的Vsync周期时长为8.3ms,休眠时间为8.3ms。
S823、合成线程将合成后的图像发送至硬件合成器。
S824、硬件合成器将合成后的图像发送至显示驱动进行显示。显示驱动驱动屏幕进行显示。
下面通过具体的实施例对本申请实施例的数据处理方法进行详细说明。下面的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图9为本申请实施例提供一种的数据处理方法的流程示意图。如图9所示,方法可以包括:
S901、在绘制渲染时增加第一标识,第一标识用于指示第一帧率,第一帧率为前一帧绘制渲染对应的帧率。
具体的,应用在绘制渲染时增加第一标识。
本申请实施例中,第一帧率可以根据Vsync信号的时间戳得到。具体的,应用根据接收到的Vsync信号的时间戳计算第一帧率。示例性的,以微信应用为例,微信应用在Vsync信号到来时,根据该Vsync信号的时间戳和上一次Vsync信号的时间戳,计算帧间隔。微信应用根据帧间隔添加标识记录第一帧率。第一帧率为1/帧间隔。
可能的实现方式中,应用在记录当前缓存信息的结构体(例如,BufferItem类)中加入变量,记录第一帧率。具体的,应用渲染线程将当前帧间隔设置在缓存信息中。
可以理解的是,根据帧间隔计算的第一帧率,可能有误差。可能的实现方式中,终端设备设置第一阈值对第一帧率进行修正。示例性的,当计算的第一帧率为59fps,第一阈值为2时,终端设备将计算的第一帧率修正为60fps。
S902、获取焦点应用。
具体的,图像合成系统从窗口管理器获取焦点应用。根据焦点应用确认焦点应用对应的缓存队列,进而确认待合成帧。
S903、获取第二帧率,第二帧率用于指示屏幕刷新率。
本申请实施例中,第二帧率可以为合成帧率,通过计算Vsync信号和下一个Vsync信号的间隔得到。
终端设备还可以在Vsync信号到来时,查询屏幕刷新率,获取第二帧率。或者,当终端设备决策帧率切换时,更新屏幕刷新率为第二帧率。
当第二帧率为第一帧率的整倍数时,终端设备执行S904。
S904、第二帧率为第一帧率的N倍时,在合成待合成帧时增加休眠流程,N为大于1的整数。
具体的,图像合成系统在第二帧率为待合成帧的标识指示的第一帧率的N倍时,在合成待合成帧时增加休眠流程。
可以理解的是,图像合成系统在当前的刷新率为待合成帧的绘制渲染帧率的N倍时,在合成待合成帧时增加休眠流程。也可以理解为,图像合成系统在当前刷新率与待合成帧的标识指示的帧率的比值为大于1的整数时,在合成该待合成帧时,增加休眠流程以延迟送显。
可能的实现方式中,在合成线程中设置误差阈值,可以减少第一帧率不准确导致的判断失误。误差阈值可能为0.1,也可能为0.2,本申请实施例对此不作限定。
当第一帧率与第二帧率的比值与整数之差小于或等于误差阈值时,第一帧率与第二帧率为整数倍关系。或者,当第二帧率与第一帧率的比值与整数之差小于或等于误差阈值时,第二帧率与第一帧率为整数倍关系。
可能的实现方式中,当N为大于1的整数时,图像合成系统在送显函数中增加sleep函数,使得图像合成系统休眠N-1个第二帧率对应的Vsync周期时长。
可能的实现方式中,当N为大于1的整数时,图像合成系统在合成该待合成帧后,设置定时器,定时时间为N-1个周期时长,在定时器计时结束后送显。
下面结合图10对S904进行说明。
示例性的,图10为本申请实施例提供的一种界面显示处理流程的示意图。以列表匀速滑动的场景中,屏幕刷新率从60Hz切换至120Hz,且滑动速度为2pixel/16.6ms为例。图10中按照时间顺序,终端设备显示的内容依次对应于帧0、帧1、帧2、帧3、帧4、帧5和帧6。
如图10所示,终端设备在帧3绘制渲染时,决策帧率切换。在33.2ms帧4开始绘制渲染时,由于未完成帧率切换。因此,帧2的位移量、帧3的位移量和帧4的位移量均与切换前的屏幕刷新率(或者帧率切换前的Vsync周期时长)相关,为2pixel。在41.5ms时,完成帧率切换。帧5的位移量和帧6的位移量均与切换后的屏幕刷新率(或者帧率切换后的Vsync周期时长)相关,为1pixel。
在33.2ms时,图像合成系统确定第二帧率为120Hz,缓存队列中帧3的标识指示的第一帧率为60fps。第二帧率为第一帧率的2倍,在帧3合成时增加休眠流程,延迟一个周期(8.33ms)送显。同理,在帧4合成时,增加休眠流程,延迟一个周期(8.33ms)送显。
图10中,16.6ms时,终端设备的显示界面从帧0变为帧1,滑动速度为2pixel/16.6ms。在33.2ms时,终端设备的显示界面从帧1变为帧2,滑动速度为2pixel/16.6ms。在41.5ms时,没有画面送显,显示界面为帧2。在49.8ms时,终端设备的显示界面从帧2变为帧3,滑动速度为2pixel/16.6ms。在58.1ms时,没有画面送显,显示界面为帧3。在66.4ms时,终端设备的显示界面从帧3变为帧4,滑动速度为2pixel/16.6ms。在74.7ms时,终端设备的显示界面从帧4变为帧5,滑动速度为1pixel/8.3ms。在83ms时,终端设备的显示界面从帧5变为帧6,滑动速度为1pixel/8.3ms。在画面切换时,速度一致,画面显示流畅没有卡顿。
若N为3时,示例性的,图11为本申请实施例提供的一种界面显示处理流程的示意图。以列表匀速滑动的场景中,屏幕刷新率从30Hz切换至90Hz,且滑动速度为3pixel/11.1ms为例。图11中按照时间顺序,终端设备显示的内容依次对应于帧0、帧1、帧2、帧3、帧4、帧5和帧6。
如图11所示,终端设备在帧3绘制渲染时,决策帧率切换。在66.6ms帧4开始绘制渲染时,由于未完成帧率切换。因此,帧2的位移量、帧3的位移量和帧4的位移量均与切换前的屏幕刷新率(或者帧率切换前的Vsync周期时长)相关,为3pixel。在41.5ms时,完成帧率切换。帧5的位移量和帧6的位移量均与切换后的屏幕刷新率(或者帧率切换后的Vsync周期时长)相关,为1pixel。
在66.6ms时,图像合成系统确定第二帧率为90Hz,缓存队列中帧3的标识指示的第一帧率为30fps。第二帧率为第一帧率的2倍,在帧3合成时增加休眠流程,延迟2个周期送显。同理,在帧4合成时,增加休眠流程,延迟2个周期送显。
图11中,33.3ms时,终端设备的显示界面从帧0变为帧1,滑动速度为3pixel/33.3ms。在66.6ms时,终端设备的显示界面从帧1变为帧2,滑动速度为3pixel/33.3ms。在77.7ms和88.8ms时,没有画面送显,显示界面为帧2。在99.9ms时,终端设备的显示界面从帧2变为帧3,滑动速度为3pixel/33.3ms。在111ms和122.1ms时,没有画面送显,显示界面为帧3。在133.2ms时,终端设备的显示界面从帧3变为帧4,滑动速度为3pixel/33.3ms。在144.3s时,终端设备的显示界面从帧4变为帧5,滑动速度为1pixel/11.1ms。在155.4ms时,终端设备的显示界面从帧5变为帧6,滑动速度为1pixel/11.1ms。在画面切换时,速度一致,画面显示流畅没有卡顿。
综上,本申请实施例提供的数据处理方法通过标识绘制渲染帧率,当刷新率为绘制渲染帧率的倍数,且刷新率大于绘制渲染帧率时,增加休眠流程,延迟送显,使得图像显示间隔和图像绘制渲染间隔一致,减少卡顿,增加用户体验。
上述实施例为在图像合成系统进行休眠使得图像延迟显示。下面结合图12-图16对显示驱动延迟图像显示的方式进行说明。
示例性的,图12为本申请实施例提供的数据处理方法中各个模块之间交互的过程示意图。
如图12所示,系统可以包括:应用、图像合成系统(surface flinger)、窗口管理器、硬件合成器和显示驱动。其中,应用包括应用主线程和应用渲染线程。图像合成系统包括Vsync线程、缓存线程和合成线程。
在终端设备进入离手滑动流程后,应用主线程开始绘制渲染。
S1201、应用主线程向Vsync线程请求Vsync-APP信号。
S1202、Vsync线程在计时器计时结束后,发送Vsync-APP信号至应用主线程。Vsync-APP信号用于唤醒应用主线程。
S1203、应用主线程在接收到Vsync-APP信号后,根据Vsync-APP信号的时间戳计算帧间隔。
具体的,应用主线程计算此次接收的Vsync-APP信号的时间戳与上一次接收的Vsync-APP信号的时间戳的差值,该差值为前一帧绘制渲染对应的帧间隔。
示例性的,以图5中33.2ms的Vsync-APP信号为例,此次接收的Vsync-APP信号的时间戳为33.2ms,上一次接收的Vsync-APP信号的时间戳为16.6ms。应用主线程计算帧3绘制渲染对应的帧间隔为33.2ms-16.6ms,即16.6ms。
S1204、应用主线程计算位移量。
S1205、应用主线程将帧间隔和当前帧的位移量发送至应用渲染线程,以唤醒应用渲染线程。
可能的实现方式中,位移量为帧间隔与速度的乘积。需要说明的是,应用主线程可以基于预先存储的速度曲线确定速度。示例性的,以图5中33.2ms的Vsync-APP信号,速度为2pixel/16.6ms为例,当前帧为帧4,帧4的位移量为帧3绘制渲染对应的帧间隔(16.6ms)与2pixel/16.6ms的乘积,即2pixel。应用主线程将帧间隔(16.6ms)和当前帧的位移量(2pixel)发送至应用渲染线程,
可能的实现方式中,应用主线程将当前Vsync-APP时间戳、前一帧Vsync-APP的时间戳和当前帧的位移量发送至应用渲染线程,以唤醒应用渲染线程。示例性的,应用主线程将当前Vsync-APP时间戳(33.2ms)、前一帧Vsync-APP的时间戳(16.6ms)和当前帧的位移量(2pixel)发送至应用渲染线程。
或者,应用主线程将当前帧的速度、当前Vsync-APP时间戳和前一帧Vsync-APP的时间戳发送至应用渲染线程以唤醒应用渲染线程。示例性的,应用主线程将速度(2pixel/16.6ms)、当前帧的Vsync-APP时间戳(33.2ms)和前一帧Vsync-APP的时间戳(16.6ms)发送至应用渲染线程。
S1206、应用渲染线程在接收到Vsync-APP信号的时间戳后,被唤醒,开始绘制渲染图像。
S1207、应用渲染线程在被唤醒后,向缓存进程请求缓存,以存储绘制渲染后的图像。
S1208、缓存线程在接收到应用渲染线程发送的请求缓存命令后,预留出存储绘制渲染后图像的空间,并向应用渲染线程发送用于指示缓存出队的指令。
S1209、应用渲染线程接收到用于指示缓存出队的指令后,根据位移量绘制渲染图像,并且应用渲染线程增加用于指示第一帧率的标识。第一帧率为绘制渲染帧率。
具体的,应用渲染进程根据位移量确定图像的布局等,以用于后续的绘制渲染。示例性的,应用渲染线程根据位移量和帧3确定帧4的布局,并对帧4进行绘制渲染。
可以理解的是,第一帧率的计算公式为1/帧间隔。示例性的,第一帧率为1/16.6ms即,60fps。
S1210、应用渲染线程将绘制渲染好后的图像发送至缓存线程(缓存入队)。其中,绘制渲染好后的图像携带有用于指示第一帧率的标识。
S1211、缓存线程在接收到应用渲染线程发送的绘制渲染好后的图像后,向Vsync线程请求Vsync-SF信号。
S1212、Vsync线程在计时器计时结束后发送Vsync信号至合成线程。
S1213、合成线程接收到Vsync-SF信号后,开始合成;或者在上一帧送显完成后开始合成;或者送显队列小于1时,开始合成。
S1214、合成线程发送查询焦点应用的指令至窗口管理器。
S1215、窗口管理器反馈焦点应用至合成线程。
S1216、合成线程根据焦点应用在缓存线程中查询焦点应用对应的缓存队列。
S1217、确定焦点应用对应的缓存队列的待合成帧的标识。
S1218、合成线程发送查询第二帧率的指令至Vsync线程。第二帧率用于指示屏幕刷新率。
S1219、Vsync线程反馈第二帧率至合成线程。
可以理解的是,第二帧率用于指示屏幕刷新率。第二帧率可以为合成帧率,该Vsync信号与下一个Vsync信号的间隔对应的帧率。当帧率控制系统决策帧率切换后,发送切换后的帧率至图像合成系统中的Vsync线程。Vsync线程在计时器计时结束后,第二帧率为切换后的刷新帧率。
示例性的,以刷新率从60Hz切换为120Hz,Vsync信号的时间戳分别为0、16.6、33.2、41.5ms为例,当帧率控制系统在20ms时决策帧率从60Hz切换至120Hz,图像合成系统中的Vsync线程在计时器结束后,即33.2ms产生Vsync信号。此时,第二帧率为120fps,Vsync线程在8.3ms后(41.5ms时),产生下一个Vsync信号。
S1220、合成线程根据第二帧率和焦点应用对应的缓存队列中待合成帧的标识,判断第二帧率与待合成帧对应的第一帧率的比值是否为大于1的整数。
可能实现的方式中,合成线程中设置有误差阈值,在误差阈值范围内的自然数均为整数。
可以理解的是,第一帧率可能不准确。示例性的,当屏幕刷新率为60Hz时,Vsync-APP信号的时间戳差值可能为16.7ms,也可能为16.5ms。第一帧率可能为59fps,也可能为60fps。若第二帧率为120fps,第二帧率与第一帧率的比值可能不是整数。
在合成线程中设置误差阈值,可以减少第一帧率不准确导致的判断失误。误差阈值可能为0.1,也可能为0.2,本申请实施例对此不作限定。
若第二帧率与待合成帧对应的第一帧率的比值为大于1的整数,终端设备可以通过下述两种方式进行显示。
S1221、若第二帧率与待合成帧对应的第一帧率的比值为大于1的整数,合成线程在合成时增加用于延迟送显的标识。
具体的,若第二帧率与待合成帧对应的第一帧率的比值为N,N为大于1的整数,合成线程在合成时增加用于延迟N-1个第二帧率对应的Vsync周期时长送显的标识。
S1222、合成线程在在合成时增加用于延迟送显的标识的同时,调节下一帧的合成的偏移量,以延迟下一帧的合成。
需要说明的是,S1222为可选步骤,终端设备可执行,也可不执行。
S1223、合成线程将携带有延迟送显的标识的合成后的图像发送至硬件合成器。
S1224、硬件合成器将携带有延迟送显的标识的合成后的图像发送至显示驱动。
S1225、显示驱动根据延迟送显的标识延迟送显。
具体的,标识用于指示该帧延迟N-1个周期或者延迟N-1个第二帧率对应的Vsync周期时长送显。
可能的实现方式中,显示驱动根据该标识调节该帧对应的显示时间的偏移量(offset)增加N-1个第二帧率对应的Vsync周期时长,进而延迟该帧的显示。
可能的实现方式中,显示驱动根据该标识调节该帧延迟N-1个周期送显。
在上述步骤的基础上,终端设备还可以执行S1226或S1227控制合成线程是否进行合成。
S1226、合成线程在接收到Vsync-SF信号后,向显示驱动查询上一帧是否送显完成,若送显完成,开始合成,若未送显完成,此次不合成。
示例性的,图5中33.2ms时接收到Vsync-SF信号,合成线程向显示驱动查询上一帧是否送显完成,若16.6ms帧1送显未完成,33.2ms时不合成帧3;若16.6ms帧1送显未完成,33.2ms时开始合成帧3。
这样,可以增加绘制渲染、合成和显示流程的一致性,减少送显时出现差错。
S1227、合成线程查询显示驱动中送显队列的待送显帧的数量,若送显队列待送显帧的数量大于或等于1,不进行合成。若送显队列待送显帧的数量小于1,开始合成。
这样,可以减少送显队列中的堆积。
可以理解的是,若待合成帧对应的第一帧率与第二帧率的比值为1的整数或者不为整数,合成线程按顺序合成待合成帧。
下面通过具体的实施例对本申请实施例的数据处理方法进行详细说明。下面的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图13为本申请实施例提供一种的数据处理方法的流程示意图。如图13所示,方法可以包括:
S1301、在绘制渲染时增加第一标识,第一标识用于指示第一帧率,第一帧率为前一帧绘制渲染对应的帧率。
具体的,应用在对帧进行绘制渲染时增加第一标识。
本申请实施例中,第一帧率可以根据Vsync信号的时间戳得到。具体的,应用根据接收到的Vsync信号的时间戳计算第一帧率。示例性的,以微信应用为例,微信应用在Vsync信号到来时,根据该Vsync信号的时间戳和上一次Vsync信号的时间戳,计算帧间隔。微信应用根据帧间隔添加标识记录第一帧率。第一帧率为1/帧间隔。
可能的实现方式中,应用在记录当前缓存信息的结构体(例如,BufferItem类)中加入变量,记录第一帧率。具体的,应用渲染线程将当前帧间隔设置在缓存信息中。
可以理解的是,根据帧间隔计算的第一帧率,可能有误差。可能的实现方式中,终端设备设置第一阈值对第一帧率进行修正。示例性的,当计算的第一帧率为59fps,第一阈值为2时,终端设备将计算的第一帧率修正为60fps。
S1302、获取焦点应用。
具体的,图像合成系统从窗口管理器获取焦点应用。根据焦点应用确认焦点应用对应的缓存队列,进而确认待合成帧。
S1303、获取第二帧率,第二帧率用于指示屏幕刷新率。
本申请实施例中,第二帧率可以为合成帧率,通过计算Vsync信号和下一个Vsync信号的间隔得到。
终端设备还可以在Vsync信号到来时,查询屏幕刷新率,获取第二帧率。或者,当终端设备决策帧率切换时,更新屏幕刷新率为第二帧率。
当第二帧率为第一帧率的整倍数时,终端设备执行S1304。
S1304、第二帧率为第一帧率的N倍时,在合成待合成帧时增加第二标识第二标识用于延迟N-1个第二帧率对应的Vsync周期时长送显,N为大于1的整数。
具体的,若第二帧率与第一帧率的比值为N,当N为大于1的整数时,图像合成系统在合成待合成帧时增加用于延迟N-1个第二帧率对应的Vsync周期送显的标识。
本申请实施例中,延迟送显的标识可以在硬件合成器或显示驱动中调节显示时间的偏移量(例如,送显时间的偏移量增加第二帧率对应的Vsync周期时长),进而延迟待合成帧合成后的显示时间。
S1305、识别到第二标识时,延迟送显。
可能的实现方式中,显示驱动在识别到用于指示延迟N-1个第二帧率对应的Vsync周期送显的标识时,延迟送显。
示例性的,图14为本申请实施例提供的一种界面显示处理流程的示意图。以列表匀速滑动的场景中,屏幕刷新率从60Hz切换至120Hz,且滑动速度为2pixel/16.6ms为例。图14中按照时间顺序,终端设备显示的内容依次对应于帧0、帧1、帧2、帧3、帧4、帧5和帧6。
如图14所示,终端设备在帧3绘制渲染时,决策帧率切换。在33.2ms帧4开始绘制渲染时,由于未完成帧率切换。因此,帧2的位移量、帧3的位移量和帧4的位移量均与切换前的屏幕刷新率(或者帧率切换前的Vsync周期时长)相关,为2pixel。在41.5ms时,完成帧率切换。帧5的位移量和帧6的位移量均与切换后的屏幕刷新率(或者帧率切换后的Vsync周期时长)相关,为1pixel。
在33.2ms时,图像合成系统确定第二帧率为120Hz,缓存队列中帧3的标识指示的第一帧率为60fps。第二帧率为第一帧率的2倍,在帧3合成时增加用于指示延迟8.3ms(一个Vsync周期时长)送显的第二标识。41.5ms时,显示驱动识别到帧3中的第二标识,不进行送显。49.8ms时,显示驱动控制屏幕显示帧3。
同理,41.5ms时,图像合成系统确定第二帧率为120Hz,缓存队列中帧4的标识指示的第一帧率为60fps。第二帧率为第一帧率的2倍,在帧4合成时,增加用于指示延迟8.3ms(一个Vsync周期时长)送显的第二标识。58.1ms时,显示驱动识别到帧4中延迟第二标识,不进行送显。66.4ms时,显示驱动控制屏幕显示帧4。
帧5和帧6中未添加标识,显示驱动正常送显。
图14中,16.6ms时,终端设备的显示界面从帧0变为帧1,滑动速度为2pixel/16.6ms。在33.2ms时,终端设备的显示界面从帧1变为帧2,滑动速度为2pixel/16.6ms。在41.5ms时,没有画面送显,显示界面为帧2。在49.8ms时,终端设备的显示界面从帧2变为帧3,滑动速度为2pixel/16.6ms。在58.1ms时,没有画面送显,显示界面为帧3。在66.4ms时,终端设备的显示界面从帧3变为帧4,滑动速度为2pixel/16.6ms。在74.7ms时,终端设备的显示界面从帧4变为帧5,滑动速度为1pixel/8.3ms。在83ms时,终端设备的显示界面从帧5变为帧6,滑动速度为1pixel/8.3ms。在画面切换时,速度一致,画面显示流畅没有卡顿。
这样,当刷新率为绘制渲染帧率的倍数,且刷新率大于绘制渲染帧率时,根据标识调节显示时间,使得图像显示间隔和图像绘制渲染间隔一致,减少卡顿现象。
在上述实施例的基础上,为减少显示驱动中缓存的堆积,终端设备还可以执行S1306或S1307。
S1306、第二帧率为第一帧率的整倍数时,在合成待合成帧时,调节下一帧合成的偏移量增加N-1个第二帧率对应的Vsync周期时长,以延迟下一帧的合成。
可能的实现方式中,为减少显示驱动中缓存的堆积,终端设备在增加标识的同时,下一帧合成的偏移量增加N-1个Vsync周期时长,以延迟下一帧的合成。
示例性的,图15为本申请实施例提供的一种界面显示处理流程的示意图。以列表匀速滑动的场景中,屏幕刷新率从60Hz切换至120Hz,且滑动速度为2pixel/16.6ms为例。图15中按照时间顺序,终端设备显示的内容依次对应于帧0、帧1、帧2、帧3、帧4、帧5和帧6。
如图15所示,终端设备在帧3绘制渲染时,决策帧率切换。在33.2ms帧4开始绘制渲染时,由于未完成帧率切换。因此,帧2的位移量、帧3的位移量和帧4的位移量均与切换前的屏幕刷新率(或者帧率切换前的Vsync周期时长)相关,为2pixel。在41.5ms时,完成帧率切换。帧5的位移量和帧6的位移量均与切换后的屏幕刷新率(或者帧率切换后的Vsync周期时长)相关,为1pixel。
在33.2ms时,图像合成系统确定第二帧率为120Hz,缓存队列中帧3的标识指示的第一帧率为60fps。第二帧率为第一帧率的2倍,在帧3合成时增加用于指示延迟8.3ms(一个Vsync周期)送显的第二标识。并且调节下一帧合成的偏移量(offset)增加8.3ms(一个Vsync周期),以延迟帧4的合成。41.5ms时,显示驱动识别到帧3中的第二标识,在49.8ms时,控制屏幕显示帧3。
41.5ms时,Vsync信号到来,由于合成的偏移量增加8.3ms,此次不进行合成。49.8ms时,Vsync信号到来,合成帧4。图像合成系统确定第二帧率为120Hz,缓存队列中帧4的标识指示的第一帧率为60fps。第二帧率为第一帧率的2倍,在帧4合成时增加用于指示延迟8.3ms(一个Vsync周期)送显的第二标识。并且调节下一帧合成的偏移量(offset)增加8.3ms(一个Vsync周期),以延迟帧5的合成。58.1ms时,显示驱动识别到帧4中的第二标识,不送显帧4。66.4ms时,显示驱动控制屏幕显示帧4。
58.1ms时,Vsync信号到来,由于合成的偏移量增加8.3ms,此时不合成帧5。66.4ms时,图像合成系统确定第二帧率为120Hz,缓存队列中帧5的标识指示的第一帧率为120fps。第二帧率为第一帧率的1倍,帧5正常合成。74.1ms时,帧5中未添加标识,显示驱动正常送显。74.1ms时,合成的偏移量未调节,正常合成帧6。
图15中,16.6ms时,终端设备的显示界面从帧0变为帧1,滑动速度为2pixel/16.6ms。在33.2ms时,终端设备的显示界面从帧1变为帧2,滑动速度为2pixel/16.6ms。在41.5ms时,没有画面送显,显示界面为帧2。在49.8ms时,终端设备的显示界面从帧2变为帧3,滑动速度为2pixel/16.6ms。在58.1ms时,没有画面送显,显示界面为帧3。在66.4ms时,终端设备的显示界面从帧3变为帧4,滑动速度为2pixel/16.6ms。在74.7ms时,终端设备的显示界面从帧4变为帧5,滑动速度为1pixel/8.3ms。在83ms时,终端设备的显示界面从帧5变为帧6,滑动速度为1pixel/8.3ms。在画面切换时,速度一致,画面显示流畅没有卡顿。
这样,当刷新率为绘制渲染帧率的倍数,且刷新率大于绘制渲染帧率时,根据标识调节显示时间,使得图像显示间隔和图像绘制渲染间隔一致,减少卡顿现象。
S1307、终端设备在合成待合成帧前,查询送显队列的待送显帧的数量,当送显队列中的待送显帧的数量小于1时,合成待合成帧。
可能的实现方式中,合成线程向显示驱动查询送显队列的待送显帧的数量。当送显队列中的待送显帧的数量大于或等于1时,不进行合成。当送显队列的待送显帧的数量小于1时,合成待合成帧。
示例性的,图16为本申请实施例提供的一种界面显示处理流程的示意图。以列表匀速滑动的场景中,屏幕刷新率从60Hz切换至120Hz,且滑动速度为2pixel/16.6ms为例。图16中按照时间顺序,终端设备显示的内容依次对应于帧0、帧1、帧2、帧3、帧4、帧5和帧6。
如图16所示,终端设备在帧3绘制渲染时,决策帧率切换。在33.2ms帧4开始绘制渲染时,由于未完成帧率切换。因此,帧2的位移量、帧3的位移量和帧4的位移量均与切换前的屏幕刷新率(或者帧率切换前的Vsync周期时长)相关,为2pixel。在41.5ms时,完成帧率切换。帧5的位移量和帧6的位移量均与切换后的屏幕刷新率(或者帧率切换后的Vsync周期时长)相关,为1pixel。
在33.2ms时,图像合成系统确定第二帧率为120Hz,缓存队列中帧3的标识指示的第一帧率为60fps。第二帧率为第一帧率的2倍,在帧3合成时增加用于指示延迟8.3ms(一个Vsync周期)送显的第二标识。41.5ms时,显示驱动识别到帧3中的第二标识,在49.8ms时,控制屏幕显示帧3。
41.5ms时,Vsync信号到来,由于送显队列中存在帧3,待送显帧的数量为1,此时不合成。49.8ms时,Vsync信号到来,帧3送显,送显队列的待送显帧的数量小于1,合成帧4。图像合成系统确定第二帧率为120Hz,缓存队列中帧3的标识指示的第一帧率为60fps。第二帧率为第一帧率的2倍,在帧4合成时增加用于指示延迟8.3ms(一个Vsync周期)送显的第二标识。58.1ms时,显示驱动识别到帧4中的第二标识,不送显帧4。66.4ms时,显示驱动控制屏幕显示帧4。
58.1ms时,Vsync信号到来,由于送显队列中有帧4,待送显帧的数量为1,此时不合成帧5。66.4ms时,Vsync信号到来,帧4送显,送显队列的待送显帧的数量小于1,合成帧5。图像合成系统确定第二帧率为120Hz,缓存队列中帧5的标识指示的第一帧率为120fps。第二帧率为第一帧率的1倍,帧5正常合成。74.1ms时,帧5中未添加标识,显示驱动正常送显。74.1ms时,帧5送显,送显队列中没有帧,正常合成帧6。
图16中,16.6ms时,终端设备的显示界面从帧0变为帧1,滑动速度为2pixel/16.6ms。在33.2ms时,终端设备的显示界面从帧1变为帧2,滑动速度为2pixel/16.6ms。在41.5ms时,没有画面送显,显示界面为帧2。在49.8ms时,终端设备的显示界面从帧2变为帧3,滑动速度为2pixel/16.6ms。在58.1ms时,没有画面送显,显示界面为帧3。在66.4ms时,终端设备的显示界面从帧3变为帧4,滑动速度为2pixel/16.6ms。在74.7ms时,终端设备的显示界面从帧4变为帧5,滑动速度为1pixel/8.3ms。在83ms时,终端设备的显示界面从帧5变为帧6,滑动速度为1pixel/8.3ms。在画面切换时,速度一致,画面显示流畅没有卡顿。
这样,当刷新率为绘制渲染帧率的倍数,且刷新率大于绘制渲染帧率时,根据标识调节显示时间,使得图像显示间隔和图像绘制渲染间隔一致,减少卡顿现象。
综上,本申请实施例提供的数据处理方法通过标识绘制渲染帧率,当刷新率为绘制渲染帧率的倍数,且刷新率大于绘制渲染帧率时,增加休眠流程或用于延迟送显的标识,延迟送显,使得图像显示间隔和图像绘制渲染间隔一致,减少卡顿。
上面已对本申请实施例的数据处理方法进行了说明,下面对本申请实施例提供的执行上述数据处理方法的终端设备进行描述。本领域技术人员可以理解,方法和装置可以相互结合和引用,本申请实施例提供的终端设备可以执行上述数据处理方法中的步骤。
如图17所示,图17示出了本申请实施例提供的一种数据处理装置的结构示意图。该数据处理装置可以是本申请实施例中的终端设备。该数据处理装置包括:显示屏1801,显示屏用于显示图像;一个或多个处理器1802;存储器1803;多个应用程序;以及一个或多个计算机程序,其中一个或多个计算机程序被存储在存储器1804中,一个或多个计算机程序包括指令,当指令被数据处理装置执行时,使得数据处理装置执行上述数据处理方法中的步骤。
图18为本申请实施例提供的一种数据处理装置的硬件结构示意图。请参见图18,该装置包括:存储器1901、处理器1902和接口电路1903。该装置还可以包括显示屏1904,其中,存储器1901、处理器1902、接口电路1903和显示屏1904可以通信;示例性的,存储器1901、处理器1902、接口电路1903和显示屏1904可以通过通信总线通信,存储器1901用于存储计算机执行指令,由处理器1902来控制执行,并由接口电路1903来执行通信,从而实现本申请实施例提供的数据处理方法。
可选的,接口电路1903还可以包括发送器和/或接收器。可选的,上述处理器1902可以包括一个或多个CPU,还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
可能的实现方式中,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
本申请实施例提供的数据处理装置,用于执行上述实施例的数据处理方法,技术原理和技术效果相似,此处不再赘述。
本申请实施例提供一种终端设备,结构参见图1。终端设备的存储器可用于存储至少一个程序指令,处理器用于执行至少一个程序指令,以实现上述方法实施例的技术方案。其实现原理和技术效果与上述方法相关实施例类似,此处不再赘述。
本申请实施例提供一种芯片。芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行上述实施例中的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
本申请实施例提供一种计算机程序产品,当计算机程序产品在电子设备运行时,使得终端设备执行上述实施例中的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
本申请实施例提供一种计算机可读存储介质,其上存储有程序指令,程序指令被终端设备执行时,使得终端设备执行上述实施例的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (20)

1.一种数据处理方法,其特征在于,应用于终端设备,所述方法包括:
在对第M帧进行绘制渲染时,为所述第M帧增加第一标识,所述第一标识用于指示第一帧率,所述第一帧率为对第M-1帧执行绘制渲染时对应的帧率,所述M为大于1的整数;
获取所述第M帧合成时采用的第二帧率,所述第二帧率大于所述第一帧率;
当N与所述N最接近的整数的差值小于误差阈值时,在合成所述第M帧时增加休眠流程,所述N为所述第二帧率与所述第一帧率的比值,所述休眠流程的时长为N-1个目标垂直同步Vsync周期的时长,所述目标垂直同步Vsync周期为所述第二帧率对应的Vsync周期;
在所述休眠流程结束之后的所述目标垂直同步Vsync周期到来时,送显合成后的所述第M帧。
2.根据权利要求1所述的方法,其特征在于,所述在合成所述第M帧时增加休眠流程,包括:
在所述第M帧对应的送显函数中增加休眠函数,所述休眠函数中设置的休眠时间为所述N-1个目标垂直同步Vsync周期的时长。
3.根据权利要求1或2所述的方法,其特征在于,在指示绘制渲染所述第M-1帧时有第一Vsync信号生成,在指示绘制渲染所述第M帧时有第二Vsync信号生成,所述方法还包括:
计算帧间隔的倒数,所述帧间隔为所述第一Vsync信号的时间戳与所述第二Vsync信号的时间戳的差值;
在预设的帧率表中获取与所述倒数对应的帧率值,得到所述第一帧率。
4.根据权利要求3所述的方法,其特征在于,所述在预设的帧率表中获取与所述倒数对应的帧率值,得到所述第一帧率,包括:
在所述预设的帧率表中获取与所述倒数最接近的帧率值,得到所述第一帧率。
5.根据权利要求1或2所述的方法,其特征在于,所述第一标识为帧间隔,或者所述第一标识为第一帧率。
6.根据权利要求1或2所述的方法,其特征在于,所述获取所述第M帧合成时采用的第二帧率,包括:
获取所述第M帧合成时所述终端设备的屏幕刷新率;
在预设的帧率表中获取与所述屏幕刷新率对应的帧率值,得到所述第二帧率。
7.根据权利要求1或2所述的方法,其特征在于,所述获取所述第M帧合成时采用的第二帧率之前,还包括:
查询焦点应用;
根据所述焦点应用确认所述第M帧待合成。
8.根据权利要求1或2所述的方法,其特征在于,所述终端设备包括:应用和图像合成系统;
所述在对第M帧进行绘制渲染时,为所述第M帧增加第一标识,包括:
所述应用中的渲染线程在对第M帧进行绘制渲染时,为所述第M帧增加第一标识;
所述获取所述第M帧合成时采用的第二帧率,包括:
所述图像合成系统中的合成线程获取所述第M帧合成时采用的第二帧率;
所述在合成所述第M帧时增加休眠流程,包括:所述合成线程在合成所述第M帧时增加休眠流程,所述休眠流程的时长为N-1个目标垂直同步Vsync周期的时长,所述目标垂直同步Vsync周期为所述第二帧率对应的Vsync周期;
所述在所述休眠流程结束之后的所述目标垂直同步Vsync周期到来时,送显合成后的所述第M帧,包括:
所述合成线程在所述休眠流程结束之后的所述目标垂直同步Vsync周期到来时,送显合成后的所述第M帧。
9.根据权利要求8所述的方法,其特征在于,所述合成线程在合成所述第M帧时增加休眠流程,包括:
所述合成线程在所述第M帧对应的送显函数中增加休眠函数,所述休眠函数中设置的休眠时间为所述N-1个目标垂直同步Vsync周期的时长。
10.根据权利要求8所述的方法,其特征在于,在指示绘制渲染所述第M-1帧时有第一Vsync信号生成,在指示绘制渲染所述第M帧时有第二Vsync信号生成,所述方法还包括:
所述应用中的主线程计算帧间隔的倒数,所述帧间隔为所述第一Vsync信号的时间戳与所述第二Vsync信号的时间戳的差值;
所述主线程在预设的帧率表中获取与所述倒数对应的帧率值,得到所述第一帧率;
所述主线程将所述第一帧率发送至所述应用中的渲染线程。
11.根据权利要求10所述的方法,其特征在于,所述主线程在预设的帧率表中获取与所述倒数对应的帧率值,得到所述第一帧率,包括:
所述主线程在所述预设的帧率表中获取与所述倒数最接近的帧率值,得到所述第一帧率。
12.根据权利要求8所述的方法,其特征在于,所述合成线程获取合成所述第M帧时采用的第二帧率,包括:
所述图像合成系统中的Vsync线程获取所述第M帧合成时所述终端设备的屏幕刷新率;
所述Vsync线程在预设的帧率表中获取与所述屏幕刷新率对应的帧率值,得到所述第二帧率;
所述Vsync线程发送所述第二帧率至所述合成线程。
13.根据权利要求8所述的方法,其特征在于,所述终端设备还包括:窗口管理器;所述图像合成系统中的合成线程获取所述第M帧合成时采用的第二帧率之前,还包括:
所述合成线程向所述窗口管理器查询焦点应用;
所述合成线程根据所述焦点应用确认所述第M帧待合成。
14.一种数据处理方法,其特征在于,应用于终端设备,所述方法包括:
确定屏幕刷新率切换为第二帧率;
在所述第二帧率大于第一帧率时,在合成所述第一帧时增加休眠流程,所述K为所述第二帧率与第一帧率的比值,所述K为自然数,所述休眠流程的时长为K-1个所述第二帧率对应的Vsync周期的时长;
在所述休眠流程结束之后的所述第二帧率对应的Vsync周期到来时,送显合成后的所述第一帧;
其中,所述第一帧率为所述屏幕刷新率切换前的帧率,所述第一帧包括:确定屏幕刷新率切换为第二帧率时缓存队列中的帧、确定屏幕刷新率切换为第二帧率时正在绘制渲染的帧和确定屏幕刷新率切换为第二帧率之后绘制渲染的一帧。
15.根据权利要求14所述的方法,其特征在于,所述在合成所述第一帧时增加休眠流程,包括:
在所述第一帧对应的送显函数中增加休眠函数,所述休眠函数中设置的休眠时间为所述K-1个所述第二帧率对应的Vsync周期的时长。
16.根据权利要求14或15所述的方法,其特征在于,所述终端设备包括:帧率控制系统和图像合成系统;
所述确定屏幕刷新率切换为第二帧率,包括:
所述帧率控制系统确定屏幕刷新率切换为第二帧率;
所述帧率控制系统将所述第二帧率发送至所述图像合成系统中的Vsync线程;
所述在所述第二帧率大于第一帧率时,在合成所述第一帧时增加休眠流程,包括:
所述图像合成系统中的合成线程从Vsync线程查询所述屏幕刷新率;
所述合成线程在第二帧率大于第一帧率时,所述合成线程在合成所述第一帧时增加休眠流程,所述休眠流程的时长为K-1个所述第二帧率对应的Vsync周期的时长;
所述合成线程在所述休眠流程结束之后的所述第二帧率对应的Vsync周期到来时,送显合成后的所述第一帧。
17.根据权利要求16所述的方法,其特征在于,所述合成线程在合成所述第一帧时增加休眠流程,包括:
所述合成线程在所述第一帧对应的送显函数中增加休眠函数,所述休眠函数中设置的休眠时间为所述K-1个所述第二帧率对应的Vsync周期的时长。
18.一种终端设备,其特征在于,所述终端设备包括处理器,所述处理器用于调用存储器中的计算机程序,以执行如权利要求1-17中任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在终端设备上运行时,使得所述终端设备执行如权利要求1-17中任一项所述的方法。
20.一种芯片,其特征在于,所述芯片包括处理器,所述处理器用于调用存储器中的计算机程序,以执行如权利要求1-17中任一项所述的方法。
CN202111163449.6A 2021-09-30 2021-09-30 数据处理方法和相关装置 Active CN115904184B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111163449.6A CN115904184B (zh) 2021-09-30 2021-09-30 数据处理方法和相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111163449.6A CN115904184B (zh) 2021-09-30 2021-09-30 数据处理方法和相关装置

Publications (2)

Publication Number Publication Date
CN115904184A CN115904184A (zh) 2023-04-04
CN115904184B true CN115904184B (zh) 2024-03-19

Family

ID=86486902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111163449.6A Active CN115904184B (zh) 2021-09-30 2021-09-30 数据处理方法和相关装置

Country Status (1)

Country Link
CN (1) CN115904184B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110609645A (zh) * 2019-06-25 2019-12-24 华为技术有限公司 一种基于垂直同步信号的控制方法及电子设备
CN111124230A (zh) * 2019-12-24 2020-05-08 腾讯科技(深圳)有限公司 输入响应方法、装置、电子设备及计算机可读存储介质
WO2021008543A1 (zh) * 2019-07-16 2021-01-21 华为技术有限公司 一种资源调度的方法和电子设备
CN112516590A (zh) * 2019-09-19 2021-03-19 华为技术有限公司 一种帧率识别方法及电子设备
CN112612562A (zh) * 2020-12-14 2021-04-06 努比亚技术有限公司 一种显示刷新控制方法、终端及计算机可读存储介质
CN112789651A (zh) * 2019-03-27 2021-05-11 华为技术有限公司 一种应用于终端的频率调整方法、装置及电子设备
CN115048012A (zh) * 2021-09-30 2022-09-13 荣耀终端有限公司 数据处理方法和相关装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8797340B2 (en) * 2012-10-02 2014-08-05 Nvidia Corporation System, method, and computer program product for modifying a pixel value as a function of a display duration estimate

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112789651A (zh) * 2019-03-27 2021-05-11 华为技术有限公司 一种应用于终端的频率调整方法、装置及电子设备
CN110609645A (zh) * 2019-06-25 2019-12-24 华为技术有限公司 一种基于垂直同步信号的控制方法及电子设备
WO2021008543A1 (zh) * 2019-07-16 2021-01-21 华为技术有限公司 一种资源调度的方法和电子设备
CN112516590A (zh) * 2019-09-19 2021-03-19 华为技术有限公司 一种帧率识别方法及电子设备
CN111124230A (zh) * 2019-12-24 2020-05-08 腾讯科技(深圳)有限公司 输入响应方法、装置、电子设备及计算机可读存储介质
CN112612562A (zh) * 2020-12-14 2021-04-06 努比亚技术有限公司 一种显示刷新控制方法、终端及计算机可读存储介质
CN115048012A (zh) * 2021-09-30 2022-09-13 荣耀终端有限公司 数据处理方法和相关装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
并行绘制系统中基于网络处理单元的图像合成及显示;李瑞瑞;张一天;秦桂明;秦开怀;;计算机应用(第01期);全文 *

Also Published As

Publication number Publication date
CN115904184A (zh) 2023-04-04

Similar Documents

Publication Publication Date Title
WO2021000881A1 (zh) 一种分屏方法及电子设备
CN114579075B (zh) 数据处理方法和相关装置
CN115048012B (zh) 数据处理方法和相关装置
CN113630572B (zh) 帧率切换方法和相关装置
CN113726950B (zh) 一种图像处理方法和电子设备
CN113254120B (zh) 数据处理方法和相关装置
WO2020093988A1 (zh) 一种图像处理方法及电子设备
CN114089933B (zh) 显示参数的调整方法、电子设备、芯片及可读存储介质
CN114579076B (zh) 数据处理方法和相关装置
WO2023065873A1 (zh) 帧率调整方法、终端设备及帧率调整系统
CN114327127B (zh) 滑动丢帧检测的方法和装置
CN113986002B (zh) 帧处理方法、装置及存储介质
CN114461051B (zh) 帧率切换方法、装置及存储介质
CN116847039A (zh) 一种基于垂直同步信号的图像处理方法及电子设备
CN113973189A (zh) 显示内容的切换方法、装置、终端及存储介质
WO2022078116A1 (zh) 笔刷效果图生成方法、图像编辑方法、设备和存储介质
CN115904184B (zh) 数据处理方法和相关装置
CN115686403A (zh) 显示参数的调整方法、电子设备、芯片及可读存储介质
CN114740986A (zh) 手写输入显示方法及相关设备
CN116069187B (zh) 一种显示方法及电子设备
CN114531519B (zh) 一种基于垂直同步信号的控制方法及电子设备
WO2023124225A1 (zh) 帧率切换方法及装置
US20240105107A1 (en) Frame rate switching method and apparatus
CN117850727A (zh) Vsync信号的控制方法、电子设备、存储介质及芯片
CN116414337A (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