插帧方法、装置、电子设备及存储介质与流程

文档序号:24071482发布日期:2021-02-26 15:30阅读:215来源:国知局
插帧方法、装置、电子设备及存储介质与流程

[0001]
本申请涉及电子设备技术领域,更具体地,涉及一种插帧方法、装置、电子设备及存储介质。


背景技术:

[0002]
随着高刷新率设备的普及,人们对显示的流畅度和丝滑度要求越来越高,但一般来讲,视频和电影等每秒钟24帧即可满足人眼看到连续画面的需求,录制过高的帧率既浪费成本又浪费资源,特别对于流媒体,还会浪费网络资源。因此,插帧和补帧的方案应运而生,插帧及补帧的技术方案多应用在电视、电脑以及手机等可以播放视频,电影,动画等设备上,但是,相关技术中存在图像帧显示时帧率不够稳定,从而存在图像帧显示流畅度和丝滑度不高的问题。


技术实现要素:

[0003]
鉴于上述问题,本申请提出了一种插帧方法、装置、电子设备及存储介质。
[0004]
第一方面,本申请实施例提供了一种插帧方法,所述方法包括:在缓存队列接收到垂直同步信号,且在接收到所述垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,提取第一缓存区中缓存的第一中间插入帧,所述第一缓存区为所述缓存队列中插入的用于存放中间插入帧的缓存区,所述中间插入帧为依据目标应用生成的历史目标图像帧得到的图像帧;对所述第一中间插入帧进行渲染后向显示屏发送渲染后的图像帧;根据所述缓存队列的第二缓存区中存储的历史目标图像帧生成第二中间插入帧;将所述第二中间插入帧作为新的第一中间插入帧并存放至所述第一缓存区。
[0005]
第二方面,本申请实施例提供了一种插帧装置,所述装置包括:第一提取模块、第一渲染模块、第一生成模块以及第一存放模块,其中,直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,提取第一缓存区中缓存的第一中间插入帧,所述第一缓存区为所述缓存队列中插入的用于存放中间插入帧的缓存区,所述中间插入帧为依据目标应用生成的历史目标图像帧得到的图像帧;第一渲染模块,用于对所述第一中间插入帧进行渲染后向显示屏发送渲染后的图像帧;第一生成模块,用于根据所述缓存队列的第二缓存区中存储的历史目标图像帧生成第二中间插入帧;第一存放模块,用于将所述第二中间插入帧作为新的第一中间插入帧并存放至所述第一缓存区。
[0006]
第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述第一方面提供的插帧方法。
[0007]
第四方面,本申请实施例提供了一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述第一方面提供的插帧方法。
[0008]
本申请提供的方案,通过在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,可以确认需要插帧,即,需要播放存放于第一缓存区中的第一中间插入帧,并从第一缓存区中提取第一中间插入帧,以及对该第一中间图像帧进行渲染后向显示屏发送渲染后的第一中间图像帧,从而实现在显示屏在发送垂直同步信号之后,即可渲染第一缓存区中缓存的中间插入帧并发送至显示屏以进行播放,此外,通过利用第一缓存区缓存中间插入帧,可以避免中间插入帧占用第二缓存区而引起的卡顿,提高帧率的稳定性,进而提高图像帧显示的流畅度和丝滑度。
附图说明
[0009]
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0010]
图1示出了根据本申请一个实施例的插帧方法的流程图。
[0011]
图2示出了根据本申请一个实施例的插帧方法的另一流程图。
[0012]
图3示出了本申请实施例提供的一种插帧的时序示意图。
[0013]
图4示出了本申请实施例提供的一种缓存队列中的图像帧变化视图。
[0014]
图5示出了本申请实施例提供的一种插帧的另一时序示意图。
[0015]
图6示出了本申请实施例提供的一种缓存队列中的另一图像帧变化视图。
[0016]
图7示出了根据本申请另一个实施例的插帧方法的流程图。
[0017]
图8示出了本申请实施例提供的一种帧率调整界面示意图。
[0018]
图9示出了根据本申请又一个实施例的插帧方法的流程图。
[0019]
图10示出了本申请实施例提供的一种插帧的另一时序示意图。
[0020]
图11示出了本申请实施例提供的一种插帧的又一时序示意图。、
[0021]
图12示出了根据本申请又一个实施例的插帧装置的连接框图。
[0022]
图13示出了根据本申请又一个实施例的插帧装置的另一连接框图。
[0023]
图14是本申请实施例的用于执行根据本申请实施例的插帧方法的电子设备的框图。
[0024]
图15是本申请实施例的用于保存或者携带实现根据本申请实施例的插帧方法的程序代码的存储单元。
具体实施方式
[0025]
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
[0026]
目前,电子设备(手机、电脑、平板电脑、电视等用于影音播放的播放设备)已经在市面上流行,以电子设备为手机为例,手机在用于打电话的同时,通常可以用来播放视频、短视频、办公以及聊天等。因为功能完备且非常易于携带,因此受到消费者的广泛喜爱。
[0027]
其中,电子设备包括显示屏和处理器,显示屏用来显示图像和文字等信息,当显示屏为触摸屏时,还用于接收用户的触控操作等;处理器用于运行电子设备的各种应用程序,
以实现不同的功能,应当理解,当电子设备在运行应用程序时,通常会加载有操作系统,例如android操作系统、ios操作系统、windows操作系统以及linux操作系统等操作系统中的一种或者多种。
[0028]
相关技术中,电子设备通常被用于播放视频图像,或者用于播放游戏过程中的实时画面。当电子设备被用于播放视频时,延迟一帧或多帧用户基本不会有感知,且视频不需要和用户有交互,而电子设备在播放游戏进行中的游戏画面时,由于游戏具有实时和用户交互的特性,因此在发生掉帧,触控延迟,画面延迟,用户很容易有明显感知。且电子设备在播放游戏进行中的游戏画面时,其对应的缓存队列中通常具有3个缓存区,用于缓存相应的程序应用产生的目标图像帧,以及缓存根据目标图像帧生成的中间图像帧。相关技术中,由于游戏应用产生图像帧的速率不稳定,因此在对缓存队列中缓存的中间图像帧或者目标图像帧进行渲染后播放时,存在因帧率不稳定,导致显示的图像帧的流畅度和丝滑度不佳的问题。
[0029]
针对上述问题,发明人经过长期的研究发现,并提出了本申请实施例提供的插帧方法、装置、电子设备以及存储介质,在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,可以确认需要插帧,并在确认需要插帧时提取第一缓存区中缓存的第一中间插入帧,并对第一中间插入帧进行渲染后向显示屏发送渲染后的图像帧,从而实现在显示屏在发送垂直同步信号之后,即可渲染第一缓存区中缓存的中间插入帧并发送至显示屏以进行播放,由于第一缓存区为插入的用于缓存中间插入帧的缓存区,不会影响缓存队列缓存目标应用生成的目标图像帧的效率及稳定性,因此,可以避免目标应用产生目标图像帧时速率不稳定而存在掉帧的情况,从而提高图像帧显示的流畅度和丝滑度。其中,具体的插帧方法在后续的实施例中进行详细的阐述。
[0030]
请参阅图1,图1示出了本申请一个实施例提供的插帧方法的流程示意图。插帧方法应用在电子设备中的处理器时,可以执行以下步骤:
[0031]
步骤s110:在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,提取第一缓存区中缓存的第一中间插入帧。
[0032]
其中,第一缓存区为缓存队列中插入的用于存放中间插入帧的缓存区,中间插入帧为依据目标应用生成的历史目标图像帧得到的图像帧。
[0033]
具体的,当缓存队列在接收到处置同步信号时,处理器会判断缓存队列在接收到垂直同步信号之前预设时长内是否接收到目标应用生成的目标图像帧,并在未接收到该目标图像帧时,执行提取第一缓存区中缓存的第一中间插入帧的步骤。
[0034]
垂直同步信号为显示屏在屏幕刷新时产生,且显示屏的屏幕刷新频率大于或等于目标应用产生视频帧的效率和用户播放视频时的帧率。
[0035]
垂直同步又称场同步(vertical hold),从crt显示屏的显示原理来看,单个象素组成了水平扫描线,水平扫描线在垂直方向的堆积形成了完整的画面。显示屏的刷新率受显卡dac控制,显卡dac完成一帧的扫描后就会产生一个垂直同步信号。显卡绘制3d图形前会等待垂直同步信号,性能强劲的显卡则会提前完成渲染,并在下个垂直信号之前进行等待。
[0036]
具体的,在屏幕刷新产生垂直同步信号后,会将垂直同步信号发送至启动的目标应用和该目标应用对应的缓存队列,以使目标应用根据垂直同步信号和该目标应用对应的帧率产生目标图像帧并发送至对应的缓存队列。
[0037]
其中,将垂直同步信号发送至目标应用和与该目标应用对应的缓存队列的方式可以是将垂直同步信号同时发送至目标应用和该目标应用对应的缓存队列,还可以是间隔设定时长将垂直同步信号发送至目标应用和目标应用对应的缓存队列。当间隔设定时长发送垂直同步信号时,使目标应用相比于对应的缓存队列先于设定时长接收到垂直同步信号。
[0038]
预设时长可以是预先设置的时长,例如,可以是在目标应用启动是设置的时长,也可以是在目标应用使用过程中设置的时长。其中,该预设时长可以根据最终需要显示的帧率进行设置,即,不同的帧率对应有不同的预设时长。例如,当需要显示的帧率为60帧每秒时,则对应的预设时长可以是16.67毫秒,当需要显示的帧率为120帧每秒时,则对应的预设时长可以是8.33毫秒。
[0039]
目标应用可以是视频应用软件,如优酷视频、爱奇艺视频、腾讯视频以及乐视视频等应用软件,也可以是游戏应用软件,例如,大型多人在线交互游戏的应用软件,还可以是浏览器或者聊天工具等应用软件。
[0040]
缓存队列用于缓存中间插入帧和目标应用生成的目标图像帧。在本实施例中,缓存队列包括第一缓存区和第二缓存区。
[0041]
作为一种方式,第二缓存区为多个,分别用于缓存对应的目标应用生成的目标图像,第一缓存区可以为一个,用于缓存基于目标图像生成的中间插入图像。
[0042]
步骤s120:对第一中间插入帧进行渲染后向显示屏发送渲染后的图像帧。
[0043]
通过对中间插入帧进行渲染,以使显示屏能够显示渲染后的图像帧。
[0044]
步骤s130:根据缓存队列的第二缓存区中存储的历史目标图像帧和第一中间插入帧生成第二中间插入帧。
[0045]
应当理解,缓存队列中包括的缓存区可以为多个,如16个、32个或64个等。以电子设备为加载有安卓系统为例,加载有安卓系统的电子设备中各目标应用对应的缓存队列中的缓存区的数量可以为16个,上述16个缓存区中的包括3个第二缓存区,且3个第二的缓存区分别用于缓存目标应用生成的目标图像帧。
[0046]
其中,根据历史目标图像帧和第一中间插入帧生成第二中间插入帧的方式可以有多种。
[0047]
作为一种方式,可以是,获取预先训练的神经网络模型,将缓存队列的第二缓存区中存储的历史目标图像帧和第一中间插入帧分别输入至预先训练的神经网络模型,得到第二中间插入帧。
[0048]
作为另一种方式,可以是,根据第一中间图像帧和历史目标图像帧之间的运动向量,获取其中间不规则的运动向量场,对规则运动向量场进行运动补偿,获得第二中间图像帧。
[0049]
步骤s140:将第二中间插入帧作为新的第一中间插入帧并存放至第一缓存区。
[0050]
通过将第二中间插入帧作为新的第一中间插入帧,并在后续目标应用在接收到垂直同步信号时,若在接收到垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,再次执行上述步骤s110至步骤s130,从而保障了帧率的稳定性,从而提高图像帧显
示的流畅度和丝滑度。
[0051]
本申请实施例提供的一种插帧方法,在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,提取第一缓存区中缓存的第一中间插入帧,并对第一中间插入帧进行渲染后向显示屏发送渲染后的图像帧,从而实现插帧,且在插帧显示过程中,通过利用缓存队列中插入的第一缓存区缓存中间插入帧,使得缓存队列中第二缓存区均用于缓存目标应用生成的目标图像帧,以确保目标应用生成的目标图像帧均能够被缓存队列缓存,从而避免缓存队列在缓存目标应用生成的图像帧时,由于目标应用产生目标图像帧的速率不均匀,使得缓存队列在一个垂直同步信号周期(相邻两个垂直同步信号接收时间间隔)内接收到两个目标图像帧时,避免相关技术中仅能保存一个目标图像帧而出现丢帧的情况,而无法对丢了的图像帧进行显示而影响流畅度和丝滑度的情况。因此,本申请通过避免出现掉帧的情况,进而提升图像帧显示的流畅度和丝滑度。
[0052]
具体的,通过采用本申请的插帧方法,可以有效缓解相关技术中由于缓存队列中通常只存在3个缓存区用于缓存对应的目标应用生成的目标图像帧时,由于中间插入帧会占用上述3个缓存区中的一个,且上述的3个帧中还会有一个缓存区用于存储目标应用产生的历史帧,因此只剩下一个缓存区用户缓存目标应用生成的目标图像帧,当目标应用产生帧率较快时,则可能会导致新的目标图像帧不能及时被缓存至缓存队列中出现掉帧的情况,进而提高帧率的稳定性,以及提高图像帧显示的流畅度和丝滑度。
[0053]
请参阅图2,图2为一种插帧方法的另一流程示意图,该方法包括:
[0054]
步骤s150:在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长接收到目标图像帧时,提取第二缓存区中缓存的历史目标图像帧。
[0055]
其中,在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前接收到目标图像帧时,则表征无需显示中间插入帧。缓存队列在接收到目标图像帧时,将目标图像帧缓存于第二缓存区中。
[0056]
步骤s160:对历史目标图像帧进行渲染后向显示屏发送渲染后的图像帧。
[0057]
通过对历史目标图像帧进行渲染,以使显示屏能够显示渲染后的图像帧。
[0058]
步骤s170:根据接收到的目标图像帧和历史目标图像帧生成第三中间插入帧。
[0059]
其中,根据目标图像帧和历史目标图像帧生成第三中间插入帧的方式可以有多种。
[0060]
作为一种方式,可以是,获取预先训练的神经网络模型,将接收到的目标图像帧和历史目标图像帧分别输入至预先训练的神经网络模型,得到第三中间插入帧。
[0061]
作为另一种方式,可以是,根据接收到的目标图像帧和历史目标图像帧之间的运动向量,获取其中间不规则的运动向量场,对规则运动向量场进行运动补偿,获得第三中间图像帧。
[0062]
步骤s180:丢弃第一缓存区中缓存的第一中间插入帧,并将第三中间插入帧作为新的第一中间插入帧存放至第一缓存区。
[0063]
通过丢弃第一缓存区中缓存的第一中间插入帧,以确保后续如需显示中间插入帧时显示的中间插入帧与该中间插入帧的上一图像帧之间的差异度较小,从而进一步提高图像帧显示的流畅度和丝滑度。
[0064]
请结合参阅图3和图4,作为一种方式,用户需要播放的图像帧的帧率为60帧每秒,即对应的预设时长为16.67毫秒。目标应用产生目标图像帧的效率为60帧每秒,即相邻两帧目标图像帧的产生时间间隔为16.67秒。屏幕刷新率为60次每秒,即屏幕刷新的间隔时间为16.67毫秒。显示屏幕在每次屏幕刷新时同时向目标应用和缓存队列发送垂直同步信号,且目标应用在接收到垂直同步信号的时刻与该目标应用将生成的目标图像帧发送至缓存队列的时刻之间的时长小于屏幕刷新的间隔时长。电子设备在执行上述的插帧方法时具体过程如下:
[0065]
目标应用在首次接收到垂直同步信号(接收到第一个垂直同步信号)时生成第一个目标图像帧f1。由于目标应用是在接收到垂直同步信号后才能生成目标图像帧,因此缓存队列在接收到第一个垂直同步信号时,还未接收到第一个目标图像帧f1,相应的,该缓存队列会在接收到第一个垂直同步信号之后的一段时间内才能接收到该第一个目标图像帧f1,且接收到该第一个目标图像帧f1的时刻应当位于接收到第二个直至同步信号之前。相应的,目标应用在第二次接收到垂直同步信号生成第二个目标图像帧f2,则在缓存队列接收到第三个垂直同步信号之前预设时长内接收到目标应用发送的第二个目标图像帧f2时,提取第二缓存区中存储的历史目标图像帧(第一个目标图像帧f1),将该历史目标图像帧进行渲染,以及依据历史目标图像帧和第二个目标图像帧f2生成第一中间插入帧f1.5,并将第一中间插入帧f1.5保存在第一缓存区中,以及将第二个目标图像帧f2作为新的历史目标图像帧并保存在第二缓存区中,从而使显示屏在进行屏幕刷新产生第四个垂直同步信号时显示渲染的图像帧。
[0066]
若在目标应用在接收到第三个垂直同步信号时因为网络卡顿等原因,造成未能及时生成新的目标图像帧,使得缓存队列在接收到第四个垂直同步信号之前预设时长内未接收到新的目标图像帧,处理器会在缓存队列接收到第四个垂直同步信号时提取第一缓存区中缓存的第一中间插入帧f1.5,对第一中间插入帧f1.5进行渲染后向显示屏发送渲染后的第一中间插入帧;并根据缓存队列的第二缓存区中存储的历史目标图像帧和第一中间插入帧f1.5生成第二中间插入帧f1.55;将第二中间插入帧f1.55作为新的第一中间插入帧并存放至第一缓存区。
[0067]
若目标应用在接收到第四个垂直同步信号时产生第三个目标图像时,缓存队列会在接收到第五个垂直同步信号之前预设时长内接收到第三个目标图像帧f3处理器则提取第二缓存区中缓存的历史目标图像帧(第二个目标图像帧f2)进行渲染后向显示屏发送渲染后的历史目标图像帧并根据第三个目标图像帧f3和历史目标图像帧生成第三中间插入帧f2.5,并丢弃第一缓存区中缓存的第一中间插入帧,并将第三中间插入帧f2.5作为新的第一中间插入帧存放至第一缓存区,显示屏在进行屏幕刷新产生第六个垂直同步信号时显示渲染后历史目标图像帧。
[0068]
请结合参阅图5和图6,作为一种方式,用户需要播放的图像帧的帧率为120帧每秒,即对应的预设时长为8.33毫秒。目标应用产生目标图像帧的效率为60帧每秒,即相邻两帧目标图像帧的产生时间间隔为16.67秒。屏幕刷新率为120次每秒,即相邻两次刷新时间为8.33毫秒。显示屏幕在每次屏幕刷新时同时向目标应用和缓存队列发送垂直同步信号。电子设备在执行上述的插帧方法时具体过程如下:
[0069]
目标应用在首次接收到垂直同步信号(第一个垂直同步信号)时生成第一个目标
图像帧f1,由于目标应用的产生目标图像帧的效率为60帧每秒,相邻两帧目标图像帧的产生时间间隔为16.67秒,而接收到垂直同步信号的间隔时长为8.335毫秒,因此,目标应用在每间隔一个垂直同步信号才会产生一个目标图像帧,相应的在接收到第二个垂直同步信号时,不会生成目标图像帧,而在接收到第三个垂直同步信号时,会生成第二个目标图像帧f2。缓存队列在接收到第一个垂直同步信号之后接收到第一目标图像帧f1时将其作为历史图像保存在缓存队列的第二缓存区,以及在接收到第三个垂直同步信号之后接收到第二个目标图像帧f2,且在接收到第四个垂直同步信号之前预设时长内接收到该第二个目标图像帧f2,处理器提取第二缓存区中存储的历史目标图像帧(第一个目标图像帧f1),将该历史目标图像帧进行渲染,以及依据历史目标图像帧和第二个目标图像帧f2生成第一中间插入帧f1.5,并将第一中间插入帧f1.5保存在第一缓存区中,以及将第二个目标图像帧f2作为新的历史目标图像帧并保存在第二缓存区中,从而使显示屏在进行屏幕刷新产生第五个垂直同步信号时显示渲染的图像帧。
[0070]
由于目标应用在接收到第四个垂直同步信号时因不会生成新的目标图像帧,使得缓存队列在接收到第四个垂直同步信号之前预设时长内未接收到新的目标图像帧,处理器会在缓存队列接收到第四个垂直同步信号时提取第一缓存区中缓存的第一中间插入帧f1.5,对第一中间插入帧f1.5进行渲染后向显示屏发送渲染后的第一中间插入帧;并根据缓存队列的第二缓存区中存储的历史目标图像帧和第一中间插入帧f1.5生成第二中间插入帧f1.55;将第二中间插入帧f1.55作为新的第一中间插入帧并存放至第一缓存区,以使显示屏在进行屏幕刷新产生第五个垂直同步信号时显示渲染后的第一中间插入帧。
[0071]
当目标应用在接收到第五个垂直同步信号时产生第三个目标图像f3时,缓存队列会在接收到第六个垂直同步信号之前预设时长内接收到第三个目标图像帧f3,处理器则提取第二缓存区中缓存的历史目标图像帧,对历史目标图像帧进行渲染后向显示屏发送渲染后的历史目标图像帧并根据第三个目标图像帧f3和历史目标图像帧生成第三中间插入帧f2.5,丢弃第一缓存区中缓存的第一中间插入帧,并将第三中间插入帧f2.4作为新的第一中间插入帧存放至第一缓存区,显示屏在进行屏幕刷新产生第七个垂直同步信号时显示渲染后历史目标图像帧。
[0072]
通过采用上述的插帧方法,可以实现使电子设备通过插帧的方式突破游戏帧率限制,对比同等帧率的高帧率游戏,还可以降低功耗,延长游戏时间。
[0073]
请参阅图7,本申请另一实施例提供了一种插帧方法,该方法可以应用于电子设备中的处理器,方法包括:
[0074]
步骤s210:响应于帧率调整指令,获取显示屏当前播放的图像帧的属性信息。
[0075]
其中,上述步骤可以是在接收到用户选取的帧率时生成帧率调整指令,并响应于该帧率调整指令获取显示屏当前播放的图像帧的属性信息。
[0076]
属性信息可以包括尺寸、透明度以及硬件加速度等参数信息中的一种或多种。
[0077]
帧率调整指令中还包括目标帧率,其中该目标帧率为最终播放图像帧时的帧率,该目标帧率可以大于或等于当前播放图像帧的帧率,也可以小于当前播放图像帧的帧率。
[0078]
请结合参阅图8,以目标应用为游戏应用为例,该游戏应用可以具有系统相关游戏管理ui界面,用于针对该游戏应用提供是否开启插帧功能的选项,若用户选择开启,子菜单可以提供目标帧率选项给用户选择,若用户选择目标帧率等于游戏当前设置的帧率,则系
统认为用户使用的是补帧功能,若用户选择目标帧率高于游戏当前设置帧率,则认为用户开启的是插帧功能.一种可能的界面如图8所示,但不限于此种方式,也可以支持无极帧率选择,凡能满足设置需求的界面方式都可以。
[0079]
步骤s220:在根据属性信息确认当前播放的图像帧为目标应用生成的图像帧时,向该当前播放的图像帧对应的缓存队列中分配第一缓存区。
[0080]
其中,不同的目标应用生成的图像帧的属性信息,电子设备中可以存储有不同的目标应用生成的图像帧对应的属性信息,根据当前播放的图像帧的属性信息以及电子设备中存储的不同的目标应用生成的图像帧对应的属性信息即可判断当前播放的图像帧是否为目标应用生成的图像帧。
[0081]
上述分配的第一缓存区的数量可以是一个,该第一缓存区用于缓存在视频帧播放过程中产生的中间插入帧。
[0082]
步骤s230:获取帧率调整指令对应的目标帧率,根据目标帧率得到与该目标帧率对应的帧间隔时长,该帧间隔时长为预设时长。
[0083]
步骤s230:在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,提取第一缓存区中缓存的第一中间插入帧。
[0084]
第一缓存区为缓存队列中插入的用于存放中间插入帧的缓存区,中间插入帧为依据目标应用生成的历史目标图像帧得到的图像帧;
[0085]
步骤s240:对第一中间插入帧进行渲染后向显示屏发送渲染后的图像帧。
[0086]
步骤s250:根据缓存队列的第二缓存区中存储的历史目标图像帧和第一中间插入帧生成第二中间插入帧。
[0087]
步骤s260:将第二中间插入帧作为新的第一中间插入帧并存放至第一缓存区。
[0088]
本申请实施例提供的一种插帧方法,方法包括,响应于帧率调整指令,获取显示屏当前播放的图像帧的属性信息,在根据属性信息确认当前播放的图像帧为目标应用生成的图像帧时,向该当前播放的图像帧对应的缓存队列中分配第一缓存区。在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,提取第一缓存区中缓存的第一中间插入帧,并对第一中间插入帧进行渲染后向显示屏发送渲染后的图像帧,从而实现插帧,且在插帧显示过程中,通过利用缓存队列中插入的第一缓存区缓存中间插入帧,使得缓存队列中第二缓存区均用于缓存目标应用生成的目标图像帧,以确保目标应用生成的目标图像帧均能够被缓存队列缓存,从而避免缓存队列在缓存目标应用生成的图像帧时,由于目标应用产生目标图像帧的速率不均匀,使得缓存队列在一个垂直同步信号周期(相邻两个垂直同步信号接收时间间隔)内接收到两个目标图像帧时,避免相关技术中仅能保存一个目标图像帧而出现丢帧的情况,而无法对丢了的图像帧进行显示而影响流畅度和丝滑度的情况。因此,本申请通过避免出现掉帧的情况,进而提升图像帧显示的流畅度和丝滑度。
[0089]
请结合参阅图9,本申请又一实施例提供了插帧方法,该方法被电子设备的处理器执行时,实现以下步骤:
[0090]
步骤s310:获取目标应用在接收到垂直同步信号时生成的目标图像帧,并向缓存队列中发送目标图像帧,其中,垂直同步信号为显示屏在屏幕刷新时生成,且由显示屏间隔
设定时长分别发送至目标应用和缓存队列。
[0091]
其中,显示屏间隔设定时长向目标应用和缓存队列分别发送垂直同步信号时,具体可以是显示屏在屏幕刷新生成一垂直同步信号时,先向目标应用发送该垂直同步信号并在间隔设定时长后向缓存队列发送该垂直同步信号。
[0092]
步骤s320:获取目标应用在接收到n个历史垂直同步信号时分别对应的第一接收时刻,获取缓存队列在接收到与每个历史垂直同步信号对应历史目标图像帧时的第二接收时刻。
[0093]
其中,历史目标图像帧为目标应用基于目标历史时刻发送的垂直同步信号生成,n为大于或等于1的自然数。
[0094]
步骤s330:根据每个历史垂直同步信号对应的第一接收时刻和第二接收时刻调整设定时长。
[0095]
其中,根据每个历史垂直同步信号对应的第一时刻和第二时刻调整设定时长的方式可以有多种。
[0096]
作为一种方式,可以是,根据每个历史垂直同步信号对应的第一时刻和第二时刻得到每个历史垂直同步信号对应的接收时延,对n个历史垂直同步信号对应的接收时延求取均值得到平均时延,并根据该平均时延调整设定时长。
[0097]
其中,根据平均时延调整设定时长的方式可以是:在平均时延大于设定时长时,将平均时延作为设定时长,在平均时延小于设定时长时,将平均时延与设定时长的均值作为设定时长。根据平均时延调整设定时长的方式还可以是:将平均时延与设定时长进行加权求和,并将求和得到的时长作为设定时长。
[0098]
作为一种方式,可以是,根据每个历史垂直同步信号对应的第一时刻和第二时刻得到每个历史垂直同步信号对应的接收时延,从n个历史垂直同步信号对应的接收时延中选取最大时延,并根据最大时延调整设定时长。
[0099]
其中,根据最大时延调整设定时长的方式可以是,将最大时延作为设定时长,也可以是,将最大时延与设定时长进行加权求和,并将求和得到的时长作为设定时长。
[0100]
由于不同的目标应用生成目标图像帧的时间不同,相应的,渲染图像所需的时长也不同,通过采用步骤s130,可以实现依据前n个目标图像帧的生成时间来推断向目标应用和缓存队列发送垂直同步信号延迟时间。
[0101]
步骤s340:在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,提取第一缓存区中缓存的第一中间插入帧。
[0102]
第一缓存区为缓存队列中插入的用于存放中间插入帧的缓存区,中间插入帧为依据目标应用生成的历史目标图像帧得到的图像帧。
[0103]
步骤s350:对第一中间插入帧进行渲染后向显示屏发送渲染后的图像帧。
[0104]
步骤s360:根据缓存队列的第二缓存区中存储的历史目标图像帧和第一中间插入帧生成第二中间插入帧。
[0105]
步骤s370:将第二中间插入帧作为新的第一中间插入帧并存放至第一缓存区。
[0106]
请请结合参阅图4和图10,作为一种方式,用户需要播放的图像帧的帧率为60帧每秒,即对应的预设时长为16.67毫秒。目标应用产生目标图像帧的效率为60帧每秒,即相邻
两帧目标图像帧的产生时间间隔为16.67秒。屏幕刷新率为60次每秒,即相邻两次刷新时间为16.67毫秒。显示屏幕在每次屏幕刷新时间隔5毫秒向目标应用和缓存队列分别发送垂直同步信号,且在发送相同垂直同步信号时向目标应用发送的时间早于向缓存队列的发送时间,缓存队列在接收到垂直同步信号之前即可接收到目标应用基于该垂直同步信号发送的目标图像帧。电子设备在执行插帧方法时的具体执行过程如下:
[0107]
目标应用在首次接收到垂直同步信号(接收到第一个垂直同步信号)时生成第一个目标图像帧f1,并向缓存队列发送该第一个目标图像帧f1。由于目标应用是在接收到垂直同步信号后才能生成目标图像帧,且生成目标图像帧的时长少于5毫秒,因此缓存队列在接收到第一个垂直同步信号时,已经接收到了第一个目标图像帧f1,相应的,当目标应用在接收到第二个垂直同步信号生成第二个目标图像帧f2时,缓存队列会在接收到第二个垂直同步信号之前预设时长内接收到目标应用发送的第二个目标图像帧f2,当缓存队列在接收到第二个垂直同步信号f2时,处理器提取第二缓存区中存储的历史目标图像帧(第一个目标图像帧f1),将该历史目标图像帧进行渲染,以及依据历史目标图像帧和第二个目标图像帧f2生成第一中间插入帧f1.5,并将第一中间插入帧f1.5保存在第一缓存区中,以及将第二个目标图像帧f2作为新的历史目标图像帧并保存在第二缓存区中,从而使显示屏在进行屏幕刷新产生第三个垂直同步信号时即可显示渲染的图像帧。
[0108]
若在目标应用在接收到第三个垂直同步信号时因为网络卡顿等原因,造成未能及时生成新的目标图像帧,使得缓存队列在接收到第三个垂直同步信号之前预设时长内未接收到新的目标图像帧,处理器会在缓存队列接收到第三个垂直同步信号时提取第一缓存区中缓存的第一中间插入帧f1.5,对第一中间插入帧f1.5进行渲染后向显示屏发送渲染后的第一中间插入帧;并根据缓存队列的第二缓存区中存储的历史目标图像帧和第一中间插入帧f1.5生成第二中间插入帧f1.55;将第二中间插入帧f1.55作为新的第一中间插入帧并存放至第一缓存区,以使显示屏在进行屏幕刷新产生第四个垂直同步信号时显示渲染后的第一中间插入帧,从而实现插帧。
[0109]
若目标应用在接收到第四个垂直同步信号时生成第三个目标图像f3时,缓存队列会在接收到第四个垂直同步信号之前预设时长内接收到第三个目标图像帧f3,处理器则提取第二缓存区中缓存的历史目标图像帧,对历史目标图像帧进行渲染后向显示屏发送渲染后的历史目标图像帧并根据第三个目标图像帧f3和历史目标图像帧生成第三中间插入帧f2.5;丢弃第一缓存区中缓存的第一中间插入帧,并将第三中间插入帧f2.5作为新的第一中间插入帧存放至第一缓存区,显示屏在进行屏幕刷新产生第五个垂直同步信号时显示渲染后历史目标图像帧。
[0110]
通过使显示屏幕在每次屏幕刷新时间隔5毫秒向目标应用和缓存队列分别发送垂直同步信号,且在发送相同垂直同步信号时向目标应用发送的时间早于向缓存队列的发送时间,缓存队列在接收到垂直同步信号之前即可接收到目标应用基于该垂直同步信号发送的目标图像帧,以使缓存队列在接收到目标应用发送的目标图像帧即可尽快进行处理,从而减少了图像帧的延迟时长,实现了在在满足掉帧时及时补帧的同时,降低了图像帧的延迟时长,提升了图像帧显示的实时性能。
[0111]
请结合参阅图6和图11,作为另一种方式,用户需要播放的图像帧的帧率为120帧每秒,即对应的预设时长为8.33毫秒。目标应用产生目标图像帧的效率为60帧每秒,即相邻
两帧目标图像帧的产生时间间隔为16.67秒。屏幕刷新率为120次每秒,即相邻两次刷新时间为8.33毫秒。显示屏幕在每次屏幕刷新时间隔5毫秒向目标应用和缓存队列分别发送垂直同步信号,且在发送相同垂直同步信号时向目标应用发送的时间早于向缓存队列的发送时间,缓存队列在接收到垂直同步信号之前即可接收到目标应用基于该垂直同步信号发送的目标图像帧。电子设备在执行上述的插帧方法时具体过程如下:
[0112]
目标应用在首次接收到垂直同步信号(接收到第一个垂直同步信号)生成第一个目标图像帧f1,并向缓存队列发送该第一个目标图像帧f1,由于目标应用是在接收到垂直同步信号后才能生成目标图像帧,且生成目标图像帧的时长少于5毫秒,因此缓存队列在接收到第一个垂直同步信号时,已经接收到了第一个目标图像帧f1,并存储在第二缓存区中作为历史目标图像帧。此外,由于目标应用的产生目标图像帧的效率为60帧每秒,相邻两帧目标图像帧的产生时间间隔为16.67秒,而接收到垂直同步信号的间隔时长为8.335毫秒,因此,目标应用在每间隔一个垂直同步信号才会产生一个目标图像帧,相应的在接收到第二个垂直同步信号时,不会生成目标图像帧,而在接收到第三个垂直同步信号时,会生成第二个目标图像帧f2。因此缓存队列在接收到第二个垂直同步信号时会继续等待,直至收到第二个目标图像帧f2,且在接收到第三个垂直同步信号之前预设时长内即可接收到目标应用发送的第二个目标图像帧f2,处理器提取第二缓存区中存储的第一个目标图像帧f1,将该第一个目标图像帧f1进行渲染,以及依据第一个目标图像帧f1和第二个目标图像帧f2生成第一中间插入帧f1.5,并将第一中间插入帧f1.5保存在第一缓存区中,以及将第二个目标图像f2帧作为新的历史目标图像帧并保存在第二缓存区中,从而使显示屏在进行屏幕刷新产生第四个垂直同步信号时显示渲染的图像帧。
[0113]
由于目标应用在接收到第四个垂直同步信号时因不会生成新的目标图像帧,使得缓存队列在接收到第四个垂直同步信号之前预设时长内未接收到新的目标图像帧,处理器会在缓存队列接收到第四个垂直同步信号时提取第一缓存区中缓存的第一中间插入帧f1.5,对第一中间插入帧f1.5进行渲染后向显示屏发送渲染后的第一中间插入帧;并根据缓存队列的第二缓存区中存储的第二个目标图像帧f2和第一中间插入帧f1.5生成第二中间插入帧f1.55;将第二中间插入帧f1.55作为新的第一中间插入帧并存放至第一缓存区,以使显示屏在进行屏幕刷新产生第五个垂直同步信号时显示渲染后的第一中间插入帧。
[0114]
当目标应用在接收到第五个垂直同步信号时产生第三个目标图像f3时,缓存队列会在接收到第五个垂直同步信号之前预设时长内接收到第三个目标图像帧f3,处理器则提取第二缓存区中缓存的第二个目标图像帧f2,对第二个目标图像帧f2进行渲染后向显示屏发送渲染后的第二个目标图像帧并根据第三个目标图像帧f3和第二个目标图像帧f2生成第三中间插入帧f2.5;丢弃第一缓存区中缓存的第一中间插入帧,并将第三中间插入帧作为新的第一中间插入帧存放至第一缓存区,显示屏在进行屏幕刷新产生第六个垂直同步信号时显示渲染后第二个目标图像帧。
[0115]
通过使显示屏幕在每次屏幕刷新时间隔5毫秒向目标应用和缓存队列分别发送垂直同步信号,且在发送相同垂直同步信号时向目标应用发送的时间早于向缓存队列的发送时间,缓存队列在接收到垂直同步信号之前即可接收到目标应用基于该垂直同步信号发送的目标图像帧,以使缓存队列在接收到目标应用发送的目标图像帧即可尽快进行处理,从而减少了图像帧的延迟时长,实现了在在满足掉帧时及时补帧的同时,降低了图像帧的延
迟时长,提升了图像帧显示的实时性能。综上,本实施例通过添加第一缓冲区,来实现游戏实时的插补帧的同时避免掉帧的情况,并通过将垂直同步信号的延迟发送至缓存队列,有效缓解了渲染后的图像帧显示的延迟,从而减少插补帧对触控带来的延迟影响,使得在用户无感知的状态下保持帧率稳定,及满足用于对高帧率的要求。
[0116]
本申请实施例提供的一种插帧方法,通过由显示屏间隔设定时长分别发送至目标应用和缓存队列,使目标应用在接收到垂直同步信号时生成目标图像帧,以及使缓存队列接收到垂直同步信号之前预设时长内即可接收到目标应用生成的目标图像帧,进而在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长内接收到目标图像帧时,即可提取第二缓存区中缓存的历史目标图像帧,对历史目标图像帧进行渲染后向显示屏发送渲染后的图像帧,以显示渲染后的图像帧时,有效缩短了帧延迟时间,提高了图像帧显示的实时性。从而有效缓解了屏幕刷新时产生的垂直同步信号同时被发送至缓存队列和目标应用时,缓存队列需要延迟一个屏幕刷新时间间隔才能接收到对目标应用发送的目标图像帧,以及对历史目标图像帧进行渲染,从而造成在显示渲染后的图像帧时,也需要延迟一个屏幕刷新时间间隔才能显示的问题。
[0117]
请参阅图12,其示出了本申请实施例提供的一种插帧装置400的结构框图。该插帧装置400应用上述的电子设备,该插帧装置400包括:第一提取模块410、第一渲染模块420、第一生成模块430以及第一存放模块440。
[0118]
第一提取模块410,用于在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长内未接收到目标应用生成的目标图像帧时,提取第一缓存区中缓存的第一中间插入帧,第一缓存区为缓存队列中插入的用于存放中间插入帧的缓存区,中间插入帧为依据目标应用生成的历史目标图像帧得到的图像帧。第一渲染模块420,用于对第一中间插入帧进行渲染后向显示屏发送渲染后的图像帧。第一生成模块430,用于根据缓存队列的第二缓存区中存储的历史目标图像帧和第一中间插入帧生成第二中间插入帧。第一存放模块440,用于将第二中间插入帧作为新的第一中间插入帧并存放至第一缓存区。
[0119]
请参阅图13,在一些实施方式中,插帧装置400还包括:第二提取模块450、第二渲染模块460、第二生成模块470以及第二存放模块480。第二提取模块450用于在缓存队列接收到垂直同步信号,且在接收到垂直同步信号之前预设时长接收到目标图像帧时,提取第二缓存区中缓存的历史目标图像帧。第二渲染模块460,用于对历史目标图像帧进行渲染后向显示屏发送渲染后的图像帧。第二生成模块470,用于根据接收到的目标图像帧和历史目标图像帧生成第三中间插入帧。第二存放模块480,用于丢弃第一缓存区中缓存的第一中间插入帧,并将第三中间插入帧作为新的第一中间插入帧存放至第一缓存区。
[0120]
作为一种方式,插帧装置400还包括:属性信息获取模块和缓存区分配模块。属性信息获取模块,用于响应于帧率调整指令,获取显示屏当前播放的图像帧的属性信息。缓存区分配模块,用于在根据属性信息确认当前播放的图像帧为目标应用生成的图像帧时,向该当前播放的图像帧对应的缓存队列中分配第一缓存区。
[0121]
在该种方式下,插帧装置400还包括时长设置模块。时长设置模块用于获取帧率调整指令对应的目标帧率,根据目标帧率得到与该目标帧率对应的帧间隔时长,该帧间隔时长为预设时长。
[0122]
作为一种方式,垂直同步信号为显示屏在屏幕刷新时生成,且由显示屏间隔设定
时长分别发送至目标应用和缓存队列,插帧装置还包括:图像帧生成模块,用于获取目标应用在接收到垂直同步信号时生成的目标图像帧,并向缓存队列中发送目标图像帧。
[0123]
在该种方式下,插帧装置400还包括时刻获取模块和时长调整模块。时刻获取模块,用于获取目标应用在接收到n个历史垂直同步信号时分别对应的第一接收时刻,获取缓存队列在接收到与每个历史垂直同步信号对应历史目标图像帧时的第二接收时刻,其中,历史目标图像帧为目标应用基于目标历史时刻发送的垂直同步信号生成,n为大于或等于1的自然数。时长调整模块,用于根据每个历史垂直同步信号对应的第一接收时刻和第二接收时刻调整设定时长。
[0124]
在该种方式下,时长调整模块具体用于根据每个历史垂直同步信号对应的第一接收时刻和第二接收时刻,得到每个历史垂直同步信号对应的接收时延;对n个历史垂直同步信号对应的接收时延求取均值得到平均时延,根据该平均时延调整设定时长。
[0125]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0126]
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
[0127]
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0128]
请参阅图14,其示出了本申请实施例提供的一种电子设备100的结构框图。该电子设备100可以是手机、电脑以及平板电脑等能够运行应用程序的电子设备。本申请中的电子设备100可以包括一个或多个如下部件:处理器110、存储器120、显示屏130、惯性传感器140以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
[0129]
其中,处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器110可集成中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责待显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
[0130]
存储器120可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备100在使用中所创建
的数据(比如电话本、音视频数据、聊天记录数据)等。
[0131]
显示屏130用于显示由用户输入的信息、提供给用户的信息以及电子设备100的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、数字、视频和其任意组合来构成,在一个实例中,该显示屏130在屏幕刷新时生成垂直同步信号,并间隔设定时长向缓存队列和目标应用发送该垂直同步信号,以及显示合成后的图像帧。该显示屏130可以为液晶显示器(liquid crystal display,lcd),也可以为有机发光二极管(organic light-emitting diode,oled),在此不做限定。
[0132]
请参考图15,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质500中存储有程序代码,程序代码可被处理器调用执行上述方法实施例中所描述的方法。
[0133]
计算机可读存储介质500可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质500包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质500具有执行上述方法中的任何方法步骤的程序代码510的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码可以以适当形式进行压缩。
[0134]
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1