CN114205673A - 刷新率的设置方法及相关设备 - Google Patents
刷新率的设置方法及相关设备 Download PDFInfo
- Publication number
- CN114205673A CN114205673A CN202111545016.7A CN202111545016A CN114205673A CN 114205673 A CN114205673 A CN 114205673A CN 202111545016 A CN202111545016 A CN 202111545016A CN 114205673 A CN114205673 A CN 114205673A
- Authority
- CN
- China
- Prior art keywords
- application
- video
- bullet screen
- refresh rate
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 200
- 230000008569 process Effects 0.000 claims abstract description 114
- 238000009877 rendering Methods 0.000 claims description 150
- 230000000694 effects Effects 0.000 claims description 69
- 230000033764 rhythmic process Effects 0.000 claims description 57
- 230000032683 aging Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 14
- 230000004044 response Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 10
- 238000009434 installation Methods 0.000 description 9
- 230000001960 triggered effect Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 5
- 238000010295 mobile communication Methods 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000004083 survival effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/442—Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
- H04N21/44213—Monitoring of end-user related data
- H04N21/44218—Detecting physical presence or behaviour of the user, e.g. using sensors to detect if the user is leaving the room or changes his face expression during a TV program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440281—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. by frame skipping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
- H04N21/4438—Window management, e.g. event handling following interaction with the user interface
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4788—Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Theoretical Computer Science (AREA)
- Social Psychology (AREA)
- Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本申请公开了一种刷新率的设置方法及相关设备,涉及显示技术领域,目的在于满足电子设备在视频播放过程中的对刷新率的需求。具体方案为:响应于接收用户启动应用的操作,按照第一刷新率刷新显示所述应用的应用界面。响应于接收用户播放视频的操作,按照第一刷新率显示视频画面。在显示视频画面的过程中,确定预设时长内是否进行弹幕绘制。若在预设时长内进行弹幕绘制,则统计视频的每一帧显示画面的弹幕数据。根据每一帧显示画面的弹幕数据,按照第二刷新率刷新显示所述应用的应用界面,满足弹幕场景下的显示需求。若在预设时长内未进行弹幕绘制,则按照第三刷新率刷新显示应用的应用界面,满足视频播放场景下的显示需求。
Description
技术领域
本申请涉及显示技术领域,尤其涉及一种刷新率的设置方法及相关设备。
背景技术
刷新率为屏幕每秒画面被刷新的次数。随着显示技术的发展,手机、平板电脑等电子设备可支持的刷新率不断提高。目前,为了画面能显示流畅,电子设备通常是按照固定的高刷新率进行刷新显示,例如按照固定的60HZ、90HZ或者120HZ的固定刷新率进行刷新显示。
然而,在电子设备的视频播放场景下,往往对刷新率的需求较低,这就导致电子设备在播放视频过程中,会出现实际的刷新率高于需求的刷新率的情况,造成处理器的负载过重,对系统电量也造成了浪费。
发明内容
本申请提供了一种刷新率的设置方法及相关设备,目的在于满足视频播放过程中对刷新率的需求。
为了实现上述目的,本申请提供了以下技术方案:
第一方面,本申请实施例公开了一种刷新率的设置方法,应用于电子设备,电子设备安装有应用,方法包括:
响应于接收用户启动应用的操作,按照第一刷新率刷新显示应用的应用界面。响应于接收用户播放视频的操作,按照第一刷新率显示视频画面。在显示视频画面的过程中,确定预设时长内是否进行弹幕绘制。若在预设时长内进行弹幕绘制,则统计视频的每一帧显示画面的弹幕数据,然后根据每一帧显示画面的弹幕数据,按照第二刷新率刷新显示应用的应用界面。若在预设时长内未进行弹幕绘制,则按照第三刷新率刷新显示应用的应用界面,第三刷新率与第二刷新率不同。
本申请实施例中,在显示视频画面的过程中,实时确定预设时长内是否进行弹幕绘制,若在预设时长内进行弹幕绘制,则可以确定应用进入弹幕场景,因此统计视频的每一帧显示画面的弹幕数据,然后根据每一帧显示画面的弹幕数据,按照第二刷新率刷新显示应用的应用界面,以根据弹幕数据使用满足弹幕场景下的显示需求的刷新率刷新界面。而若在预设时长内未进行弹幕绘制,则可以认为应用进入了视频播放场景,进而可以按照第三刷新率刷新显示应用的应用界面,以满足视频播放场景下的显示需求。
在一种可能的实现方式中,根据每一帧显示画面的弹幕数据,按照第二刷新率刷新显示应用的应用界面,包括:
根据每一帧显示画面的弹幕数据,确定第二刷新率,按照确定出的第二刷新率刷新显示应用的应用界面。
在另一种可能的实现方式中,根据每一帧显示画面的弹幕数据,确定第二刷新率,包括:
根据当前统计到的每一帧显示画面的弹幕数据,确定当前的弹幕档位。弹幕档位用于表示显示画面上的弹幕密度量级。根据当前的弹幕档位,确定第二刷新率。第二刷新率为当前的弹幕档位对应的预设刷新率。弹幕档位说明的弹幕密度量级越大,则确定出的第二刷新率越大。
在另一种可能的实现方式中,一帧显示画面的弹幕数据,包括:一帧显示画面中绘制的弹幕条数,和/或,一帧显示画面中绘制的弹幕字符数。
在另一种可能的实现方式中,根据当前统计到的每一帧显示画面的弹幕数据,确定当前的弹幕档位,包括:
根据当前统计到的每一帧显示画面中绘制的弹幕条数、每一帧显示画面对应的时间戳以及弹幕老化时间,计算得到当前一帧显示画面中显示的总弹幕条数。根据当前一帧显示画面中绘制的弹幕条数和当前一帧显示画面中显示的总弹幕条数,确定当前的弹幕档位。
在另一种可能的实现方式中,弹幕档位,包括:高弹幕档位或低弹幕档位。根据当前一帧显示画面中绘制的弹幕条数和当前一帧显示画面中显示的总弹幕条数,确定当前的弹幕档位,包括:
若当前一帧显示画面中绘制的弹幕条数小于第一预设值,且当前一帧显示画面中显示的总弹幕条数小于第二预设值,则确定出当前的弹幕档位为低弹幕档位。若当前一帧显示画面中绘制的弹幕条数大于或等于第二预设值,或者当前一帧显示画面中显示的总弹幕条数大于或等于第二预设值,则确定出当前的弹幕档位为高弹幕档位。
在另一种可能的实现方式中,统计视频的每一帧显示画面的弹幕数据,包括:
统计视频的每一帧显示画面中的特定区域的弹幕数据。
在另一种可能的实现方式中,确定预设时长内是否进行弹幕绘制之前,方法还包括:
根据应用界面的图层信息,确定是否为视频播放场景。视频播放场景为播放视频的场景。其中确定预设时长内是否进行弹幕绘制,包括:若确定为视频播放场景,则确定预设时长内是否进行弹幕绘制。
在另一种可能的实现方式中,确定预设时长内是否进行弹幕绘制之前,方法还包括:
确定是否对视频进行解码。其中若确定为视频播放场景,则确定预设时长内是否进行弹幕绘制,包括:若确定为视频播放场景且确定出对视频进行解码,则确定预设时长内是否进行弹幕绘制。
在另一种可能的实现方式中,根据应用界面的图层信息,确定是否为视频播放场景之前,还包括:
确定应用是否在播放白名单中;播放白名单为具有视频播放权限的应用名单。其中,根据应用界面的图层信息,确定是否为视频播放场景,包括:若确定出应用在播放白名单中,则根据应用界面的图层信息,确定是否为视频播放场景。
在另一种可能的实现方式中,确定应用是否在播放白名单中,包括:
根据应用界面的图层信息中携带的应用的包名,确定应用是否在播放白名单中。播放白名单,包括:每一个具有视频播放权限的应用的包名。
在另一种可能的实现方式中,根据应用界面的图层信息,确定是否为视频播放场景,包括:
确定应用界面的图层信息中是否具有视频图层的特征信息,若应用界面的图层信息中具有视频图层的特征信息,则确定出处于视频播放场景。若应用界面的图层信息中不具有视频图层的特征信息,则确定出不处于视频播放场景。
在另一种可能的实现方式中,视频图层的特征信息为:图层名中携带的视频图层SurfaceView字段。
在另一种可能的实现方式中,第三刷新率根据视频的视频源帧率确定。
在另一种可能的实现方式中,还包括:响应于接收用户退出视频播放的操作,按照第一刷新率刷新显示应用的应用界面。
在另一种可能的实现方式中,电子设备的操作系统,包括:应用和图像合成器Surface Flinger;确定预设时长内是否进行弹幕绘制,包括:
Surface Flinger确定预设时长内是否接收到一帧的弹幕绘制信息,一帧的弹幕绘制信息,包括:一帧显示画面中绘制的弹幕条数、一帧显示画面对应的时间戳,以及一帧显示画面中绘制渲染后的弹幕数据。
在另一种可能的实现方式中,电子设备的操作系统还包括:帧率决策模块。一帧显示画面的弹幕数据,包括:一帧显示画面中绘制的弹幕条数。若在预设时长内进行弹幕绘制,则统计视频的每一帧显示画面的弹幕数据,包括:
Surface Flinger若在预设时长内接收到一帧的弹幕绘制信息,则存储一帧显示画面中绘制的弹幕条数以及一帧显示画面对应的时间戳。
在另一种可能的实现方式中,电子设备的操作系统还包括:帧率决策模块。根据每一帧显示画面的弹幕数据,按照第二刷新率刷新显示应用的应用界面,包括:
Surface Flinger根据已存储的每一帧显示画面中绘制的弹幕条数、每一帧显示画面对应的时间戳以及弹幕老化时间,确定当前的弹幕档位。Surface Flinger将当前的弹幕档位信息发送至帧率决策模块。弹幕档位信息,包括:当前的弹幕档位。帧率决策模块根据弹幕档位信息,确定第二刷新率。帧率决策模块将确定出的第二刷新率发送至SurfaceFlinge。Surface Flinge按照第二刷新率,控制电子设备的显示屏刷新显示应用的应用界面。
在另一种可能的实现方式中,Surface Flinger将当前的弹幕档位信息发送至帧率决策模块,包括:
Surface Flinger若确定出当前的弹幕档位未发生变更,则将当前的弹幕档位信息发送至帧率决策模块。
在另一种可能的实现方式中,电子设备的操作系统,还包括:绘制渲染模块,绘制渲染模块包括弹幕计数器。Surface Flinger若在预设时长内接收到一帧的弹幕绘制信息,则Surface Flinger在预设时长内接收到一帧的弹幕绘制信息之前,还包括:
Surface Flinger确定开启弹幕统计,应用按照Vsync信号的节奏调用绘制渲染模块绘制弹幕,绘制渲染模块确定弹幕统计是否开启,绘制渲染模块若确定弹幕统计已开启,则控制弹幕计数器对绘制的弹幕条数进行计数,绘制渲染模块按照Vsync信号的节奏,发送当前一帧的弹幕绘制信息至Surface Flinger。
在另一种可能的实现方式中,电子设备的操作系统还包括:帧率决策模块。若在预设时长内未进行弹幕绘制,则按照第三刷新率刷新显示应用的应用界面,包括:
Surface Flinger若在预设时长内未接收到弹幕绘制信息,则将视频播放场景信息发送至帧率决策模块;视频播放场景为播放视频的场景,帧率决策模块根据视频播放场景信息和视频源帧率,确定第三刷新率。帧率决策模块将确定出的第三刷新率发送至Surface Flinge,Surface Flinge按照第三刷新率,控制电子设备的显示屏刷新显示应用的应用界面。
在另一种可能的实现方式中,电子设备的操作系统还包括:编解码器MediaCodec。响应于接收用户播放视频的操作之后,还包括:
应用调用Media Codec对视频进行解码,Media Codec将视频的视频源帧率发送至帧率决策模块。
在另一种可能的实现方式中,电子设备的操作系统,包括:Surface Flinge。根据应用界面的图层信息,确定是否为视频播放场景,包括:
Surface Flinge确定应用界面的图层信息中的图层名,是否携带SurfaceView字段,Surface Flinge若确定出图层名携带SurfaceView字段,则确定为视频播放场景,Surface Flinge若确定出图层名不携带SurfaceView字段,则确定不为视频播放场景。
在另一种可能的实现方式中,电子设备的操作系统,包括:应用、Surface Flinge以及绘制渲模块。按照第一刷新率显示视频画面,包括:
Surface Flinge按照第一刷新率对应的Vsync信号节奏,触发应用对视频播放界面的图层进行绘制渲染,视频播放界面为用于显示视频画面的应用界面。应用按照第一刷新率对应的Vsync信号节奏,调用绘制渲染模块对视频播放界面的图层进行绘制渲染。绘制渲染模块按照第一刷新率对应的Vsync信号节奏,发送绘制渲染后的视频播放界面图像数据至Surface Flinge。Surface Flinge按照第一刷新率对应的Vsync信号节奏,使用绘制渲染后的视频播放界面图像数据进行图层合成。Surface Flinge按照第一刷新率对应的Vsync信号节奏,将合成后的视频播放界面图像数据输出至显示屏显示。
在另一种可能的实现方式中,电子设备的操作系统还包括:AMS和窗口管理模块WMS。Surface Flinge按照第一刷新率对应的Vsync信号节奏,触发应用对视频播放界面的图层进行绘制渲染之前还包括:
应用发送启动视频播放Activity的请求至AMS;启动视频播放Activity的请求中携带有应用的包名和视频播放界面名。AMS根据应用的包名和视频播放界面名,启动视频播放Activity。AMS发送视频播放界面对应的窗口信息至WMS。WMS根据视频播放界面对应的窗口信息,创建视频播放界面的窗口。WMS发送视频播放界面的图层信息至Surface Flinge。图层信息中携带有应用的包名。视频播放界面的图层信息与视频播放界面的窗口对应。Surface Flinge根据视频播放界面的图层信息,创建视频播放界面的图层。
在另一种可能的实现方式中,电子设备的操作系统,包括:应用、Surface Flinge以及Media Codec。确定是否对视频进行解码,包括:
Surface Flinge若接收到被调用的信息,则确定出应用调用Media Codec对视频进行解码;被调用的信息用于说明Media Codec被调用。Surface Flinge若未接收到被调用的信息,则确定出应用未调用Media Codec对视频进行解码。
在另一种可能的实现方式中,若Surface Flinge接收到被调用的信息,则SurfaceFlinge接收到被调用的信息之前还包括:
应用调用Media Codec对视频进行解码,Media Codec发送被调用的信息至Surface Flinge。
在另一种可能的实现方式中,应用调用Media Codec对视频进行解码之前,还包括:
WMS发送视频播放界面的窗口创建完成的信息至应用。
在另一种可能的实现方式中,确定应用是否在播放白名单中,包括:
Surface Flinge根据应用界面的图层信息中携带的应用的包名,确定应用是否在播放白名单中;播放白名单,包括:每一个具有视频播放权限的应用的包名。
在另一种可能的实现方式中,电子设备的操作系统,包括:应用、Surface Flinge、帧率决策模块以及绘制渲染模块。按照第一刷新率刷新显示应用的应用界面,包括:
Surface Flinge按照第一刷新率对应的Vsync信号节奏,触发应用对应用主界面的图层进行绘制渲染,应用主界面为应用启动之后显示的应用界面。应用按照第一刷新率对应的Vsync信号节奏,调用绘制渲染模块对应用主界面的图层进行绘制渲染。绘制渲染模块按照第一刷新率对应的Vsync信号节奏,发送绘制渲染后的应用主界面图像数据至Surface Flinge。Surface Flinge按照第一刷新率对应的Vsync信号节奏,使用绘制渲染后的应用主界面图像数据进行图层合成。Surface Flinge按照第一刷新率对应的Vsync信号节奏,将合成后的应用主界面图像数据输出至显示屏显示。
在另一种可能的实现方式中,电子设备的操作系统还包括:桌面启动器Launcher、AMS以及WMS。Surface Flinge按照第一刷新率对应的Vsync信号节奏,触发应用对应用主界面的图层进行绘制渲染之前,还包括:
Launcher发送启动应用Activity的请求至AMS;启动应用Activity的请求中携带有应用的包名。AMS启动应用Activity,AMS向WMS发送应用主界面对应的窗口信息,窗口信息中携带有应用的包名。WMS根据应用主界面对应的窗口信息,创建应用主界面的窗口,并发送应用的包名至帧率决策模块。WMS发送应用主界面的图层信息至Surface Flinge;应用主界面的图层信息与应用主界面的窗口对应。帧率决策模块根据应用的包名,确定出第一刷新率,第一刷新率为应用对应的预设刷新率。Surface Flinge根据应用主界面的图层信息,创建应用主界面的图层。
第二方面,本申请公开了一种电子设备,包括:一个或多个处理器、存储器以及显示屏。存储器、显示屏分别与一个或多个处理器耦合。显示屏用于显示应用界面。存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,电子设备执行如上述第一方面中任一项的刷新率的设置方法。
应当理解的是,本申请中对技术特征、技术方案、有益效果或类似语言的描述并不是暗示在任意的单个实施例中可以实现所有的特点和优点。相反,可以理解的是对于特征或有益效果的描述意味着在至少一个实施例中包括特定的技术特征、技术方案或有益效果。因此,本说明书中对于技术特征、技术方案或有益效果的描述并不一定是指相同的实施例。进而,还可以任何适当的方式组合本实施例中所描述的技术特征、技术方案和有益效果。本领域技术人员将会理解,无需特定实施例的一个或多个特定的技术特征、技术方案或有益效果即可实现实施例。在其他实施例中,还可在没有体现所有实施例的特定实施例中识别出额外的技术特征和有益效果。
附图说明
图1为本申请实施例提出的视频应用的视频播放场景示意图一;
图2为本申请实施例提出的电子设备的硬件结构图;
图3为本申请实施例提出的电子设备的系统图;
图4a为本申请实施例提出的刷新率的设置方法在应用启动阶段的流程图;
图4b为本申请实施例提出的刷新率的设置方法在视频播放阶段的流程图;
图4c为本申请实施例提出的视频应用的视频播放场景示意图二;
图4d本申请实施例提出的视频应用的视频播放场景示意图三;
图4e为本申请实施例提出的另一刷新率的设置方法在视频播放阶段的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例涉及的多个,是指大于或等于两个。需要说明的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
为了下述各实施例的描述清楚简洁,首先给出一种刷新率的设置方案的简要介绍:
以手机这类电子设备为例,手机的各个应用可以设定有应用对应的预设刷新率,不同应用对应的预设刷新率可以相同,也可以不同。用户点击启动应用后,在应用运行过程中,手机可以采用应用对应的预设刷新率刷新屏幕。
具体的,举例说明,如图1的(1)所示,手机主界面上显示有时钟、日历、图库、备忘录、文件管理、电子邮件、音乐、计算器、视频、运动健康、天气以及浏览器应用。用户点击视频应用的图标,手机界面变化为图1的(2)。如图1的(2)所示,应用主界面上展示了视频1、视频2、视频3、视频4、视频5等可播放的视频。此时应用已启动,手机按照应用对应的预设刷新率60HZ,进行刷新。用户从应用主界面上点击视频1进行播放,手机界面变化为图1的(3)。图1的(3)显示了视频1的播放界面,视频1此时弹幕开关处于关闭状态,在图1的(3)所示出的视频1的播放过程中,视频画面仍然以60HZ的刷新率在刷新。用户点击开启弹幕,手机画面变化为图1的(4),此时弹幕开关处于开启状态,视频画面中有弹幕滚动,视频画面仍然以60HZ进行刷新显示。
然而,在应用的视频播放场景下,应用对应的预设刷新率难以满足视频播放过程对刷新率的需求。例如当图1的(3)所播放的视频1为电影时,仅需要24HZ的刷新率即可满足流畅显示画面的需求,而采用60HZ的刷新率去刷新视频画面,会造成处理器负载过大、耗电较高,不满足手机低功耗的需求。又例如,对于如图1的(4)所示出的视频播放、并开启弹幕的场景,由于画面上还需动态显示滚动弹幕,因此对刷新率的需求会高于图1的(3)所示出的未开启弹幕场景,刷新率过低了容易出现弹幕滚动画面卡顿。
由前述描述可知:(1)应用对应的预设刷新率高于视频播放场景下的实际需求刷新率,容易造成处理器负载过大、耗电较高的情况,不满足手机低功耗的需求。(2)应用对应的预设刷新率是固定不变的,而视频播放场景下对刷新率的需求是会动态变化的,应用对应的预设刷新率无法适用于视频播放场景下对刷新率的不同需求。
基于上述技术方案存在的问题,本申请实施例提出了一种刷新率的设置方法,以满足应用在不同的视频播放场景下对刷新率的需求。
本申请实施例提出的一种刷新率的设置方法,可以适用于手机,平板电脑,笔记本电脑,超级移动个人计算机(Ultra-mobile Personal Computer,UMPC),手持计算机,上网本,个人数字助理(Personal Digital Assistant,PDA),可穿戴电子设备,智能手表等电子设备,该电子设备内安装有视频应用。其中,本申请实施例所提及的视频应用,均指的是具有播放视频功能的应用。
如图2所示,本申请实施例所提出的电子设备可以包括处理器110,外部存储器接口120,内部存储器121,充电管理模块130,电源管理模块131,电池132,天线1,天线2,移动通信模块140,无线通信模块150,音频模块160,扬声器160A,传感器模块170,以及显示屏180等。其中传感器模块170可以包括指纹传感器170A,触摸传感器170B等。
可以理解的是,本实施例示意的结构并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),视频编解码器。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。例如,在本申请中,处理器110可以用于执行本申请实施例提出的任一刷新率的设置方法,例如处理器110所包括的GPU可以用于实现在显示屏180上显示本申请实施例所提出的任一刷新率的设置方法中所涉及的图像和弹幕。具体的,可参阅下述图4a、图4b以及图4e部分的相关内容,此处不再赘述。
处理器110中还可以设置存储器,用于存储指令和数据。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括移动产业处理器接口(mobile industryprocessor interface,MIPI)等。
MIPI接口可以被用于连接处理器110与显示屏180等外围器件。MIPI接口包括显示屏串行接口(display serial interface,DSI)等。在一些实施例中,处理器110和显示屏180通过DSI接口通信,实现电子设备的显示功能。例如,本申请实施例中,处理器110和显示屏180通过DSI接口通信,实现在显示屏180上显示本申请实施例所提出的任一刷新率的设置方法中涉及的图像和弹幕。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在本申请另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块130用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。
电源管理模块131用于连接电池132,充电管理模块130与处理器110。电源管理模块131接收电池132和/或充电管理模块130的输入,为处理器110,内部存储器121,显示屏180等供电。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块140,无线通信模块150,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。
移动通信模块140可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。
无线通信模块150可以提供应用在电子设备上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT)等无线通信的解决方案。
在一些实施例中,电子设备的天线1和移动通信模块140耦合,天线2和无线通信模块150耦合,使得电子设备可以通过无线通信技术与网络以及其他设备通信。
电子设备通过GPU,显示屏180,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏180和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。例如,本申请实施例中,GPU可以用于实现在显示屏180上显示本申请实施例所提出的任一刷新率的设置方法中所涉及的图像和弹幕。具体的,可参阅下述图4a、图4b、以及图4e部分的相关内容,此处不再赘述。
显示屏180用于显示图像,视频等。显示屏180包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED)等。在一些实施例中,电子设备可以包括1个或N个显示屏180,N为大于1的正整数。
电子设备的显示屏180上可以显示一系列图形用户界面(graphical userinterface,GUI),这些GUI都是该电子设备的主屏幕。例如,本申请实施例中,显示屏180可以用于显示本申请实施例所提出的任一刷新率的设置方法中所涉及的图像和弹幕。具体的,可参阅具体的,可参阅图4a、图4b以及图4e部分的相关内容,此处不再赘述。
视频编解码器用于对数字视频压缩或解压缩。电子设备可以支持一种或多种视频编解码器。这样,电子设备可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。例如,本申请实施例中,视频编解码器可以用于对本申请实施例所提出的任一刷新率的设置方法中所涉及的视频应用播放的视频进行解码。具体的,可参阅图4b部分的S4206以及图4e部分的S4306的相关内容,此处不再赘述。在另一些实施例中,视频编解码器也可以为软件,例如可以是下述图3示出的编解码器(Media Codec)。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备的各种功能应用以及数据处理。例如,在本实施例中,处理器110可以通过执行存储在内部存储器121中的指令,执行本申请实施例所提及的任一刷新率的设置方法。具体的,可参阅下述图4a、图4b以及图4e部分的相关内容,此处不再赘述。
音频模块160用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。
扬声器160A,也称“喇叭”,用于将音频电信号转换为声音信号。
指纹传感器170A用于采集指纹。电子设备可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
触摸传感器170B,也称“触控器件”。触摸传感器170B可以设置于显示屏180,由触摸传感器170B与显示屏180组成触摸屏,也称“触控屏”。
另外,在上述部件之上,运行有操作系统。例如iOS操作系统,Android开源操作系统,Windows操作系统等。在该操作系统上可以安装运行应用程序。
图3是本申请实施例的电子设备的结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Androidruntime)和系统库,以及内核层。
图3是本申请实施例的电子设备的结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Androidruntime)和系统库,以及内核层。
参阅图3,应用程序层可以包括桌面启动器(Launcher)和视频应用。
其中,Launcher用于启动应用Activity。
例如,在实施例中,如图3所示,Launcher响应于用户点击视频应用的图标的操作,下发启动应用Activity请求至Activity管理服务模块(Activity Manager Service,AMS),具体可以参阅下述图4a示出的步骤S4101的相关内容,此处不再赘述。
视频应用用于为用户提供视频播放功能。
例如,本实施例中,如图3所示,视频应用响应于用户点击视频播放的操作,调用编解码器(Media Codec)对视频进行解码,并下发启动视频播放Activity的请求至AMS。具体可以参阅下述图4b示出的步骤S4201和步骤S4206的相关内容,以及图4e中的步骤S4301和步骤S4306的相关内容,此处不再赘述。
例如,在本实施例中,如图3所示,视频应用被图像合成器(Surface Flinger)触发绘制渲染后,调用绘制渲染模块的绘制渲染线程,进行图像数据和/或,弹幕数据的绘制渲染,并将绘制渲染后的数据发送至Surface Flinger进行合成。具体可以参阅图4a示出的步骤S4110至步骤S4112的相关内容,此处不再赘述。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图3所示,应用程序框架层可以包括Media Codec,AMS,窗口管理模块(Window ManagerService,WMS),以及绘制渲染模块。
Media Codec用于处理音视频的编解码。
例如,本实施例中,如图3所示,Media Codec对视频应用需播放的视频进行解码,并将视频源帧率和被调用的信息发送给帧率决策模块。具体可以参阅图4b示出的步骤S4207的相关内容,以及图4e的步骤S4307的相关内容,此处不再赘述。
AMS用于管理应用进程以及进程的Activity。
例如,如图3所示,本实施例中,AMS响应于Launcher下发的启动应用Activity请求,启动应用Activity,然后向WMS下发创建窗口的信息,具体可以参阅图4a示出的步骤S4102至步骤S4103的相关内容,此处不再赘述。
又例如,如图3所示,本实施例中,AMS响应于视频应用下发的视频播放Activity请求,启动视频播放Activity,并向WMS下发创建窗口的信息,具体可以参阅图4b示出的步骤S4202至步骤S4203,以及图4e的S4302至S4303的相关内容,此处不再赘述。
WMS用于管理窗口,例如负责窗口的启动、添加和删除等。
例如,本实施例中,WMS用于根据AMS发送的视频应用主界面对应的窗口信息,创建视频应用主界面的窗口。具体可以参阅图4a的步骤S4104的相关内容。WMS还可以根据视频播放界面的窗口信息,创建视频播放界面的窗口,具体可参阅图4b的步骤S4204以及图4e的S4304的相关内容。
例如,本实施例中,WMS用于下发视频应用的包名至帧率决策模块。具体可以参阅图4a示出的步骤S4107的相关内容,此处不再赘述。
例如,如图3所示,本实施例中,WMS用于下发视频应用主界面的图层信息、或者下发视频播放界面的图层信息至Surface Flinger,具体可以参阅图4a示出的步骤S4105以及图4b示出的步骤S4205的相关内容,此处不再赘述。
绘制渲染模块用于启动绘制渲染线程进行绘制渲染,得到绘制渲染后的图像数据,和/或,弹幕数据等。
例如,如图3所示,本实施例中,视频应用调用绘制渲染模块中的绘制渲染线程,以使得绘制渲染模块绘制视频应用主界面的图层,视频播放界面的图层和/或弹幕,具体可以参阅图4a示出的步骤S4111至步骤S4112的相关内容、以及图4b示出的步骤S4214、图4e示出的S4316的相关内容,此处不再赘述。
又例如,本实施例中,绘制渲染模块还包括有弹幕计数器,在接收到SurfaceFlinger发送的开启弹幕统计的信息时,弹幕计数器会开启弹幕统计,统计弹幕条数,并向Surface Flinger发送弹幕绘制,其中,弹幕绘制信息携带有绘制渲染后的弹幕数据、弹幕条数以及时间戳。具体可以参阅图4b示出的步骤S4214至步骤S4218,以及图4e示出的S4316至S4319的相关内容,此处不再赘述。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如图3所示,系统库包括:帧率决策模块和Surface Flinger。
帧率决策模块用于发送目标刷新率(也可以称为目标刷新率)给SurfaceFlinger,以使得Surface Flinger按照目标刷新率控制显示数据的合成。
例如,如图3所示,本实施例中,帧率决策模块用于将被调用的信息发送给SurfaceFlinger,具体可以参阅图4e示出的步骤S4308的相关内容,此处不再赘述。
又例如,本实施例中,帧率决策模块还接收Surface Flinger发送的场景信息,根据场景信息确定出目标刷新率,并将目标刷新率发送给Surface Flinger。其中,场景信息,包括:视频场景信息或弹幕档位信息。具体可以参阅图4b示出的步骤S4224至步骤S4225,S4229至S4230,以及图4e的S4326至步骤S4327,步骤S4331至步骤S4332的相关内容,此处不再赘述。
Surface Flinger用于合成显示数据。
例如,如图3所示,本实施例中,Surface Flinger用于创建视频应用主界面的图层或者创建视频播放界面的图层。具体可以参阅图4a示出的步骤S4106的相关内容,图4b示出的步骤S4209以及图4e示出的S4310的相关内容,此处不再赘述。
例如,如图3所示,本实施例中,Surface Flinger用于触发视频应用进行绘制渲染,具体可以参阅图4a示出的步骤S4110的相关内容,此处不再赘述。
又例如,本实施例中,Surface Flinger还用于接收WMS发送的图层信息以及接收Media Codec发送的包名,根据图层信息中的图层特征以及包名,确定是否是视频播放场景,若为视频播放场景,则向绘制渲染模块发送开启弹幕统计的信息。具体可以参阅图4b示出的步骤S4206至步骤4211,以及图4e的S4309至S4312的相关内容,此处不再赘述。
又例如,本实施例中,Surface Flinger还接收绘制渲染模块发送的携带有绘制渲染后的弹幕数据、弹幕条数以及时间戳的弹幕绘制信息,根据弹幕绘制信息确定出弹幕场景下的弹幕档位,然后将携带有弹幕档位的弹幕场景信息发送至帧率决策模块。又例如,当超过预设时长未接收到弹幕绘制信息,则将视频播放场景信息发送至帧率决策模块。具体可以参阅图4b示出的步骤S4219至步骤S4223,以及图4e的S4321至S4325的相关内容,此处不再赘述。
又例如,本实施例中,Surface Flinger还接收并缓存视频应用发送的绘制渲染后的图像数据和弹幕数据,与硬件设计者(Hardware Composer,HWC)配合进行图层合成。
内核层是硬件和软件之间的层。内核层至少包含HWC,HWC用于利用硬件完成图像数据组合并显示。例如,如图3所示,本实施例中,HWC用于接收Surface Flinger发送的图层和目标刷新率,按照目标刷新率对图层进行处理,并送至硬件层的LCD进行显示。具体可以参阅图4a的S4113的相关内容,以及图4b示出的步骤S4226和步骤S4231,以及图4e的S4328和步骤S4333的相关内容,此处不再赘述。
需要说明的是,本申请实施例虽然以Android系统为例进行说明,但是其基本原理同样适用于基于iOS或Windows等操作系统的电子设备。还需要说明的是,图3示出的硬件层中除了可以使用LCD,也可以使用OLED等其他类型的显示屏,本申请实施例对此不做限制。
参阅图4a,图4a为本申请实施例提出的刷新率的设置方法中的任意一个视频应用的启动阶段流程的示意图,应用于本申请实施例提出的电子设备,具体包括以下步骤:
S4101、Launcher响应于用户启动视频应用的操作,下发启动应用Activity的请求至AMS。
具体的,Launcher接收用户启动视频应用的操作,进而响应于用户启动视频应用的操作,下发启动应用Activity的请求至AMS。示例性的,用户启动视频应用的操作可以是用户点击视频应用图标的操作、用户语音启动视频应用的操作、用户解锁自动启动视频应用的操作等。例如图4a所示,用户需要使用视频应用时,用户点击视频应用的图标,以使得电子设备中的Launcher响应于用户点击视频应用图标的操作,下发启动应用Activity的请求至AMS。
其中,Activity是一个负责与用户交互的应用程序组件,提供一个屏幕或界面,用户可以用来交互为了完成某项任务。应用Activity主要用于完成启动应用的任务,为用户提供应用的主界面。启动应用Activity的请求用于请求启动视频应用Activity,以实现启动视频应用,向用户展示视频应用的主界面。
在一些实施例中,启动应用Activity的请求中携带有视频应用的包名,在另一些实施例中,也可以是携带有视频应用的路径等视频应用所特有的唯一标识。在另一些实施例中,启动应用Activity的请求中除了视频应用所特有的唯一标识外,还可以携带有其他的信息。
在本申请实施例中,视频应用指的是具有视频播放功能的应用,具体可以是浏览器、某视频平台的应用、可播放音乐短片的音乐平台的应用等等。举例说明,如图1中的(1)所示,电子设备为手机时,用户点击界面上的“视频app”的图标,进而可触发手机中的Launcher响应于用户点击视频应用图标的操作,下发启动应用Activity的请求至AMS。
具体的,步骤S4101的执行过程和原理可以参考Android系统中启动应用过程中涉及Activity相关技术原理。
S4102、AMS启动应用Activity。
在一些实施例中,执行步骤S4102的过程为:AMS可以响应于启动应用Activity的请求,根据启动应用Activity的请求中所携带的视频应用的包名,创建应用Activity,并启动创建了的应用Activity。
具体的,AMS启动应用Activity的执行过程和原理可以参考Android系统中AMS启动应用Activity的相关技术原理。
S4103、AMS发送视频应用主界面对应的窗口信息至WMS。
AMS启动应用Activity后,需要完成启动视频应用的任务,为用户提供视频应用的主界面,以供用户与视频应用主界面的控件进行交互。
示例性的,视频应用主界面对应的窗口信息可以从视频应用的安装信息中获取。例如,AMS可以根据视频应用的包名,确定出视频应用的安装信息,进而从视频应用的安装信息中获取视频应用主界面对应的窗口信息。示例性的,可以是AMS与视频应用之间通过多次交互的方式,确定出视频应用主界面对应的窗口信息。
视频应用主界面对应的窗口信息可用于创建视频应用主界面对应的窗口,视频应用主界面对应的窗口信息可以携带有视频应用的包名,具体可以包括有:视频应用主界面的窗口属性信息、窗口层级信息等。例如,窗口属性信息可以是窗口名、窗口位置、窗口大小等,而视频应用主界面对应的窗口层级信息用于说明将视频应用主界面对应的窗口置于显示界面的最顶层。AMS确定出视频应用主界面对应的窗口信息后,即可将该窗口信息发送给WMS,以供WMS创建视频应用主界面对应的窗口。
需要说明的是,视频应用主界面所需要创建的窗口数量的不同并不影响本申请实施例的实现,本申请对此不作限制。
在一些实施例中,步骤S4103的执行过程可以是,AMS调用WMS,向WMS发送视频应用主界面对应的窗口信息。示例性的,AMS调用WMS线程,通过下发视频应用主界面对应的窗口信息,向WMS申请创建视频应用主界面的每一个窗口。
S4104、WMS根据视频应用主界面对应的窗口信息,创建视频应用主界面的窗口。
由于视频应用主界面对应的窗口信息中,包括有视频应用主界面的窗口名、窗口大小、窗口位置等窗口的属性信息,以及窗口的层级信息等,因此WMS可以根据视频应用主界面对应的窗口信息,确定出所需创建的视频应用主界面的窗口的大小、位置、层级等,进而可实现窗口创建。
具体的,步骤S4103至步骤S4104所描述的AMS与WMS之间交互实现创建窗口的过程和技术原理,可以参考Android系统等操作系统中AMS与WMS之间交互实现创建窗口的过程和技术原理。
S4105、WMS将视频应用主界面的窗口对应的图层信息发送至Surface Flinger。
其中,视频应用主界面的窗口对应的图层信息可用于创建视频应用主界面的窗口对应的图层,进而能够实现将视频应用主界面的窗口对应的图层,显示在对应的步骤S4104的窗口区域。视频应用主界面的窗口对应的图层信息携带有视频应用的包名,具体可以包括:视频应用主界面的窗口名,视频应用主界面的窗口对应的图层名,视频应用主界面的窗口对应的图层大小,以及视频应用主界面的窗口对应的图层位置等。示例性的,视频应用的包名可以携带于图层名中。
其中,视频应用主界面的窗口对应的图层信息可以是包含了多个图层的图层信息,具体根据视频应用主界面所需要创建的图层数量而定,本申请对此不作限制。
示例性的,视频应用主界面的窗口对应的图层信息可以从视频应用的安装信息中获取。例如,AMS可以通过视频应用的包名,确定出视频应用的安装信息,从视频应用的安装信息中获取图层信息,再将图层信息发送是WMS,WMS获取到图层信息之后,再发送至Surface Flinger。
示例性的,执行步骤S4105的过程可以是:WMS可以调用Surface Flinger,通过下发视频应用主界面的窗口对应的图层信息至Surface Flinger,以申请在Surface Flinger中创建视频应用主界面的窗口对应的图层。
S4106、Surface Flinger根据视频应用主界面的窗口对应的图层信息,创建视频应用主界面的窗口对应的图层。
由于视频应用主界面的窗口对应的图层信息中具有视频应用主界面的窗口名,窗口对应的图层名,图层大小,图层位置等能够实现图层创建的信息,进而Surface Flinger可以根据视频应用主界面的窗口对应的图层信息,创建出视频应用主界面窗口对应的图层。
示例性,步骤S4105至步骤S4106的过程中,WMS和Surface Flinger之间的交互通过ViewRootImpl等函数实现图层创建。
具体的,步骤S4105至步骤S4106中所涉及的WMS和Surface Flinger之间交互通信,实现在Surface Flinger中创建视频应用主界面的窗口对应的图层的过程和技术原理,可以参考Android系统中WMS与Surface Flinger之间交互实现创建图层的过程和技术原理。
S4107、WMS向帧率决策模块发送视频应用的包名。
其中,步骤S4107可以是在WMS完成窗口创建,即步骤S4104之后执行。由于步骤S4103中,WMS接收到的窗口信息中携带有视频应用的包名,因此在当前处于启动视频应用的阶段,WMS可以将步骤S4103中获取到的包名,发送至帧率决策模块,进而可使得帧率决策模块确定出当前需要启动的是视频应用。帧率决策模块可以根据视频应用的包名,确定出与视频应用对应的预设刷新率。
需要说明的是,WMS向帧率决策模块发送视频应用的包名的具体实现方式很多,只需实现让帧率决策模块可通过WMS下发的包名,确定出视频应用对应的预设刷新率即可,具体发送视频应用的包名的方式本申请实施例不做限制。
S4108、帧率决策模块根据视频应用的包名,确定出视频应用对应的预设刷新率。
在一些实施例中,电子设备中预先存储有包名与预设刷新率之间的对应关系。因此帧率决策模块可以通过视频应用的包名,查找到视频应用对应的预设刷新率。
S4109、帧率决策模块将视频应用对应的预设刷新率发送至Surface Flinger。
由于当前启动了视频应用,因此在显示过程中所使用的目标刷新率为视频应用对应的预设刷新率,帧率决策模块通过将视频应用对应的刷新率下发给Surface Flinger的方式,可控制Surface Flinger按照预设刷新率来合成需要显示的图像。
需要说明的是,在一些实施例中,也可以不执行步骤S4107和步骤S4108。例如,若所有应用的预设刷新率均是一致的时候,例如电子设备默认使用60HZ的刷新率,那么就不再需要执行步骤S4107和步骤S4108,而步骤S4109时则将所有应用默认使用的预设刷新率作为目标刷新率,下发给Surface Flinger即可。
S4110、Surface Flinger按照预设刷新率对应的垂直同步(Vsync,VerticalSync)信号的节奏,触发视频应用对视频应用主界面的的窗口对应的图层进行绘制渲染。
其中,Vsync信号用于控制显示画面的绘制渲染、图层合成、送显的节奏。步骤S4110中提及的预设刷新率为视频应用对应的预设刷新率,Surface Flinger按照预设刷新率对应的Vsync信号的节奏,触发视频应用启动对视频应用主界面的窗口对应的图层进行绘制渲染。Vsync信号的周期与预设刷新率相对应。预设刷新率对应的Vsync信号可以控制显示屏按照预设刷新率进行刷新显示。
具体的,Surface Flinger按照Vsync信号的节奏触发绘制渲染的过程可以参考Android系统中Surface Flinger对触发绘制渲染的过程和技术原理的相关内容。
S4111、视频应用按照预设刷新率对应的Vsync信号的节奏,调用绘制渲染模块对视频应用主界面的窗口对应的图层进行绘制渲染,得到绘制渲染后的主界面图像数据。
其中,绘制渲染后的主界面图像数据,指的是绘制渲染后的视频应用主界面的图像数据,也可以理解为是对视频应用主界面的窗口对应的图层进行绘制渲染之后,所得到的图像数据。
示例性的,执行步骤S4111的过程可以是,视频应用按照预设刷新率对应的Vsync信号的节奏,调用绘制渲染模块的绘制渲染线程,实现让绘制渲染模块对视频应用主界面的图层进行绘制渲染,进而绘制渲染模块可以得到绘制渲染后的主界面图像数据。
示例性的,绘制渲染模块进行绘制渲染的过程中,可以通过调用Open GL ES、Skia等函数对视频应用主界面的窗口对应的图层进行绘制渲染。
具体的,视频应用和绘制渲染模块之间交互实现绘制渲染图层的过程和技术原理,可以参考Android系统中对图层进行绘制渲染的过程和技术原理。
S4112、绘制渲染模块按照预设刷新率对应的Vsync信号的节奏,将绘制渲染后的主界面图像数据,发送至Surface Flinger。
步骤S4111中绘制渲染模块所得到的绘制渲染后的主界面图像数据,可以按照预设刷新率对应的Vsync信号的节奏,发送至Surface Flinger中。而具体的绘制渲染模块按照Vsync信号的节奏,将绘制渲染后的主界面图像数据发送至Surface Flinger的过程中,可以由其他模块共同配合实现。本申请实施例对于步骤S4112的具体实现过程不作限制。
S4113、Surface Flinger按照视频应用对应的预设刷新率,使用绘制渲染后的主界面图像数据进行图层合成,并将合成后的主界面图像数据送显。
Surface Flinger按照视频应用对应的预设刷新率,对每一帧的绘制渲染后的主界面图像数据进行图层合成,并将合成后的主界面数据送至显示屏(例如LCD)进行显示,以使得电子设备的显示屏上可以按照目标刷新率,刷新显示视频应用主界面。示例性的,Surface Flinger按照预设刷新率对应的Vsync信号的节奏,对每一帧的绘制渲染后的主界面图像数据进行图层合成,并将合成后的主界面数据,按照Vsync信号的节奏将合成后的主界面数据送至显示屏(例如LCD)进行显示,进而实现显示屏按照视频应用对应的预设刷新率,刷新显示视频应用主界面。
举例说明,如图1中的(2)所示,按照60HZ的预设刷新率,显示视频应用的主界面,主界面上显示有可播放的多个视频。
示例性的,Surface Flinger得到绘制渲染后的主界面图像数据后,可以通过HWC实现图层合成,例如Surface Flinger将目标刷新率下发至HWC,然后将绘制渲染后的主界面图像数据发送给HWC,以使得HWC按照目标刷新率对绘制渲染后的主界面图像数据进行图层合成,HWC按照目标刷新率将每一帧合成后的主界面图像数据输出至显示屏显示。
具体的,Surface Flinger将合成后的主界面图像数据送显的过程可以参考Android系统中Surface Flinger合成图层并送显的相关内容。
通过步骤S4101至步骤S4103,电子设备可在应用启动阶段,实现按照视频应用对应的预设刷新率,显示视频应用主界面,以供用户交互。
参阅图4b,图4b为本申请实施例提出的刷新率的设置方法中任意一个视频应用的视频播放阶段流程的示意图,应用于本申请实施例提出的电子设备,图4b示出的流程可在图4a示出的流程执行完成,显示出视频应用的视频应用主界面之后再开始执行,此时电子设备的前端仅显示有一个视频应用的视频应用主界面,具体的视频播放阶段流程包括以下步骤:
S4201、视频应用响应于用户播放视频的操作,下发启动视频播放Activity的请求至AMS。
其中,视频播放Activity用于实现提供一个视频播放界面,用户可以用来交互完成视频播放任务。
通过图4a的流程启动了视频应用之后,视频应用接收用户播放视频的操作,进而响应于用户播放视频的操作,触发发送启动视频播放Activity的请求至AMS,以使得AMS启动视频播放Activity。
其中,用户播放视频的操作的具体形式有很多,示例性的,用户播放视频的操作可以是在前述图4a的流程中显示的视频应用主界面上点击某个视频的操作,还可以是用户在视频应用主界面上搜索需要观看的视频,然后在搜索结果界面上点击某个视频的操作,也可以是用户语音输入需要播放的视频的操作。
举例说明,如图4c中的(1)所示,在视频应用主界面上,用户点击视频1,进而可触发视频应用下发启动视频播放Activity的请求至AMS。其中,图4c的(1)的具体描述也可以参考前述对图1的(2)的相关描述,此处不再赘述。
需要说明的是,从显示视频应用主界面到视频应用接收了用户的播放视频操作的过程有很多种具体实现形式,本申请实施例对此不作限制。
在一些实施例中,启动视频播放Activity的请求中携带有视频应用的包名和视频播放Activity的视频播放界面名。其中,视频播放界面名能够用于说明需要播放的视频所在界面的名称。例如参阅图4c的(1),用户点击视频1,进而触发视频应用发送启动视频播放Activity的请求,该启动视频播放Activity的请求中则可以携带有视频1的播放界面名。
在一些实施例中,启动视频播放Activity的请求中可以携带有除视频应用的包名之外的其他类型的视频应用的标识,例如可以是视频应用的路径等,本申请实施例对于视频应用的标识的具体形式不作限制。在另一些实施例中,动视频播放Activity的请求中可以携带有除视频播放界面名之外的其他类型的视频播放界面的标识,本申请实施例对此也不作限制。
在另一些实施例中,启动视频播放Activity的请求中还可以携带有其他的关于视频播放Activity的信息,本申请实施例对于启动视频播放Activity的请求中的具体信息不作限制。
需要说明的是,在另一些实施例中,也可以是视频应用或者其他应用自动触发视频应用下发启动视频播放Activity的请求至AMS,具体触发下发启动视频播放Activity的请求至AMS的方式的不同,并不影响本申请实施例的实现。
具体的,步骤S4201的执行过程和原理可以参考Android系统中在应用中启动视频播放过程中涉及Activity的相关技术原理。
S4202、AMS启动视频播放Activity。
在一些实施例中,执行步骤S4202的过程为:AMS可以响应于启动视频播放Activity的请求,根据启动视频播放Activity的请求中所携带的视频应用的包名和视频播放界面名,创建视频播放Activity,并启动创建了的视频播放Activity。
具体的,AMS启动视频播放Activity的执行过程和原理可以参考Android系统中AMS启动Activity的相关技术原理。
S4203、AMS发送视频播放界面对应的窗口信息至WMS。
其中,视频播放界面为用于显示视频画面的应用界面。AMS启动视频播放Activity后,需要完成视频播放的任务,为用户提供视频应用的视频播放界面,以供用户与视频应用播放界面的控件进行交互,满足用户的视频播放需求。视频播放界面对应的窗口信息可用于创建视频播放界面对应的窗口。
示例性的,视频播放界面对应的窗口信息可以从视频应用的安装信息中获取。例如,AMS可以根据视频应用的包名,确定出视频应用的安装信息,进而从视频应用的安装信息中获取视频播放界面对应的窗口信息。示例性的,可以是AMS与视频应用之间通过多次交互的方式,确定出视频播放界面对应的窗口信息。
视频播放界面对应的窗口信息可以携带有视频应用的包名,具体可以包括有:视频播放界面的窗口属性信息、窗口层级信息等。例如,窗口属性信息可以是窗口名、窗口位置、窗口大小等。而视频播放界面对应的窗口层级信息用于说明将视频播放界面对应的窗口置于显示界面的最顶层。AMS确定出视频播放界面对应的窗口信息后,即可将该窗口信息发送给WMS,以供WMS创建视频播放界面对应的窗口。
其中,AMS发送视频播放界面对应的窗口信息至WMS的过程和原理,可以参考前述图4a中步骤S4103的执行过程和原理,区别点在于步骤S4103需AMS发送的窗口信息与视频应用主界面相关,而步骤S4203中AMS发送的窗口信息与视频播放界面相关。
S4204、WMS根据视频播放界面对应的窗口信息,创建视频播放界面的窗口。
由于视频播放界面对应的窗口信息中,包括有视频播放界面的窗口名、窗口大小、窗口位置等窗口的属性信息,以及窗口的层级信息等,因此WMS可以根据视频播放界面对应的窗口信息,确定出所需创建的视频播放界面的窗口的大小、位置、层级等,进而可实现视频播放界面的窗口创建。
具体的,步骤S4204的执行过程和原理可以参考前述图4a示出的步骤S4104,区别点在于步骤S4104创建的窗口是视频应用主界面的窗口,而步骤S4204所创建的窗口是视频播放界面的窗口。
S4205、WMS发送窗口创建完成的信息至视频应用。
WMS在结束步骤S4204时,会将窗口创建完成的信息发送给视频应用,提示视频应用当前已完成窗口创建,视频应用可触发后续操作。
其中,窗口创建完成的信息可以携带有已完成创建的窗口的标识信息,例如窗口名等,本申请实施例对于窗口创建完成的信息的具体形式不作限制。
S4206、视频应用调用Media Codec进行视频解码。
示例性的,可以是视频应用在接收到步骤S4205所发送的窗口创建完成的信息之后,触发执行步骤S4206。
具体的,视频应用调用Media Codec,对步骤S4201中用户所需播放的视频进行视频解码。例如图4c的(1)所示,用户点击了视频1,因此视频应用会调用Media Codec对视频1进行视频解码。其中,图4c的(1)的相关内容可以参考前述对图1的(2)的描述,此处不再赘述。
具体的,步骤S4206的执行过程和原理可以参考Android系统中视频解码过程的相关技术原理。
S4207、Media Codec将视频源帧率发送给帧率决策模块。
其中,视频源帧率指的是用户所需播放的视频的视频源帧率。由于步骤S4206中,Media Codec在视频应用的调用下,对用户所需播放的视频进行了视频解码,因此MediaCodec通过用户所需播放的视频的视频源,获取该视频的视频源帧率。在另一些实施例中,Media Codec还可以获取视频的分辨率等视频源的信息。
其中,用户所需播放视频的视频源帧率能够说明用户所需播放的视频的需求刷新率,进而可为帧率决策模块进行刷新率决策时提供参考,具体可参阅后续的步骤S4229的描述。
S4208、WMS将视频播放界面的窗口对应的图层信息发送至Surface Flinger。
其中,视频播放界面的窗口对应的图层信息中携带有视频应用的包名。视频播放界面的窗口对应的图层信息可用于创建视频播放界面的图层,进而能够实现将视频播放界面的图层显示在对应的步骤S4204的窗口区域。视频播放界面对应的图层信息具体可以包括:视频播放界面的窗口对应的图层名、图层大小、图层位置以及窗口名等。示例性的,视频应用的包名可以携带在图层名中。
具体的,步骤S4208的执行过程和原理,可以参考前述图4a提及的步骤S4105的过程和原理,区别点在于步骤S4108发送的图层信息与视频应用主界面相关,而步骤S4208中发送的图层信息与视频播放界面相关。
S4209、Surface Flinger根据视频播放界面的窗口对应的图层信息,创建视频播放界面的窗口对应的图层。
具体的,步骤S4209的执行过程和原理,可以参考前述图4a提及的步骤S4106的过程和原理,区别点在于步骤S4109创建的图层与视频应用主界面相关,而步骤S4206所创建的图层与视频播放界面相关。
需要说明的是,S4203、S4204、S4208以及S4209可以是重复执行的步骤。示例性的,在执行完前述图4a的流程之后,显示屏按照预设刷新率刷新显示屏,因此当需要显示新的一帧的视频播放界面时,就需要通过S4203、S4204、S4208以及S4209,重新更新窗口、图层等信息。
示例性的,在执行步骤S4209之后,Surface Flinger则按照视频应用对应的预设刷新率所对应的Vsync信号节奏,触发视频应用对视频播放界面的窗口对应的图层进行绘制渲染,然后视频应用按照预设刷新率对应的Vsync信号节奏,调用绘制渲染模块对视频播放界面的窗口对应的图层进行绘制渲染,绘制渲染模块按照预设刷新率所对应的Vsync信号节奏,发送绘制渲染后的视频播放界面的图像数据至Surface Flinger,SurfaceFlinger即可按照视频应用对应的预设刷新率,使用绘制渲染后的视频播放界面的图像数据进行图层合成,并将合成后的视频播放界面的图像数据送显,实现令显示屏按照视频应用对应的预设刷新率刷新视频播放界面。具体可以参阅图4a示出的步骤S4110至步骤S4113的相关内容,区别点在于显示的界面不同。
需要说明的是,按照视频应用对应的预设刷新率,刷新显示视频播放界面的步骤,与后续描述的步骤S4211至步骤S4224的步骤的执行过程互不干扰,即本申请对步骤S4211与按照视频应用对应的预设刷新率,刷新显示视频播放界面的步骤的执行先后顺序不作限制,在帧率决策模块未发送新的刷新率至Surface Flinger之前,Surface Flinger可以按照视频应用对应的预设刷新率刷新显示视频播放界面,直至通过步骤S4211至步骤S4224的步骤,帧率决策模块所发送的刷新率发生变更,再重新以新的刷新率去刷新视频播放界面。
S4210、Surface Flinger根据图层信息中的包名,确定出视频应用是否在播放白名单中。
其中,播放白名单可以理解为是具有视频播放权限的应用的名单。步骤S4210中的图层信息可以理解为是视频播放界面的窗口对应的图层信息。由前述对步骤S4208的描述可知,图层信息中携带有视频应用的包名,因此可以通过视频应用的包名,确定出视频应用是否在播放白名单中。
示例性的,视频播放界面对应的图层信息中携带的图层名中可获取到视频应用的包名。例如,图层名的具体格式可以为:包名/图层特有的名称,进而能从图层信息中得到包名。举例说明,某个视频应用的视频播放界面的图层名为“xxx.xxxx.xx/com.xx.bangumi.ui.page.detail.BangumiDetailActivityV3#0SurfaceView-xxx.xxxx.xx/com.bi[...]age.detail.BangumiDetailActivityV3#0”,由图层名可知,该视频应用的包名为“xxx.xxxx.xx”。
示例性的,步骤S4210的执行过程为:Surface Flinger从播放白名单中查找是否存在有视频应用的包名,若存在有视频应用的包名,则确定出视频应用在播放白名单中,若在播放白名单中查找不到视频应用的包名,则说明视频应用不在播放白名单中。
若确定出视频应用在播放白名单中,则认为视频应用具有播放权限,执行步骤S4211,若确定出视频应用不在播放白名单中,则认为视频应用不具有播放权限,则结束流程,即不在显示屏上显示视频播放界面。在另一些实施例中,还可以在显示屏上显示用于提醒用户该视频应用不具有播放权限的提示信息。
在另一些实施例中,也可以不执行步骤S4210,即执行步骤S4209之后直接执行步骤S4211。
S4211、Surface Flinger根据视频播放界面的窗口对应的图层信息,确定是否为视频播放场景。
其中,视频播放界面的窗口对应的图层信息中具有能够用于说明是否为视频播放场景的图层特征信息。确定是否为视频播放场景可以理解为是确定视频应用当前所处的场景是否为视频播放场景。视频播放场景指的是应用播放视频的场景。
示例性的,图层特征信息可以为视频图层(SurfaceView),若图层信息中具有SurfaceView,则说明处于视频播放场景。举例说明,若图层信息中的图层名中存在有视频图层(SurfaceView)的字段,即可确定出为视频播放场景。例如某个视频应用的视频播放界面的图层名为“xxx.xxxx.xx/com.xx.bangumi.ui.page.detail.BangumiDetailActivityV3#0SurfaceView-xxx.xxxx.xx/com.bi[...]age.detail.BangumiDetailActivityV3#0”,当中携带有“SurfaceView”字段,因此确定出该视频应用当前处于视频播放场景,用户具有视频播放需求。
若步骤S4211确定出为视频播放场景,则执行步骤S4212,开始进行弹幕统计,进一步确定当前是否为视频播放场景下的弹幕场景,若步骤S4211确定出不为视频播放场景,则结束流程,即不再让帧率决策模块重新设置刷新率,显示屏继续按照图4a流程中所提及的视频应用对应的预设刷新率,刷新显示画面。
需要说明的是,当Surface Flinger在步骤S4211中确定出当前为视频播放场景时,就不会再重复进行视频播放场景的确定。示例性的,当步骤S4211确定为视频播放场景之后,若检测到前述提及的步骤S4209所创建的图层销毁时,则确定出当前不再处于视频播放场景,进而可以发送一个非视频播放场景的信息至帧率决策模块,以通知帧率决策模块确定出不处于视频播放场景,将目标刷新率重新设置为视频应用对应的预设刷新率。
S4212、Surface Flinger确定开启弹幕统计。
由于Surface Flinger通过步骤S4211已确定出当前为视频播放场景,因此可以确定开启弹幕统计,以使得绘制渲染模块在进行弹幕绘制时可以开始统计弹幕。通过开启弹幕统计,Surface Flinger可以进一步确定当前是否为弹幕场景,以及可根据弹幕统计的数据确定弹幕场景下的弹幕档位。具体的,当Surface Flinger确定开启弹幕统计之后,绘制渲染模块即可在绘制弹幕时,进行弹幕统计。而在Surface Flinger未确定开启弹幕统计时,绘制渲染模块则不进行弹幕统计。具体可参考后续的步骤S4213至步骤S4221的相关内容,此处不再赘述。
示例性的,Surface Flinger执行步骤S4212的方式可以为,Surface Flinger将弹幕统计的状态设置为开启状态。例如,修改弹幕统计的状态参数为开启状态对应的参数。其中,弹幕统计状态的存储位置本申请实施例不做限制。
在另一些实施例中,执行步骤S4212的方式还可以是:Surface Flinger向绘制渲染模块发送开启弹幕统计的信息,以控制绘制渲染模块开启弹幕统计。
S4213、Surface Flinger确定预设时长内是否接收到弹幕绘制信息。
其中,弹幕绘制信息为绘制渲染模块绘制弹幕的相关信息,示例性的,当前一帧的弹幕绘制信息包括:当前一帧的弹幕条数、当前一帧的时间戳以及当前一帧的绘制渲染后的弹幕数据。当前一帧的弹幕绘制信息可以理解为是当前一帧显示画面的弹幕绘制信息。
具体的,若步骤S4213确定出预设时长内接收到弹幕绘制信息,则认为视频应用处于弹幕场景,如果S4213确定出预设时长内未接收到弹幕绘制信息,则认为视频应用不处于弹幕场景,只处于步骤S4211中确定出的视频场景,即可以理解为当前视频应用在视频播放过程中不需要显示弹幕,执行步骤S4228。其中,弹幕场景可以理解为是视频播放过程中显示有弹幕的场景。
具体的,Surface Flinger通过步骤S4211确定当前处于视频场景之后,在步骤S4212中开启了弹幕统计。因此,若当前处于弹幕场景,绘制渲染模块就会进行弹幕统计和弹幕绘制,进而会得到当前一帧的弹幕绘制信息发送至Surface Flinger。示例性的,当视频应用处于弹幕场景时,视频应用会按照视频应用的预设刷新率对应的Vsync信号的节奏,调用绘制渲染模块进行弹幕的绘制渲染,并对绘制的弹幕条数进行统计,进而绘制渲染模块会按照Vsync信号的节奏向Surface Flinger发送当前一帧的弹幕绘制信息。因此,弹幕场景下,Surface Flinger会按照Vsync信号的节奏接收到弹幕绘制信息。
当Surface Flinger在Vsync信号的节奏下,连续多帧都没有收到弹幕绘制信息,进而确定出预设时长内均没有收到弹幕绘制信息,即可以认为当前不处于弹幕场景,仅处于视频播放场景。示例性的,当Surface Flinger最近一次接收到弹幕绘制信息的时间戳与当前一帧的时间戳之间的时间差,大于或等于预设时长,则确定出在预设时长内均没有收到弹幕绘制信息,认为当前不处于弹幕场景,仅处于视频播放场景。
而Surface Flinger如果在预设时长内有接收到弹幕绘制信息,则可以认为当前处于弹幕场景。示例性的,Surface Flinger最新一次接收到弹幕绘制信息的时间戳与当前的时间戳之间的时间差,小于预设时长,就可以确定出在预设时长内有接收到弹幕绘制信息,当前处于弹幕场景。
示例性的,预设时长可以根据实际应用场景、经验等进行设定,例如,可以将预设时长设定为5秒,预设时长的具体设定方式本申请实施例对此不作限制。
需要说明的是,S4213可以是一个重复执行的步骤。例如,Surface Flinger可以根据当前的预设刷新率对应的Vsync信号的节奏,确认预设时长内是否接收到弹幕绘制信息,以实现实时确认当前是否处于弹幕场景的目的。
在另一些实施例中,步骤S4211确定出为视频播放场景之后,在执行步骤S4213之前,还可以直接发送视频播放场景信息至帧率决策模块,由帧率决策模块根据视频播放场景信息以及视频源帧率,确定出目标刷新率,然后将目标刷新率发送至Surface Flinger,由Surface Flinger按照目标刷新率控制视频播放界面的显示,具体过程和执行原理可以参考后续对步骤S4228至步骤S4231,此处不再赘述。Surface Flinger控制显示屏按照视频播放场景信息所确定出的目标刷新率,刷新显示画面之后,再执行步骤S4213,若确定出在预设时长内未接收到弹幕绘制信息,则可以直接结束流程,不需要再次执行步骤S4228至步骤S4231。
S4214、视频应用按照Vsync信号的节奏,调用绘制渲染模块绘制弹幕。
视频应用按照当前的实际刷新率对应的Vsync信号的节奏,调用绘制渲染模块绘制弹幕。示例性,由前述图4a的描述可知,启动视频应用之后,显示屏按照视频应用对应的预设刷新率在刷新显示画面。因此,当视频应用需要绘制弹幕时,可以按照当前的预设刷新率对应的Vsync信号的节奏,调用绘制渲染模块进行弹幕绘制。其中,视频应用所绘制的弹幕可以理解为是用户所需播放的视频的弹幕。
示例性的,步骤S4214可以是在视频应用接收到用户点击开启弹幕之后,触发步骤S4213开始执行,也可以是在前述步骤S4201中接收到用户播放视频的操作之后,自动触发开启需播放视频的弹幕,进而开始执行步骤S4214。示例性的,如图4c的(2)所示,用户点击弹幕开关,即可触发视频应用执行步骤S4214。
示例性的,视频应用调用绘制渲染模块进行绘制弹幕时,绘制渲染模块可以生成文本视图(Textview)、基本画布(basecanvas),采用drawtext、Skia、HWUI、OPEN GL ES等函数完成弹幕绘制。示例性的,针对绘制每一帧的弹幕绘制过程,可以是每需要绘制一条弹幕,视频应用就调用一次绘制渲染模块进行弹幕绘制。可以理解为在绘制一帧画面的弹幕的过程中,步骤S4214中可以根据实际的弹幕绘制需求重复执行多次。绘制渲染模块绘制渲染弹幕,并将弹幕显示到电子设备的显示屏的过程可以由多个模块配合执行完成,具体可以参考Android系统中的弹幕绘制渲染的过程和技术原理。
需要说明的是,步骤S4214当且仅当视频应用需要绘制弹幕时,才调用绘制渲染模块进行弹幕绘制,因此如果视频应用不需要绘制弹幕时,例如用户关闭弹幕开关,或者视频本身无任何弹幕,则不会执行步骤S4214,进而也不会执行步骤S4215至S4218。因此步骤S4214并不是在显示每一帧画面时都必须执行的步骤,当且仅当一帧的画面具有弹幕绘制需求时才出发执行步骤S4214,而具体触发步骤S4214的方式的不同不影响本申请实施例的实现。
S4215、绘制渲染模块确定是否开启弹幕统计。
绘制渲染模块若确定出开启弹幕统计,则说明当前具有统计弹幕的需求,因此执行步骤S4215,绘制渲染模块若确定出不开启弹幕统计,则说明当前不具有统计弹幕的需求,因此可结束流程,即不进行弹幕统计,不再执行后续的步骤S4216至步骤S4218。
示例性的,绘制渲染模块通过获取弹幕统计的状态,确定是否开启弹幕统计。若弹幕统计为开启状态,则开启弹幕统计,若弹幕统计不为开启状态,则不开启弹幕统计。由于前述的步骤S4212中,Surface Flinger确定开启弹幕统计,将弹幕统计的状态确定为开启状态,因此绘制渲染模块在执行步骤S4215时获取到的弹幕统计的状态为开启状态,确定出开启弹幕统计,执行步骤S4216。
在一些实施例中,弹幕统计的状态可以设置于Surface Flinger中,绘制渲染模块可通过从Surface Flinger中获取弹幕统计的状态,来确定是否开启弹幕统计。在另一些实施例中,也可以是当绘制渲染模块接收到开启弹幕统计的信息时,确定出开启弹幕统计,当绘制渲染模块未接收到弹幕统计的信息时,则不开启弹幕统计。
在一些实施例中,绘制渲染模块确定开启弹幕统计,可以理解为是绘制渲染模块确定开启统计当前绘制的弹幕。视频应用每调用一次绘制渲染模块进行弹幕绘制,绘制渲染模块就被触发开启统计当前被调用进行绘制的弹幕。
在一些实施例中,步骤S4215中若确定出开启弹幕统计,则可以初始化启动弹幕计数器,令弹幕计数器处于可进行计数工作的状态。可选地,弹幕计数器可以仅初始化启动一次,在当前一帧内,若绘制渲染模块多次被调用,相应的多次确定开启弹幕统计,则在首次确定开启弹幕统计时进行初始化启动弹幕计数器后,由于弹幕计数器已处于启动状态,后续可不再初始化启动弹幕计数器。示例性的弹幕计数器在未被绘制渲染模块控制初始化启动之前,不对弹幕进行统计,仅在被初始化启动之后才开始统计绘制渲染模块绘制的弹幕。示例性的,绘制渲染模块初始化启动弹幕计数器的方式可以为:绘制渲染模块可以发送启动信号给弹幕计数器,弹幕计数器接收到启动信号后,开始统计绘制渲染模块所绘制的弹幕。弹幕计数器可以在一帧画面的弹幕绘制结束之后,进入低功耗状态或者休眠状态,以节省功耗,直到下一帧需要进行弹幕时,绘制渲染模块再次在确定开启弹幕统计时初始化启动弹幕计数器。
S4216、绘制渲染模块控制弹幕计数器计数加一。
由于步骤S4215中绘制渲染模块已确定开启弹幕统计,因此触发绘制渲染模块控制弹幕计数器对当前绘制的弹幕进行计数统计,以使得弹幕计数器计数加一,完成对当前绘制渲染模块所绘制的弹幕的条数进行计数统计。由于视频应用每需要绘制一条弹幕,均会调用一次绘制渲染模块进行弹幕绘制,进而触发绘制渲染模块执行步骤S4215至S4217。因此,弹幕计数器能够统计到当前一帧中绘制的弹幕条数。
在另一些实施例中,绘制渲染模块还可以控制弹幕计数器统计一帧画面中需要绘制的弹幕字符数,即控制弹幕计数器计数累加上当前被调用绘制的一条弹幕的字符数。需要说明的是,弹幕计数器可统计的弹幕相关的数据可以有很多方式,包括但不限于本申请所提出的内容。
示例性的,在一些实施例中,为了提高弹幕计数器统计的弹幕数据的精度,绘制渲染模块可以控制弹幕计数器在特定区域进行弹幕数据的统计,即仅统计在特定区域内绘制的弹幕。举例说明,如图4d所示,在图4d示出的视频播放界面上,为了避免区域10和区域30部分的文字被当成弹幕进行统计,绘制渲染模块可以控制弹幕计数器仅针对特定区域20内的文字进行统计,进而可以摒除非弹幕文字的干扰,统计得到准确的弹幕条数、弹幕字符数等弹幕数据。
S4217、弹幕计数器计数加一。
具体的,针对每一帧画面,弹幕计数器由零开始进行弹幕条数的统计,视频应用每执行步骤S4214,调用绘制渲染模块绘制一条弹幕,绘制渲染模块就会在步骤S4215中确定开启弹幕统计,控制弹幕计数器进行计数加一,直至当前一帧画面中需要绘制的弹幕条数绘制完毕,才结束统计。即在当前一帧画面中,若需要绘制多条弹幕,就会重复执行多次步骤S4214至步骤S4217。
在另一些实施例中,弹幕计数器还可以在绘制渲染模块的控制下统计一帧画面中需要绘制的弹幕字符数。需要说明的是,弹幕计数器可统计的弹幕相关的数据可以有很多方式,包括但不限于本申请所提出的内容。
示例性的,在一些实施例中,当弹幕计数器完成当前一帧画面的弹幕条数的统计后,可以将弹幕计数器的计数清零,进而可在之后需要统计某一帧画面的弹幕条数时,重新从零开始计数。
需要说明的是,本申请实施例中示出的步骤S4214至步骤S4217仅仅是示例性的对弹幕条数进行统计的过程,绘制渲染模块实现当前一帧的弹幕条数、弹幕字符数等弹幕数据的统计方式有很多,包括但不限于本申请实施例的内容。
S4218、绘制渲染模块按照Vsync信号的节奏,发送当前一帧的弹幕绘制信息至Surface Flinger。
绘制渲染模块按照当前的实际刷新率对应的Vsync信号的节奏,发送当前一帧的弹幕绘制信息至Surface Flinger。示例性,执行完图4a的流程之后,电子设备当前的实际刷新率为视频应用对应的预设刷新率,因此执行步骤S4218时,绘制渲染模块可以按照预设刷新率对应的Vsync信号的节奏,发送当前一帧的弹幕绘制信息至Surface Flinger。
其中,当前一帧的弹幕绘制信息包括:当前一帧绘制的弹幕条数、当前一帧的时间戳以及当前一帧的绘制渲染后的弹幕数据。当前一帧绘制的弹幕条数为弹幕计数器所统计的当前的一帧画面内需要绘制的弹幕条数,当前一帧的时间戳为当前一帧画面对应的时间戳,绘制渲染后的弹幕数据也为当前一帧画面对应的绘制渲染后的弹幕数据。示例性的,弹幕绘制信息中还可以携带有其他信息,例如视频应用的包名,弹幕计数器统计的当前一帧的弹幕字符数等。
绘制渲染模块按照视频应用对应的预设刷新率的Vsync信号的节奏,发送当前一帧的弹幕绘制信息至Surface Flinger。需要说明的是,绘制渲染模块可以不用每一帧都发送弹幕绘制信息至Surface Flinger,若绘制渲染模块在某一帧不进行弹幕绘制,那么绘制渲染模块在该帧也不会执行步骤S4214至步骤S4217,进而该帧就不会产生弹幕绘制信息,不会将弹幕绘制信息发送至Surface Flinger。
示例性的,可以是绘制渲染模块中的弹幕计数器执行步骤S4218。
S4219、Surface Flinger确定在预设时长内收到弹幕绘制信息,存储当前一帧绘制的弹幕条数和时间戳。
示例性的,由于Surface Flinger接收到了步骤S4218发送的当前一帧的弹幕绘制信息,确定出了当前在预设时长内有接收到弹幕绘制信息,认为当前处于弹幕场景。进而可以通过存储当前一帧绘制的弹幕条数和时间戳,以使用存储的弹幕条数和时间戳,来确定弹幕场景下的弹幕档位,具体可参考后续对步骤S4220至步骤S4221的描述,此处不再赘述。
示例性的,可以将弹幕绘制信息中的弹幕条数和时间戳进行对应存储,记录该时间戳下总共绘制的弹幕条数。其中,存储弹幕条数和时间戳的方式有很多,本申请实施例对此不作限制。
示例性的,可以以表格形式存储弹幕条数和时间戳。举例说明,如表一所示,第一帧的时间戳为35257912694ns,绘制渲染模块在第一帧总共绘制了3条弹幕,第二帧的时间戳为35274579360ns,绘制渲染模块在第二帧总共绘制了2条弹幕,第三帧的时间戳为35291246026ns,绘制渲染模块在第三帧总共绘制了7条弹幕……以此类推,记录每一帧绘制的弹幕条数和时间戳。
表一
每一帧绘制的弹幕条数 | 时间戳(ns) |
3 | 35257912694 |
2 | 35274579360 |
7 | 35291246026 |
…… | …… |
其中,弹幕绘制信息中的绘制渲染后的弹幕数据后续用于Surface Flinger合成送显至显示屏,显示弹幕数据的过程可以参见前述图4a中的步骤S4110至步骤S4113的图像数据送显过程的相关描述。
S4220、Surface Flinger根据已存储的弹幕条数、时间戳、以及弹幕老化时间,确定出当前一帧显示的总弹幕条数。
其中,弹幕老化时间指的是弹幕存活时间。针对每一条弹幕,该弹幕从开始在显示屏上显示至即弹幕完全消失的时间,即为该弹幕存活时间,也就是弹幕老化时间。不同场景下,弹幕老化时间可能有所不同。例如未开倍速的视频,弹幕老化时间可能是5秒,开了倍速的视频,弹幕老化时间可能是3秒。
示例性的,弹幕老化时间可以由Surface Flinger通过获取当前视频播放场景下需播放的视频的弹幕老化时间的方式确定。在另一些实施例中,也可以是通过经验、大数据等确定一个预设置的、固定的弹幕老化时间。即弹幕老化时间的确定方式有很多,本申请实施例对此不做限制。
其中,已存储的弹幕条数、时间戳、以及弹幕老化时间可以理解为是已存储的每一帧绘制的弹幕条数、每一帧对应的时间戳、以及弹幕老化时间。
Surface Flinger根据已存储的每一帧的弹幕条数、时间戳、以及弹幕老化时间,可以确定出当前已经老化的(即已经消失在显示屏上的)总弹幕条数,将已存储的总弹幕条数,减去已经老化的总弹幕条数,即可得到当前一帧显示的总弹幕条数。
举例说明,如前述的表一所示,当弹幕老化时间为5秒,当前的一帧为第三帧时,可以计算出已存储的总弹幕条数为:3+2+7=12。而从第一帧到第三帧时间为:35291246026-35257912694=33333332ns,即0.033333332秒,因此第一帧到第三帧所绘制的弹幕均未老化,因此当前一帧显示的总弹幕条数就是12条。
在另一些实施例中,若步骤S4218中,发送给Surface Flinger的弹幕绘制信息中,还包括有当前一帧的弹幕字符总数,那么还可以根据已存储的弹幕字符总数,计算出当前一帧需显示的总弹幕字符数。例如,可以是通过前述描述计算出当前一帧显示的总弹幕条数之后,计算总弹幕条数内的弹幕字符数,进而得到当前一帧需显示的总弹幕字符数。
当需要显示的总弹幕条数越多时,所需求的屏幕刷新率就会越高,刷新率过低容易出现滚动的弹幕卡顿,画面不流畅的现象。而需要显示的总弹幕条数越少时,所需求的刷新率就较低,较低的刷新率即可保障画面流畅显示。
S4221、Surface Flinger根据当前一帧绘制的弹幕条数以及显示的总弹幕条数,确定当前一帧的弹幕档位。
其中,弹幕档位为用于说明显示屏上所显示的显示画面中弹幕密度的量级。当前一帧绘制的弹幕条数越多,显示的总弹幕条数越多,就认为当前需显示弹幕数量越多,弹幕密度大,反之则认为需显示的弹幕数量越少,弹幕密度小。
示例性的,弹幕档位可以包括:高弹幕档位,或低弹幕档位。低弹幕档位用于表示当前一帧画面的弹幕密度低。高弹幕档位用于表示当前一帧的弹幕密度高。执行步骤S4221的过程可以是:当当前一帧绘制的弹幕条数小于第一预设值,且当前一帧显示的总弹幕条数小于第二预设值,则确定出弹幕档位为低弹幕档位。反之,若当前一帧绘制的弹幕条数大于或等于第一预设值,或者,当前一帧显示的总弹幕条数大于或等于第二预设值,则确定出为高弹幕档位。其中,第一预设值和第二预设值可以按照经验等进行设定,例如第一预设值可以设定为2,第二预设值可以设定为5。
在另一些实施例中,弹幕档位除了可以被划分成高弹幕档位或低弹幕档位这两个弹幕档位,也可以被划分成3个,设置3个以上的多个弹幕档位。例如,弹幕档位可以包括:第一弹幕档位,第二弹幕档位,或者第三弹幕档位。第一弹幕档位、第二弹幕档位至第三弹幕档位所表征的弹幕数量逐级递增。
在另一些实施例中,若弹幕绘制信息中还包括有当前一帧的弹幕字符数,则在确定弹幕档位时,还可以根据当前一帧的弹幕字符数,和/或当前一帧需显示的总弹幕字符数来确定。当前一帧需绘制的弹幕字符数越多,需显示的总弹幕字符数越多,就认为当前需显示弹幕数量越多,反之则认为需显示的弹幕数量越少。
在另一些实施例中,为了确保确定出的弹幕档位准确,可以在Surface Flinger确定出视频播放场景之后,在首次执行步骤S4221确定弹幕档位时,先延时预设时长之后再执行。在延时预设时长之后,一些非弹幕的文字,例如图4d中的10区域和30区域内的文字,就会被当做已过了弹幕老化时间的消失弹幕,进而不会干扰到计算一帧显示的总弹幕条数的精确度,进而能够准确确定出弹幕档位。
需要说明的是,根据当前一帧绘制的弹幕条数以及显示的总弹幕条数,确定当前一帧的弹幕档位的具体方式有很多,包括但不限于本申请实施例所提出的内容。
还需要说明的是,前述提及的步骤S4219至步骤S4221可以是实时执行的,示例性的,可以是按照预设刷新率对应的Vsync节奏,通过执行步骤S4219至步骤S4221,确定每一帧的弹幕档位。
S4222、Surface Flinger确定弹幕档位信息发生变更。
其中,弹幕档位信息用于说明弹幕场景下的弹幕档位,具体可以包括弹幕档位。步骤S4222可以理解为是Surface Flinger确定当前一帧的弹幕档位信息是否发生了变更。具体的,可以是将当前一帧的弹幕档位与上一帧确定出的弹幕档位进行比较,若当前一帧的弹幕档位与上一帧的弹幕档位不同,则确定出当前一帧的弹幕档位信息发生变更,若当前一帧确定出的弹幕档位与上一帧的弹幕档位一致,则确定出当前一帧的弹幕档位信息没有发生变更,因此结束流程,继续确定下一帧的弹幕档位信息是否发生变更。
需要说明的是,若步骤S4221为首次确定出的弹幕档位,那么步骤S4222中SurfaceFlinger也会确定出弹幕档位信息发生变更。
当步骤S4222确定弹幕档位信息发生变更时,则会触发执行步骤S4223。若SurfaceFlinger确定弹幕档位信息没有发生变更,则可以不执行步骤S4223。
S4223、Surface Flinger发送弹幕档位信息至帧率决策模块。
其中,弹幕档位信息能够用于说明当前处于弹幕场景以及当前弹幕场景下的弹幕档位,进而帧率决策模块可以根据弹幕档位调整目标刷新率,以满足在当前的弹幕档位下的显示需求。弹幕档位信息除了可以包括当前一帧的弹幕档位,还可以包括其他的信息,例如可以包括视频应用的包名、视频源帧率等信息,本申请实施例对于弹幕档位信息中所包括的信息不做限制。
示例性,步骤S4223可以在当且仅当弹幕档位信息发生变更时再执行,即若没有执行步骤S4222,即当前一帧的弹幕档位信息没有发生变更时,则可以不触发执行步骤S4223。由于Surface Flinger可以仅在确定出弹幕档位信息发生变更时,发送弹幕档位信息给帧率决策模块,而不需要实时发送当前一帧的弹幕档位信息给帧率决策模块,进而可实现节省功耗。
举例说明,若当前一帧确定出的弹幕档位为高弹幕档位,而上一次确定出的弹幕档位为低弹幕档位,那么就需要发送高弹幕档位信息至帧率决策模块。又例如SurfaceFlinger首次确定出弹幕档位时,也需要发送弹幕档位信息至帧率决策模块。
S4224、帧率决策模块根据弹幕档位信息,确定目标刷新率。
帧率决策模块根据切换刷新率信息,可以确定出当前为弹幕场景,以及弹幕场景下的弹幕档位。进而可以根据弹幕档位信息,调整目标刷新率。
示例性的,可以预先针对每一个弹幕档位分配一个对应的预设刷新率。弹幕档位越高,说明需要显示的弹幕数量越多,对应的预设刷新率也就越高。例如,可以将低弹幕档位对应的预设刷新率设置为30HZ,高弹幕档位对应的预设刷新率为40HZ。在一些实施例中,为了使得弹幕档位确定出的刷新率适用于当前的视频应用,可以使得弹幕档位所确定出的刷新率,小于或等于视频应用对应的预设刷新率,且大于或等于视频应用播放视频的视频源帧率。
其中,根据弹幕档位信息,确定目标刷新率的方式有很多,例如还可以通过具体的运算规则,使用弹幕档位信息计算出目标刷新率,本申请实施例对步骤S4224的具体实施方式不做限制。
S4225、帧率决策模块将目标刷新率发送至Surface Flinger。
在一些实施例中,为了节省功耗,可以是在帧率决策模块确定出的目标刷新率发生变更时,再发送目标刷新率至Surface Flinger。
在另一些实施例中,也可以按照预设的频率发送最新确定出的目标刷新率至Surface Flinger。
S4226、Surface Flinger按照目标刷新率,控制视频播放界面的显示。
具体的,Surface Flinger对步骤S4209中所提及的视频播放界面的图层进行绘制渲染,得到绘制渲染后的视频播放界面的图层,然后将绘制渲染后的视频播放界面的图层以及S4218中接收到的绘制渲染后的弹幕数据进行合并图层处理,按照目标刷新率输送至显示屏显示,以使得显示屏按照目标刷新率,刷新显示视频播放界面。
其中,Surface Flinger控制显示视频播放界面的过程可以参考前述图4a中的步骤S4110至步骤S4113中的视频应用主界面的绘制渲染过程,主要区别点在于此时的目标刷新率不再是视频应用对应的预设刷新率,而是根据弹幕档位信息所确定出的刷新率,且显示的不再是视频应用主界面,而是视频播放的弹幕界面。
举例说明,如图4c所示,图4c的(1)中,用户在视频应用主界面点击了视频1,触发执行图4b示出的流程,经过步骤S4201至步骤S4212,可以确定出当前视频应用是处于视频播放场景,且Surface Flinger也确定开启弹幕统计,此时显示界面的画面变为了图4c的(2),由于Surface Flinger在经过预设时长之后,才确定弹幕档位信息,因此刚进入图4c的(2)示出的视频1播放界面时,仍然维持原有的刷新率60HZ,刷新率未变更。继续参阅图4c的(2),用户点击弹幕开关,将弹幕开关开启,触发执行了步骤S4213至步骤S4226,在延时了预设时长之后,确定出了为低弹幕档位,切换为低弹幕档位下的刷新率30HZ,显示界面变化为图4c的(3)。如图4c的(3)所示,显示的弹幕条数为3条,为低弹幕档位的状态,按照30HZ的刷新率刷新显示。
由于本申请实施例中,Surface Flinger能够根据当前一帧绘制的弹幕条数、以及当前一帧显示的总弹幕条数,确定出弹幕档位信息,进而能够向帧率决策模块发送携带有弹幕档位信息的切换刷新率信息,以使得帧率决策模块可以根据弹幕档位调整目标刷新率,进而能够满足弹幕场景下对刷新率的需求,在能够满足画面流畅性要求的同时,又不会造成刷新率多余,浪费电量的情况。
需要说明的是,由于每一帧画面所显示的弹幕都需要不断绘制,因此SurfaceFlinger中存储的弹幕条数以及时间戳也在不断增加,也需要不断执行步骤S4213和步骤S4221,确定出最新一帧的弹幕档位,即可以理解为Surface Flinger在实时确定最新的弹幕档位,在一些实施例中,可以仅在执行了步骤S4222,即弹幕档位确定发生变更时(例如与上一帧确定出的弹幕档位不同时)再弹幕档位信息,以通知帧率决策模块重新调整目标刷新率。
举例说明,如图4c的(3)所示的场景中,视频1上的弹幕条数较少,处于低弹幕档位,但在视频1播放一段时间后,手机中的Surface Flinger通过步骤S4220计算出的显示的弹幕条数增加,需要绘制的弹幕条数也增加,进而步骤S4221所确定出的弹幕档位变为了高弹幕档位,因此再次切换刷新率,当视频1的画面由图4c的(3)变为图4c的(4)之后,可以看出图4c的(4)上的弹幕数量相较于(3)明显增多,此时按照切换后的高弹幕档位下的刷新率40HZ刷新显示画面。
S4227、Surface Flinger确定在预设时长内未接收到弹幕绘制信息。
执行完步骤S4226之后,Surface Flinger一直按照弹幕档位信息所确定出的目标刷新率,刷新显示屏。但在执行步骤S4226的过程中,Surface Flinger也重复执行步骤S4213,即通过确定预设时长内是否接收到弹幕绘制的信息来确定当前是否仍处于弹幕场景。
当Surface Flinger确定出在预设时长内未接收到弹幕绘制信息,即也可以理解为是超过预设时长均未接收到弹幕绘制信息时,Surface Flinger确定出视频应用不再处于弹幕场景,而是变更为了视频播放场景,因此需执行步骤S4228,通知帧率决策模块当前的场景变更为了视频播放场景。
示例性的,若用户关闭弹幕或者视频播放过程中不再有需要显示的弹幕等一系列不再需要绘制弹幕的情况时,Surface Flinger会连续多帧都未接收弹幕绘制信息,因此连续多帧都不会执行步骤S4214至步骤S4218,当Surface Flinger超过预设时长都未接收弹幕绘制信息时,就说明视频应用不再处于弹幕场景,而此时在前述的步骤S4211的判断下仍然处于视频播放场景中,因此会确定出当前仅为视频播放场景,但不处于弹幕场景。
由于Surface Flinger确定出的场景由弹幕场景需要变更为视频播放场景,场景信息发生了变更,因此可以执行步骤S4228,重新发送携带有视频播放场景的切换刷新率信息至帧率决策模块,帧率决策模块重新根据视频播放场景和视频源帧率,确定目标刷新率,以使得电子设备的显示屏按照视频播放场景下的刷新率刷新画面。
S4228、Surface Flinger发送视频播放场景信息至帧率决策模块。
在通过前述的步骤S4213中确定出了只处于视频播放场景不处于弹幕场景的情况下,或者是通过步骤S4227确定出视频应用从原本的弹幕场景变为了视频播放场景的情况下,Surface Flinger通过将视频播放场景信息发送至帧率决策模块的方式,通知帧率决策模块当前的场景为视频播放场景,以使得帧率决策模块可根据视频播放场景信息重新设置目标刷新率。
其中,视频播放场景信息用于说明当前为视频播放场景。Surface Flinger将视频播放场景信息发送至帧率决策模块,以通知帧率决策模块当前为视频播放场景,因此需要帧率决策模块重新设置一个适用于视频播放场景的目标刷新率。其中,视频播放场景信息的具体表现形式本申请实施例不作限制,例如可以使用特定符号或特定字段来表示。
S4229、帧率决策模块根据视频播放场景信息和视频源帧率,确定出目标刷新率。
帧率决策模块接收到视频播放场景信息后,可确定出当前处于视频播放场景。示例性的,在视频播放场景下,帧率决策模块可以根据视频源帧率确定目标刷新率。例如可以将目标刷新率设置为视频源帧率。又例如,可以是根据视频源帧率,使用视频播放场景下的刷新率计算规则,计算出目标刷新率。
在另一些实施例中,若步骤S4207还发送了视频分辨率等除了视频源帧率之外的其他视频源信息,则还可以结合其他的视频源信息确定目标刷新率。本实施例对于根据视频源帧率确定出目标刷新率的具体过程不作限制。
由于视频源帧率能够说明当前需播放的视频对刷新率的需求,因此在视频播放场景下使用视频源帧率来确定出的目标刷新率,可以满足当前视频播放场景的需求。
在另一些实施例中,还可以仅根据视频播放场景信息,确定出目标刷新率。示例性的,可以是预先存储了视频播放场景对应的预设刷新率,当接收到视频播放场景信息时,帧率决策模块则将目标刷新率设置为视频播放场景对应的预设刷新率。例如,视频播放场景对应的预设刷新率48HZ,而视频应用对应的预设刷新率为60HZ,则帧率决策模块在执行步骤S4229的过程中,会将目标刷新率从原本的60HZ,调整为48HZ。
S4230、帧率决策模块将目标刷新率发送至Surface Flinger。
步骤S4230的执行过程和原理可以参考前述提及的步骤S4225,区别点主要在于步骤S4225确定出的目标刷新率与弹幕档位相关,而步骤S4230确定出的刷新率与视频播放场景相关。
S4231、Surface Flinger按照目标刷新率,控制视频播放界面的显示。
其中,步骤S4231的执行过程和原理可以参考前述对步骤S4226的描述,主要区别点在于步骤S4226中的目标刷新率根据弹幕档位确定,而步骤S4231的目标刷新率根据视频播放场景确定,此处不再赘述。
具体的,举例说明,如图4c的(4)所示,视频1的播放界面上呈现出高弹幕档位的场景,此时当用户选择关闭弹幕开关时,则会触发执行步骤S4227至步骤S4231,确定出当前不处于弹幕场景,只处于视频播放场景,进而完成刷新率切换,显示屏显示的画面变化为图4c的(5),此时弹幕开关关闭,视频1的播放界面不再有弹幕,手机按照视频播放场景下的刷新率24HZ刷新显示画面。
在另一些实施例中,若视频应用不再进行视频播放时,则Surface Flinger会检测到步骤S4209中的图层销毁,进而Surface Flinger会确定出不处于视频播放场景,此时确定出的场景信息再次发生变更,因此可以再次发送视频播放场景信息至帧率决策模块,帧率决策模块即可再次调整目标刷新率,例如将目标刷新率设置为视频应用对应的预设刷新率。示例性的,Surface Flinger确定出不处于视频播放场景时,还可以确定关闭弹幕统计,进而绘制渲染模块就会停止弹幕统计。
举例说明,如图4c的(5)所示,当用户点击“←”图标,关闭视频1的播放界面时,手机可确定出不处于视频播放场景,由于场景变更,因此会再次切换刷新率。具体的,显示画面变为图4c的(6),视频应用回到了视频应用主界面,切换成了视频应用对应的预设刷新率60HZ进行刷新画面。
由于本申请实施例中,Surface Flinger能够根据视频播放界面对应的图层信息,和/或调用方信息,确定出视频应用是否处于视频播放场景,进而能够在视频应用处于视频播放场景时,通过向帧率决策模块发送切换刷新率信息,以使得帧率决策模块重新调整目标刷新率,根据视频播放场景所确定出的目标刷新率能够满足电子设备的性能需求,既能够满足视频播放的显示需求,又不会造成刷新率多余,浪费电量的情况。
参阅图4e,图4e为本申请另一实施例提出的刷新率的设置方法中任意一个视频应用的视频播放阶段流程的示意图,应用于本申请实施例提出的电子设备,图4e示出的流程可在图4a示出的流程执行完成,显示出视频应用的视频应用主界面之后再开始执行,此时电子设备的前端仅显示有一个视频应用的视频应用主界面,具体的视频播放阶段流程包括以下步骤:
S4301、视频应用响应于用户播放视频的操作,下发启动视频播放Activity的请求至AMS。
其中,步骤S4301的执行过程和原理可以参考前述图4b示出的步骤S4201,此处不再赘述。
S4302、AMS启动视频播放Activity。
其中,步骤S4302的执行过程和原理可以参考前述图4b示出的步骤S4202,此处不再赘述。
S4303、AMS发送视频播放界面对应的窗口信息至WMS。
其中,步骤S4303的执行过程和原理可以参考前述图4b示出的步骤S4203,此处不再赘述。
S4304、WMS根据视频播放界面对应的窗口信息,创建视频播放界面的窗口。
其中,步骤S4304的执行过程和原理可以参考前述图4b示出的步骤S4204,此处不再赘述。
S4305、WMS发送窗口创建完成的信息至视频应用。
其中,步骤S4305的执行过程和原理可以参考前述图4b示出的步骤S4205,此处不再赘述。
S4306、视频应用调用Media Codec进行视频解码。
其中,步骤S4306的执行过程和原理可以参考前述图4b示出的步骤S4206,此处不再赘述。
S4307、Media Codec将视频源帧率和被调用的信息发送给帧率决策模块。
其中,视频源帧率指的是用户所需播放的视频的视频源帧率。由于步骤S4306中,Media Codec在视频应用的调用下,对用户所需播放的视频进行了视频解码,因此MediaCodec通过用户所需播放的视频的视频源,获取该视频的视频源帧率。在另一些实施例中,Media Codec还可以获取视频的分辨率等视频源的信息。
被调用的信息用于说明MediaCodec被调用。在一些实施例中,被调用的信息中可以携带有视频应用的包名,以说明MediaCodec是被视频应用调用的。具体的由于步骤S4306中,Media Codec在视频应用的调用下进行了视频解码,因此MediaCodec在视频应用调用时,可得到视频应用的包名,进而可以在被调用的信息中携带视频应用的包名。
在另一些实施例中,被调用的信息中也可以不携带有视频应用的包名。由于图4c示出的场景中前端仅显示单个视频应用的界面,因此被调用的信息中也可不说明调用Media Codec的应用。
S4308、帧率决策模块将被调用的信息发送给Surface Flinger。
其中,被调用的信息用于说明Media Codec被调用。在另一些实施例中,帧率决策模块还可以将视频源帧率、视频分辨率等视频源信息发送给Surface Flinger。
S4309、WMS将视频播放界面的窗口对应的图层信息发送至Surface Flinger。
其中,步骤S4309的执行过程和原理可以参考前述图4b示出的步骤S4208,此处不再赘述。
S4310、Surface Flinger根据视频播放界面的窗口对应的图层信息,创建视频播放界面的窗口对应的图层。
其中,步骤S4310的执行过程和原理可以参考前述图4b示出的步骤S4209,此处不再赘述。
S4311、Surface Flinger根据图层信息中的包名,确定出视频应用是否在播放白名单中。
其中,步骤S4311的执行过程和原理可以参考前述图4b示出的步骤S4210,此处不再赘述。
S4312、Surface Flinger根据视频播放界面的窗口对应的图层信息,确定是否为视频播放场景。
若步骤S4312确定出为视频播放场景,则执行步骤S4313,若确定出不为视频播放场景,则结束流程,继续按照视频应用对应的预设刷新率刷新显示画面。
其中,步骤S4312的执行过程和原理可以参考前述图4b示出的步骤S4211,此处不再赘述。
S4313、Surface Flinger根据被调用的信息,确定出视频应用调用了MediaCodec。
由于步骤S4308中,Surface Flinger接收到了被调用的信息,该被调用的信息能够说明Media Codec被调用,进一步验证了当前具有视频播放需求,因此视频应用才会调用Media Codec进行视频解码。又结合步骤S4312中确定出当前为视频播放场景,SurfaceFlinger通过步骤S4313再次验证了当前为视频播放场景,进而可进一步执行步骤S4314,以确定当前是否为视频播放场景下的弹幕场景。
在一些实施例中,若Surface Flinger未接收到被调用的信息,即无法确定出视频应用调用了Media Codec,不能够验证当前是否为视频播放场景,因此可以结束流程,不执行后续的步骤S4314。
在另一些实施例中,步骤S4313确定出视频应用调用了Media Codec,验证了当前为视频播放场景之后,在执行步骤S4314之前,还可以直接发送视频播放场景信息至帧率决策模块,由帧率决策模块根据视频播放场景信息以及视频源帧率,确定出目标刷新率,然后将目标刷新率发送至Surface Flinger,由Surface Flinger按照目标刷新率控制视频播放界面的显示,具体过程和执行原理可以参考后续对步骤S4330至步骤S4333,此处不再赘述。Surface Flinger控制显示屏按照视频播放场景信息所确定出的目标刷新率刷新显示画面之后,再开始执行步骤S4314,若步骤S4315确定出在预设时长内未接收到视频应用进行弹幕绘制的信息,则可以直接结束流程,不需要再次执行步骤S4330至步骤S4333。
本申请实施例中,Surface Flinger通过被调用的信息辅助验证视频应用处于视频播放场景,提高了视频播放场景的识别准确性。
S4314、Surface Flinger确定开启弹幕统计。
由于步骤S4313已经再次验证了当前为视频播放场景,因此可以确定开启弹幕统计,以使得绘制渲染模块在进行弹幕绘制时可以开始统计弹幕。通过开启弹幕统计,Surface Flinger可以进一步确定当前是否为弹幕场景,以及可根据弹幕统计的数据确定弹幕场景下的弹幕档位。
其中,步骤S4314的执行过程和原理可以参考前述图4b示出的步骤S4212,此处不再赘述。
S4315、Surface Flinger确定预设时长内是否接收到弹幕绘制信息。
其中,步骤S4315的执行过程和原理可以参考前述图4b示出的步骤S4213,此处不再赘述。
S4316、视频应用按照Vsync信号的节奏,调用绘制渲染模块绘制弹幕。
其中,步骤S4316的执行过程和原理可以参考前述图4b示出的步骤S4214,此处不再赘述。
S4317、绘制渲染模块确定是否开启弹幕统计。
其中,步骤S4317的执行过程和原理可以参考前述图4b示出的步骤S4215,此处不再赘述。
S4318、绘制渲染模块控制弹幕计数器计数加一。
其中,步骤S4318的执行过程和原理可以参考前述图4b示出的步骤S4216,此处不再赘述。
S4319、弹幕计数器计数加一。
其中,步骤S4319的执行过程和原理可以参考前述图4b示出的步骤S4217,此处不再赘述。
S4320、绘制渲染模块按照Vsync信号的节奏,发送当前一帧的弹幕绘制信息至Surface Flinger。
其中,步骤S4320的执行过程和原理可以参考前述图4b示出的步骤S4218,此处不再赘述。
S4321、Surface Flinger确定在预设时长内收到弹幕绘制信息,存储当前一帧绘制的弹幕条数和时间戳。
其中,步骤S4321的执行过程和原理可以参考前述图4b示出的步骤S4219,此处不再赘述。
S4322、Surface Flinger根据已存储的弹幕条数、时间戳、以及弹幕老化时间,确定出当前一帧显示的总弹幕条数。
其中,步骤S4322的执行过程和原理可以参考前述图4b示出的步骤S4220,此处不再赘述。
S4323、Surface Flinger根据当前一帧绘制的弹幕条数以及显示的总弹幕条数,确定当前一帧的弹幕档位。
其中,步骤S4323的执行过程和原理可以参考前述图4b示出的步骤S4221,此处不再赘述。
S4324、Surface Flinger确定弹幕档位信息发生变更。
其中,步骤S4324的执行过程和原理可以参考前述图4b示出的步骤S4222,此处不再赘述。
S4325、Surface Flinger发送弹幕档位信息至帧率决策模块。
其中,步骤S4325的执行过程和原理可以参考前述图4b示出的步骤S4223,此处不再赘述。
S4326、帧率决策模块根据弹幕档位信息,确定目标刷新率。
其中,步骤S4326的执行过程和原理可以参考前述图4b示出的步骤S4224,此处不再赘述。
S4327、帧率决策模块将目标刷新率发送至Surface Flinger。
其中,步骤S4327的执行过程和原理可以参考前述图4b示出的步骤S4225,此处不再赘述。
S4328、Surface Flinger按照目标刷新率,控制视频播放界面的显示。
其中,步骤S4328的执行过程和原理可以参考前述图4b示出的步骤S4226,此处不再赘述。
S4329、Surface Flinger确定在预设时长内未接收到弹幕绘制信息。
其中,步骤S4329的执行过程和原理可以参考前述图4b示出的步骤S4227,此处不再赘述。
S4330、Surface Flinger发送视频播放场景信息至帧率决策模块。
其中,步骤S4330的执行过程和原理可以参考前述图4b示出的步骤S4228,此处不再赘述。
S4331、帧率决策模块根据视频播放场景信息和视频源帧率,确定出目标刷新率。
其中,步骤S4331的执行过程和原理可以参考前述图4b示出的步骤S4229,此处不再赘述。
S4332、帧率决策模块将目标刷新率发送至Surface Flinger。
其中,步骤S4332的执行过程和原理可以参考前述图4b示出的步骤S4230,此处不再赘述。
S4333、Surface Flinger按照目标刷新率,控制视频播放界面的显示。
其中,步骤S4333的执行过程和原理可以参考前述图4b示出的步骤S4231,此处不再赘述。
需要说明的是,图4a、图4b以及图4c中所提及的Launcher、视频应用、绘制渲染模块、AMS、WMS、Media Codec、帧率决策模块以及Surface Flinger的功能和技术原理的描述可以参考图3示出的相关内容。
为了描述方案更为简洁,本申请实施例中的视频应用简称为应用,本申请中使用第一刷新率指代应用对应的预设刷新率,使用第二刷新率指代帧率决策模块在弹幕场景下所确定出的刷新率,使用第三刷新率指代帧率决策模块在视频播放场景下所确定出的刷新率。本申请实施例中提及的视频播放界面、应用主界面等应用输出在显示屏上的界面,统称为应用的应用界面。而本申请实施例所提及的视频播放界面的窗口对应的图层,也简称为视频播放界面的图层,应用主界面的窗口对应的图层也简称为应用主界面的图层。
由前述图4a、图4b以及图4e的描述可知,本申请实施例的图4a示出的步骤S4101至步骤S4113中,电子设备在响应于接收用户启动应用的操作者之后,按照第一刷新率刷新显示应用的应用界面。其中,第一刷新率可以为应用对应的预设刷新率。而实现响应于接收用户启动应用的操作者,按照第一刷新率刷新显示应用的应用界面的方式有很多,包括但不限于本申请实施例所提出的内容。
参阅图4b示出的步骤S4201至步骤S4209的描述,以及图4e示出的步骤S4301至步骤S4310的描述可知,电子设备响应于接收用户播放视频的操作,按照第一刷新率显示视频播放界面,视频播放界面用于显示用户播放视频的视频画面。其中。实现响应于接收用户播放视频的操作,按照第一刷新率显示视频播放界面的方式有很多,包括但不限于本申请实施例所提出的内容。
继续参阅图4b的步骤S4210至步骤S4231、以及参阅图4d的S4311至S4333可知,本申请实施例中,在显示用户播放视频的视频画面的过程中,通过确定预设时长内是否进行弹幕绘制的方式,调整刷新率。具体的,在显示用户播放视频的视频画面的过程中,若在预设时长内进行弹幕绘制,则统计视频的每一帧显示画面的弹幕数据,根据每一帧显示画面的弹幕数据,按照第二刷新率刷新显示应用的应用界面。若在预设时长内未进行弹幕绘制,则按照第三刷新率刷新显示应用的应用界面,第三刷新率与第二刷新率不同,第三刷新率为视频播放场景下所使用的刷新率,第二刷新率为弹幕场景下,根据根据每一帧显示画面的弹幕数据所确定出的刷新率。通过在显示视频画面的过程中,不断通过确定预设时长内是否进行弹幕绘制的方式,可以识别出当前为视频播放场景还是弹幕场景,进而在处于弹幕场景时,能够通过统计到的弹幕数据,调整为满足当前场景需求的第二刷新率刷新应用界面,而在视频播放场景时,则调整为满足视频播放场景需求的第三刷新率去刷新应用界面。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本实施例所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (32)
1.一种刷新率的设置方法,其特征在于,应用于电子设备,所述电子设备安装有应用,所述方法包括:
响应于接收用户启动所述应用的操作;
按照第一刷新率刷新显示所述应用的应用界面;
响应于接收用户播放视频的操作;
按照所述第一刷新率显示视频画面;
在显示所述视频画面的过程中,确定预设时长内是否进行弹幕绘制;
若在预设时长内进行弹幕绘制,则统计所述视频的每一帧显示画面的弹幕数据;
根据所述每一帧显示画面的弹幕数据,按照第二刷新率刷新显示所述应用的应用界面;
若在预设时长内未进行弹幕绘制,则按照第三刷新率刷新显示所述应用的应用界面,所述第三刷新率与所述第二刷新率不同。
2.根据权利要求1所述的方法,其特征在于,所述根据所述每一帧显示画面的弹幕数据,按照第二刷新率刷新显示所述应用的应用界面,包括:
根据所述每一帧显示画面的弹幕数据,确定第二刷新率;
按照确定出的所述第二刷新率刷新显示所述应用的应用界面。
3.根据权利要求2所述的方法,其特征在于,所述根据所述每一帧显示画面的弹幕数据,确定第二刷新率,包括:
根据当前统计到的每一帧显示画面的弹幕数据,确定当前的弹幕档位;所述弹幕档位用于表示显示画面上的弹幕密度量级;
根据所述当前的弹幕档位,确定第二刷新率;所述第二刷新率为当前的弹幕档位对应的预设刷新率;所述弹幕档位说明的弹幕密度量级越大,则确定出的第二刷新率越大。
4.根据权利要求1至3任一所述的方法,其特征在于,所述一帧显示画面的弹幕数据,包括:一帧显示画面中绘制的弹幕条数,和/或,一帧显示画面中绘制的弹幕字符数。
5.根据权利要求4所述的方法,其特征在于,所述根据当前统计到的每一帧显示画面的弹幕数据,确定当前的弹幕档位,包括:
根据当前统计到的每一帧显示画面中绘制的弹幕条数、每一帧显示画面对应的时间戳以及弹幕老化时间,计算得到当前一帧显示画面中显示的总弹幕条数;
根据当前一帧显示画面中绘制的弹幕条数和当前一帧显示画面中显示的总弹幕条数,确定当前的弹幕档位。
6.根据权利要求5所述的方法,其特征在于,所述弹幕档位,包括:高弹幕档位或低弹幕档位;
所述根据当前一帧显示画面中绘制的弹幕条数和当前一帧显示画面中显示的总弹幕条数,确定当前的弹幕档位,包括:
若当前一帧显示画面中绘制的弹幕条数小于第一预设值,且当前一帧显示画面中显示的总弹幕条数小于第二预设值,则确定出当前的弹幕档位为低弹幕档位;
若当前一帧显示画面中绘制的弹幕条数大于或等于第二预设值,或者当前一帧显示画面中显示的总弹幕条数大于或等于所述第二预设值,则确定出当前的弹幕档位为高弹幕档位。
7.根据权利要求1至6任一所述的方法,其特征在于,所述统计所述视频的每一帧显示画面的弹幕数据,包括:
统计所述视频的每一帧显示画面中的特定区域的弹幕数据。
8.根据权利要求1至7任一所述的方法,其特征在于,所述确定预设时长内是否进行弹幕绘制之前,所述方法还包括:
根据所述应用界面的图层信息,确定是否为视频播放场景;所述视频播放场景为播放视频的场景;
所述确定预设时长内是否进行弹幕绘制,包括:
若确定为视频播放场景,则确定预设时长内是否进行弹幕绘制。
9.根据权利要求8所述的方法,其特征在于,所述确定预设时长内是否进行弹幕绘制之前,所述方法还包括:
确定是否对所述视频进行解码;
所述若确定为视频播放场景,则确定预设时长内是否进行弹幕绘制,包括:
若确定为视频播放场景且确定出对所述视频进行解码,则确定预设时长内是否进行弹幕绘制。
10.根据权利要求8或9所述的方法,其特征在于,所述根据所述应用界面的图层信息,确定是否为视频播放场景之前,还包括:
确定所述应用是否在播放白名单中;所述播放白名单为具有视频播放权限的应用名单;
所述根据所述应用界面的图层信息,确定是否为视频播放场景,包括:
若确定出所述应用在所述播放白名单中,则根据所述应用界面的图层信息,确定是否为视频播放场景。
11.根据权利要求10所述的方法,其特征在于,所述确定所述应用是否在播放白名单中,包括:
根据所述应用界面的图层信息中携带的应用的包名,确定所述应用是否在播放白名单中;所述播放白名单,包括:每一个具有视频播放权限的应用的包名。
12.根据权利要求8至11任一所述的方法,其特征在于,所述根据所述应用界面的图层信息,确定是否为视频播放场景,包括:
确定所述应用界面的图层信息中是否具有视频图层的特征信息;
若所述应用界面的图层信息中具有视频图层的特征信息,则确定出处于视频播放场景;
若所述应用界面的图层信息中不具有视频图层的特征信息,则确定出不处于视频播放场景。
13.根据权利要求12所述的方法,其特征在于,所述视频图层的特征信息为:图层名中携带的视频图层SurfaceView字段。
14.根据权利要求1至13任一所述的方法,其特征在于,所述第三刷新率根据所述视频的视频源帧率确定。
15.根据权利要求1至14任一所述的方法,其特征在于,还包括:
响应于接收用户退出视频播放的操作;
按照第一刷新率刷新显示所述应用的应用界面。
16.根据权利要求1至15所述的方法,其特征在于,所述电子设备的操作系统,包括:所述应用和图像合成器Surface Flinger;所述确定预设时长内是否进行弹幕绘制,包括:
所述Surface Flinger确定预设时长内是否接收到一帧的弹幕绘制信息;所述一帧的弹幕绘制信息,包括:一帧显示画面中绘制的弹幕条数、一帧显示画面对应的时间戳,以及一帧显示画面中绘制渲染后的弹幕数据。
17.根据权利要求16所述的方法,其特征在于,所述电子设备的操作系统还包括:帧率决策模块;所述一帧显示画面的弹幕数据,包括:一帧显示画面中绘制的弹幕条数;所述若在预设时长内进行弹幕绘制,则统计所述视频的每一帧显示画面的弹幕数据,包括:
所述Surface Flinger若在预设时长内接收到一帧的弹幕绘制信息,则存储一帧显示画面中绘制的弹幕条数以及一帧显示画面对应的时间戳。
18.根据权利要求16或17所述的方法,其特征在于,所述电子设备的操作系统还包括:帧率决策模块;所述根据每一帧显示画面的弹幕数据,按照第二刷新率刷新显示所述应用的应用界面,包括:
所述Surface Flinger根据已存储的每一帧显示画面中绘制的弹幕条数、每一帧显示画面对应的时间戳以及弹幕老化时间,确定当前的弹幕档位;
所述Surface Flinger将当前的弹幕档位信息发送至帧率决策模块;所述弹幕档位信息,包括:所述当前的弹幕档位;
所述帧率决策模块根据所述弹幕档位信息,确定第二刷新率;
所述帧率决策模块将确定出的第二刷新率发送至所述Surface Flinge;
所述Surface Flinge按照所述第二刷新率,控制所述电子设备的显示屏刷新显示所述应用的应用界面。
19.根据权利要求18所述的方法,其特征在于,所述Surface Flinger将当前的弹幕档位信息发送至帧率决策模块,包括:
所述Surface Flinger若确定出当前的弹幕档位未发生变更,则将当前的弹幕档位信息发送至帧率决策模块。
20.根据权利要求16至19任一所述的方法,其特征在于,所述电子设备的操作系统,还包括:绘制渲染模块;所述绘制渲染模块包括弹幕计数器;所述Surface Flinger若在预设时长内接收到一帧的弹幕绘制信息,则所述Surface Flinger在预设时长内接收到一帧的弹幕绘制信息之前,还包括:
所述Surface Flinger确定开启弹幕统计;
所述应用按照Vsync信号的节奏调用绘制渲染模块绘制弹幕;
所述绘制渲染模块确定弹幕统计是否开启;
所述绘制渲染模块若确定弹幕统计已开启,则控制弹幕计数器对绘制的弹幕条数进行计数;
所述绘制渲染模块按照Vsync信号的节奏,发送当前一帧的弹幕绘制信息至所述Surface Flinger。
21.根据权利要求16至20任一所述的方法,其特征在于,所述电子设备的操作系统还包括:帧率决策模块;所述若在预设时长内未进行弹幕绘制,则按照第三刷新率刷新显示所述应用的应用界面,包括:
所述Surface Flinger若在预设时长内未接收到弹幕绘制信息,则将视频播放场景信息发送至所述帧率决策模块;视频播放场景为播放视频的场景;
所述帧率决策模块根据所述视频播放场景信息和视频源帧率,确定第三刷新率;
所述帧率决策模块将确定出的第三刷新率发送至所述Surface Flinge;
所述Surface Flinge按照所述第三刷新率,控制所述电子设备的显示屏刷新显示所述应用的应用界面。
22.根据权利要求20所述的方法,其特征在于,所述电子设备的操作系统还包括:编解码器Media Codec;所述响应于接收用户播放视频的操作之后,还包括:
所述应用调用所述Media Codec对所述视频进行解码;
所述Media Codec将所述视频的视频源帧率发送至帧率决策模块。
23.根据权利要求8所述的方法,其特征在于,所述电子设备的操作系统,包括:SurfaceFlinge;所述根据所述应用界面的图层信息,确定是否为视频播放场景,包括:
Surface Flinge确定所述应用界面的图层信息中的图层名,是否携带SurfaceView字段;
所述Surface Flinge若确定出所述图层名携带SurfaceView字段,则确定为视频播放场景;
所述Surface Flinge若确定出所述图层名不携带SurfaceView字段,则确定不为视频播放场景。
24.根据权利要求1至23任一所述的方法,其特征在于,所述所述电子设备的操作系统,包括:所述应用、Surface Flinge以及绘制渲模块;所述按照所述第一刷新率显示视频画面,包括:
所述Surface Flinge按照所述第一刷新率对应的Vsync信号节奏,触发所述应用对视频播放界面的图层进行绘制渲染;所述视频播放界面为用于显示视频画面的应用界面;
所述应用按照所述第一刷新率对应的Vsync信号节奏,调用绘制渲染模块对所述视频播放界面的图层进行绘制渲染;
所述绘制渲染模块按照所述第一刷新率对应的Vsync信号节奏,发送绘制渲染后的视频播放界面图像数据至所述Surface Flinge;
所述Surface Flinge按照所述第一刷新率对应的Vsync信号节奏,使用所述绘制渲染后的视频播放界面图像数据进行图层合成;
所述Surface Flinge按照所述第一刷新率对应的Vsync信号节奏,将合成后的视频播放界面图像数据输出至显示屏显示。
25.根据权利要求24所述的方法,其特征在于,所述电子设备的操作系统还包括:AMS和窗口管理模块WMS;所述Surface Flinge按照所述第一刷新率对应的Vsync信号节奏,触发所述应用对所述视频播放界面的图层进行绘制渲染之前还包括:
所述应用发送启动视频播放Activity的请求至所述AMS;所述启动视频播放Activity的请求中携带有所述应用的包名和视频播放界面名;
所述AMS根据所述应用的包名和所述视频播放界面名,启动视频播放Activity;
所述AMS发送所述视频播放界面对应的窗口信息至所述WMS;
所述WMS根据所述视频播放界面对应的窗口信息,创建所述视频播放界面的窗口;
所述WMS发送所述视频播放界面的图层信息至所述Surface Flinge;所述图层信息中携带有所述应用的包名;所述视频播放界面的图层信息与所述视频播放界面的窗口对应;
所述Surface Flinge根据所述视频播放界面的图层信息,创建所述视频播放界面的图层。
26.根据权利要求9所述的方法,其特征在于,所述电子设备的操作系统,包括:所述应用、Surface Flinge以及Media Codec;所述确定是否对所述视频进行解码,包括:
所述Surface Flinge若接收到被调用的信息,则确定出所述应用调用Media Codec对所述视频进行解码;所述被调用的信息用于说明所述Media Codec被调用;
所述Surface Flinge若未接收到被调用的信息,则确定出所述应用未调用MediaCodec对所述视频进行解码。
27.根据权利要求26所述的方法,其特征在于,若所述Surface Flinge接收到所述被调用的信息,则所述Surface Flinge接收到所述被调用的信息之前还包括:
所述应用调用所述Media Codec对所述视频进行解码;
所述Media Codec发送被调用的信息至所述Surface Flinge。
28.根据权利要求27所述的方法,其特征在于,所述应用调用所述Media Codec对所述视频进行解码之前,还包括:
所述WMS发送所述视频播放界面的窗口创建完成的信息至所述应用。
29.根据权利要求10所述的方法,其特征在于,所述确定所述应用是否在播放白名单中,包括:
所述Surface Flinge根据应用界面的图层信息中携带的应用的包名,确定所述应用是否在播放白名单中;所述播放白名单,包括:每一个具有视频播放权限的应用的包名。
30.根据权利要求1所述的方法,其特征在于,所述电子设备的操作系统,包括:应用、Surface Flinge、帧率决策模块以及绘制渲染模块;所述按照第一刷新率刷新显示所述应用的应用界面,包括:
所述Surface Flinge按照第一刷新率对应的Vsync信号节奏,触发所述应用对应用主界面的图层进行绘制渲染;所述应用主界面为所述应用启动之后显示的应用界面;
所述应用按照所述第一刷新率对应的Vsync信号节奏,调用绘制渲染模块对所述应用主界面的图层进行绘制渲染;
所述绘制渲染模块按照所述第一刷新率对应的Vsync信号节奏,发送绘制渲染后的应用主界面图像数据至所述Surface Flinge;
所述Surface Flinge按照所述第一刷新率对应的Vsync信号节奏,使用所述绘制渲染后的应用主界面图像数据进行图层合成;
所述Surface Flinge按照所述第一刷新率对应的Vsync信号节奏,将合成后的应用主界面图像数据输出至显示屏显示。
31.根据权利要求30所述的方法,其特征在于,所述电子设备的操作系统还包括:桌面启动器Launcher、AMS以及WMS;所述所述Surface Flinge按照第一刷新率对应的Vsync信号节奏,触发所述应用对应用主界面的图层进行绘制渲染之前,还包括:
所述Launcher发送启动应用Activity的请求至AMS;所述启动应用Activity的请求中携带有所述应用的包名;
所述AMS启动应用Activity;
所述AMS向WMS发送应用主界面对应的窗口信息;所述窗口信息中携带有应用的包名;
所述WMS根据所述应用主界面对应的窗口信息,创建所述应用主界面的窗口,并发送所述应用的包名至所述帧率决策模块;
所述WMS发送应用主界面的图层信息至所述Surface Flinge;所述应用主界面的图层信息与所述应用主界面的窗口对应;
所述帧率决策模块根据所述应用的包名,确定出第一刷新率;所述第一刷新率为所述应用对应的预设刷新率;
所述Surface Flinge根据所述应用主界面的图层信息,创建所述应用主界面的图层。
32.一种电子设备,其特征在于,包括:一个或多个处理器、存储器以及显示屏;
所述存储器、所述显示屏分别与所述一个或多个处理器耦合;
所述显示屏用于显示应用界面;
所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述一个或多个处理器执行所述计算机指令时,所述电子设备执行如权利要求1至31中任一项所述的刷新率的设置方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111545016.7A CN114205673A (zh) | 2021-12-16 | 2021-12-16 | 刷新率的设置方法及相关设备 |
EP22879601.7A EP4224872A4 (en) | 2021-12-16 | 2022-08-29 | METHOD FOR ADJUSTING REFRESH FREQUENCY AND ASSOCIATED DEVICE |
PCT/CN2022/115417 WO2023109184A1 (zh) | 2021-12-16 | 2022-08-29 | 刷新率的设置方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111545016.7A CN114205673A (zh) | 2021-12-16 | 2021-12-16 | 刷新率的设置方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114205673A true CN114205673A (zh) | 2022-03-18 |
Family
ID=80654737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111545016.7A Pending CN114205673A (zh) | 2021-12-16 | 2021-12-16 | 刷新率的设置方法及相关设备 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4224872A4 (zh) |
CN (1) | CN114205673A (zh) |
WO (1) | WO2023109184A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115079977A (zh) * | 2022-06-15 | 2022-09-20 | 北京字跳网络技术有限公司 | 界面绘制方法、装置、电子设备及存储介质 |
CN116095382A (zh) * | 2022-06-02 | 2023-05-09 | 荣耀终端有限公司 | 弹幕识别方法和相关装置 |
WO2023109185A1 (zh) * | 2021-12-16 | 2023-06-22 | 荣耀终端有限公司 | 刷新率的设置方法及相关设备 |
WO2023109184A1 (zh) * | 2021-12-16 | 2023-06-22 | 荣耀终端有限公司 | 刷新率的设置方法及相关设备 |
CN118349311A (zh) * | 2024-06-14 | 2024-07-16 | 北京麟卓信息科技有限公司 | 一种基于可视区域度量的应用渲染帧率自适应调整方法 |
WO2024169421A1 (zh) * | 2023-02-17 | 2024-08-22 | 海信视像科技股份有限公司 | 显示设备和显示处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919358A (zh) * | 2017-03-10 | 2017-07-04 | 广东欧珀移动通信有限公司 | 一种移动终端的显示控制方法、装置及移动终端 |
CN106919402A (zh) * | 2017-03-10 | 2017-07-04 | 广东欧珀移动通信有限公司 | 一种移动终端的控制方法、装置及移动终端 |
CN109413480A (zh) * | 2018-09-30 | 2019-03-01 | Oppo广东移动通信有限公司 | 画面处理方法、装置、终端及存储介质 |
WO2021175213A1 (zh) * | 2020-03-06 | 2021-09-10 | 华为技术有限公司 | 刷新率切换方法和电子设备 |
CN113438552A (zh) * | 2021-05-19 | 2021-09-24 | 荣耀终端有限公司 | 一种刷新率调整方法和电子设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106210853B (zh) * | 2016-07-08 | 2019-04-09 | 上海幻电信息科技有限公司 | 弹幕显示系统及其cpu消耗控制方法 |
CN106933526B (zh) * | 2017-03-10 | 2019-03-15 | Oppo广东移动通信有限公司 | 一种动态调节屏幕刷新率的方法、装置及移动终端 |
CN106933587B (zh) * | 2017-03-10 | 2019-12-31 | Oppo广东移动通信有限公司 | 一种图层绘制控制方法、装置及移动终端 |
CN109120988B (zh) * | 2018-08-23 | 2020-07-24 | Oppo广东移动通信有限公司 | 解码方法、装置、电子设备以及存储介质 |
CN111767013A (zh) * | 2020-06-01 | 2020-10-13 | Oppo(重庆)智能科技有限公司 | 控制方法、控制装置、电子装置、计算机可读存储介质 |
CN113766324B (zh) * | 2020-06-02 | 2022-11-04 | 深圳市万普拉斯科技有限公司 | 视频播放的控制方法、装置、计算机设备和存储介质 |
CN114205673A (zh) * | 2021-12-16 | 2022-03-18 | 荣耀终端有限公司 | 刷新率的设置方法及相关设备 |
-
2021
- 2021-12-16 CN CN202111545016.7A patent/CN114205673A/zh active Pending
-
2022
- 2022-08-29 WO PCT/CN2022/115417 patent/WO2023109184A1/zh active Application Filing
- 2022-08-29 EP EP22879601.7A patent/EP4224872A4/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919358A (zh) * | 2017-03-10 | 2017-07-04 | 广东欧珀移动通信有限公司 | 一种移动终端的显示控制方法、装置及移动终端 |
CN106919402A (zh) * | 2017-03-10 | 2017-07-04 | 广东欧珀移动通信有限公司 | 一种移动终端的控制方法、装置及移动终端 |
CN109413480A (zh) * | 2018-09-30 | 2019-03-01 | Oppo广东移动通信有限公司 | 画面处理方法、装置、终端及存储介质 |
WO2021175213A1 (zh) * | 2020-03-06 | 2021-09-10 | 华为技术有限公司 | 刷新率切换方法和电子设备 |
CN113438552A (zh) * | 2021-05-19 | 2021-09-24 | 荣耀终端有限公司 | 一种刷新率调整方法和电子设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023109185A1 (zh) * | 2021-12-16 | 2023-06-22 | 荣耀终端有限公司 | 刷新率的设置方法及相关设备 |
WO2023109184A1 (zh) * | 2021-12-16 | 2023-06-22 | 荣耀终端有限公司 | 刷新率的设置方法及相关设备 |
CN116095382A (zh) * | 2022-06-02 | 2023-05-09 | 荣耀终端有限公司 | 弹幕识别方法和相关装置 |
CN116095382B (zh) * | 2022-06-02 | 2023-10-31 | 荣耀终端有限公司 | 弹幕识别方法和相关装置 |
WO2023231655A1 (zh) * | 2022-06-02 | 2023-12-07 | 荣耀终端有限公司 | 弹幕识别方法和相关装置 |
CN115079977A (zh) * | 2022-06-15 | 2022-09-20 | 北京字跳网络技术有限公司 | 界面绘制方法、装置、电子设备及存储介质 |
WO2024169421A1 (zh) * | 2023-02-17 | 2024-08-22 | 海信视像科技股份有限公司 | 显示设备和显示处理方法 |
CN118349311A (zh) * | 2024-06-14 | 2024-07-16 | 北京麟卓信息科技有限公司 | 一种基于可视区域度量的应用渲染帧率自适应调整方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4224872A4 (en) | 2024-04-10 |
EP4224872A1 (en) | 2023-08-09 |
WO2023109184A1 (zh) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114205673A (zh) | 刷新率的设置方法及相关设备 | |
CN114661263B (zh) | 一种显示方法、电子设备及存储介质 | |
WO2023109185A1 (zh) | 刷新率的设置方法及相关设备 | |
US8713472B2 (en) | Display apparatus, a method for a display control, and program | |
CN109254849B (zh) | 应用程序的运行方法及装置 | |
US20230418696A1 (en) | Method for performing drawing operation by application and electronic device | |
CN116501210A (zh) | 一种显示方法、电子设备及存储介质 | |
CN116774809A (zh) | 调整频率的方法、装置、电子设备及可读存储介质 | |
US20160111060A1 (en) | Video Frame Processing on a Mobile Operating System | |
CN116052618A (zh) | 一种屏幕刷新率切换方法及电子设备 | |
CN116708753B (zh) | 预览卡顿原因的确定方法、设备及存储介质 | |
CN115640083A (zh) | 一种可提升动效性能的屏幕刷新方法及设备 | |
CN116069187B (zh) | 一种显示方法及电子设备 | |
CN113825014B (zh) | 多媒体内容播放方法、装置、计算机设备和存储介质 | |
CN110309079A (zh) | 一种数据缓存的方法及装置 | |
CN116257235A (zh) | 绘制方法及电子设备 | |
CN115904185A (zh) | 数据处理方法和相关装置 | |
CN113096054A (zh) | 图像帧合成方法、装置及存储介质 | |
US20240357201A1 (en) | Refresh rate setting method and related device | |
CN113342516B (zh) | 数据的处理方法及装置、终端、存储介质 | |
CN116055738B (zh) | 视频压缩方法及电子设备 | |
CN117389745B (zh) | 一种数据处理方法、电子设备及存储介质 | |
CN116708889B (zh) | 音视频同步方法、设备及存储介质 | |
CN116089320B (zh) | 垃圾回收方法和相关装置 | |
CN116055715B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40071412 Country of ref document: HK |