动画播放方法及装置与流程

文档序号:11407827阅读:217来源:国知局
动画播放方法及装置与流程
本发明涉及图形图像处理领域,特别涉及一种用于包含多核处理器的嵌入式终端中播放Flash动画的动画播放方法及装置。

背景技术:
Flash是互联网领域使用最为普遍的一种互动多媒体动画。随着Flash相关技术的不断发展,Flash也在不断复杂化和功能多样化。目前,如何利用诸如手机或者平板电脑之类的嵌入式终端的有限系统资源流畅地播放Flash动画文件是现代互联网企业的热门研究课题之在现有技术中,嵌入式终端中的CPU大多为单核心。在播放Flash动画文件时需要完成加载、解析、渲染和播放等等一系列操作。当Flash动画文件比较复杂和比较庞大时,CPU经常需要全速运行来完成整个播放过程。在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于Flash动画文件的不断复杂化和功能多样化,现有的Flash动画的动画播放方法通常需要全速占用CPU来处理数据,对嵌入式终端的资源占用较大。即便是如此,Flash动画的播放效果依然很差,播放速度较慢还容易卡顿,经发明人分析可知,整个Flash播放过程中,在渲染步骤中对CPU的占用尤为明显,是造成现有Flash动画的动画播放方法的播放效果差的主要原因之一。

技术实现要素:
为了在嵌入式终端中获得更好的Flash动画播放效果,本发明实施例提供了一种适用于包含多核处理器的嵌入式终端中的动画播放方法及装置。所述技术方案如下:根据本发明的一个方面,本发明实施例提供一种动画播放方法,适用于包含多核处理器的终端中,所述多核处理器包含至少两个处理核心,所述方法包括:获取待播放动画中当前帧的待渲染数据;按照预定拆分方式,将所述当前帧的待渲染数据拆分为至少两个子图像数据;将所述至少两个子图像数据分别交由各个处理核心进行并行渲染,得到渲染后的子图像数据;将所述渲染后的子图像数据组合为所述当前帧的图像数据进行播放。进一步地,所述将当前帧的待渲染数据拆分为至少两个子图像数据,具体包括:所述预定拆分方式包括以下方式中的任一种:按照显示区域拆分、按照处理核心个数拆分、按照包含对象的个数拆分、按照包含对象的类型拆分和按照包含对象所处的图层拆分。进一步地,所述获取每帧图像的待渲染数据,具体包括:加载所述待播放动画的动画文件;解析所述动画文件,以获取至少一个控制标签和至少一个定义标签;依次识别每个控制标签的操作指令;根据每个控制标签的操作指令来操作所述定义标签以生成所述当前帧的待渲染数据。进一步地,所述加载所述待播放动画的动画文件,具体包括:识别待播放动画的动画文件的类型,所述类型包括主动画文件和子动画文件中的一种;如果识别到所述动画文件的类型为主动画文件,则由当前处理核心加载所述动画文件;如果识别到所述动画文件的类型为子动画文件,则由空闲处理核心加载所述动画文件。进一步地,所述解析所述动画文件,以获取至少一个控制标签和至少一个定义标签,具体包括:采用当前处理核心对所述主动画文件进行解析,获得所述主动画文件中的至少一个控制标签和至少一个定义标签;和/或,采用空闲处理核心对所述子动画文件进行解析,获得所述子动画文件中的至少一个控制标签和至少一个定义标签。进一步地,所述依次识别每个控制标签的操作指令,具体包括:识别所述控制标签的类型是否为脚本标签;如果识别所述控制标签的类型为脚本标签,则将所述类型为脚本标签的控制标签交由空闲处理核心进行处理以获得所述控制标签的操作指令。根据本发明的另一方面,本发明实施例还提供一种动画播放装置,适用于包含多核处理器的终端中,所述多核处理器包含至少两个处理核心,所述装置包括:数据获取模块,用于获取待播放动画中当前帧的待渲染数据;数据拆分模块,用于按照预定拆分方式,将所述当前帧的待渲染数据拆分为至少两个子图像数据;数据渲染模块,用于将所述至少两个子图像数据分别输入各个处理核心进行并行渲染,得到渲染后的子图像数据;数据播放模块,用于将所述渲染后的子图像数据组合为所述当前帧的图像数据进行播放。进一步地,所述数据拆分模块,具体包括:区域拆分单元、核心拆分单元、对象拆分单元、类型拆分单元和图层拆分单元中的任一种;所述区域拆分单元,用于将所述当前帧的待渲染数据按照显示区域拆分为至少两个子图像数据;所述核心拆分单元,用于将所述当前帧的待渲染数据按照包含对象的个数拆分为至少两个子图像数据;所述预定拆分单元,用于将所述当前帧的待渲染数据按照处理核心的个数拆分为至少两个子图像数据;所述类型拆分单元,用于将所述当前帧的待渲染数据按照包含对象的类型拆分为至少两个子图像数据;所述图层拆分单元,用于将所述当前帧的待渲染数据按照包含对象所处的图层拆分为至少两个子图像数据。进一步地,所述数据获取模块,具体包括:动画文件加载单元、动画文件解析单元、控制标签识别单元和控制标签执行单元;所述动画文件加载单元,用于加载所述待播放动画的动画文件;所述动画文件解析单元,用于解析所述动画文件,以获取至少一个控制标签和至少一个定义标签;所述控制标签识别单元,用于依次识别每个控制标签的操作指令;所述控制标签执行单元,用于根据每个控制标签的操作指令来操作所述定义标签以生成所述当前帧的待渲染数据。进一步地,所述动画文件加载单元,具体包括:文件类型识别子单元、主动画文件加载子单元和子动画文件加载子单元;所述文件类型识别子单元,用于识别待加载的动画文件的类型,所述类型包括主动画文件和子动画文件中的一种;所述主动画文件加载子单元,用于如果识别到所述动画文件的类型为主动画文件,则由当前处理核心加载所述动画文件;所述子动画文件加载子单元,用于如果识别到所述动画文件的类型为子动画文件,则由空闲处理核心加载所述动画文件。进一步地,所述动画文件解析单元,具体包括:主动画文件解析子单元和子动画文件解析子单元;所述主动画文件解析子单元,用于采用当前处理核心对所述主动画文件进行解析,以获得所述主动画文件中的至少一个控制标签和至少一个定义标签;所述子动画文件解析子单元,用于采用空闲处理核心对所述子动画文件进行解析,获得所述子动画文件中的至少一个控制标签和至少一个定义标签。进一步地,所述控制标签识别单元,具体包括:类型识别子单元和脚本执行子单元;所述类型识别子单元,用于识别所述控制标签的类型是否为脚本标签;所述脚本执行子单元,用于如果识别所述控制标签的类型为脚本标签,则将所述类型为脚本标签的控制标签交由空闲处理核心进行处理以获得所述控制标签的操作指令。本发明实施例提供的技术方案带来的有益效果是:通过将渲染过程中的待渲染数据拆分为多个部分,由多核处理器中的各个处理核心分别渲染而达到并行渲染的效果,使得Flash动画的播放速度得到明显提升,解决了Flash动画播放时经常全速占用CPU的问题。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例一提供的动画播放方法的方法流程图;图2是本发明实施例二提供的动画播放方法的方法流程图;图3是本发明实施例三提供的动画播放装置的结构方框图;图4是本发明实施例三提供的动画文件加载单元的结构方框图;图5是本发明实施例三提供的数据拆分模块的结构方框图;图6是本发明实施例三提供的动画文件解析单元的结构方框图;图7是本发明实施例三提供的控制标签识别单元的结构方框图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例一请参考图1,其示出了实施例一提供的动画播放方法的方法流程图。该动画播放方法适用于包含多核处理器的嵌入式设备中,该动画播放方法包括:步骤101,获取待播放动画中当前帧的待渲染数据;在需要播放一个动画文件时,首先需要加载动画文件,动画文件通常也即ShockWaveFlash文件,简称SWF文件。SWF文件通常包括有一个文件头部分和文件体部分,文件头部分定义了Flash动画的版本、大小、帧率和总帧数等信息,文件体部分通常包括有大量的标签;然后,解析加载到的SWF文件可以获得定义标签和控制标签,每个定义标签用于定义动画中的一个对象或者说一个对象的所有信息,在Flash动画中常见的每个人、每个动物、每个树木都可以认为是一个对象,每帧图像都是由若干个对象组成;对象的信息通常包含有属性、位置、类别和所处图层等一系列信息。控制标签用于控制对象的绘制和运动;根据对应于一帧图像的定义标签和控制标签可以获取到该帧图像的待渲染数据。步骤102,按照预定拆分方式,将当前帧的待渲染数据拆分为至少两个子图像数据;在获取到一帧图像的待渲染数据后,可以按照预定拆分方式将当前帧的待渲染数据拆分为至少两个子图像数据。该预定拆分方式可以有不同方式,比如一种方式为:按照该帧图像在屏幕上显示时的显示区域划分为若干块显示区域,然后将对应于每块显示区域的待渲染数据拆分为一个子图像数据。具体地讲,可以将该帧图像在屏幕上显示时的显示区域划分为6块,将对应于每块显示区域的待渲染数据拆分为一个子图像数据。步骤103,将至少两个子图像数据分别输入各个处理核心进行并行渲染,得到渲染后的子图像数据;将拆分后的子图像数据分别输入各个处理核心进行并行渲染,比如嵌入式终端包括4个CPU核心:第一处理核心、第二处理核心、第三处理核心和第四处理核心,一帧图像的待渲染数据拆分后包括6个子图像数据,则可以将拆分后的第1个至第4个子图像数据分别输入第一处理核心、第二处理核心、第三处理核心和第四处理核心进行并行渲染,然后各个处理核心可以将渲染后的每个子图像数据放入缓冲区;同时,在第1个至第4个子图像数据中的任一个子图像数据被渲染完毕后,也即存在空闲处理核心时,立刻将第5个子图像数据输入该空闲处理核心进行处理,第6个子图像数据也可以采用同样的处理方式,使得在很短时间内就可以将一帧图像的待渲染数据渲染完毕。当然,也可以将待渲染数据根据嵌入式终端所包含的核心个数拆分为相应个数的子图像数据,比如嵌入式终端所包含的处理核心为4个,则将一帧图像的待渲染数据也拆分为4个子图像数据,可以获得更快的渲染速度。步骤104,将渲染后的子图像数据组合为当前帧的图像数据进行播放;在当前帧的每个子图像数据都渲染完毕,也即渲染后获得的每个子图像数据都存入缓冲区时,可以将缓冲区中当前帧的所有子图像数据组合为当前帧的图像数据。播放器可以对当前帧的图像数据进行播放。对于其它帧的处理过程,与当前帧的处理过程均相同。综上所述,本发明实施例一提供的动画播放方法通过将渲染过程中的待渲染数据拆分为多个部分,由多核处理器中的各个处理核心分别渲染而达到并行渲染的效果,使得Flash动画的播放速度得到明显提升,解决了Flash动画播放时经常全速占用CPU的问题。更为详细地讲,现有技术中的每帧图像的待渲染数据的渲染过程较长,可能超过了两帧之间的间隔时间,所以容易出现卡顿现象。并且在此渲染过程中CPU被全速占用,甚至会影响到来电、短信等高优先级的系统任务未能被及时处理。而本发明实施例一提供的动画播放方法的渲染过程较为短暂,通常远小于两帧之间的间隔时间,使得CPU很快能够被释放,并且不会影响到来电、短信等高优先级的其它系统任务的处理。实施例二请参考图2,其示出了本发明实施例二提供的动画播放方法的方法流程图。该动画播放方法适用于包含多核处理器的嵌入式设备中,该动画播放方法包括:步骤201,加载待播放动画的动画文件;动画文件也即SWF文件,在需要播放一个Flash动画时,需要加载该Flash动画的动画文件。在简单的Flash动画中,可能只有一个动画文件。在较为复杂的Flash动画中,可能存在不止一个动画文件,比如一个Flash游戏,可以包括一个主动画文件和若干个子动画文件,主动画文件对应Flash游戏运行时必不可少的部分,每个子动画文件可以对应Flash游戏的每一关的相应部分,子动画文件不是必须加载的部分,只有在用户玩游戏进入了该项关卡时,才会加载相应的子动画文件以加载相应的道具和场景等。为了能够获得更为快速的加载过程,该加载动画文件可以具体包括:第一,识别待播放动画的动画文件的类型,该类型包括主动画文件和子动画文件中的一种;动画文件中可以存在有标识信息,用于标识该动画文件是主动画文件还是子动画文件。在加载一个动画文件时,可以首先识别动画文件中的标识信息,以判别该动画文件的类型。如果识别到是主动画文件,则进入第二步骤;如果识别到是子动画文件,则进入第三步骤。第二,如果识别到动画文件的类型为主动画文件,则由当前处理核心加载动画文件;通常最开始加载的一个动画文件是主动画文件,如果识别到动画文件的类型为主动画文件,则由当前处理核心加载主动画文件。第三,如果识别到动画文件的类型为子动画文件,则由空闲处理核心加载动画文件。如果识别到动画文件为子动画文件,则可以将子动画文件的加载任务交由空闲处理核心处理。在具体的实施例中,可以将子动画文件的加载任务封装成独立的任务交由系统的操作系统调度,由操作系统将该任务交由空闲处理核心处理。同时子动画文件也可以初始不加载,等接收到相应的加载触发信号后再加载,该加载触发信号可以是玩家通过某一关卡的信号。步骤202,解析动画文件,以获得至少一个定义标签和至少一个控制标签;动画文件通常包括有一个文件头部分和文件体部分,文件头部分定义了Flash动画的版本、大小、帧率和总帧数等信息,文件体部分通常包括有大量的标签。这些标签包括两类标签:用于定义动画中每个对象的定义标签和用于控制每个对象的绘制和运动的控制标签。具体地讲,定义标签用于定义Flash动画中的内容,如形状、文字、位图和声音等等,这些形状、文字、位图和声音可以认为是一个对象。换句话说,每个定义标签定义了一个对象的所有信息,比如一个定义标签可以定义一个对象的类别为矢量多边形、形状为小草型、颜色为绿色、初始空间位置为(xx,yy)、初始图...
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1