数据处理方法及装置与流程

文档序号:20204594发布日期:2020-03-27 21:04阅读:142来源:国知局
数据处理方法及装置与流程

本公开涉及计算机数据处理领域,尤其涉及数据处理方法及装置。



背景技术:

现有计算机画面的编解码流程如图1所示,每一帧都参考其前一帧或者前面最近的i帧进行编码。当用户切换场景时,会将当前帧视为场景切换,即上一帧或者i帧不能作为当前帧的参考,所以当前帧将会作为新的i帧进行编码,此技术的缺点是,如果用户频繁切换几个常用的场景,则系统会连续编i帧,也就是将发生切换的连续多帧都作为i帧输出,从而导致码流很大,给传输带来了很大的压力。



技术实现要素:

本公开实施例提供一种数据处理方法及装置,本公开能够解决背景技术中判断发生场景切换速度较慢的问题。所述技术方案如下:

根据本公开实施例的第一方面,提供一种数据处理方法,该方法包括:

其中,所述操作消息用于指示对当前页面的操作;

根据所述操作消息和预设规则确定当前页面是否发生场景切换。

在一个实施例中,获取操作消息之前,上述方法还包括:检测当前页面的显示状态;所述页面显示状态至少包含以下之一:多标签显示状态、多窗口显示状态、背景桌面显示状态或标签和窗口混合显示状态。

在一个实施例中,根据所述操作消息和预设规则确定当前页面是否发生场景切换包括:

判断所述操作消息对当前页面的操作是否为鼠标左键单击任务栏或触摸点击任务栏;

如果所述操作消息对当前页面的操作为鼠标左键单击任务栏或触摸点击任务栏,确定当前页面发生场景切换。

在一个实施例中,当前页面的显示状态为多标签显示状态,上述方法还包括:

如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏或触摸点击任务栏,判断所述操作消息对当前页面的操作是否为鼠标左键单击标签栏或触摸点击标签栏;

如果所述操作消息对当前页面的操作为鼠标左键单击标签栏或触摸点击标签栏,确定当前页面发生场景切换。

在一个实施例中,当前页面的显示状态为多窗口显示状态,上述方法还包括:

如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏或触摸点击任务栏,判断所述操作消息对当前页面的操作是否为鼠标左键单击窗口显示区域或触摸点击窗口显示区域;所述操作消息对当前页面的操作为鼠标左键单击窗口显示区域或触摸点击窗口显示区域,确定当前页面发生场景切换。

在一个实施例中,当前页面的显示状态为标签和窗口混合显示状态,上述方法还包括:

如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏或触摸点击任务栏,判断所述操作消息对当前页面的操作是否为鼠标左键单击窗口显示区域或标签栏中标签位置,或者判断所述操作消息对当前页面的操作是否为触摸点击窗口显示区域或标签栏中标签位置;

如果所述操作消息对当前页面的操作为鼠标左键单击窗口显示区域或标签栏中标签位置,或者所述操作消息对当前页面的操作为触摸点击窗口显示区域或标签栏中标签位置,确定当前页面发生场景切换。

在一个实施例中,当前页面的显示状态为背景桌面显示状态,上述方法还包括:

如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏并且不是触摸点击任务栏,确定当前页面未发生场景切换。

在一个实施例中,方法还包括:

确定当前发生场景切换时,按照预设规则选取满足预设条件的参考帧对当前页面进行帧间编码。

在一个实施例中,按照预设规则选取满足预设条件的参考帧对当前页面进行帧间编码包括:

获取参考帧队列;其中,所述参考帧队列中存储有多个原始参考帧;

分别统计所述当前图像帧相对参考帧队列中的多个原始参考帧不变宏块的数量;

根据所述统计结果,在所述参考帧队列中选取目标参考帧;

根据所述目标参考帧对所述当前图像帧进行帧间编码。

在一个实施例中,根据所述统计结果,在所述参考帧队列中选取目标参考帧包括:

将统计结果指示不变宏块数量最多的原始参考帧标选取为目标参考帧。

在一个实施例中,根据所述统计结果,在所述参考帧队列中选取目标参考帧包括:

将统计结果指示不变宏块数量最多的原始参考帧标识为潜在目标参考帧;

判断所述不变宏块数量是否大于预设阈值,在所述不变宏块数量大于预设阈值时,选取所述潜在目标参考帧为目标参考帧。

在一个实施例中,分别统计所述当前图像帧相对参考帧队列中的多个原始参考帧不变宏块的数量包括:

在当前图像帧和参考帧队列中的多个原始参考帧中对应的宏块中,抽取部分像素点的y分量,生成当前帧与参考帧队列中各帧的y分量缩略图;其中,当前图像帧和参考帧队列中的多个原始参考帧以yuv数据形式进行存储;

将当前帧的y分量缩略图与参考帧队列中各帧的y分量缩略图进行逐宏块比对,计算出当前图像帧相对参考帧队列中的多个原始参考帧不变宏块的数量。

根据本公开实施例的第二方面,提供一种数据处理装置,该装置包括:

获取模块,用于获取操作消息;其中,所述操作消息用于指示对当前页面的操作;

确定模块,用于根据所述操作消息和预设规则确定当前页面是否发生场景切换。

在一个实施例中,所述装置还包括:检测模块,用于获取操作消息之前,检测当前页面的显示状态;所述页面显示状态至少包含以下之一:多标签显示状态、多窗口显示状态、背景桌面显示状态或标签和窗口混合显示状态。

在一个实施例中,确定模块包括:

第一判断子模块,用于判断所述操作消息对当前页面的操作是否为鼠标左键单击任务栏或触摸点击任务栏;

第一确定子模块,用于如果所述操作消息对当前页面的操作为鼠标左键单击任务栏或触摸点击任务栏,确定当前页面发生场景切换。

在一个实施例中,当前页面的显示状态为多标签显示状态,上述装置还包括:

第二判断子模块,用于如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏或触摸点击任务栏,判断所述操作消息对当前页面的操作是否为鼠标左键单击标签栏或触摸点击标签栏;

第二确定子模块,用于如果所述操作消息对当前页面的操作为鼠标左键单击标签栏或触摸点击标签栏,确定当前页面发生场景切换。

在一个实施例中,当前页面的显示状态为多窗口显示状态,确定模块包括:

第三判断子模块,用于如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏或触摸点击任务栏,判断所述操作消息对当前页面的操作是否为鼠标左键单击窗口显示区域或触摸点击窗口显示区域;

第三确定子模块,用于所述操作消息对当前页面的操作为鼠标左键单击窗口显示区域或触摸点击窗口显示区域,确定当前页面发生场景切换。

在一个实施例中,当前页面的显示状态为标签和窗口混合显示状态,确定模块包括:

第四判断子模块,用于如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏或触摸点击任务栏,判断所述操作消息对当前页面的操作是否为鼠标左键单击窗口显示区域或标签栏中标签位置,或者判断所述操作消息对当前页面的操作是否为触摸点击窗口显示区域或标签栏中标签位置;

第四确定子模块,用于如果所述操作消息对当前页面的操作为鼠标左键单击窗口显示区域或标签栏中标签位置,或者所述操作消息对当前页面的操作为触摸点击窗口显示区域或标签栏中标签位置,确定当前页面发生场景切换。

在一个实施例中,当前页面的显示状态为背景桌面显示状态,确定模块还用于:如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏并且不是触摸点击任务栏,确定当前页面未发生场景切换。

在一个实施例中,上述数据处理装置还包括:

编码模块,用于确定当前发生场景切换时,按照预设规则选取满足预设条件的参考帧对当前页面进行帧间编码。

在一个实施例中,编码模块包括:

队列子模块,用于获取参考帧队列;其中,所述参考帧队列中存储有多个原始参考帧;

统计子模块,用于分别统计所述当前图像帧相对参考帧队列中的多个原始参考帧不变宏块的数量;

选取子模块,用于根据所述统计结果,在所述参考帧队列中选取目标参考帧;

编码子模块,用于根据所述目标参考帧对所述当前图像帧进行帧间编码。

将统计结果指示不变宏块数量最多的原始参考帧标选取为目标参考帧。

将统计结果指示不变宏块数量最多的原始参考帧标识为潜在目标参考帧;

判断所述不变宏块数量是否大于预设阈值,在所述不变宏块数量大于预设阈值时,选取所述潜在目标参考帧为目标参考帧。

在一个实施例中,统计子模块具体用于:

在当前图像帧和参考帧队列中的多个原始参考帧中对应的宏块中,抽取部分像素点的y分量,生成当前帧与参考帧队列中各帧的y分量缩略图;其中,当前图像帧和参考帧队列中的多个原始参考帧以yuv数据形式进行存储;

将当前帧的y分量缩略图与参考帧队列中各帧的y分量缩略图进行逐宏块比对,计算出当前图像帧相对参考帧队列中的多个原始参考帧不变宏块的数量。

针对判断是否发生场景切换这一问题,背景技术中大都是通常相邻两帧进行像素点或者宏块比对的方式,判断是否发生场景切换,这种方式的问题是比对速度较慢。办公场景下,计算机画面大多是跟随用户操作发生改变的,因此,用户操作对当前帧画面是否发生切换有一定的预测和判定作用,而相较于图像比对的方式,依据用户操进行判定的方式效率更高。

本公开的技术效果如下:

提供了不同用户页面显示状态下的,场景切换判断流程,大大缩短场景切换判断的速度和准确度;

在计算机用户频繁切换多个场景时,通过多参考帧的编码方式降低i帧编码的次数,从而降低码流;

在进行优选参考帧的选择时,采用缩略图的比对方式,可以在很大程度上减少从参考帧序列中选取最优参考帧的时间。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是本公开实施例提供的一种数据处理方法的流程图;

图2是本公开实施例提供的一种判断是否发生场景切换的流程图;

图3是本公开实施例提供的一种数据处理方法的流程图;

图4是本公开实施例提供的一种判断是否发生场景切换的流程图;

图5是本公开实施例提供的一种判断是否发生场景切换的流程图;

图6是本公开实施例提供的一种判断是否发生场景切换的流程图;

图7是本公开实施例提供的一种判断是否发生场景切换的流程图;

图8是本公开实施例提供的一种数据处理方法的流程图;

图9是本公开实施例提供的一种帧间编码的流程图;

图10是本公开实施例提供的一种数据处理方法的流程图;

图11是本公开实施例提供的一种当前帧与参考帧队列中原始参考帧比较的流程图;

图12是本公开实施例提供的一种像素点抽取示意图;

图13是本公开实施例提供的一种数据处理装置架构图;

图14是本公开实施例提供的一种数据处理装置架构图;

图15是本公开实施例提供的一种数据处理装置架构图;

图16是本公开实施例提供的一种数据处理装置架构图;

图17是本公开实施例提供的一种数据处理装置架构图;

图18是本公开实施例提供的一种数据处理装置架构图;

图19是本公开实施例提供的一种数据处理装置架构图;

图20是本公开实施例提供的一种数据处理装置架构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例提供一种数据处理方法,如图1所示,该数据处理方法包括以下步骤:

步骤101、获取操作消息;其中,所述操作消息用于指示对当前页面的操作;

其中,操作消息可以使键鼠事件消息;其中,所述键鼠事件消息至少包含键鼠事件类型和鼠标的位置参数;操作消息也可以是用户对触摸屏的操作。

步骤102、根据所述操作消息和预设规则确定当前页面是否发生场景切换。

具体的,该步骤包括:

判断所述操作消息对当前页面的操作是否为鼠标左键单击任务栏或触摸点击任务栏;

如果所述操作消息对当前页面的操作为鼠标左键单击任务栏或触摸点击任务栏,确定当前页面发生场景切换。

如果操作消息是键鼠事件消息,在所述键鼠事件类型指示鼠标左键发生了单击动作时,根据所述鼠标的位置参数确定当前页面是否发生场景切换。

可选的,在步骤101之前,该方法还可以包括:

步骤100、检测当前页面的显示状态;

本公开应用在桌面虚拟化场景。在桌面虚拟化场景下,客户端来说所接收到的所有桌面图像(计算机图像)都是服务器端的处理结果,也就是说,客户端只需要将键鼠消息发送到服务器端,由服务器端在本地进行执行后,将生成的图像返回给客户端,从而使用户达到像在本地进行操作一样的处理效果。

其中,所述页面显示状态至少包含以下之一:多标签显示状态、多窗口显示状态、背景桌面显示状态或标签和窗口混合显示状态。

多标签显示状态是指:同一个软件打开多个页面或文档的显示形式,比如,浏览器多页面或者office多文档模式。在这种显示状态下,每一个页面或文档都会对应生成一个标签,标签一般用来显示当前页面或文档的名称以及用于用户对当前页面或文档进行激活(从隐藏状态切换为显示状态)或者关闭;

多窗口显示状态是指:两个或两个以上软件窗口在桌面上同时显示;

背景桌面显示状态是指:未开启任何软件或者所有软件均进行最小化,此时,桌面显示图像为用户电脑桌面背景。

窗口和标签混合显示状态是指:桌面上同时显示一个或多个标签以及一个或者多个窗口。

由于用户发送给服务器的是键鼠消息或触摸操作消息,所述键鼠消息中包含键鼠事件类型和坐标参数,通过键鼠事件类型信息可以确定是否发生鼠标左键单击动作,而通过坐标参数可以定位当前发生的鼠标左键单击动作的位置,触摸操作消息中包含触摸操作的位置,而服务器端本身能够对当前运行的各程序的窗口和/或标签以及任务栏及其中各个应用程序图标的位置进行定位,因此,能够根据这些信息综合判断鼠标左键发生单击动作时或触摸操作时所针对的具体对象,从而分析出当前是否发生场景切换。

在一个实施例中,如图2所示,在所述键鼠事件类型指示鼠标左键发生了单击动作时,根据所述鼠标的位置参数确定当前页面是否发生场景切换包括:

步骤1021、判断鼠标单击位置是否在任务栏;

步骤1022、如果鼠标单击位置在任务栏,判断鼠标单位位置是否为程序图标位置;

步骤1023、鼠标单位位置为程序图标位置,确定当前页面发生场景切换。

图3是本公开实施例提供的一种数据处理方法,如图3所示的数据处理方法包括:

步骤301、检测当前页面的显示状态;

步骤302、获取操作消息;其中,所述操作消息用于指示对当前页面的操作;

步骤303、判断所述操作消息对当前页面的操作是否为鼠标左键单击任务栏或触摸点击任务栏;

如果所述操作消息对当前页面的操作为鼠标左键单击任务栏或触摸点击任务栏,执行步骤306。

步骤304、判断当前页面的显示状态;

如果当前页面的显示状态为多标签显示状态,执行步骤305;当前页面的显示状态为多窗口显示状态,执行步骤307;所述当前页面的显示状态为标签和窗口混合显示状态,执行步骤308;当前页面的显示状态为背景桌面显示状态,执行步骤309。

步骤305、判断所述操作消息对当前页面的操作是否为鼠标左键单击标签栏或触摸点击标签栏;

如果所述操作消息对当前页面的操作为鼠标左键单击标签栏或触摸点击标签栏,执行步骤306;

步骤306、确定当前页面发生场景切换。

步骤307、判断所述操作消息对当前页面的操作是否为鼠标左键单击窗口显示区域或触摸点击窗口显示区域;

所述操作消息对当前页面的操作为鼠标左键单击窗口显示区域或触摸点击窗口显示区域,执行步骤306。

步骤308、判断所述操作消息对当前页面的操作是否为鼠标左键单击窗口显示区域或标签栏中标签位置,或者判断所述操作消息对当前页面的操作是否为触摸点击窗口显示区域或标签栏中标签位置;

如果所述操作消息对当前页面的操作为鼠标左键单击窗口显示区域或标签栏中标签位置,或者所述操作消息对当前页面的操作为触摸点击窗口显示区域或标签栏中标签位置,执行步骤306。

下面着重对不同用户页面显示状态下的场景切换判断流程进行分别介绍。

1)多标签显示状态

参照图4,该状态下,通过以下方式判断是否发生场景切换:

步骤201a、持续检测鼠标动作;

步骤202a、判断是否发生鼠标左键单击动作;

如果是,则转入步骤203a,如果否,则确定当前未发生场景切换,同时转至步骤201a继续检测鼠标动作;

步骤203a、判断鼠标单击位置是否在任务栏;如果是,则转入步骤204a;如果否,则转入步骤206a;

步骤204a、进一步判断鼠标单位位置是否为程序图标位置,如果是,则转入步骤207a,确定当前发生场景切换;如果否,则确定当前未发生场景切换,同时转入步骤201a继续检测鼠标动作;

步骤205a、判断鼠标单击位置是否在标签栏;

如果是,则转入步骤206a;如果不是,则确定当前未发生场景切换,同时转入步骤201a,继续检测鼠标动作;

步骤206a、判断鼠标单击位置是否为标签位置;

如果是,则转入步骤207a;如果不是,则确定当前未发生场景切换,同时转入步骤201a、继续检测鼠标动作。

步骤207a、确定当前发生场景切换。

2)多窗口显示状态

参照图5,该状态下,通过以下方式判断是否发生场景切换:

步骤201b、持续检测鼠标动作;

步骤202b、判断是否发生鼠标左键单击动作?

如果是,则转入步骤203b,如果否,则确定当前未发生场景切换,同时转至步骤201b继续检测鼠标动作;

步骤203b、判断鼠标单击位置是否在任务栏;

如果是,则转入步骤204b;如果否,则转入步骤206b;

步骤204b、进一步判断鼠标单位位置是否为程序图标位置,如果是,则转入步骤206b,确定当前发生场景切换;如果否,则确定当前未发生场景切换,同时转入步骤201b继续检测鼠标动作;

步骤205b、判断鼠标单击位置是否为窗口显示区域;

如果是,则转入步骤206b;如果不是,则确定当前未发生场景切换,同时转入步骤201b,继续检测鼠标动作;

步骤206b、确定当前发生场景切换。

3)背景桌面显示状态

参照图6,该状态下,通过以下方式判断是否发生场景切换:

步骤201c、持续检测鼠标动作;

步骤202c、判断是否发生鼠标左键单击动作?如果是,则转入步骤203c,如果否,则确定当前未发生场景切换,同时转至步骤201c继续检测鼠标动作;

步骤203c、判断鼠标单击位置是否在任务栏;如果是,则转入步骤204c;如果否,则转入步骤206c;

步骤204c、进一步判断鼠标单击位置是否为程序图标位置,如果是,则转入步骤205c,确定当前发生场景切换;如果否,则确定当前未发生场景切换,同时转入步骤201c继续检测鼠标动作;

步骤205c,确定当前发生场景切换;

4)标签和窗口混合显示状态

参照图7,该状态下,通过以下方式判断是否发生场景切换:

步骤201d、持续检测鼠标动作;

步骤202d、判断是否发生鼠标左键单击动作?

如果是,则转入步骤203d,如果否,则确定没有发生场景切换,同时转至步骤201d继续检测鼠标动作;

步骤203d、判断鼠标单击位置是否在任务栏;如果是,则转入步骤204d;如果否,则转入步骤205d;

步骤204d、进一步判断鼠标单击位置是否为程序图标位置;

如果是,则转入步骤206d,确定当前发生场景切换;如果否,则确定当前未发生场景切换,同时转入步骤201d继续检测鼠标动作;

步骤205d、判断鼠标单击位置是否为标签栏中的标签位置或者任意窗口显示区域;

如果是,则转入步骤206d;如果不是,则确定未发生场景切换,同时转入步骤201d,继续检测鼠标动作;

步骤206d、确定当前发生场景切换。

本公开实施例提供一种数据处理方法,如图8所示,该数据处理方法包括以下步骤:

步骤801、获取键鼠事件消息;其中,所述键鼠事件消息至少包含键鼠事件类型和鼠标的位置参数;

步骤802、在所述键鼠事件类型指示鼠标左键发生了单击动作时,根据所述鼠标的位置参数确定当前页面是否发生场景切换。

步骤803、确定当前发生场景切换时,按照预设规则选取满足预设条件的参考帧对当前页面进行帧间编码。

在一个实施例中,如图9所示,按照预设规则选取满足预设条件的参考帧对当前页面进行帧间编码包括:

步骤8031、获取参考帧队列;其中,所述参考帧队列中存储有多个原始参考帧;

步骤8032、分别统计所述当前图像帧和参考帧队列中的多个原始参考帧不变宏块的数量;

步骤8033、根据统计结果,在所述参考帧队列中选取目标参考帧;

具体的,将统计结果指示不变宏块数量最多的原始参考帧标选取为目标参考帧。

在一个实施例中,将统计结果指示不变宏块数量最多的原始参考帧标识为潜在目标参考帧;

判断所述不变宏块数量是否大于预设阈值,在所述不变宏块数量大于预设阈值时,选取所述潜在目标参考帧为目标参考帧。

步骤8034、根据所述目标参考帧对所述当前图像帧进行帧间编码。

本公开实施例提供一种数据处理方法,如图10所示,该数据处理方法包括以下步骤:

根据用户操作判断是否发生场景切换,如果没有发生场景切换,则直接参考上一帧编码,然后进行宏块识别,更新参考帧队列,之后根据宏块识别的类型进行编码、码流聚合,流程结束。

如果发生场景切换,则进行当前帧与参考帧队列中原始参考帧比较的步骤,如图11所示,具体如下:

s1、将当前帧与参考帧队列中的各个参考帧进行比较,分别统计得到多组不变宏块的数目;

需要说明的是,每帧图像均是以plannar模式的yuv数据形式进行存储,具体的,plannar模式的yuv数据是指yuv数据分别存储在三个不同的数组中。

由于将当前帧与参考队列逐像素比较,其过程是相当耗时的,且其时间复杂度与参考帧队列的数目有很大关系,因此,在参考帧队列中的帧数的选取上,需要根据场景选取合适的值(本专利以8为例进行说明)。

同样的,在比较时,只对各个像素的y分量进行比较。

由于当前帧需要与参考帧队列中各个帧进行比较,为了加快比对速度,本公开中对参考帧队列中的各帧以及当前帧的y分量进行下采样处理,所述下采样处理具体是指:针对每个宏块只抽取一定数目的像素,比如,16x16的宏块只抽取4x4,也就是从原宏块中抽取16个像素点的y分量,组成新的4x4大小的缩略图。基于这种方式,能够分别生成当前帧与参考帧队列中各帧的y分量缩略图。

具体的,各帧图像生成缩略图的规则相同,也就是说,各帧图像中对应位置上的宏块的像素点抽取规则必须相同,当针对同一帧图像,每个宏块的像素点抽取规则可以不同。比如,抽取规则可以为:行和列中每4个像素抽取一个。为了简单起见,可以将每一个宏块的像素点抽取规则设置为相同,比如,可参照图12进行所有宏块中的像素点抽取:

图12仅是一种示例,实际抽取时,可以根据需要设置具体的抽取规则。

缩略图生成完毕后,将当前帧的y分量缩略图与参考帧队列中各帧的y分量缩略图进行逐宏块比对,具体的,进行比对的两个缩略图之间将对应位置上的宏块进行比对,并计算出相同宏块的个数(也就是不变宏块的数目)。

进行宏块比对时,对应位置上的像素点的y分量进行比对,如果所有像素点的y分量均对应相同,则确定为不变宏块,否则视为变化宏块。

s2、将不变宏块数目最多的参考帧,确定为潜在最优参考帧;

s3、判断潜在最优参考帧与当前帧比较得到的不变宏块的数目是否大于等于预设阈值,如果是,则确定所述潜在最优参考帧为最终的最优参考帧。

具体的,将潜在最优参考帧相对于当前帧的不变宏块数目与设定的阈值进行比较,若未超过阈值,则认为当前帧在参考帧队列中找不到合适的参考帧,必须将当前帧进行i帧编码,记录标记find_best_ref_flag为false;否则,认为在参考帧队列中已找到合适的参考帧,记录标记find_best_ref_flag为true,并在后续步骤中,将该最终确定的最优参考帧作为当前帧的参考帧,对当前帧进行编码。

图10中对当前帧进行宏块识别的说明如下:

此过程一般会将宏块分类为不变宏块、左拷贝宏块、上拷贝宏块、文本宏块、图片宏块等,其中不变宏块是当前帧与参考帧对应位置进行比较得到的结果,左拷贝宏块是当前宏块与左边宏块相比相同得到的结果,上拷贝宏块是当前宏块与上边宏块相比相同得到的结果,依据基本色比例及高梯度像素的比例这两个特征,将宏块区分为文本宏块与图片宏块。

图10中更新参考帧队列的说明如下:

只要确定当前帧是i帧,就将其无条件加入到参考帧队列中,且优先级别最高(即位于队尾),然后,依据步骤102得到的scene_cut_flag将参考帧队列进行更新;若scene_cut_flag为false,则只需将当前帧对应的参考帧用当前帧进行替换即可;若scene_cut_flag为true,且find_best_ref_flag为true,则在参考帧队列中将参考帧的优先级提高。若队列已满,则将队首参考帧移出参考帧队列,其余参考帧依次前移,将新的参考帧置于队尾。

将不同类别的宏块分别采用不同的编码模式进行编码,如文字宏块采用文本编码器、图片宏块采用jpeg编码器等。

图10中对码流聚合的说明如下:

将不同宏块的编码结果打包到码流中,在码流中需要加入当前帧参考参考队列中的哪一个参考帧,同时,需添加是否用当前帧更新参考帧队列的标记,如果收到该标记,则解码端会用当前帧来更新参考帧队列,也就是把当前帧加入参考帧队列,从而实现解码端参考帧队列的同步动态调整。

本公开实施例提供一种数据处理装置,如图13所示的数据处理装置130包括获取模块1301和确定模块1302;

获取模块1301用于获取操作消息;其中,所述操作消息用于指示对当前页面的操作;

确定模块1302用于根据所述操作消息和预设规则确定当前页面是否发生场景切换。

本公开实施例提供一种数据处理装置,如图14所示的数据处理装置140包括获取模块1401、确定模块1402和检测模块1403,检测模块1403用于在根据所述键鼠事件消息判断当前页面是否发生切换之前,检测当前页面的显示状态;其中,所述页面显示状态至少包含以下之一:多标签显示状态、多窗口显示状态、背景桌面显示状态或标签和窗口混合显示状态。

本公开实施例提供一种数据处理装置,如图15所示的数据处理装置150包括获取模块1501和确定模块1502;确定模块1502包括:

第一判断子模块15021,用于判断所述操作消息对当前页面的操作是否为鼠标左键单击任务栏或触摸点击任务栏;

第一确定子模块15022,用于如果所述操作消息对当前页面的操作为鼠标左键单击任务栏或触摸点击任务栏,确定当前页面发生场景切换在一个实施例中,当前页面的显示状态为背景桌面显示状态,第一确定模块15022还用于:如果鼠标单击位置不在任务栏,确定当前未发生场景切换。

本公开实施例提供一种数据处理装置,当前页面的显示状态为多标签显示状态,如图16所示的数据处理装置160包括获取模块1601和确定模块1602;确定模块1602包括:

第二判断子模块16021,用于如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏或触摸点击任务栏,判断所述操作消息对当前页面的操作是否为鼠标左键单击标签栏或触摸点击标签栏

第二确定子模块16022,用于如果所述操作消息对当前页面的操作为鼠标左键单击标签栏或触摸点击标签栏,确定当前页面发生场景切换。

本公开实施例提供一种数据处理装置,当前页面的显示状态为多窗口显示状态,如图17所示的数据处理装置170包括获取模块1701和确定模块1702;确定模块1702包括:

第三判断子模块17021,用于如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏或触摸点击任务栏,判断所述操作消息对当前页面的操作是否为鼠标左键单击窗口显示区域或触摸点击窗口显示区域第三确定子模块17022,用于所述操作消息对当前页面的操作为鼠标左键单击窗口显示区域或触摸点击窗口显示区域,确定当前页面发生场景切换。

本公开实施例提供一种数据处理装置,当前页面的显示状态为标签和窗口混合显示状态,如图18所示的数据处理装置180包括获取模块1801和确定模块1802;确定模块1802包括:

第四判断子模块18021,用于如果所述操作消息对当前页面的操作不是鼠标左键单击任务栏或触摸点击任务栏,判断所述操作消息对当前页面的操作是否为鼠标左键单击窗口显示区域或标签栏中标签位置,或者判断所述操作消息对当前页面的操作是否为触摸点击窗口显示区域或标签栏中标签位置;

第四确定子模块18022,用于如果所述操作消息对当前页面的操作为鼠标左键单击窗口显示区域或标签栏中标签位置,或者所述操作消息对当前页面的操作为触摸点击窗口显示区域或标签栏中标签位置,确定当前页面发生场景切换。

本公开实施例提供一种数据处理装置,如图19所示的数据处理装置190包括获取模块1901、确定模块1902和编码模块1903,编码模块1903用于确定当前发生场景切换时,按照预设规则选取满足预设条件的参考帧对当前页面进行帧间编码。

本公开实施例提供一种数据处理装置,如图20所示的数据处理装置200包括获取模块2001、确定模块2002和编码模块2003,编码模块2003包括:

队列子模块20031,用于获取参考帧队列;其中,所述参考帧队列中存储有多个原始参考帧;

统计子模块20032,用于分别统计所述当前图像帧和参考帧队列中的多个原始参考帧不变宏块的数量;

可选的,统计子模块20031具体用于:在当前图像帧和参考帧队列中的多个原始参考帧中对应的宏块中,抽取部分像素点的y分量,生成当前帧与参考帧队列中各帧的y分量缩略图;其中,当前图像帧和参考帧队列中的多个原始参考帧以yuv数据形式进行存储;

将当前帧的y分量缩略图与参考帧队列中各帧的y分量缩略图进行逐宏块比对,计算出不变宏块的数量。

选取子模块20033,用于根据所述统计结果,在所述参考帧队列中选取目标参考帧;

可选的,将统计结果指示不变宏块数量最多的原始参考帧标选取为目标参考帧。

可选的,将统计结果指示不变宏块数量最多的原始参考帧标识为潜在目标参考帧;判断所述不变宏块数量是否大于预设阈值,在所述不变宏块数量大于预设阈值时,选取所述潜在目标参考帧为目标参考帧。

编码子模块20034,用于根据所述目标参考帧对所述当前图像帧进行帧间编码。

基于上述图1对应的实施例中所描述的数据处理方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:readonlymemory,rom)、随机存取存储器(英文:randomaccessmemory,ram)、cd-rom、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1对应的实施例中所描述的数据处理方法,此处不再赘述。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1