发明内容
综上,本申请实施例提供一种优化终端解码渲染性能的方法和装置、电子设备及存储介质,能够提高终端的云应用画面视频帧解码渲染性能。
第一方面,本申请实施例提供了一种优化终端解码渲染性能的方法,应用于终端,包括:
网络接收模块按照延迟缓存时间将云端服务器中的网络发送模块发送的云应用画面视频帧复制到抖动缓存中,其中,所述延迟缓存时间根据网络抖动的情况确定;
在解码模块中存在空闲的输入缓存时,所述解码模块从所述抖动缓存中取出云应用画面视频帧,并将所述云应用画面视频帧复制到所述空闲的输入缓存中;
所述解码模块对所述输入缓存中的云应用画面视频帧进行解码,并通过渲染模块对云应用画面视频帧进行渲染。
第二方面,本申请实施例还提供了一种优化终端解码渲染性能的装置,应用于终端,包括:
网络接收模块、解码模块和渲染模块;其中,
所述网络接收模块按照延迟缓存时间将云端服务器中的网络发送模块发送的云应用画面视频帧复制到抖动缓存中,其中,所述延迟缓存时间根据网络抖动的情况确定;
在所述解码模块中存在空闲的输入缓存时,所述解码模块从所述抖动缓存中取出云应用画面视频帧,并将所述云应用画面视频帧复制到所述空闲的输入缓存中;
所述解码模块对所述输入缓存中的云应用画面视频帧进行解码,并通过所述渲染模块对云应用画面视频帧进行渲染。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面所述的优化终端解码渲染性能的方法的步骤。
第四方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面所述的优化终端解码渲染性能的方法的步骤。
综上,本申请实施例提供的优化终端解码渲染性能的和装置、电子设备及存储介质,通过抖动缓存按照延迟缓存时间进行云应用画面视频帧的缓存能够平滑解码模块输入的云应用画面视频帧,使解码模块的输入帧率稳定,同时解码模块采用异步的解码方式,当解码模块空闲时主动从抖动缓存中取出视频帧进行解码,能够避免解码模块瞬时接收到过多视频帧从而造成解码性能下降,通过上述方案能够提高终端的云应用画面视频帧解码渲染性能,尤其在云应用画面的输出帧率较高、分辨率较高的情况下,能够使用户观看到流畅的云应用画面。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
参照图1所示,为本申请实施例提供的一种优化终端解码渲染性能的方法,应用于终端,包括:
S10、网络接收模块按照延迟缓存时间将云端服务器中的网络发送模块发送的云应用画面视频帧复制到抖动缓存中,其中,所述延迟缓存时间根据网络抖动的情况确定;
本实施例中,需要说明的是,网络接收模块接收到云端服务器中的网络发送模块发送的云应用画面视频帧后,可以将其复制到网络接收模块的视频帧接收缓存中,之后按照延迟缓存时间将视频帧接收缓存中的云应用画面视频帧复制到抖动缓存(抖动缓存为解码模块上层的缓存)中,也就是说,在网络接收模块和解码模块(比如音视频编解码工具MediaCodec)之间设置了抖动缓存,通过该抖动缓存消除网络抖动,从而保证输入到解码模块的视频的帧率是稳定的。可以理解的是,网络接收模块每接收一个云应用画面视频帧,均会计算该云应用画面视频帧对应的延迟缓存时间,之后推迟该云应用画面视频帧对应的延迟缓存时间将该云应用画面视频帧复制到抖动缓存中,其中,该云应用画面视频帧对应的延迟缓存时间根据接收到该云应用画面视频帧时的网络抖动的情况确定。
S11、在解码模块中存在空闲的输入缓存时,所述解码模块从所述抖动缓存中取出云应用画面视频帧,并将所述云应用画面视频帧复制到所述空闲的输入缓存中;
本实施例中,需要说明的是,解码模块采用的是异步的方式解码,即只有当解码模块中存在空闲的输入缓存时,解码模块才会从抖动缓存中取出云应用画面视频帧复制到解码模块的输入缓存,相较于解码器被动接收视频帧的现有技术,本实施例可以避免解码模块中积攒的视频帧过多,提高解码性能。具体实现时,可以设置回调方法用于在解码模块中有空闲的输入缓存时,使解码模块通过回调该回调方法从抖动缓存中每次取出一帧数据,并将这帧数据复制到解码模块的输入缓存。
S12、所述解码模块对所述输入缓存中的云应用画面视频帧进行解码,并通过渲染模块对云应用画面视频帧进行渲染。
本申请实施例提供的优化终端解码渲染性能的方法,通过抖动缓存按照延迟缓存时间进行云应用画面视频帧的缓存能够平滑解码模块输入的云应用画面视频帧,使解码模块的输入帧率稳定,同时解码模块采用异步的解码方式,当解码模块空闲时主动从抖动缓存中取出视频帧进行解码,能够避免解码模块瞬时接收到过多视频帧从而造成解码性能下降,通过上述方案能够提高终端的云应用画面视频帧解码渲染性能,尤其在云应用画面的输出帧率较高、分辨率较高的情况下,能够使用户观看到流畅的云应用画面。
在前述方法实施例的基础上,所述延迟缓存时间可以根据所述网络接收模块接收到的云应用画面视频帧的至少一个接收时间间隔以及对应的至少一个发送时间间隔确定。
本实施例中,需要说明的是,延迟缓存时间根据网络抖动的情况确定,而网络抖动的情况可以根据网络接收模块接收到的云应用画面视频帧的至少一个接收时间间隔以及对应的至少一个发送时间间隔确定,由此便可确定出延迟缓存时间。
在前述方法实施例的基础上,所述延迟缓存时间可以为网络抖动大小和预设的最大延迟上限数值中的较小值,所述网络抖动大小可以为所述网络接收模块当前接收到的云应用画面视频帧与前一个云应用画面视频帧的接收时间间隔,与所述当前接收到的云应用画面视频帧与前一个云应用画面视频帧的发送时间间隔的差值。
本实施例中,需要说明的是,假设网络接收模块当前接收到的云应用画面视频帧为P30,P30的前一个云应用画面视频帧为P29,P30和P29的接收时间间隔为t`(t`为网络接收模块接收到P29的接收时间与接收到P30的接收时间的差值),P30和P29的发送时间间隔为t(t为网络发送模块发送P29的发送时间与发送P30的发送时间的差值),预设的最大延迟上限数值为max_delay,则P30对应的延迟缓存时间可以为min(t`-t,max_delay)。网络接收模块在接收到P30后,可以延迟该延迟缓存时间将P30复制到抖动缓存中。需要说明的是,除了基于网络接收模块当前接收到的云应用画面视频帧和前一个云应用画面视频帧的接收时间间隔与发送时间间隔计算延迟缓存时间外,还可以根据需要设置基于网络接收模块当前接收到的云应用画面视频帧及其前面视频帧中多个视频帧对应的接收时间间隔与发送时间间隔计算延迟缓存时间,具体算法可以多样,但核心均为基于历史接收到的云应用画面视频帧的接收时间间隔与发送时间间隔计算出能随网络抖动情况变化的延迟缓存时间,以基于该延迟缓存时间对云应用画面视频帧的缓存进行平滑,继而消除网络抖动对编码模块输入的视频帧的帧率的影响。
在前述方法实施例的基础上,所述通过渲染模块对云应用画面视频帧进行渲染,可以包括:
所述解码模块将表面对象配置到所述解码模块中;
所述解码模块将解码完的云应用画面视频帧直接提交给渲染模块进行渲染。
本实施例中,需要说明的是,解码模块输出的数据可以直接进入渲染模块(TextureView/SurfaceView)进行渲染,不再经过SurfaceTexture和EGL处理,也即直接使用SurfaceView/TextureView显示解码模块解码后的数据,通过此方式能够提高渲染效率,使终端以接近甚至等于云应用输出帧率的帧率渲染显示云应用画面。具体实现时,可以将表面对象(Surface)配置到解码模块中,并设置回调方法用于在解码模块中有已解码完成视频帧时,通过回调该回调方法,将已解码完成视频帧提交给TextureView/SurfaceVie进行渲染。
参照图2所示,为本申请实施例提供的一种优化终端解码渲染性能的装置,应用于终端,包括:
网络接收模块20、解码模块21和渲染模块22;其中,
所述网络接收模块20按照延迟缓存时间将云端服务器中的网络发送模块发送的云应用画面视频帧复制到抖动缓存中,其中,所述延迟缓存时间根据网络抖动的情况确定;
在所述解码模块21中存在空闲的输入缓存时,所述解码模块21从所述抖动缓存中取出云应用画面视频帧,并将所述云应用画面视频帧复制到所述空闲的输入缓存中;
所述解码模块21对所述输入缓存中的云应用画面视频帧进行解码,并通过所述渲染模块22对云应用画面视频帧进行渲染。
本申请实施例提供的优化终端解码渲染性能的装置,通过解码模块21抖动缓存按照延迟缓存时间进行云应用画面视频帧的缓存能够平滑解码模块21输入的云应用画面视频帧,使解码模块21的输入帧率稳定,同时解码模块21采用异步的解码方式,当解码模块21空闲时主动从解码模块21抖动缓存中取出视频帧进行解码,能够避免解码模块21瞬时接收到过多视频帧从而造成解码性能下降,通过上述方案能够提高终端的云应用画面视频帧解码渲染性能,尤其在云应用画面的输出帧率较高、分辨率较高的情况下,能够使用户观看到流畅的云应用画面。
在前述装置实施例的基础上,所述延迟缓存时间可以根据所述网络接收模块接收到的云应用画面视频帧的至少一个接收时间间隔以及对应的至少一个发送时间间隔确定。
在前述装置实施例的基础上,所述延迟缓存时间可以为网络抖动大小和预设的最大延迟上限数值中的较小值,所述网络抖动大小可以为所述网络接收模块当前接收到的云应用画面视频帧与前一个云应用画面视频帧的接收时间间隔,与所述当前接收到的云应用画面视频帧与前一个云应用画面视频帧的发送时间间隔的差值。
在前述装置实施例的基础上,所述解码模块,具体可以用于:
将表面对象配置到所述解码模块中;
将解码完的云应用画面视频帧直接提交给渲染模块进行渲染。
本申请实施例提供的优化终端解码渲染性能的装置,其实现过程与本申请实施例提供的优化终端解码渲染性能的方法一致,所能达到的效果也与本申请实施例提供的优化终端解码渲染性能的方法相同,在此不再赘述。
如图3所示,本申请实施例提供的一种电子设备,包括:处理器30、存储器31和总线32,所述存储器31存储有所述处理器30可执行的机器可读指令,当电子设备运行时,所述处理器30与所述存储器31之间通过总线32通信,所述处理器30执行所述机器可读指令,以执行如上述优化终端解码渲染性能的方法的步骤。
具体地,上述存储器31和处理器30能够为通用的存储器和处理器,这里不做具体限定,当处理器30运行存储器31存储的计算机程序时,能够执行上述优化终端解码渲染性能的方法。
对应于上述优化终端解码渲染性能的方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述优化终端解码渲染性能的方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。