CN116680153B - 应用帧率平滑方法、电子设备及存储介质 - Google Patents

应用帧率平滑方法、电子设备及存储介质 Download PDF

Info

Publication number
CN116680153B
CN116680153B CN202310939689.3A CN202310939689A CN116680153B CN 116680153 B CN116680153 B CN 116680153B CN 202310939689 A CN202310939689 A CN 202310939689A CN 116680153 B CN116680153 B CN 116680153B
Authority
CN
China
Prior art keywords
frame rate
application
temperature
equipment
determining
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
CN202310939689.3A
Other languages
English (en)
Other versions
CN116680153A (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 CN202310939689.3A priority Critical patent/CN116680153B/zh
Publication of CN116680153A publication Critical patent/CN116680153A/zh
Application granted granted Critical
Publication of CN116680153B publication Critical patent/CN116680153B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本申请公开了一种应用帧率平滑方法、电子设备及存储介质,属于终端技术领域。所述方法包括:在第一应用运行的过程中,获取电子设备的设备状态信息;若根据获取的设备状态信息确定第一应用的运行场景满足帧率平滑条件,则根据获取的设备状态信息和第一应用的当前帧率,确定目标帧率;根据目标帧率,调整第一应用的帧率;根据目标帧率,调整显示屏幕的刷新率;根据目标帧率,为第一应用进行资源调度。如此,可以在平衡设备状态、应用画面的显示性能和设备功耗的基础上进行帧率调整,使得帧率的调整更加平稳,降低帧率抖动概率,提高应用画面显示的稳定性,保障用户观看应用画面的流畅体验。

Description

应用帧率平滑方法、电子设备及存储介质
技术领域
本申请涉及终端技术领域,特别涉及一种应用帧率平滑方法、电子设备及存储介质。
背景技术
随着终端技术的不断发展,对于游戏类或视频类等功耗较高的视频显示应用来说,应用画面的帧率及复杂度逐渐提升,以期得到更好的使用者体验。然而,对于终端来说,应用画面的帧率越高、越精致,功耗越大,越容易影响设备状态,比如设备更容易发烫。为了保障设备状态,降低设备发烫几率,一般会在视频显示应用运行的过程中,对视频显示应用的帧率进行管控。
相关技术中,视频显示应用运行的过程中,可以触发温控限帧策略。温控限帧策略是指若检测到设备温度大于温度阈值,则将应用帧率从当前的第一帧率调整为帧率较低的第二帧率。在帧率下降后,功耗降低,终端的设备温度也会随之下降,若设备温度下降至小于温度阈值,终端又会将应用帧率调回第一帧率。之后,若再次检测到设备温度大于温度阈值,则再将应用帧率降低为第二帧率。由此可知,这种帧率调整方法容易出现帧率的抖升抖降,稳定性较低。
发明内容
本申请提供了一种应用帧率平滑方法、电子设备及存储介质,可以在平衡设备状态、应用画面的显示性能和设备功耗的基础上进行帧率调整,使得帧率的调整更加平稳,降低帧率抖动概率,提高应用画面显示的稳定性,保障用户观看应用画面的流畅体验。所述技术方案如下:
第一方面,提供了一种应用帧率平滑方法,应用与电子设备,所述方法包括:
在第一应用运行的过程中,获取电子设备的设备状态信息;若根据获取的设备状态信息确定第一应用的运行场景满足帧率平滑条件,则根据获取的设备状态信息和第一应用的当前帧率,确定目标帧率;根据目标帧率,调整第一应用的帧率;根据目标帧率,调整显示屏幕的刷新率;根据目标帧率,为第一应用进行资源调度。
其中,第一应用为视频显示应用,视频显示应用是用于显示视频画面的应用。比如,第一应用为游戏应用、视频播放应用或视频通话应用等。设备状态信息用于指示设备状态,可以包括设备温度、设备负载等。
通过根据电子设备的设备状态信息确定的目标帧率调整视频显示应用的帧率,可以使视频显示应用的帧率与设备状态匹配,从而降低帧率对设备状态的影响,保障设备状态。通过根据目标帧率调整显示屏幕的刷新率,可以使显示屏幕的刷新率与设备状态和调整后的帧率匹配,保证视频显示的流畅性,进而保证视频显示性能。通过根据目标帧率为应用进行资源调度,可以使调度的资源与目标帧率匹配,进而使得电子设备可以在合理的功耗下保证视频显示的性能。因此,通过根据设备状态信息确定的目标帧率调整视频显示应用的帧率和显示屏幕的刷新率,以及为视频显示应用进行资源调度,可以在平衡设备状态、视频显示的性能和设备功耗的基础上进行帧率调整,使得帧率的调整更加平滑和稳定,降低帧率抖动概率,避免出现帧率陡降导致的卡顿问题,提高视频显示的稳定性,保障用户观看应用画面的流畅体验。
也即是,本申请实施例可以监听设备温度、设备负载等设备状态信息,还可以监听应用流畅度等应用状态信息,根据监听数据对应用的帧率进行反馈控制,具体对应用帧率、刷新率和资源调度这三个方面进行反馈控制,使得输出帧率在设备状态、应用画面的性能和设备功耗之间取得平衡。
作为一个示例,根据目标帧率,调整第一应用的帧率,包括:根据目标帧率,通过调整第一应用的图像渲染结果对应的前台缓冲和后台缓冲进行交换的等待时长,将第一应用的帧率调整为目标帧率。
其中,第一应用的图像渲染结果对应有前台缓冲和后台缓冲,后台缓冲用来存储图像渲染结果,前台缓冲用于存储渲染完成后待送显的图像数据。在第一应用的应用画面进行绘制时,实际上是对后台缓冲中的内容进行渲染,渲染完成后,将后台缓冲和前台缓冲进行交换。将后台缓冲和前台缓冲进行交换是指将后台缓冲中的内容(渲染结果)复制到前台缓冲中,再将前台缓冲中的内容进行送显,从而在显示器中显示绘制的应用画面。
其中,前后台缓冲进行交换的等待时长越长,则对应的帧率越大;前后台缓冲进行交换的等待时长越短,则对应的帧率越小。
本申请实施例中,可以通过调整前台缓冲和后台缓冲进行交换的等待时长,来控制第一应用的单个图像帧从渲染到显示的时长,进而控制第一应用的帧率。前后台缓冲进行交换的等待时长越长,则对应的帧率越大;前后台缓冲进行交换的等待时长越短,则对应的帧率越小。
可以通过调整前台缓冲和后台缓冲进行交换的等待时长,来控制单帧从渲染到显示的时长,进而控制游戏应用的帧率。前后台缓冲进行交换的等待时长越长,则对应的帧率越大;前后台缓冲进行交换的等待时长越短,则对应的帧率越小。
作为一个示例,可以调用eglSwapBuffers函数,通过eglswapbuffer函数调整第一应用的图像渲染结果对应的前台缓冲和后台缓冲进行交换的等待时长。其中,eglSwapBuffers函数是嵌入式图形库(embedded graphic library,EGL)中的一个函数,用于交换前后台缓冲。
作为一个示例,根据目标帧率,调整显示屏幕的刷新率,包括:根据目标帧率,确定目标刷新率,目标刷新率是根据目标帧率的数值确定的,或者是根据显示屏幕支持的多个刷新率档位中与目标帧率匹配的刷新率档位确定的;将显示屏幕的刷新率调整为目标刷新率。
在一个实施例中,显示屏幕可以支持多个刷新率档位,不同的刷新率档位对应不同的刷新率。电子设备可以从显示屏幕支持的多个刷新率档位中确定与目标帧率匹配的刷新率档位,将与目标帧率匹配的刷新率档位对应的刷新率确定为目标刷新率。
其中,与目标帧率匹配的刷新率档位可以是多个刷新率档位中与目标帧率的值最接近的刷新率档位,或者是大于或等于目标帧率的值的刷新率档位中与目标帧率的值最接近的刷新率档位,或者是小于或等于目标帧率的值的刷新率档位中与目标帧率的值最接近的刷新率档位,本申请实施例对此不做限定。
在另一个实施例中,显示屏幕支持刷新率的无极调整,电子设备可以将目标帧率对应的数值确定为目标刷新率。比如,若目标帧率为100fps,则目标刷新率为100Hz。
如此,可以根据第一应用的当前帧率和设备状态信息,动态选择显示屏幕的刷新率档位,使得显示屏幕的刷新率与应用帧率和设备状态匹配,从而在合理的刷新率功耗下保证应用画面的流畅性。
作为一个示例,电子设备可以目标帧率,为第一应用调度处理器资源。
通过根据目标帧率为应用调度处理器资源,可以使调度的处理器资源与目标帧率匹配,进而使得电子设备可以在合理的处理器功耗下保证视频显示的性能。
作为一个示例,电子设备包括多核处理器,多核处理器被划分成多个簇,每个簇包括至少一个处理器,调度处理器资源可以包括调频、选核、迁核和亲和性设置中的一种或多种。
比如,可以根据目标帧率,确定单帧时长;根据单帧时长,以及多个簇中各个簇的算力和功耗,为第一应用的相关线程调度处理器资源。
在一个实施例中,可以根据单帧时长,以及多个簇中各个簇的算力和功耗,设置第一线程与第一簇的亲和性,第一簇为多个簇中的任一个。
其中,第一线程可以为第一应用的任一线程,比如为第一应用的重负载线程。重负载线程是指第一应用的所有线程中负载相对较重的线程,比如可以将第一应用的线程中运行时长满足预设条件的线程确定为重负载线程。其中,预设条件可以为运行时长大于预设时长等,当然也可以设置为其他条件,本申请实施例对此不做限定。示例地,重负载线程可以包括绘制线程和逻辑线程。
在一个实施例中,根据单帧时长,以及多个簇中各个簇的算力和功耗,基于第二簇的频段为第二线程进行调频,第二簇是指当前运行第二线程的处理器所属的簇。
在一个实施例中,先根据单帧时长,以及多个簇中各个簇的算力和功耗,基于第二簇的频段为第二线程进行调频,第二簇是指当前运行第二线程的处理器所属的簇。之后,判断第二线程调频后的频点的算力和功耗是否满足单帧时长的性能要求。若第二线程调频后的频点的算力和功耗不满足单帧时长的性能要求,则结束确定调度策略的步骤。若第二线程调频后的频点的算力和功耗不满足单帧时长的性能要求,则先根据单帧时长,以及多个簇中各个簇的算力和功耗,将第二线程从第二簇迁移至第三簇运行,再基于第三簇的频段为第二线程进行调频。
其中,第三簇为多个簇中除第二簇之外的任一簇,比如为性能大于第二簇的一个簇。第二线程为第一应用的任一线程,比如为第一应用的重负载线程,如渲染线程或逻辑线程等。
在一个实施例中,根据单帧时长,以及多个簇中各个簇的算力和功耗,从多个簇中选择第四簇,将第四簇分配给游戏应用的第三线程。
其中,第四簇可以为多个簇中的任一簇,第三线程可以为第一应用的任一线程,比如为第一应用的重负载线程,如渲染线程或逻辑线程等。
通过为第一应用的相关线程进行亲和性设置,或者为第一应用的相关线程进行调频,或先进行迁核再进行调频,或者为第一应用的相关线程进行选核,可以使得第一应用的相关线程可以在合理的处理器资源下运行,进而使得设备可以在合理的设备功耗下保证第一应用的相关线程的运行性能,进而保证应用画面的显示性能。
作为一个示例,设备状态信息包括设备温度;若电子设备的当前设备温度大于第一基准温度,和/或,当前设备温度小于第二基准温度,以及温度变化速度大于速度阈值,则确定第一应用的运行场景满足帧率平滑条件;其中,第一基准温度小于第二基准温度,当前设备温度是指当前温度获取周期获取的设备温度,温度变化速度是指当前设备温度与上一个温度获取周期获取的设备温度之间的温度变化速度。
作为一个示例,根据获取的设备状态信息和第一应用的当前帧率,确定目标帧率,包括:根据电子设备的当前设备温度和温度变化值,确定帧率改变值,温度变化值是指当前设备温度与上一个温度获取周期获取的设备温度之间的温度变化值,温度变化值越大,帧率改变值越大;根据第一应用的当前帧率和帧率改变值,确定目标帧率。
也即是,帧率改变值与帧率变化值呈正比,即与温升速度或温降速度呈正比。如此,温升速度越快,帧率降低的越快,温降速度越快,帧率提升的越快,从而可以根据温升速度或温降速度灵活地调整应用帧率,提高帧率平滑效果。
作为一个示例,根据电子设备的当前设备温度和温度变化值,确定帧率改变值,包括:根据温度变化值,确定第一帧率改变值;根据当前设备温度,确定第二帧率改变值;根据第一帧率改变和第二帧率改变值,确定帧率改变值。
其中,第一帧率改变值是由温升速度贡献的帧率改变值。第二帧率改变值是由当前设备温度贡献的帧率改变值。
作为一个示例,根据温度变化值,确定第一帧率改变值,包括:
根据所述温度变化值,通过如下公式确定第一帧率改变值:
其中,为第一帧率改变值,/>为温度变化值,/>为第一常数,a为第二常数。
作为一个示例,根据当前设备温度,确定第二帧率改变值,包括:
根据所述当前设备温度,通过如下公式确定第二帧率改变值:
其中,为第二帧率改变值,/>为标准化温度,标准化温度是根据当前设备温度和中间温度确定得到,中间温度是令/>为0的标准化温度的值,/>为第三常数。
作为一个示例,根据第一帧率改变和第二帧率改变值,确定帧率改变值,包括:
根据第一帧率改变和第二帧率改变值,通过如下公式确定帧率改变值:
其中,为帧率改变值,/>为第一帧率改变值,/>为第二帧率改变值,k为第四常数,/>为第五常数,normalFps为预先设置的帧率变化的最小单位。
通过根据上述公式计算帧率改变值,引入了自适应温度-帧率决策模型,是的帧率的决策符合温度变化趋势。
作为一个示例,设备温度是根据如下温度中的一种或多种确定:壳体温度、电池温度和系统温度。
作为一个示例,设备状态信息包括设备负载,电子设备还可以获取第一应用的流畅度信息;若流畅度信息不满足流畅度要求且设备负载大于第一负载阈值,或者,若第一应用的流畅度信息满足流畅度要求且设备负载小于第二负载阈值,则确定第一应用的运行场景满足帧率平滑条件;然后,根据流畅度信息、设备负载和第一应用的当前帧率,确定目标帧率。
如此,可以根据应用流畅度和设备负载,对应用帧率进行调整,使得应用帧率在合理的功耗下满足性能要求。
作为一个示例,若流畅度信息不满足流畅度要求且设备负载大于第一负载阈值,则确定第一应用的运行场景满足帧率下降条件;然后,根据流畅度信息和设备负载,确定帧率下降值;根据帧率下降值和当前帧率,确定目标帧率。
作为一个示例,若第一应用的流畅度信息满足流畅度要求且设备负载小于第二负载阈值,则确定第一应用的运行场景满足帧率提高条件;然后,根据流畅度信息和设备负载,确定帧率提高值;根据帧率提高值和当前帧率,确定目标帧率。
如此,可以在设备负载较大时降低应用帧率,在设备负载较小时提高应用帧率,使得应用帧率符合设备性能。
作为一个示例,获取电子设备的设备状态信息之前,还可以获取电子设备的系统状态;若系统状态满足第一预设条件,则执行获取电子设备的设备状态信息的步骤。另外,若系统状态不满足第一预设条件,则不执行获取电子设备的设备状态信息的步骤。
示例地,第一预设条件包括以下系统状态中的一种或多种:
电子设备处于亮屏状态;
电子设备的显示屏幕为可折叠屏且处于展开态;
第一应用在前台运行;
电子设备处于多窗场景,多窗场景是指显示多个窗口的场景;
电子设备处于下拉通知栏状态;
电子设备处于来电场景;
电子设备处于录屏场景;
电子设备不处于低电量模式;
电子设备不处于插帧场景,插帧场景是指第一应用通过插帧方式生成视频帧的场景。
如此,可以在合适的系统状态下,执行帧率平滑方案,使得帧率平滑方案的执行更加灵活和有针对性。
另外,获取电子设备的系统状态之后,还可以先判断系统状态是否满足第二预设条件;若系统状态不满足第二预设条件,则判断系统状态是否满足第一预设条件;若系统状态满足第二预设条件,则不执行获取电子设备的设备状态信息的步骤。
其中,第一预设条件为帧率平滑方案的生效条件,相当于系统状态白名单,第二预设条件为帧率平滑方案失效条件,相当于系统状态黑名单。
通过在第一预设条件之外设置第二预设条件,可以提高系统状态的筛查效率,降低计算量。
示例地,第二预设条件包括如下系统状态中的一种或多种:
电子设备处于低电量模式;
电子设备处于插帧场景。
作为一个示例,获取电子设备的设备状态信息之前,还可以对第一应用进行白名单校验;若校验成功,则执行获取电子设备的设备状态信息的步骤。
比如,在确定系统状态满足第一预设条件之后,对第一应用进行白名单校验;若校验成功,则执行获取电子设备的设备状态信息的步骤。
如此,可以实现针对特定应用或特定类型的应用执行帧率平滑方案,提高帧率平滑方案的个性化配置需求。
比如,预设白名单可以包括至少一个应用的应用标识。在进行白名单校验时,可以判断预设白名单是否存在第一应用的应用标识,若预设白名单存在第一应用的应用标识,则确定校验成功;预设白名单不存在第一应用的应用标识,则确定校验失败。
如此,可以实现针对特定类型的应用执行帧率平滑方案,提高帧率平滑方案的个性化配置需求。
再比如,预设白名单包括至少一个应用类型。在进行白名单校验时,可以判断第一应用是否属于预设白名单包括的至少一个应用类型中的任一应用类型;若第一应用属于至少一个应用类型中的任一应用类型,则确定校验成功;若第一应用不属于至少一个应用类型中的任一应用类型,则确定校验失败。
如此,可以实现针对特定应用执行帧率平滑方案,提高帧率平滑方案的个性化配置需求。
第二方面,提供了一种应用帧率平滑装置,所述应用帧率平滑装置具有实现上述第一方面中应用帧率平滑方法行为的功能。所述应用帧率平滑装置包括至少一个模块,所述至少一个模块用于实现上述第一方面所提供的应用帧率平滑方法。
第三方面,提供了一种应用帧率平滑装置,所述应用帧率平滑装置的结构中包括处理器和存储器,所述存储器用于存储支持应用帧率平滑装置执行上述第一方面所提供的应用帧率平滑方法的程序,以及存储用于实现上述第一方面所述的应用帧率平滑方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述应用帧率平滑装置还可以包括通信总线,所述通信总线用于在所述处理器与所述存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的应用帧率平滑方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的应用帧率平滑方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与上述第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是本申请实施例提供的一种电子设备的多核处理器架构的示意图;
图2是本申请实施例提供的一种通过温控限帧策略进行帧率平滑的示意图;
图3是本申请实施例提供的一种终端的结构示意图;
图4是本申请实施例提供的一种终端的软件系统的框图;
图5是本申请实施例提供的一种终端在游戏应用运行的过程中监听设备状态信息以及根据监听的设备状态信息对游戏应用的帧率进行平滑的工作流程示意图;
图6是本申请实施例提供的一种通过帧率平滑模块确定对游戏应用进行帧率调整的目标帧率的流程示意图;
图7是本申请实施例提供的一种根据目标帧率通过帧率平滑模块进行帧率平滑的流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
为了下述各实施例的描述清楚简洁,首先给出相关概念或技术的简要介绍。
帧率:帧率(frame rate)是指以帧为单位的图像连续出现在显示器上的频率,即每秒在屏幕上显示的帧数。帧率的单位为fps(frame per second,每秒内的帧数)。刷新率代表了视频流畅性,帧率值越高,视频流畅性就越好。
刷新率:刷新率是指电子束对屏幕上的图像重复扫描的次数,即显示器每秒刷新画面的次数。刷新率的单位为赫兹 (Hz)。刷新率越高,所显示的图像(画面)稳定性就越好。刷新频率越低,图像闪烁和抖动的就越厉害。
需要说明的是,帧率与刷新率是两个不同的概念。通常来说,帧率强调的是内容在产生时的速率,刷新率的重点在“刷新”这个动作。也就是说,帧率代表的是每秒发送到显示器的图像数量,而刷新率代表的是显示器实际显示这些图像的速度。刷新的快慢与要显示内容的帧率无关,例如,显示器的刷新率可以是60hz,75hz,100hz等,但是播放的视频也许是25fps,30fps等。
设备温度:设备温度用于指示设备的温度。设备温度可以根据壳体温度、电池温度和系统温度中的一种或多种确定。比如,设备温度包括壳体温度、电池温度和系统温度中的一种或多种。再比如,设备温度是对壳体温度和电池温度进行融合计算后得到。示例地,壳体温度可以包括前壳温度和后壳温度中的一种或多种。
设备负载:设备负载用于指示设备的负载。设备负载可以根据中央处理器(central processing unit,CPU)负载和图形处理器(graphics processing unit,GPU)负载中的一种或多种确定。比如,设备负载包括CPU负载和GPU负载中的一种或多种。再比如,设备负载是对CPU负载和GPU负载进行融合计算后得到。
流畅度信息:视频显示应用的流畅度信息是指用于评估视频画面的流畅度的相关信息。视频画面的流畅度越高,表示视频画面的卡顿情况越轻微;视频画面的流畅度越低,表示视频画面的卡顿情况越严重。示例地,流畅度信息可以包括如下信息中的一种或多种:平均帧率、帧率方差、掉帧卡顿比率和降帧次数等。
资源调度:资源调度是指对资源进行合理的分配和使用。调度的资源可以为计算资源,如处理器资源等。也即是,资源调度包括调度处理器资源,以合理利用处理器资源的算力。对处理器资源的调度可以包括调频、选核、迁核或亲和性设置等。
簇(cluster):多核处理器分为多个簇,每个簇包括一个或多个处理器。
中央处理器是电子设备的运算和控制核心,主要用于实现信息处理和程序运行。为了提高中央处理器(以下简称处理器)的处理速度和性能,一般在电子设备中采用多核处理器。处理器可以分为大核、中核和小核。大核相对中核而言,具备更高的算力,但功耗也更大。同理,中核相对小核具备更高的算力,但功耗也更大。多核处理器可以包括大核、中核和小核中的多种。为了提高处理器性能,可以将多核处理器分为多个簇,每一个簇包括至少一个处理器,且每个簇中的处理器架构相同,每个簇对应大核、中核或小核中的任意一种。另外,每个簇中的处理器的频段相同。比如,某个簇包括4个处理器,这4个处理器均为大核,且每个处理器的频段均为600M-1.5G。
比如,请参考图1,图1是本申请实施例提供的一种电子设备的多核处理器架构的示意图。如图1所示,电子设备具备架构不同的12个处理器核心(CPU0-CPU11),这12个处理器核心包括4个大核(CPU0-3)、4个中核(CPU4-7)和4个小核(CPU8-11)。其中,4个大核(CPU0-3)组成一个簇(簇0),4个中核组成一个簇(簇1),4个小核组成一个簇(簇2)。
对于多核处理器而言,对处理器资源的调度可以包括调频、选核、迁核和亲和性设置中的一种或多种。
(1)调频是指从选定的簇所在频段选择一个或多个频点分配给任务线程。
(2)选核是指为任务线程从多个簇中选择一个或多个簇,以建立选择的簇与任务线程之间的关联关系。通过建立关联关系可以将选择的簇中的处理器资源分配给该任务线程,以使该任务线程运行在选择的簇中的处理器上。
(3)迁核是指将任务线程从当前调度的处理器所在簇调度至其他簇的处理器上运行。
(4)亲和性设置是指设置任务线程与某个簇之间的亲和性。通过设置亲和性可以建立任务线程与某个簇之间的绑定关系,以将某个簇的处理器资源固定地分配给该任务线程,进而使得该任务线程固定地运行在某个簇中的处理器上。
接下来,对本申请实施例涉及的应用场景进行说明。
如背景技术所述,为了降低电子设备发烫几率,一般会在视频显示应用运行的过程中,触发温控限帧策略。比如,请参考图2,图2是本申请实施例提供的一种通过温控限帧策略进行帧率管控的示意图。如图2所示,在应用画面的帧率为90fps的情况下,随着应用的运行,设备温度逐渐增大。若在某一时间点检测到设备温度大于或等于45°,则将应用画面的帧率从90fps降低为60fps。在帧率下降后,电子设备的功耗降低,设备温度也会随之下降。若设备温度下降至小于45°,则将应用画面的帧率升回至90fps。之后,若再次检测到设备温度大于45°,则再次将应用画面的帧率降低为60fps。如此,循环往复。由此可知,这种帧率调整方法容易出现帧率的抖升抖降,比如在60fps和90fps之间来回切换,导致帧率抖动剧烈,视频显示的稳定性较低,用户体验不佳。
为了保证视频画面的流程性,以及提高帧率调整的稳定性,本申请实施例提供了一种帧率调整方法,可以在视频显示应用运行的过程中,获取电子设备的设备状态信息,根据获取的设备状态信息判断视频显示应用是否满足帧率平滑条件,若满足,则根据获取的设备状态信息和视频显示应用的当前帧率确定目标帧率,然后根据目标帧率分别调整视频显示应用的帧率、调整显示屏幕的刷新率、以及为视频显示应用进行资源调度。
通过根据电子设备的设备状态信息确定的目标帧率调整视频显示应用的帧率,可以使视频显示应用的帧率与设备状态匹配,从而降低帧率对设备状态的影响,保障设备状态。通过根据目标帧率调整显示屏幕的刷新率,可以使显示屏幕的刷新率与设备状态和调整后的帧率匹配,保证视频显示的流畅性,进而保证视频显示性能。通过根据目标帧率为应用进行资源调度,可以使调度的资源与目标帧率匹配,进而使得电子设备可以在合理的功耗下保证视频显示的性能。因此,通过根据设备状态信息确定的目标帧率调整视频显示应用的帧率和显示屏幕的刷新率,以及为视频显示应用进行资源调度,可以在平衡设备状态、视频显示的性能和设备功耗的基础上进行帧率调整,使得帧率的调整更加平稳,降低帧率抖动概率,提高视频显示的稳定性,保障用户观看应用画面的流畅体验。
接下来,对本申请实施例涉及的电子设备进行详细说明。
本申请提供的帧率调整方法可以应用于电子设备中,该电子设备具有显示屏幕,且可以安装和运行视频显示应用,在运行视频显示应用的过程中,可以在显示屏幕上显示对应的应用画面。其中,电子设备可以为终端或计算机等,终端可以为手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端,可穿戴设备可以为智能手表等。其中,视频显示应用是用于显示视频画面的应用,如游戏类应用、视频播放类应用或视频通话类应用等。
图3是本申请实施例提供的一种终端100的结构示意图。参见图3,终端100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serialbus,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等。
可以理解的是,本申请实施例示意的结构并不构成对终端100的具体限定。在本申请另一些实施例中,终端100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,比如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
作为一个示例,处理器110为多核处理器,多核处理器被划分为多个簇,每个簇包括一个或多个处理器核。比如,这多个处理器可以包括3个簇,分别为簇0、簇1和簇2。其中,簇0包括一个或多个大核,簇1包括一个或多个中核,簇2包括一个或多个小核。
其中,控制器可以是终端100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器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)接口等。
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传递音频信号,实现通过蓝牙耳机接听电话的功能。
UART接口是一种通用串行数据总线,用于异步通信。UART接口可以为双向通信总线。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与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。USB接口130还可以用于连接其他终端,比如AR设备等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端100的结构限定。在本申请另一些实施例中,终端100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过终端100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为终端100供电。
电源管理模块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可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在终端100上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,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),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
终端100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting 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可以用于存储计算机可执行程序代码,计算机可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,来执行终端100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端100在使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,比如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
终端100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D以及应用处理器等实现音频功能,比如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
温度传感器180J用于检测温度。在一些实施例中,终端100利用温度传感器180J检测的温度,执行温度处理策略。比如,当温度传感器180J上报的温度超过阈值,终端100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,终端100对电池142加热,以避免低温导致终端100异常关机。在其他一些实施例中,当温度低于又一阈值时,终端100对电池142的输出电压执行升压,以避免低温导致的异常关机。
接下来对终端100的软件系统予以说明。
终端100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的安卓(Android)系统为例,对终端100的软件系统进行示例性说明。
图4是本申请实施例提供的一种终端100的软件系统的框图。参见图4,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层(也称应用层),应用框架(Framework)层,本地服务(Native)层 ,硬件抽象层(hardware abstraction layer,HAL)以及内核(Kernal)层。
应用程序层可以包括一系列应用程序包。如图4所示,应用程序包可以包括游戏应用、视频播放应用、视频通话应用等能够显示视频画面的应用程序。当然,应用程序包也可以包括其他应用程序,如相机,图库,日历,通话,地图,导航,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图4所示,应用程序框架层可以包括视图系统。视图系统用于绘制应用程序的显示画面。比如,视图系统可以为视频显示应用渲染待显示的图像帧,在渲染完成后,将渲染完成的图像帧输送至显示屏幕进行显示。视图系统可以按照一定的帧率执行渲染和送显流程,以按照该帧率进行出帧,使得视频显示应用的帧率维持在该帧率。另外,视图系统还提供有帧率调整接口,可以通过调用表面视图的帧率调整接口来调整视频显示应用的帧率。示例地,视图系统可以为表面视图(surface view)。
另外,应用程序框架层还可以包括窗口管理器,内容提供器,电话管理器,资源管理器,通知管理器等。窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问,这些数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。电话管理器用于提供终端100的通信功能,比如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如,通知管理器可以是以图表或滚动条文本形式出现在系统顶部状态栏的通知,比如后台运行的应用程序的通知。
本地服务层主要包括一些本地服务和链接库。本地服务层可以通过一些C/C++库来为安卓系统提供特性支持。另外,本地服务层还包括安卓运行时(Android Runtime)。Android Runtime包括核心库和虚拟机。Android Runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
请参考图4,本地服务层包括温度获取模块、负载获取模块、表面投递者(SurfaceFlinger)和帧率平滑(frame rate smooth,FRS)模块。
温度获取模块用于获取设备温度。其中,设备温度包括壳体温度、电池温度和系统温度等温度中的一种或多种,或者,设备温度是根据壳体温度、电池温度和系统温度等温度中的一种或多种进行融合计算后得到的温度。
负载获取模块用于获取设备负载。其中,设备负载可以包括CPU负载和GPU负载等负载中的一种或多种,或者设备负载是根据CPU负载和GPU负载等负载中的一种或多种进行融合计算得到。
SurfaceFlinger用于接收多个来源的图形显示数据,对这些图形显示数据进行合成,然后发送到显示设备。SurfaceFlinger还可以用于获取应用程序的流畅度信息,流畅度信息用于指示应用程序的视频画面的卡顿情况。另外,SurfaceFlinger还可以提供刷新率调整接口,该刷新率调整接口用于调用HWC的刷新率调整接口,以触发调整显示屏幕的刷新率。
帧率平滑模块可以监听温度获取模块获取的设备温度,负载获取模块获取的设备负载,以及SurfaceFlinger获取的应用程序的流畅度信息中的一种或多种。然后,根据监听数据,通过帧率调整策略确定应用程序的目标帧率,根据目标帧率进行帧率管控,实现帧率平滑。
本申请实施例中,帧率平滑模块可以根据目标帧率触发如下三个方面的帧率管控:1,在应用侧根据目标帧率调整应用程序的帧率;2,在屏幕侧根据目标帧率调整显示屏幕的刷新率;3,在调度侧根据目标帧率为应用程序重新进行资源调度。其逻辑架构将在下述图5中进行详细说明。
HAL是一个核心态模块,可以隐藏各种与硬件有关的细节,例如I/O接口、中断控制器以及多处理器通信机制等,为运行Android的不同硬件平台提供统一的服务接口,实现多种硬件平台上的可移植性。
请参考图4,HAL可以包括刷新率调整接口和调度模块。刷新率调整接口用于触发显示驱动调整显示屏幕的刷新率。调度模块用于根据目标帧率确定调度策略,根据调度策略进行资源调度。比如,根据调度策略触发CPU驱动调度处理器资源。
作为一个示例,HAL包括硬件合成器(hardware composer,HWC),HWC用于合成从SurfaceFlinger接收的图层。另外,HWC还提供有刷新率调整接口,也即是,上述刷新率调整接口可以为HWC提供的刷新率调整接口。SurfaceFlinger可以通过调用HWC的刷新率调整接口来触发显示驱动调整显示屏幕的刷新率。
内核层是硬件和软件之间的层。内核层至少包含显示驱动、CPU驱动和GPU驱动,还可以包括音频驱动和传感器驱动等。
需要说明的是,本申请实施例仅以Android系统举例来说明,在其他操作系统中(例如安卓系统,IOS系统等),只要各个功能模块实现的功能和本申请的实施例类似也能实现本申请的方案。
下面结合游戏场景,示例性说明终端100的软件以及硬件的工作流程。
请参考图5,图5是本申请实施例提供的一种终端100在游戏应用运行的过程中监听设备状态信息以及根据监听的设备状态信息对游戏应用的帧率进行平滑的工作流程示意图。如图5所示,本地服务层的帧率平滑模块包括配置解析模块、系统状态识别模块、数据监听模块、场景识别模块、帧率计算模块和帧率调整模块。
其中,配置解析模块用于进行白名单校验,即识别应用是否在白名单内,若在白名单内则校验通过,若不在白名单内则校验失败。
系统状态识别模块用于识别终端100的系统状态。识别出系统状态后,还可以判断识别出的系统状态是否满足要求。比如,若满足,则触发数据监听模块进行数据监听;若不满足,则不触发数据监听模块进行数据监听。
场景识别模块用于识别应用程序运行的场景是否满足帧率平滑条件,比如应用程序运行时的设备状态和/或应用运行状态是否满足帧率平滑条件。
帧率计算模块用于在设备状态和/或应用程度的流畅度满足帧率平滑条件的情况下,根据设备状态和/或应用运行状态计算应用程序的目标帧率。帧率调整模块用于根据帧率调整模块计算的目标帧率触发帧率平滑,比如触发上述3个方面的帧率管控。
当触摸传感器180K接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别原始输入事件所对应的控件。以该触摸操作是单击操作,该单击操作所对应的控件为游戏应用图标的控件为例,游戏应用调用应用程序框架层的接口,启动游戏应用。
游戏应用启动后,帧率平滑模块中的配置解析模块检测到游戏应用启动,识别游戏应用是否在白名单内,若游戏应用在白名单内,则触发系统状态识别模块识别当前系统状态。以当前系统状态为启动后在前台运行为例,系统状态识别模块确定当前系统状态满足要求,然后触发数据监听模块通过温度获取模块获取设备温度,通过负载获取模块获取设备负载,以及通过SurfaceFlinger获取游戏应用的流畅度信息,将获取的数据发送给场景识别模块。场景识别模块根据获取的数据判断游戏应用是否满足帧率平滑条件,以当前设备温度超过基准温度,且温升速度大于阈值为例,场景识别模块确定游戏应用满足帧率平滑条件,然后触发帧率计算模块根据当前设备温度、温度变化值和当前帧率计算目标帧率,将目标帧率发送给帧率调整模块。对于帧率调整模块来说,第一方面,其根据目标帧率调用视图系统,通过视图系统在应用侧调整游戏应用的帧率;第二方面,其根据目标帧率调用SurfaceFlinger,通过SurfaceFlinger调用HAL的刷新率调整接口,通过刷新率调整接口控制显示驱动调整显示屏幕的刷新率;第三方面,其根据目标帧率调用HAL的调度模块,通过调度模块控制CPU驱动为游戏应用重新调度处理器资源。其中,温升速度也称温升斜率。
下面以视频显示应用为游戏应用、终端为手机为例,结合图6和图7,对在实现本申请实施例提供的应用帧率平滑方法的过程中图5所示的终端中部分模块的交互过程进行说明。
本申请实施例中,帧率平滑方案包括两个部分:第一部分是先确定对游戏应用进行帧率调整的目标帧率,第二部分是根据目标帧率进行帧率管控。接下来,先对确定对游戏应用进行帧率调整的目标帧率的过程进行详细描述。
图6是本申请实施例提供的一种通过帧率平滑模块确定对游戏应用进行帧率调整的目标帧率的流程示意图,如图6所示,该流程包括如下步骤:
步骤601:用户执行第一操作。
其中,第一操作用于启动游戏应用。比如,第一操作为用户点击游戏应用的图标的操作。
步骤602:响应于第一操作,游戏应用启动。
游戏应用在启动后一般运行在前台。本申请实施例中,为了保证视频画面的流程性,以及提高帧率调整的稳定性,可以在游戏应用启动后,通过如下步骤对游戏应用进行帧率平滑。
步骤603:游戏应用向帧率平滑模块中的配置解析模块发送游戏应用的启动通知。
其中,游戏应用的启动通知用于指示游戏应用启动。游戏应用的启动通知可以携带游戏应用的应用标识,应用标识可以为应用名称或应用编号等。
步骤604:配置解析模块在接收到游戏应用的启动通知后,对游戏应用进行白名单校验。
配置解析模块可以根据接收的启动通知,检测到游戏应用启动。在检测到游戏应用启动后,先对游戏应用进行白名单校验。
需要说明的是,本申请实施例仅是以游戏应用启动后向配置解析模块发送启动通知,配置解析模块根据接收的启动通知,检测到游戏应用启动为例进行举例说明,应理解,配置解析模块也可以通过其他方式检测游戏应用是否启动,比如通过相关接口获取游戏应用的应用状态,根据获取的应用状态检测游戏应用是否启动。
本申请实施例中,可以通过预设白名单对游戏应用进行白名单校验。根据预设白名单内容的不同,对游戏应用进行白名单校验的操作可以包括以下两种实现方式:
第一种实现方式:预设白名单包括至少一个应用类型。判游戏应用是否属于该至少一个应用类型中的任一应用类型,若属于,则确定校验通过,若不属于,则确定校验失败。
比如,预设白名单包括以下应用类型中的一种或多种:游戏类应用、视频播放类应用和视频通话类应用。当然,预设白名单也可以包括其他应用类型,预设白名单内的应用类型可以根据需要进行配置,本申请实施例对此不做限定。
也即是,应用类型位于预设白名单内的应用被允许执行本申请实施例提出的执行帧率平滑方案,而应用类型未位于预设白名单的应用则不被允许执行帧率平滑方案。
如此,可以实现针对特定类型的应用执行帧率平滑方案,提高帧率平滑方案的个性化配置需求。
第二种实现方式:预设白名单包括至少一个应用的应用标识。判断预设白名单内是否存在该游戏应用的应用标识,若存在,则确定校验成功,若不存在,则确定校验失败。
其中,应用标识可以为应用名称或应用编号等,本申请实施例对此不做限定。
比如,预设白名单包括以下应用标识:一个或多个游戏应用的应用标识、一个或多个视频播放应用的应用标识、以及一个或多个视频通话应用的应用标识。当然,预设白名单也可以包括其他应用标识,预设白名单内的应用标识可以根据需要进行配置,本申请实施例对此不做限定。
也即是,应用标识位于预设白名单内的应用被允许执行本申请实施例提出的执行帧率平滑方案,而应用标识未位于预设白名单的应用则不被允许执行帧率平滑方案。
如此,可以实现针对特定应用执行帧率平滑方案,提高帧率平滑方案的个性化配置需求。
需要说明的是,本申请实施例仅是以游戏应用在启动后向配置解析模块发送启动通知,配置解析模块根据启动通知检测到游戏应用启动为例进行举例说明,应理解,配置解析模块还可以通过其他方式检测应用启动,比如通过调用相关接口监听各个应用的运行状态,根据监听到的运行状态检测应用启动。
步骤605:若游戏应用校验成功,则配置解析模块向系统状态识别模块发送校验成功通知。
其中,校验成功通知可以携带游戏应用的应用标识。
另外,若游戏应用校验失败,则不执行帧率平滑方案,即不执行下述步骤。
需要说明的是,上述步骤603-605为可选步骤,本申请实施例仅是以在游戏应用启动后,先通过配置解析模块对游戏应用进行白名单校验,若校验成功,则执行帧率平滑方案为例进行举例说明,而在其他实施例中,还可以不对应用进行白名单校验,直接执行下述步骤,或者在应用满足其他条件时执行下述步骤,本申请实施例对此不做限定。
步骤606:系统状态识别模块识别系统状态,判断系统状态是否满足第一预设条件。
系统状态识别模块可以在接收到校验成功通知后,识别系统状态,并判断系统状态是否满足第一预设条件。
其中,系统状态用于指示游戏应用的运行场景,可以包括设备状态和游戏应用的运行状态中的一种或多种。比如,系统状态可以包括以下状态中的一种或多种:亮灭屏状态、电量模式、屏幕折叠展开状态、是否处于多窗场景、是否处于下拉通知栏状态、是否处于来电状态、是否处于录屏场景、是否处于插帧场景、游戏应用的前后台运行状态、以及游戏应用的运行模式等。当然,系统状态还可以包括其他状态,本申请实施例对此不做限定。
其中,亮灭屏状态可以包括亮屏状态、灭屏状态、从亮屏状态切换为灭屏状态、以及从灭屏状态切换为亮屏状态等。手机可以预先配置多种电量模式,不同电量模式的功耗不同,比如多种电量模式包括普通电量模式和低电量模式,当手机运行在低电量模式时,手机以低功耗运行。在手机的显示屏幕为可折叠屏幕的情况下,屏幕折叠展开状态可以包括折叠状态、展开状态、从折叠状态切换为展开状态、以及从展开状态切换为折叠状态等。多窗场景是指手机显示多个显示窗口的场景,系统状态识别模块可以识别手机当前是否处于多窗场景。下拉通知栏状态是指手机响应于下拉操作显示下拉通知栏的状态。插帧场景是指游戏应用通过插帧方式生成视频画面的场景。前后台运行状态包括前台运行状态、后台运行状态、从前台运行状态切换至后台运行状态、以及从后台运行状态切换至前台运行状态。游戏应用可以预先配置多个运行模式,不同运行模式的运行性能不同,系统状态识别模块可以识别游戏应用运行在哪个运行模式,或者,是否切换了运行模式。
其中,第一预设条件是指令帧率平滑方案生效的系统状态条件,相当于系统状态白名单。也即是,若系统状态满足第一预设条件,则确定帧率平滑方案生效,可以执行后续步骤,若不满足,则确定帧率平滑方案失效,不执行后续步骤。
示例地,第一预设条件可以包括如下系统状态条件中的一种或多种:处于亮屏状态,手机的显示屏幕为可折叠屏且处于展开态,游戏应用在前台运行,处于多窗场景,处于下拉通知栏状态,处于来电场景,处于录屏场景,不处于低电量模式,不处于插帧场景等。
比如,若游戏应用在启动后运行在前台,且手机未处于低电量模式和插帧场景,则确定系统状态满足第一预设条件。或者,若游戏应用从后台运行状态切换至前台运行状态,且手机未处于低电量模式和插帧场景,则确定系统状态满足第一预设条件。
步骤607:若系统状态满足第一预设条件,则系统状态识别模块向配置解析模块发送第一通知。
其中,第一通知用于指示帧率平滑方案生效,后续可以启动针对游戏应用的帧率平滑方案。
另外,若系统状态不满足第一预设条件,系统状态识别模块还可以向配置解析模块发送第二通知,第二通知用于指示帧率平滑方案失效,后续不启动针对游戏应用的帧率平滑方案。
另外,考虑到第一预设条件中的条件可能较多,判断是否满足第一预设条件的筛查过程计算量较大,耗时较长,因此为了降低计算量,还可以预先配置第二预设条件,第二预设条件是指令帧率平滑方案失效的系统状态条件,相当于系统状态黑名单。
示例地,第二预设条件可以包括如下系统状态条件中的一种或多种:处于低电量模式,处于插帧插件。当然,第二预设条件也可以包括其他系统状态条件,本申请实施例对此不做限定。
系统状态识别模块识别出系统状态后,先判断系统状态是否满足第二预设条件。若满足,则确定帧率平滑方案失效,不执行后续步骤;若不满足,再继续判断系统状态是否满足第一预设条件。若满足,则确定帧率平滑方案生效,可以执行后续步骤;若不满足,则确定帧率平滑方案失效,不执行后续步骤。
另外,若确定帧率平滑方案失效,还可以向配置解析模块发送第二通知。
需要说明的是,本申请实施例仅是以在预先配置有第一预设条件和第二预设条件的情况下,系统状态识别模块在识别出系统状态后,先判断系统状态条是否满足第一预设条件,再判断是否满足第二预设条件为例进行说明,应理解,在预先配置有第一预设条件和第二预设条件的情况下,断系统状态条是否满足第一预设条件和判断是否满足第二预设条件的操作也可以同时执行,本申请实施例对此不做限定。
步骤608:配置解析模块接收到第一通知后,对各个模块进行初始化。
在对各个模块进行初始化的过程中,可以向各个模块下发初始化参数。
比如,向帧率计算模块下发帧率调整策略和游戏应用的初始化帧率等初始化参数。其中,游戏应用的初始化帧率可以为游戏应用的原始帧率,游戏应用的原始帧率是指未进行帧率调整前的配置帧率。
步骤609:配置解析模块向数据监听模块发送监听指令。
其中,监听指令用于指示数据监听模块启动数据监听功能,开始监听数据,比如开始监听设备温度、设备负载和游戏应用的流畅度信息等数据。
作为一个示例,配置解析模块可以在对各个模块初始化成功后,向数据监听模块发送监听指令。
步骤609:数据监听模块接收到监听指令后,监听设备温度、设备负载和游戏应用的流畅度信息。
数据监听模块可以监听设备温度、设备负载和游戏应用的流畅度信息中的一种或多种,当然也可以监听其他设备状态信息和其他应用运行状态信息,本申请实施例对此不做限定。
需要说明的是,本申请实施例仅是以数据监听模块监听设备温度、设备负载和游戏应用的流畅度信息这3种数据为例进行说明。
另外,数据监听模块可以实时监听数据,也可以周期性监听数据,本申请实施例对此不做限定。比如,数据监听模块可以周期性地监听设备温度,监听周期可以根据需要进行配置。
作为一个示例,数据监听模块可以通过温度模块监听设备温度。例如,数据监听模块可以调用温度模块的温度获取接口,通过温度获取接口获取温度模块检测到的设备温度。
其中,温度模块用于检测设备温度。设备温度可以包括壳体温度、电池温度和系统温度中的一种或多种,或者对壳体温度、电池温度和系统温度中的一种或多种进行融合处理得到。其中,壳体温度可以包括后壳温度和前壳温度中的一种或多种。
比如,数据监听模块可以通过温度模块监听壳体温度、电池温度和系统温度中的一种或多种,将监听到的温度数据作为设备温度。
再比如,数据监听模块可以通过温度模块监听壳体温度、电池温度和系统温度中的一种或多种,然后对监听到的温度数据融合处理,得到设备温度。比如,对监听到的壳体温度、电池温度和系统温度中的一种或多种进行加权处理,得到设备温度。
作为一个示例,数据监听模块可以通过负载模块监听设备负载。例如,数据监听模块可以调用负载模块的负载获取接口,通过负载获取接口获取负载模块获取设备负载。
其中,负载模块用于检测设备负载。比如,负载模块可以为SurfaceFlinger等。设备负载可以包括GPU负载和CPU负载中的一种或多种。
作为一个示例,数据监听模块可以通过SurfaceFlinger监听游戏应用的流畅度信息。例如,数据监听模块可以调用SurfaceFlinger的流畅度获取接口,通过流畅度获取接口获取SurfaceFlinge获取的游戏应用的流畅度信息。其中,游戏应用的流畅度信息用于评估游戏应用的游戏画面的流畅度。示例地,游戏应用的流畅度信息可以包括平均帧率、帧率方差、掉帧卡顿比率和降帧次数等中的一种或多种。
作为另一个示例,数据监听模块还可以通过SurfaceFlinger监听游戏应用的流畅度,流畅度是由SurfaceFlinger根据流畅度信息确定得到。比如,SurfaceFlinger可以获取游戏应用的流畅度信息,根据游戏应用的流畅度信息计算游戏应用的流畅度。数据监听模块可以调用SurfaceFlinger的流畅度获取接口获取SurfaceFlinger计算的流畅度。
步骤611:数据监听模块向场景识别模块发送监听数据。
本申请实施例中,监听数据包括设备温度、设备负载和游戏应用的流畅度信息。
步骤612:场景识别模块若确定当前设备温度大于第一基准温度,且温升速度大于第一阈值,则确定游戏应用的运行场景满足帧率平滑条件。
其中,场景识别模块用于根据监听数据识别游戏应用的运行场景是否满足帧率平滑条件。
本申请实施例中,场景识别模块可以根据数据监听模块发送的监听数据,判断游戏应用的运行场景是否满足帧率平滑条件,以便在合适的时机对游戏应用进行帧率调整。
比如,帧率平滑条件可以包括以下条件:当前设备温度大于第一基准温度,且温升速度大于第一阈值;当前设备温度小于第二基准温度,且温降速度大于第二阈值。
其中,设备温度可以包括壳体温度、电池温度和系统温度中的一种或多种,或者对壳体温度、电池温度和系统温度中的一种或多种进行融合处理得到。
其中,当前设备温度为当前温度获取周期获取的温度,温升速度为当前设备温度与上一个温度获取周期获取的设备温度之间的温度上升速度,温降速度为当前设备温度与上一个温度获取周期获取的设备温度之间的温度下降速度。
其中,第一基准温度和第二基准温度可以预先根据需要进行设置。示例地,第一基准温度大于第二基准温度,比如第一基准温度为20°,第二基准温度为40°。
其中,第一阈值和第二阈值可以预先根据需要进行设置。第一阈值和第二阈值可以相同,也可以不同,本申请实施例对此不做限定。
作为一个示例,根据数据监听模块发送的监听数据,判断游戏应用的运行场景是否满足帧率平滑条件包括以下几种情况:
第一种情况:在温度上升的情况下,若当前设备温度大于第一基准温度,且温升速度大于第一阈值,则确定游戏应用的运行场景满足帧率平滑条件,比如满足帧率下降条件。
进一步地,还可以在确定当前设备温度大于第一基准温度且小于第二基准温度,以及温升速度大于第一阈值的情况下,确定游戏应用的运行场景满足帧率平滑条件,比如满足帧率下降条件。
如此,若满足第一种情况,则确定温度较高且温升过快,此时可以确定满足帧率下降条件,以触发后续执行降帧策略,通过执行降帧策略降低设备功耗进而降低设备温度。
第二种情况:在温度下降的情况下,若当前设备温度小于第二基准温度,且温降速度大于第二阈值,则确定游戏应用的运行场景满足帧率平滑条件,比如满足帧率提高条件。
进一步地,还可以在确定当前设备温度大于第一基准温度且小于第二基准温度,以及温降速度大于第二阈值的情况下,确定游戏应用的运行场景满足帧率平滑条件。
另外,为了统一描述,温降速度也可以用温升速度来表示,比如当温升速度为负值时表示温度下降,此时温升速度的绝对值为温降速度。因此,上述第一种情况也可以替换为:若当前设备温度超过第一基准温度,以及温升速度为正值且大于或等于第一阈值,则确定游戏应用的运行场景满足帧率平滑条件,比如满足帧率下降条件。上述第二种情况也可以替换为:若当前设备温度小于第二基准温度,以及温升速度为负值且温升速度的绝对值大于第二阈值,则确定游戏应用的运行场景满足帧率平滑条件,比如满足帧率提高条件。
进一步地,上述第一种情况也可以替换为:若当前设备温度大于第一基准温度且小于第二基准温度,以及温升速度为正值且大于或等于第一阈值,则确定游戏应用的运行场景满足帧率平滑条件,比如满足帧率下降条件。上述第二种情况也可以替换为:若当前设备温度大于第一基准温度且小于第二基准温度,以及温升速度为负值且温升速度的绝对值大于第二阈值,则确定游戏应用的运行场景满足帧率平滑条件,比如满足帧率提高条件。
如此,若满足第二种情况,则确定温度较低且温度下降过快,此时可以确定满足帧率提高条件,以触发后续执行提帧策略,通过执行提帧策略提高应用性能和用户体验。
在一种实施例中,场景识别模块可以先识别当前设备温度是否满足预警温度,比如当前设备温度是否大于第一基准温度和/或是否小于第二基准温度。若是,则计算温升速度或温降速度,判断温升速度或温降速度是否满足对应的阈值。
第三种情况:若流畅度信息不满足流畅度要求,且设备负载大于第一负载阈值,则确定游戏应用的运行场景满足帧率平滑条件,比如满足帧率下降条件。
如此,在游戏应用不满足流畅度指标的情况下,如果设备负载过高,则可以确定满足帧率下降条件,以触发后续执行降帧策略,通过执行降帧策略降低游戏应用的功耗和设备负载,保障设备性能。
第四种情况:若流畅度信息满足流畅度要求,且设备负载小于第二负载阈值,则确定游戏应用的运行场景满足帧率平滑条件,比如满足帧率提高条件。
如此,在游戏应用满足流畅度指标的情况下,如果设备负载不高,则可以确定满足帧率提高条件,以触发后续执行提帧策略,在不影响设备性能的前提下,通过执行提帧策略提高应用性能和用户体验。
其中,流畅度信息是指用于评估视频画面的流畅度的相关信息,比如可以包括如下信息中的一种或多种:平均帧率、帧率方差、掉帧卡顿比率和降帧次数等。设备负载可以包括CPU负载和GPU负载中的一种或多种,或者对CPU负载和GPU负载进行融合计算后得到。
其中,第一负载阈值和第二负载阈值可以预先根据需要进行设置,本申请实施例对此不做限定。示例地,第一负载阈值大于或等于第二负载阈值。比如,第一负载阈值为80%,第二负载阈值为50%等。
需要说明的是,本申请实施例仅是以当前设备温度大于或等于第一基准温度,且温升速度大于第一阈值为例进行举例说明,应理解,在其他运行场景下也可以确定游戏应用的运行场景满足帧率平滑条件,本申请实施例对此不做限定。
作为一个示例,本申请实施例中计算温升速度的过程可以包括:获取通过温度模块采集的设备温度数据,对采集的设备温度数据进行平滑处理,根据平滑处理后的设备温度数据,计算设备温度的温升速度。比如,平滑处理算法可以包括最小二乘法等,本申请实施例对平滑处理算法不做限定。
通过对设备温度数据进行平滑处理,可以有效地去除设备温度数据中的噪音数据,尤其是设备温度数据中存在的异常值或比较突兀的尖峰数据等,从而提高设备温度数据的有效性,进而提高计算温升速度的准确性。
比如,通过温度模块采集的设备温度数据容易出现对应的数据点不连续,对应的设备温度曲线通常锯齿严重等问题,这将导致根据这种设备温度数据计算的温度变化率抖动剧烈。本申请实施例通过对采集的设备温度数据进行平滑处理,可以使得平滑处理后的设备温度数据对应的设备温度曲线的锯齿明显减少,曲线连续平滑,且曲线上的各数据点与真实值差异不大,提高了数据有效性,根据平滑处理后的设备温度数据计算的温度变化率抖动也明显较少,计算的温度变化率更加合理,从而提高了计算温升速度的准确性。
步骤613:场景识别模式在确定游戏应用满足帧率平滑条件后,向帧率计算模块发送帧率计算指令。
其中,帧率计算指令用于指示帧率计算模块计算目标帧率。
进一步地,帧率计算指令携带当前设备温度、温升信息和游戏应用的当前帧率,用于指示帧率计算模块根据前设备温度、温升信息和游戏应用的当前帧率计算目标帧率。
步骤614:帧率计算模块在接收到帧率计算指令后,根据当前设备温度、温升信息和游戏应用的当前帧率,计算目标帧率。
其中,目标帧率是指游戏应用的帧率调整目标。在游戏应用的帧率未曾调整过的情况下,游戏应用的当前帧率为游戏应用的初始化帧率,初始化帧率为游戏应用的原始帧率;在游戏应用的帧率已调整过的情况下,游戏应用的当前帧率为游戏应用最近一次调整的目标帧率。
其中,温升信息可以为当前设备温度与上一个温度获取周期获取的设备温度之间的温度变化值,当然也可以包括其他温升信息,比如温升速度或温降速度等,本申请实施例对此不做限定。
本申请实施例中,可以根据当前设备温度、温升信息和游戏应用的当前帧率,通过帧率调整策略计算目标帧率。
另外,若游戏应用的运行场景满足上述第二种情况,即在设备温度下降的情况下满足帧率下降条件,帧率计算模块还可以根据当前设备温度、温降信息和游戏应用的当前帧率,通过帧率调整策略计算目标帧率。
另外,温升信息和温降信息还可以统一用温升信息来表述,比如,当温升信息为正值时表示温度上升,当温升信息为负值时表示温度下降。
示例地,温升信息可以为温度改变值,温度变化值是指当前设备温度与上一个温度获取周期获取的设备温度之间的差值。温度变化值为正,表示温度升高;温度变化值为负,表示温度降低。
作为一个示例,可以根据当前设备温度和温度变化值,确定帧率改变值;根据游戏应用的当前帧率和帧率改变值,确定目标帧率。
其中,温度变化值越大,帧率改变值越大。示例地,温度变化值为正时帧率改变值为正,温度变化值为负时帧率改变值为负,温度变化值越大,帧率改变值的绝对值越大。
作为一个示例,根据当前设备温度和温度变化值,确定帧率改变值包括如下步骤:
1)根据温度变化值,确定第一帧率改变值。
其中,第一帧率改变值是由温升速度贡献的帧率改变值。
示例地,可以根据温度变化值,通过如下公式(1)确定第一帧率改变值:
其中,为第一帧率改变值,/>为温度变化值,/>为第一常数,a为第二常数。
其中,和a可以预先根据需要进行设置。/>用于指示由温升速度贡献的帧率改变值的权重;a用于指示温度变化值的误差值,比如a=0.1。
应理解,也可以根据温度变化值,采用其他算法确定第一帧率改变值,本申请实施例对此不做限定。2)根据当前设备温度,确定第二帧率改变值。
其中,第二帧率改变值是由当前设备温度贡献的帧率改变值。
示例地,可以根据当前设备温度,通过如下公式(2)确定所述第二帧率改变值:
其中,为第二帧率改变值,/>为标准化温度,标准化温度是根据当前设备温度和中间温度确定得到,中间温度是令/>为0的标准化温度的值,/>为第三常数。/>
其中,可以预先根据需要进行设置。/>用于指示当前设备温度贡献的帧率改变值的权重。
应理解,也可以根据当前设备温度,采用其他算法确定第二帧率改变值,本申请实施例对此不做限定。
3)根据第一帧率改变和第二帧率改变值,确定帧率改变值。
示例地,可以根据第一帧率改变和第二帧率改变值,通过如下公式(3)确定帧率改变值:
其中,为帧率改变值,/>为第一帧率改变值,/>为第二帧率改变值,k为第四常数,/>为第五常数,normalFps为预先设置的帧率变化的最小单位。
其中,k和可以预先根据需要进行设置。k和/>分别用于指示第一帧率改变值和第二帧率改变值的权重。
进一地,可以在当前设备温度大于第一基准温度且小于第二基准温度的情况下,通过上述公式(3)计算帧率改变值。另外,在当前设备温度小于或等于第一基准温度的情况下,确定帧率改变值为0,在当前设备温度大于或等于第二基准温度的情况下,确定帧率改变值为预设帧率下降值,比如为预设最大帧率下降值。
比如,可以通过如下公式(4)确定帧率改变值:
其中,curTemp为当前设备温度;minTemp为第一基准温度,即帧率平滑方案生效的最低温度;maxTemp为第二基准温度,即帧率平滑方案生效的最高温度。maxDownFps为预设最大帧率下降值。others是指
通过根据上述公式计算帧率改变值,引入了自适应温度-帧率决策模型,是的帧率的决策符合温度变化趋势。
应理解,也可以根据第一帧率改变和第二帧率改变值,采用其他算法确定帧率改变值,本申请实施例对此不做限定。
在确定帧率改变值后,可以根据游戏应用的当前帧率和帧率改变值,确定目标帧率。作为一个示例,根据游戏应用的当前帧率和帧率改变值,确定目标帧率可以包括以下两种实现方式:
第一种实现方式:若游戏应用的运行场景满足帧率下降条件,则将游戏应用的当前帧率与帧率改变值的差值作为目标帧率;若游戏应用的运行场景满足帧率提高条件,则将游戏应用的当前帧率与帧率改变值之和作为目标帧率。
比如,若游戏应用的运行场景满足帧率下降条件,游戏应用的当前帧率为90fps,帧率改变值为10fps,则目标帧率为80fps。再比如,若游戏应用的运行场景满足帧率提高条件,游戏应用的当前帧率为90fps,帧率改变值为10fps,则目标帧率为100fps。
第二种实现方式:帧率改变值具有正负值,将游戏应用的当前帧率与帧率改变值之和作为目标帧率。
其中,帧率改变值正值时,表示帧率需要提高,目标帧率大于当前帧率;帧率改变值为负值时,表示帧率需要降低,目标帧率小于当前帧率。
本申请实施例中,帧率改变值与帧率变化值呈正比,即与温升速度或温降速度呈正比。如此,温升速度越快,帧率降低的越快,温降速度越快,帧率提升的越快,从而可以根据温升速度或温降速度灵活地调整应用帧率,提高帧率平滑效果。
在另一个实施例中,若游戏应用的运行场景满足上述第三种情况和第四种情况时,还可以根据流畅度信息、设备负载的变化情况和游戏应用的当前帧率,确定目标帧率。
比如,可以根据流畅度信息、设备负载的变化情况和游戏应用的当前帧率,采用帧率调整策略确定目标帧率。其中,帧率调整策略可以预先设置,本申请实施例对此不做限定。
需要说明的是,当游戏应用的运行场景满足上述第三种情况时,满足帧率下降条件,确定的目标帧率小于游戏应用的当前帧率。当游戏应用的运行场景满足上述第四种情况时,满足帧率升高条件,确定的目标帧率大于游戏应用的当前帧率。
本申请实施例中,可以根据游戏流畅度和设备负载,对游戏帧率进行调整,使得游戏帧率在合理的功耗下满足性能要求。
步骤615:帧率计算模块向帧率调整模块发送目标帧率。
帧率调整模块接收到目标帧率后,可以根据目标帧率分别调整游戏应用的帧率、调整显示屏幕的刷新率、以及为游戏应用进行资源调度。
接下来,对根据目标帧率进行帧率调整的过程进行详细描述。
请参考图7,图7是本申请实施例提供的一种根据目标帧率通过帧率平滑模块进行帧率平滑的流程示意图,如图7所示,该流程包括如下步骤:
步骤616:帧率调整模块向应用框架层的视图系统发送携带目标帧率的帧率调整指令。
作为一个示例,视图系统提供有帧率调整接口,帧率调整模块调用视图系统的帧率调整接口,通过帧率调整接口向视图系统发送帧率调整指令。
步骤617:视图系统根据帧率调整指令,将游戏应用的帧率调整为目标帧率。
作为一个示例,视图系统可以根据目标帧率,通过调整游戏应用的图像渲染结果对应的前台缓冲和后台缓冲进行交换的等待时长,将游戏应用的帧率调整为目标帧率。
视图系统在对游戏应用的游戏画面进行绘制时,游戏应用的图像渲染结果对应有前台缓冲和后台缓冲,后台缓冲用来存储图像渲染结果,前台缓冲用于存储渲染完成后待送显的图像数据。在对游戏应用的游戏画面进行绘制时,实际上是对后台缓冲中的内容进行渲染,渲染完成后,将后台缓冲和前台缓冲进行交换。将后台缓冲和前台缓冲进行交换是指将后台缓冲中的内容(渲染结果)复制到前台缓冲中,再将前台缓冲中的内容进行送显,从而在显示器中显示绘制的游戏画面。
本申请实施例中,可以通过调整前台缓冲和后台缓冲进行交换的等待时长,来控制游戏应用的单个图像帧从渲染到显示的时长,进而控制游戏应用的帧率。前后台缓冲进行交换的等待时长越长,则对应的帧率越大;前后台缓冲进行交换的等待时长越短,则对应的帧率越小。
在一个实施例中,视图系统可以调用eglSwapBuffers函数,通过eglswapbuffer函数调整游戏应用的图像渲染结果对应的前台缓冲和后台缓冲进行交换的等待时长,通过调整前后台缓冲进行交换的等待时长,将游戏应用的帧率调整为目标帧率。其中,eglSwapBuffers函数是嵌入式图形库(embedded graphic library,EGL)中的一个函数,用于交换前后台缓冲。
应理解,视图系统也可以通过其他方式调整游戏应用的图像渲染结果对应的前台缓冲和后台缓冲进行交换的等待时长,本申请实施例对此不做限定。
还应理解,本申请实施例仅是以视图系统通过调整游戏应用的图像渲染结果对应的前台缓冲和后台缓冲进行交换的等待时长,将游戏应用的帧率调整为目标帧率为例进行举例说明,而在其他实施例中,视图系统也可以通过其他方式将游戏应用的帧率调整为目标帧率,本申请实施例对此不做限定。
步骤618:视图系统在将游戏应用的帧率调整为目标帧率后,向帧率调整模块发送帧率调整完成通知。
帧率调整模块向视图系统发送帧率调整指令后,比如在接收到视图系统发送的帧率调整完成通知后,还可以对游戏应用的当前帧率进行更新,即将存储的游戏应用的当前帧率更新为目标帧率。
在一种可能的实现方式中,帧率调整模块在向视图系统发送帧率调整指令后,比如在接收到视图系统发送的帧率调整完成通知后,还可以向帧率计算模块发送更新指令,以便帧率计算模块根据目标帧率对游戏应用的当前帧率进行更新。或者,帧率计算模块也可以在计算出目标帧率后,或者向帧率调整模块发送携带目标帧率的帧率调整指令,根据目标帧率对游戏应用的当前帧率进行更新。本申请实施例对帧率计算模块更新游戏应用的当前帧率的时机不做限定。
步骤619:帧率调整模块向表面投递者发送携带目标帧率的刷新率调整指令。
步骤620:表面投递者根据目标帧率和显示屏幕的刷新率档位,确定目标刷新率。
显示屏幕可以支持多个刷新率档位,不同的刷新率档位对应不同的刷新率。比如,显示屏幕支持1/10/30/40/60/90/120等挡位的刷新率。
表面投递者可以从显示屏幕支持的多个刷新率档位中确定与目标帧率匹配的刷新率档位,将与目标帧率匹配的刷新率档位对应的刷新率确定为目标刷新率。
其中,与目标帧率匹配的刷新率档位可以是多个刷新率档位中与目标帧率的值最接近的刷新率档位,或者是大于或等于目标帧率的值的刷新率档位中与目标帧率的值最接近的刷新率档位,或者是小于或等于目标帧率的值的刷新率档位中与目标帧率的值最接近的刷新率档位,本申请实施例对此不做限定。
作为一个示例,与目标帧率匹配的刷新率档位是大于或等于目标帧率的值的刷新率档位中与目标帧率的值最接近的刷新率档位,如此可以保证调整后的目标刷新率大于或等于目标帧率,使得游戏应用的每一帧画面均能够被显示屏幕刷新出来,进而保证游戏画面显示的完整性和流畅性。
作为一个示例,表面投递者可以调用HAL的刷新率调整接口,通过刷新率调整接口获取显示屏幕提供的多个刷新率档位。
需要说明的是,显示屏幕也可以支持刷新率的无极调整,比如,显示屏幕支持在预设刷新率范围内进行无极调整。在这种情况下,表面投递者还可以将目标帧率对应的数值确定为目标刷新率。比如,若目标帧率为100fps,则目标刷新率为100Hz。
在另一个实施例中,也可以由帧率调整模块根据目标帧率和显示屏幕的刷新率档位,确定目标刷新率,然后向表面投递者发送携带目标刷新率的刷新率调整指令,本申请实施例对此不做限定。
步骤621:表面投递者调用HAL的刷新率调整接口,向刷新率调整接口发送目标刷新率。
也即是,表面投递者可以根据目标刷新率,调用HAL的刷新率调整接口,以通过刷新率接口调整显示屏幕的刷新率。
作为一个示例,HAL包括HWC,刷新率调整接口可以为HWC的刷新率调整接口。
步骤622:刷新率调整接口向显示驱动发送携带目标刷新率的刷新率调整指令。
步骤623:显示驱动根据刷新率调整指令,将显示屏幕的刷新率调整为目标刷新率。
如此,可以根据游戏帧率和设备状态信息,动态选择显示屏幕的刷新率档位,使得显示屏幕的刷新率与游戏帧率和设备状态匹配,从而在合理的刷新率功耗下保证游戏流畅性。
步骤624:显示驱动在将显示屏幕的刷新率调整为目标刷新率后,向帧率调整模块发送刷新率调整完成通知。
步骤625:帧率调整模块向HAL的调度模块发送携带目标帧率的调度指令1。
步骤626:调度模块根据目标帧率,以及处理器架构包括的多个簇中各个簇的算力和功耗,确定调度策略。
调度模块接收到调度指令1后,可以根据目标帧率进行资源调度,比如根据目标帧率调度处理器资源。
比如,调度模块可以先根据目标帧率,以及处理器架构包括的多个簇中各个簇的算力和功耗,确定调度策略,然后根据调度策略调度处理器资料。
其中,调度策略可以包括:调频、选核、迁核和亲和性设置中的一种或多种。
作为一个示例,调度模块可以根据目标帧率确定单帧时长,根据单帧时长,以及处理器架构包括的多个簇中各个簇的算力和功耗,确定调度策略。
比如,根据单帧时长,以及处理器架构包括的多个簇中各个簇的算力和功耗,确定调度策略可以包括以下几种可能的实现方式:
第一种可能的实现方式:根据单帧时长,以及多个簇中各个簇的算力和功耗,对游戏应用的相关线程进行亲和性设置。
比如,根据单帧时长,以及多个簇中各个簇的算力和功耗,设置第一线程与第一簇的亲和性,第一簇为多个簇中的任一个。
其中,第一线程可以为游戏应用的任一线程,比如为游戏应用的重负载线程。重负载线程是指游戏应用的所有线程中负载相对较重的线程,比如可以将游戏应用的线程中运行时长满足预设条件的线程确定为重负载线程。其中,预设条件可以为运行时长大于预设时长等,当然也可以设置为其他条件,本申请实施例对此不做限定。示例地,重负载线程可以包括绘制线程和逻辑线程。
在一个实施例中,可以根据单帧时长,以及多个簇中各个簇的算力和功耗,设置游戏应用的绘制线程与第一簇的亲和性。示例地,第一簇可以为大核簇、中核簇或小核簇。
另外,在设置第一线程与第一簇的亲和性之后,还可以基于第一簇的频段为第一线程进行调频。
第二种实现方式:根据单帧时长,以及多个簇中各个簇的算力和功耗,对游戏应用的相关线程进行调频,或者进行迁核和调频。
比如,根据单帧时长,以及多个簇中各个簇的算力和功耗,基于第二簇的频段为第二线程进行调频,第二簇是指当前运行第二线程的处理器所属的簇。
示例地,第二簇的频段为600M-1.5G,则可以从600M-1.5G中选择一些频点分配给第二线程。比如,选取1G、1.2G、1.4G等频点分配给第二线程使用。
再比如,先根据单帧时长,以及多个簇中各个簇的算力和功耗,基于第二簇的频段为第二线程进行调频,第二簇是指当前运行第二线程的处理器所属的簇。之后,判断第二线程调频后的频点的算力和功耗是否满足单帧时长的性能要求。若第二线程调频后的频点的算力和功耗不满足单帧时长的性能要求,则结束确定调度策略的步骤。若第二线程调频后的频点的算力和功耗不满足单帧时长的性能要求,则先根据单帧时长,以及多个簇中各个簇的算力和功耗,将第二线程从第二簇迁移至第三簇运行,再基于第三簇的频段为第二线程进行调频。
其中,第三簇为多个簇中除第二簇之外的任一簇,比如为性能大于第二簇的一个簇。第二线程为游戏应用的任一线程,比如为游戏应用的重负载线程,如渲染线程或逻辑线程等。
也即是,对于游戏应用的某个线程,先为该线程进行调频,若调频后仍不满足线程的性能要求,则为该线程进行迁核,再基于迁核后的簇所在频段进行调频。比如,先调频,若调频仍不满足性能要求,再将线程从小核簇迁移至中核簇或大核簇,或者从中核簇迁移至大核簇,然后基于迁核后的簇所在频段进行调频。
第三种可能的实现方式:根据单帧时长,以及多个簇中各个簇的算力和功耗,从多个簇中选择第四簇,将第四簇分配给游戏应用的第三线程。
其中,第四簇可以为多个簇中的任一簇,第三线程可以为游戏应用的任一线程,比如为游戏应用的重负载线程,如渲染线程或逻辑线程等。
另外,在将第四簇分配给游戏应用的第三线程之后,还可以基于第四簇的频段为第三线程进行调频。
需要说明的是,调度模块可以根据单帧时长,以及多个簇中各个簇的算力和功耗,通过预设调度算法确定调度策略,比如通过预设调度算法为游戏应用的相关线程进行调频、选核、迁核或亲和性设置等。其中,预设调度算法可以预先根据需要进行设置,本申请实施例对此不做限定。
通过为游戏应用的相关线程进行亲和性设置,或者为游戏应用的相关线程进行调频,或先进行迁核再进行调频,或者为游戏应用的相关线程进行选核,可以使得游戏应用的相关线程可以在合理的处理器资源下运行,进而使得设备可以在合理的功耗下保证游戏应用的相关线程的运行性能。
步骤627:调度模块向CPU驱动发送携带调度策略的调度指令2。
步骤628:CPU驱动按照调度策略,对处理器资源进行调度。
比如,按照调度策略,为游戏应用的相关线程进行调频、选核、迁核或亲和性设置等。
步骤629:CPU驱动在对处理器资源调度完成后,向帧率调整模块发送调度完成通知。
需要说明的是,本申请实施例中,在帧率平滑模块确定对游戏应用进行帧率调整的目标帧率,根据目标帧率分别调整游戏应用的帧率、调整显示屏幕的刷新率、以及为游戏应用进行资源调度之后,帧率平滑模块还可以通过数据监听模块继续监听数据,根据监听数据确定是否需要对游戏应用的帧率进行调整,若需要,则根据监听数据执行下一轮的帧率调整方案,也即是根据监听数据确定下一个目标帧率,根据下一个目标帧率分别调整游戏应用的帧率、调整显示屏幕的刷新率、以及为游戏应用进行资源调度。
另外,在游戏应用运行过程中,系统状态识别模块还可以通过系统状态识别模块继续识别系统状态,若识别到手机的系统状态满足第三预设条件,还需要对帧率平滑方案进行重置。
其中,第三预设条件是指帧率平滑方案的重置条件,比如第三预设条件可以包括如下系统状态条件中的一种或多种:游戏应用从后台运行状态重新切换至前台运行状态;手机从灭屏重新切换至亮屏,并在亮屏状态下在前台运行游戏应用;游戏应用变更运行模式;手机为折叠屏手机,且手机从折叠态切换为展开态,并在展开态下在前台运行游戏应用。
其中,对帧率平滑方案进行重置是指帧率平滑模块重新进行初始化,在初始化后执行帧率平滑方案。通过重新进行初始化,可以重新初始化游戏应用的帧率,即将游戏应用的初始化帧率配置为原始帧率,如此,可以在游戏应用的原始帧率的基础上重新对游戏应用的帧率进行调整。
作为一个示例,帧率平滑方案的生效条件、失效条件和重置条件可以如下表1所示:
需要说明的是,本申请实施例仅是以上述表1中的系统状态与帧率平滑方案的执行规格之间的对应关系为例进行举例说明,应理解,系统状态与帧率平滑方案的执行规格之间的对应关系也可以为设置为其他对应关系,本申请实施例对此不做限定。
通过根据目标帧率为应用进行资源调度,可以使调度的资源与目标帧率匹配,进而使得设备可以在合理的资源和功耗下保证视频显示的性能。
因此,通过根据设备状态信息确定的目标帧率调整视频显示应用的帧率和显示屏幕的刷新率,以及为视频显示应用进行资源调度,可以在平衡设备状态、视频显示的性能和设备功耗的基础上进行帧率调整,使得帧率的调整更加平滑和稳定,降低帧率抖动概率,避免出现帧率陡降导致的卡顿问题,提高视频显示的稳定性,保障用户观看应用画面的流畅体验。
需要说明的是,本申请实施例中各步骤的序号并不够成对各步骤执行顺序的限定。比如,步骤616、步骤619和步骤625可以同时执行,也可以先后执行,本申请实施例对此不做限定。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,比如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(比如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(比如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(比如:软盘、硬盘、磁带)、光介质(比如:数字通用光盘(Digital Versatile Disc,DVD))或半导体介质(比如:固态硬盘(Solid State Disk,SSD))等。
以上所述为本申请提供的可选实施例,并不用以限制本申请,凡在本申请的揭露的技术范围之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (28)

1.一种应用帧率平滑方法,其特征在于,应用于电子设备,所述方法包括:
在第一应用运行的过程中,获取所述电子设备的设备状态信息,所述第一应用为视频显示应用,所述视频显示应用是用于显示视频画面的应用,所述设备状态信息包括设备温度、设备负载和所述第一应用的流畅度信息;
若根据获取的设备状态信息确定所述第一应用的运行场景满足帧率平滑条件,则根据获取的设备状态信息和所述第一应用的当前帧率,确定目标帧率;
根据所述目标帧率,调整所述第一应用的帧率;
根据所述目标帧率,调整显示屏幕的刷新率;
根据所述目标帧率,为所述第一应用进行资源调度;
其中,所述根据获取的设备状态信息和所述第一应用的当前帧率,确定目标帧率之前,还包括:
若所述第一应用的流畅度信息不满足流畅度要求且所述设备负载大于第一负载阈值,或者,若所述第一应用的流畅度信息满足流畅度要求且所述设备负载小于第二负载阈值,则确定所述第一应用的运行场景满足帧率平滑条件;
所述根据获取的设备状态信息和所述第一应用的当前帧率,确定目标帧率,包括:
根据所述流畅度信息、所述设备负载和所述第一应用的当前帧率,确定所述目标帧率。
2.如权利要求1所述的方法,其特征在于,所述根据所述目标帧率,调整所述第一应用的帧率,包括:
根据所述目标帧率,通过调整所述第一应用的图像渲染结果对应的前台缓冲和后台缓冲进行交换的等待时长,将所述第一应用的帧率调整为所述目标帧率。
3.如权利要求1所述的方法,其特征在于,所述根据所述目标帧率,调整显示屏幕的刷新率,包括:
根据目标帧率,确定目标刷新率,所述目标刷新率是根据所述目标帧率的数值确定的,或者是根据所述显示屏幕支持的多个刷新率档位中与所述目标帧率匹配的刷新率档位确定的;
将所述显示屏幕的刷新率调整为所述目标刷新率。
4.如权利要求1所述的方法,其特征在于,所述电子设备包括多核处理器,所述多核处理器被划分成多个簇,每个簇包括至少一个处理器;
所述根据所述目标帧率,为所述第一应用进行资源调度,包括:
根据所述目标帧率,确定单帧时长;
根据所述单帧时长,以及所述多个簇中各个簇的算力和功耗,为所述第一应用的相关线程调度处理器资源。
5.如权利要求4所述的方法,其特征在于,所述相关线程包括第一线程;
所述根据所述单帧时长,以及所述多个簇中各个簇的算力和功耗,为所述第一应用的相关线程调度处理器资源,包括:
根据所述单帧时长,以及所述多个簇中各个簇的算力和功耗,设置所述第一线程与第一簇的亲和性,所述第一簇为所述多个簇中的任一个,所述设置所述第一线程与第一簇的亲和性是指建立所述第一线程与所述第一簇之间的绑定关系,以使所述第一线程固定运行在所述第一簇中的处理器上。
6.如权利要求4所述的方法,其特征在于,所述相关线程包括第二线程;
所述根据所述单帧时长,以及所述多个簇中各个簇的算力和功耗,为所述第一应用的相关线程调度处理器资源,包括:
根据所述单帧时长,以及所述多个簇中各个簇的算力和功耗,基于第二簇的频段为所述第二线程进行调频,所述第二簇是指当前运行所述第二线程的处理器所属的簇,所述基于第二簇的频段为所述第二线程进行调频是指从所述第二簇所在的频段选择频点分配给所述第二线程。
7.如权利要求6所述的方法,其特征在于,所述基于第二簇的频段为所述第二线程进行调频之后,还包括:
若为所述第二线程调频后分配给所述第二线程的频点的算力和功耗不满足所述单帧时长的性能要求,则根据所述单帧时长,以及所述多个簇中各个簇的算力和功耗,将所述第二线程从所述第二簇迁移至第三簇运行,基于所述第三簇的频段为所述第二线程进行调频,所述第三簇为所述多个簇中除所述第二簇之外的任一簇。
8.如权利要求4所述的方法,其特征在于,所述相关线程为重负载线程,所述重负载线程是指所述第一应用的线程中运行时长满足预设条件的线程,所述重负载线程至少包括绘制线程和逻辑线程。
9.如权利要求1-8任一所述的方法,其特征在于,所述根据获取的设备状态信息和所述第一应用的当前帧率,确定目标帧率之前,还包括:
若所述电子设备的当前设备温度大于第一基准温度,和/或,所述当前设备温度小于第二基准温度,以及温度变化速度大于速度阈值,则确定所述第一应用的运行场景满足帧率平滑条件;
其中,所述第一基准温度小于所述第二基准温度,所述当前设备温度是指当前温度获取周期获取的设备温度,所述温度变化速度是指所述当前设备温度与上一个温度获取周期获取的设备温度之间的温度变化速度。
10.如权利要求9所述的方法,其特征在于,所述根据获取的设备状态信息和所述第一应用的当前帧率,确定目标帧率,包括:
根据所述电子设备的当前设备温度和温度变化值,确定帧率改变值,所述温度变化值是指所述当前设备温度与上一个温度获取周期获取的设备温度之间的温度变化值,所述温度变化值越大,所述帧率改变值越大;
根据所述第一应用的当前帧率和所述帧率改变值,确定所述目标帧率。
11.如权利要求10所述的方法,其特征在于,所述根据所述电子设备的当前设备温度和温度变化值,确定帧率改变值,包括:
根据所述温度变化值,确定第一帧率改变值;
根据所述当前设备温度,确定第二帧率改变值;
根据所述第一帧率改变和所述第二帧率改变值,确定所述帧率改变值。
12.根据权利要求11所述的方法,其特征在于,所述根据所述温度变化值,确定第一帧率改变值,包括:
根据所述温度变化值,通过如下公式确定所述第一帧率改变值:
其中,所述为所述第一帧率改变值,所述/>为所述温度变化值,所述为第一常数,所述a为第二常数。
13.根据权利要求11所述的方法,其特征在于,所述根据所述当前设备温度,确定第二帧率改变值,包括:
根据所述当前设备温度,通过如下公式确定所述第二帧率改变值:
其中,所述为所述第二帧率改变值,所述/>为标准化温度,所述标准化温度是根据所述当前设备温度和中间温度确定得到,所述中间温度是令/>为0的标准化温度的值,所述/>为第三常数。
14.根据权利要求11所述的方法,其特征在于,所述根据所述第一帧率改变和所述第二帧率改变值,确定所述帧率改变值,包括:
根据所述第一帧率改变和所述第二帧率改变值,通过如下公式确定所述帧率改变值:
其中,所述为所述帧率改变值,所述/>为所述第一帧率改变值,所述为所述第二帧率改变值,所述k为第四常数,所述/>为第五常数,所述normalFps为预先设置的帧率变化的最小单位。
15.如权利要求1-8任一所述的方法,其特征在于,所述设备温度是根据如下温度中的一种或多种确定:壳体温度、电池温度和系统温度。
16.如权利要求1-8任一所述的方法,其特征在于,所述若所述流畅度信息不满足流畅度要求且所述设备负载大于第一负载阈值,则确定所述第一应用的运行场景满足帧率平滑条件,包括:
若所述流畅度信息不满足流畅度要求且所述设备负载大于第一负载阈值,则确定所述第一应用的运行场景满足帧率下降条件;
所述根据所述流畅度信息、所述设备负载和所述第一应用的当前帧率,确定所述目标帧率,包括:
根据所述流畅度信息和所述设备负载,确定帧率下降值;
根据所述帧率下降值和所述当前帧率,确定所述目标帧率。
17.如权利要求1-8任一所述的方法,其特征在于,所述若所述第一应用的流畅度信息满足流畅度要求且所述设备负载小于第二负载阈值,则确定所述第一应用的运行场景满足帧率平滑条件,包括:
若所述第一应用的流畅度信息满足流畅度要求且所述设备负载小于第二负载阈值,则确定所述第一应用的运行场景满足帧率提高条件;
所述根据所述流畅度信息、所述设备负载和所述第一应用的当前帧率,确定所述目标帧率,包括:
根据所述流畅度信息和所述设备负载,确定帧率提高值;
根据所述帧率提高值和所述当前帧率,确定所述目标帧率。
18.如权利要求1-8任一所述的方法,其特征在于,所述获取所述电子设备的设备状态信息之前,还包括:
获取所述电子设备的系统状态;
若所述系统状态满足第一预设条件,则执行获取所述电子设备的设备状态信息的步骤。
19.如权利要求18所述的方法,其特征在于,所述第一预设条件包括以下系统状态中的一种或多种:
所述电子设备处于亮屏状态;
所述电子设备的显示屏幕为可折叠屏且处于展开态;
所述第一应用在前台运行;
所述电子设备处于多窗场景,所述多窗场景是指显示多个窗口的场景;
所述电子设备处于下拉通知栏状态;
所述电子设备处于来电场景;
所述电子设备处于录屏场景;
所述电子设备不处于低电量模式;
所述电子设备不处于插帧场景,所述插帧场景是指所述第一应用通过插帧方式生成视频帧的场景。
20.如权利要求18所述的方法,其特征在于,所述获取所述电子设备的系统状态之后,还包括:
若所述系统状态不满足所述第一预设条件,则不执行获取所述电子设备的设备状态信息的步骤。
21.如权利要求18所述的方法,其特征在于,所述获取所述电子设备的系统状态之后,还包括:
判断所述系统状态是否满足第二预设条件;
若所述系统状态不满足所述第二预设条件,则判断所述系统状态是否满足所述第一预设条件;
若所述系统状态满足所述第二预设条件,则不执行获取所述电子设备的设备状态信息的步骤。
22.如权利要求21所述的方法,其特征在于,所述第二预设条件包括如下系统状态中的一种或多种:
所述电子设备处于低电量模式;
所述电子设备处于插帧场景,所述插帧场景是指所述第一应用通过插帧方式生成视频帧的场景。
23.如权利要求1-8任一所述的方法,其特征在于,所述获取所述电子设备的设备状态信息之前,还包括:
对所述第一应用进行白名单校验;
若校验成功,则执行获取所述电子设备的设备状态信息的步骤。
24.如权利要求23所述的方法,其特征在于,所述对所述第一应用进行白名单校验,包括:
判断预设白名单是否存在所述第一应用的应用标识,所述预设白名单包括至少一个应用的应用标识;
若所述预设白名单存在所述第一应用的应用标识,则确定校验成功;
若所述预设白名单不存在所述第一应用的应用标识,则确定校验失败。
25.如权利要求23所述的方法,其特征在于,所述对所述第一应用进行白名单校验,包括:
判断所述第一应用是否属于预设白名单包括的至少一个应用类型中的任一应用类型;
若所述第一应用属于所述至少一个应用类型中的任一应用类型,则确定校验成功;
若所述第一应用不属于所述至少一个应用类型中的任一应用类型,则确定校验失败。
26.如权利要求1-8任一所述的方法,其特征在于,所述第一应用为游戏应用、视频播放应用或视频通话应用。
27.一种电子设备,其特征在于,所述电子设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至26任一项所述的方法。
28.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-26任意一项所述的方法。
CN202310939689.3A 2023-07-28 2023-07-28 应用帧率平滑方法、电子设备及存储介质 Active CN116680153B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310939689.3A CN116680153B (zh) 2023-07-28 2023-07-28 应用帧率平滑方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310939689.3A CN116680153B (zh) 2023-07-28 2023-07-28 应用帧率平滑方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116680153A CN116680153A (zh) 2023-09-01
CN116680153B true CN116680153B (zh) 2024-03-29

Family

ID=87785796

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310939689.3A Active CN116680153B (zh) 2023-07-28 2023-07-28 应用帧率平滑方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116680153B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117061863B (zh) * 2023-10-12 2024-04-16 荣耀终端有限公司 帧率控制方法、装置及设备
CN117596425A (zh) * 2023-10-24 2024-02-23 书行科技(北京)有限公司 编码帧率的确定方法、装置、电子设备及存储介质
CN117687495A (zh) * 2024-02-04 2024-03-12 荣耀终端有限公司 一种数据获取方法、训练方法及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112083988A (zh) * 2020-08-03 2020-12-15 深圳传音控股股份有限公司 屏幕刷新率控制方法、移动终端及计算机可读存储介质
WO2021238473A1 (zh) * 2020-05-29 2021-12-02 Oppo广东移动通信有限公司 屏幕刷新率的调整方法、装置、电子设备和存储介质
CN113760080A (zh) * 2020-06-04 2021-12-07 北京小米移动软件有限公司 显示方法、装置及存储介质
CN114461051A (zh) * 2021-12-29 2022-05-10 荣耀终端有限公司 帧率切换方法、装置及存储介质
CN114661136A (zh) * 2022-03-29 2022-06-24 联想(北京)有限公司 一种信息处理方法、系统及电子设备
CN114842816A (zh) * 2020-03-06 2022-08-02 华为技术有限公司 刷新率切换方法和电子设备
CN114974056A (zh) * 2021-02-24 2022-08-30 广州三星通信技术研究有限公司 屏幕刷新率的调整方法及其装置
CN116048217A (zh) * 2022-08-29 2023-05-02 荣耀终端有限公司 一种电子设备运行方法、装置和电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106250085A (zh) * 2016-07-29 2016-12-21 北京小米移动软件有限公司 刷新率调整方法及装置
CN112445315A (zh) * 2019-08-28 2021-03-05 北京小米移动软件有限公司 屏幕刷新帧率的控制方法、装置及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114842816A (zh) * 2020-03-06 2022-08-02 华为技术有限公司 刷新率切换方法和电子设备
WO2021238473A1 (zh) * 2020-05-29 2021-12-02 Oppo广东移动通信有限公司 屏幕刷新率的调整方法、装置、电子设备和存储介质
CN113760080A (zh) * 2020-06-04 2021-12-07 北京小米移动软件有限公司 显示方法、装置及存储介质
CN112083988A (zh) * 2020-08-03 2020-12-15 深圳传音控股股份有限公司 屏幕刷新率控制方法、移动终端及计算机可读存储介质
CN114974056A (zh) * 2021-02-24 2022-08-30 广州三星通信技术研究有限公司 屏幕刷新率的调整方法及其装置
CN114461051A (zh) * 2021-12-29 2022-05-10 荣耀终端有限公司 帧率切换方法、装置及存储介质
CN114661136A (zh) * 2022-03-29 2022-06-24 联想(北京)有限公司 一种信息处理方法、系统及电子设备
CN116048217A (zh) * 2022-08-29 2023-05-02 荣耀终端有限公司 一种电子设备运行方法、装置和电子设备

Also Published As

Publication number Publication date
CN116680153A (zh) 2023-09-01

Similar Documents

Publication Publication Date Title
EP4024845A1 (en) Time-lapse photography method and device
WO2020108356A1 (zh) 一种应用显示方法及电子设备
CN113542485B (zh) 一种通知处理方法、电子设备及计算机可读存储介质
CN116680153B (zh) 应用帧率平滑方法、电子设备及存储介质
US20220165191A1 (en) Frequency Adjustment Method and Apparatus Applied to Terminal, and Electronic Device
EP3789875A1 (en) Task processing method, apparatus, terminal, and computer readable storage medium
CN111543042B (zh) 通知消息的处理方法及电子设备
CN112527476B (zh) 资源调度方法及电子设备
CN114040242B (zh) 投屏方法、电子设备和存储介质
CN114461588B (zh) 调节预读窗口的方法及电子设备
WO2023015956A1 (zh) 控制摄像头的方法、电子设备及计算机可读存储介质
WO2023000772A1 (zh) 模式切换方法、装置、电子设备及芯片系统
US20230385112A1 (en) Memory Management Method, Electronic Device, and Computer-Readable Storage Medium
CN113224804B (zh) 一种充电控制方法及电子设备
CN117130773A (zh) 资源分配方法、装置和设备
US11995317B2 (en) Method and apparatus for adjusting memory configuration parameter
CN115333941A (zh) 获取应用运行情况的方法及相关设备
CN111381996B (zh) 内存异常处理方法及装置
CN116089057B (zh) 资源调度方法、设备、存储介质和程序产品
CN114826636B (zh) 访问控制系统及相关方法和设备
CN115941836B (zh) 一种界面显示方法、电子设备及存储介质
CN116048831B (zh) 一种目标信号处理方法和电子设备
CN114168065B (zh) 调整内存配置参数的方法和装置
CN116719376B (zh) 电压控制方法、装置、设备和存储介质
CN116795604B (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