CN103310475B - 动画播放方法及装置 - Google Patents
动画播放方法及装置 Download PDFInfo
- Publication number
- CN103310475B CN103310475B CN201210070666.5A CN201210070666A CN103310475B CN 103310475 B CN103310475 B CN 103310475B CN 201210070666 A CN201210070666 A CN 201210070666A CN 103310475 B CN103310475 B CN 103310475B
- Authority
- CN
- China
- Prior art keywords
- animation file
- sub
- animation
- data
- split
- 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.)
- Active
Links
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种动画播放方法及装置,属于图形图像处理领域。所述方法包括:获取当前帧的待渲染数据;按照预定拆分方式,将当前帧的待渲染数据拆分为至少两个子图像数据;将所述至少两个子图像数据分别输入各个处理核心进行并行渲染,得到渲染后的子图像数据;将所述渲染后的子图像数据组合为所述当前帧的图像数据进行播放。本发明通过将渲染过程中的待渲染数据拆分为多个部分,由多核处理器中的各个处理核心分别渲染而达到并行渲染的效果,使得Flash动画的播放速度得到明显提升,解决了Flash动画播放时经常全速占用CPU的问题。
Description
技术领域
本发明涉及图形图像处理领域,特别涉及一种用于包含多核处理器的嵌入式终端中播放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,获取待播放动画中当前帧的待渲染数据;
在需要播放一个动画文件时,首先需要加载动画文件,动画文件通常也即ShockWave Flash文件,简称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等等。在Flash动画中常见的每个人、每个动物、每个树木都是一个对象,每个对象都是由一个定义标签来定义的。
控制标签则用于控制定义标签定义的每个对象的绘制、运动和变化等过程,通常一个控制标签用于控制一个对象的绘制、运动和变化等。
在动画文件中可以包括有非常多个标签,解析动画文件可以获得定义标签和控制标签,具体可以包括:
第一,将已经加载的动画文件交由各个处理核心进行解析以获得动画文件中的至少一个定义标签和至少一个控制标签;
已经加载的动画文件可以是主动画文件,也可以是子动画文件,将已经加载的动画文件可以交由各个处理核心进行解析,以获得动画文件中的所有定义标签和所有控制标签。通过多个处理核心来进行解析可以获得更快的解析速度。具体地讲,一方面,可以采用当前处理核心对主动画文件进行解析,获得主动画文件中的至少一个控制标签和至少一个定义标签;另一方面,可以采用空闲处理核心对子动画文件进行解析,获得子动画文件中的至少一个控制标签和至少一个定义标签。
第二,将至少一个定义标签都存储入字典缓存,每个定义标签用于定义一个对象的所有信息。
由于每个定义标签都定义一个对象的所有信息,可以将动画文件中的所有对象都放入一个存储空间等待使用,这个存储空间通常称之为字典缓存。需要特别说明的是,现有技术中,由于单核心处理过程的特点,定义标签通常是按照动画播放的过程逐次加载到字典缓存中,而本实施例中,可以由各个处理核心进行预解析,在当前处理核心进行解析过程的同时,将后续的一些定义标签由其它处理核心预先解析并存入字典缓存中。
步骤203,根据定义标签和控制标签生成当前帧的待渲染数据;
结合已经放入字典缓存中的对象和控制标签,可以获得每帧图像的待渲染数据,该步骤具体可以包括:
第一,依次识别每个控制标签的操作指令,操作指令包括加载对象、修改对象、删除对象和绘制当前帧中的任一种。
每个控制标签根据操作指令的不同具有不同的作用,一个控制标签的操作指令可以包括加载对象、修改对象、删除对象和绘制当前帧中的任一种。在得到一个动画文件中的所有标签后,可以依次处理每个控制标签。
第二,如果识别到当前控制标签的操作指令为加载对象,则根据当前控制标签中的信息从字典缓存中加载相应对象的所有信息至显示列表中。
显示列表是一种存储结构,用于存储当前帧的所有对象及对应信息。操作指令为加载对象的控制标签通常为初始几帧中将一个对象初步显示时采用,或者在播放过程中,需要将新的对象加入帧图像时采用。
第三,如果识别到当前控制标签的操作指令为修改对象,则根据当前控制标签中的信息修改已经在显示列表中的相应对象的全部或部分信息;
大部分控制标签的操作指令为修改对象,比如对前一帧图像中的某个对象,需要在当前帧里面向前位移一小段显示,则可以根据操作指令为修改对象的控制标签,将已经在显示列表中的该对象的位置信息通过变换矩阵进行修改,以便其在当前帧显示时显示在新的位置。当然操作指令为修改对象的控制标签也可以用于修改其它的信息。
第四,如果识别到当前控制标签的操作指令为删除对象,则根据当前控制标签中的信息删除已经在显示列表中的相应对象的所有信息;
当前一帧图像中的某个对象不需要在当前帧中继续显示时,可以通过操作指令为删除对象的控制标签将其从显示列表中删除。
第五,如果识别到当前控制标签的操作指令为绘制当前帧,则根据当前控制标签中的信息提取显示列表中的所有对象的信息生成当前帧的待渲染数据。
通常情况下,在前一帧图像显示之后,经过几个控制标签对显示列表中的所有对象进行增加、修改或者删除之后,又识别到当前控制标签的操作指令为绘制当前帧时,则可以提取当前显示列表中的所有对象的信息来生成当前帧的待渲染数据。
需要说明的是,在较为复杂的Flash动画中,为了实现人机交互或者更为复杂的效果,控制标签中还可以包括类型为脚本标签的控制标签。该脚本为AS(ActionScript,动作脚本)脚本,则依次识别每个控制标签的操作指令的步骤,还可以包括:
第一,判断控制标签的类型是否为脚本标签;
也即,如果判断到某个控制标签的类型为AS脚本标签,则进入第二步骤。
第二,如果判断所有控制标签中的某一个控制标签的类型为脚本标签,则将类型为脚本标签的控制标签交由空闲处理核心处理以获取该控制标签的操作指令。
类型为脚本标签的控制标签的解析和执行任务可以由ActionScript虚拟机来完成,为了保证播放速度,可以将ActionScript虚拟机分配到一个空闲处理核心来独占运行,当有类型为脚本标签的控制标签时,由该运行ActionScript虚拟机的处理核心来完成解析和执行的处理,并根据运行结果中的操作指令对对象进行处理。
步骤204,按照预定拆分方式,将当前帧的待渲染数据拆分为至少两个子图像数据;
预定拆分方式可以包括以下方式中的任一种:按照显示区域拆分、按照处理核心个数拆分、按照包含对象的个数拆分、按照包含对象的类型拆分、按照包含对象所处的图层拆分;
在获取到当前帧的待渲染数据后,可以将当前帧的待渲染数据拆分为至少两个子图像数据。通常情况下,可以按照该帧图像在屏幕上显示时的显示区域划分为预定块显示区域,然后将对应于每块显示区域的待渲染数据拆分为一个子图像数据。比如,可以将该帧图像在屏幕上显示时的显示区域划分为6块,将对应于每块显示区域的待渲染数据拆分为一个子图像数据。
需要说明的是,将当前帧的待渲染数据拆分为至少两个子图像数据,还可以采用以下方式中的任一种来实现:
第一种方式,将当前帧的待渲染数据中按照处理核心的个数来拆分为至少两个子图像数据;
如果多核处理器的处理核心为4个,则可以将当前帧的待渲染数据拆分为4个子图像数据。
第二种方式,将当前帧的待渲染数据中按照包含对象的个数来拆分为至少两个子图像数据;
由于显示列表通常采用树形存储结构,可以采用深度遍历或者广度遍历的方式将显示列表中的所有对象存入队列中,将每单个对象拆分为一个子图像数据,然后将队列中的所有对象依次分配给各个处理核心去处理。也就是说,每当存在空闲处理核心时,就将队列中位于队首的对象的所有信息交给该处理核心去处理。
第三种方式,将当前帧的待渲染数据中包含的所有对象按照类型进行分类,将分类后的每一类对象的信息拆分为一个子图像数据,该类型包括字体类型、图像类型和矢量多边形类型中的任一种。
每个对象的信息中通常包括有该对象的类型信息,比如该对象是字体类型、还是图像类型、也或者是矢量多边形等等。在此种方式中,也可以将显示列表中的所有类别为字体类型的对象拆分为一个子图像数据,所有类别为图像类型的对象拆分为一个子图像数据,所有类别为矢量多边形的对象拆分为一个子图像数据。然后将每个子图像数据分别交由各个处理核心进行渲染。所述类型可以包括字体类型、图像类型和矢量多边形类型中的任一种,当然本领域技术人员易于知悉的是,所述类型还可以包括定义标签所定义的其它类型。
第四种方式,将当前帧的待渲染数据中包含的所有对象按照所处图层进行分类,将处于同一图层的对象的信息拆分为一个子图像数据。
一帧图像通常包括有多个图层,位于上层的对象在显示时会覆盖位于下层的显示对象。每个对象的信息中通常还包括有该对象的所处图层信息,比如该对象是位于第0图层,第1图层等等。在此种方式中,也可以将显示列表中的所有处于第0图层的对象拆分为一个子图像数据,所有处于第1图层的对象拆分为一个子图像数据,…,所有处于第n图层的对象拆分为一个子图像数据。然后将每个子图像数据分别交由各个处理核心进行渲染。
步骤205,将至少两个子图像数据分别输入各个处理核心进行并行渲染,得到渲染后的子图像数据;
将拆分后的子图像数据分别交由各个处理核心进行并行渲染,比如嵌入式终端包括4个CPU核心:第一处理核心、第二处理核心、第三处理核心和第四处理核心,一帧图像的待渲染数据拆分后包括6个子图像数据,则可以将拆分后的第1个至第4个子图像数据分别输入第一处理核心、第二处理核心、第三处理核心和第四处理核心进行并行渲染,然后各个处理核心可以将渲染每个子图像数据后得到的子图像数据放入缓冲区;同时,在第1个至第4个子图像数据中的任一个子图像数据被渲染完毕后,也即存在空闲处理核心时,立刻将第5个子图像数据输入该空闲处理核心进行处理,第6个子图像数据也可以采用同样的处理方式,使的在很短时间内就可以将一帧图像的待渲染数据渲染完毕。当然,也可以将待渲染数据根据嵌入式终端所包含的核心个数拆分为相应个数的子图像数据,比如嵌入式终端所包含的处理核心为4个,则将一帧图像的待渲染数据也拆分为4个子图像数据,可以获得更快的渲染速度。
步骤206,将渲染后的子图像数据组合为当前帧的图像数据进行播放;
在当前帧的每个子图像数据都渲染完毕,也即每个子图像数据在渲染后获得的子图像数据都存入缓冲区时,可以将缓冲区中当前帧的所有子图像数据组合为当前帧的图像数据。播放器可以对当前帧的图像数据进行播放。
对于其它帧的处理过程,与当前帧的处理过程均相同。
综上所述,本发明实施例二提供的动画播放方法通过将渲染过程中的待渲染数据拆分为多个部分,由多核处理器中的各个处理核心分别渲染而达到并行渲染的效果,使得Flash动画的播放速度得到明显提升,解决了Flash动画播放时经常全速占用CPU的问题。同时,将加载过程、解析过程、AS脚本执行过程中可以异步处理的部分均分散于空闲的处理核心来并行运行,可以尽可能利用嵌入式终端的多核心优势,来获得更快、更流畅的动画播放效果。
实施例三
请参考图3,其示出了本发明实施例三提供的动画播放装置的结构方框图。该动画播放装置可以适用于包含多核心的嵌入式终端中,该动画播放装置可以包括数据获取模块310、数据拆分模块320、数据渲染模块330和数据播放模块340。
数据获取模块310用于获取待播放动画中当前帧的待渲染数据;
数据拆分模块320用于按照预定拆分方式,将当前帧的待渲染数据拆分为至少两个子图像数据。根据具体采用的预定拆分方式,数据拆分模块320可以包括以下单元中的任一个:区域拆分单元321、核心拆分单元322、对象拆分单元323、类型拆分单元324和图层拆分单元325,如图4所示。
区域拆分单元321用于将当前帧的待渲染数据按照显示区域拆分为至少两个子图像数据;核心拆分单元322用于将当前帧的待渲染数据按照包含对象的个数拆分为至少两个子图像数据;预定拆分单元323用于将当前帧的待渲染数据按照处理核心的个数拆分为至少两个子图像数据;类型拆分单元324用于将当前帧的待渲染数据按照包含对象的类型拆分为至少两个子图像数据;图层拆分单元325用于将当前帧的待渲染数据按照包含对象所处的图层拆分为至少两个子图像数据。
数据渲染模块330用于将至少两个子图像数据分别输入各个处理核心进行并行渲染,得到渲染后的子图像数据。
数据播放模块340用于将渲染后的子图像数据组合为当前帧的图像数据进行播放。
具体地讲,前述数据获取模块310可以具体包括动画文件加载单元312、动画文件解析单元314、控制标签识别单元316和控制标签执行单元318。
动画文件加载单元312用于加载待播放动画的动画文件。动画文件加载单元312又可以具体包括有文件类型识别子单元502、主动画文件加载子单元504和子动画文件加载子单元506,如图5所示。文件类型识别子单元502用于识别待播放动画的动画文件的类型,动画文件的类型包括主动画文件和子动画文件中的一种;主动画文件加载子单元504用于如果识别到动画文件的类型为主动画文件,则由当前处理核心加载动画文件;子动画文件加载子单元506用于如果识别到动画文件的类型为子动画文件,则由空闲处理核心加载动画文件。
动画文件解析单元314用于解析动画文件,以获取至少一个控制标签和至少一个定义标签。动画文件解析单元314可以具体包括主动画文件解析子单元602和子动画文件解析子单元604,如图6所示。主动画文件解析子单元602用于采用当前处理核心对所述主动画文件进行解析,以获得主动画文件中的至少一个控制标签和至少一个定义标签;子动画文件解析子单元604用于采用空闲处理核心对子动画文件进行解析,获得所述子动画文件中的至少一个控制标签和至少一个定义标签。
控制标签识别单元316用于依次识别每个控制标签的操作指令。控制标签识别单元316可以具体包括类型识别子单元702和脚本执行子单元704,如图7所示。类型识别子单元702用于识别控制标签的类型是否为脚本标签;脚本执行子单元704用于如果识别控制标签的类型为脚本标签,则将类型为脚本标签的控制标签交由空闲处理核心进行处理以获得控制标签的操作指令。
控制标签执行单元318用于根据每个控制标签的操作指令来操作定义标签以生成当前帧的待渲染数据。
综上所述,本发明实施例三提供的动画播放装置通过将渲染过程中的待渲染数据拆分为多个部分,由多核处理器中的各个处理核心分别渲染而达到并行渲染的效果,使得Flash动画的播放速度得到明显提升,解决了Flash动画播放时经常全速占用CPU的问题。同时,将加载过程、解析过程、AS脚本执行过程中可以异步处理的部分均分散于空闲的处理核心来并行运行,可以尽可能利用嵌入式终端的多核心优势,来获得更快、更流程的动画播放效果。
需要说明的是:上述实施例提供的动画播放装置在实施例三中描述时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的动画播放装置与动画播放方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种动画播放方法,适用于包含多核处理器的终端中,所述多核处理器包含至少两个处理核心,其特征在于,所述方法包括:
加载待播放动画的动画文件;
解析所述动画文件,以获取至少一个控制标签和至少一个定义标签;
根据所述定义标签和所述控制标签生成当前帧的待渲染数据;
按照预定拆分方式,将所述当前帧的待渲染数据拆分为至少两个子图像数据;
将所述至少两个子图像数据输入各个处理核心进行并行渲染,获得渲染后的子图像数据;
将所述渲染后的子图像数据组合为所述当前帧的图像数据进行播放;
其中,所述加载待播放动画的动画文件,包括:
识别所述待播放动画的动画文件的类型,所述类型包括主动画文件和子动画文件中的一种;
如果识别到所述动画文件的类型为主动画文件,则由当前处理核心加载所述动画文件;
如果识别到所述动画文件的类型为子动画文件,则由空闲处理核心加载所述动画文件。
2.根据权利要求1所述的动画播放方法,其特征在于,所述预定拆分方式包括以下方式中的任一种:按照显示区域拆分、按照处理核心个数拆分、按照包含对象的个数拆分、按照包含对象的类型拆分、按照包含对象所处的图层拆分。
3.根据权利要求1或2所述的动画播放方法,其特征在于,所述根据所述定义标签和所述控制标签生成当前帧的待渲染数据,具体包括:
依次识别每个控制标签的操作指令;
根据每个控制标签的操作指令来操作所述定义标签以生成所述当前帧的待渲染数据。
4.根据权利要求1或2所述的动画播放方法,其特征在于,所述解析所述动画文件,以获取至少一个控制标签和至少一个定义标签,具体包括:
采用当前处理核心对所述主动画文件进行解析,获得所述主动画文件中的至少一个控制标签和至少一个定义标签;和/或,
采用空闲处理核心对所述子动画文件进行解析,获得所述子动画文件中的至少一个控制标签和至少一个定义标签。
5.根据权利要求3所述的动画播放方法,其特征在于,所述依次识别每个控制标签的操作指令,具体包括:
识别所述控制标签的类型是否为脚本标签;
如果识别所述控制标签的类型为脚本标签,则将所述类型为脚本标签的控制标签交由空闲处理核心进行处理以获得所述控制标签的操作指令。
6.一种动画播放装置,适用于包含多核处理器的终端中,所述多核处理器包含至少两个处理核心,其特征在于,其包括:
数据获取模块,用于加载待播放动画的动画文件;解析所述动画文件,以获取至少一个控制标签和至少一个定义标签;根据所述定义标签和所述控制标签生成当前帧的待渲染数据;
数据拆分模块,用于按照预定拆分方式,将所述当前帧的待渲染数据拆分为至少两个子图像数据;
数据渲染模块,用于将所述至少两个子图像数据分别输入各个处理核心进行并行渲染,得到渲染后的子图像数据;
数据播放模块,用于将所述渲染后的子图像数据组合为所述当前帧的图像数据进行播放;
其中,所述数据获取模块包括动画文件加载单元;所述动画文件加载单元,用于加载所述待播放动画的动画文件;
所述动画文件加载单元,具体包括:
文件类型识别子单元、主动画文件加载子单元和子动画文件加载子单元;
所述文件类型识别子单元,用于识别所述待播放动画的动画文件的类型,所述类型包括主动画文件和子动画文件中的一种;
所述主动画文件加载子单元,用于如果识别到所述动画文件的类型为主动画文件,则由当前处理核心加载所述动画文件;
所述子动画文件加载子单元,用于如果识别到所述动画文件的类型为子动画文件,则由空闲处理核心加载所述动画文件。
7.根据权利要求6所述的动画播放装置,其特征在于,所述数据拆分模块,具体包括:
区域拆分单元、核心拆分单元、对象拆分单元、类型拆分单元和图层拆分单元中的任一种;
所述区域拆分单元,用于将所述当前帧的待渲染数据按照显示区域拆分为至少两个子图像数据;
所述核心拆分单元,用于将所述当前帧的待渲染数据按照处理核心个数拆分为至少两个子图像数据;
所述预定拆分单元,用于将所述当前帧的待渲染数据按照包含对象的个数拆分为至少两个子图像数据;
所述类型拆分单元,用于将所述当前帧的待渲染数据按照包含对象的类型拆分为至少两个子图像数据;
所述图层拆分单元,用于将所述当前帧的待渲染数据按照包含对象所处的图层拆分为至少两个子图像数据。
8.根据权利要求6或7所述的动画播放装置,其特征在于,所述数据获取模块,还包括:
动画文件解析单元、控制标签识别单元和控制标签执行单元;
所述动画文件解析单元,用于解析所述动画文件,以获取至少一个控制标签和至少一个定义标签;
所述控制标签识别单元,用于依次识别每个控制标签的操作指令;
所述控制标签执行单元,用于根据每个控制标签的操作指令来操作所述定义标签以生成所述当前帧的待渲染数据。
9.根据权利要求8所述的动画播放装置,其特征在于,所述动画文件解析单元,具体包括:主动画文件解析子单元和子动画文件解析子单元;
所述主动画文件解析子单元,用于采用当前处理核心对所述主动画文件进行解析,以获得所述主动画文件中的至少一个控制标签和至少一个定义标签;
所述子动画文件解析子单元,用于采用空闲处理核心对所述子动画文件进行解析,获得所述子动画文件中的至少一个控制标签和至少一个定义标签。
10.根据权利要求8所述的动画播放装置,其特征在于,所述控制标签识别单元,具体包括:
类型识别子单元和脚本执行子单元;
所述类型识别子单元,用于识别所述控制标签的类型是否为脚本标签;
所述脚本执行子单元,用于如果识别所述控制标签的类型为脚本标签,则将所述类型为脚本标签的控制标签交由空闲处理核心进行处理以获得所述控制标签的操作指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210070666.5A CN103310475B (zh) | 2012-03-16 | 2012-03-16 | 动画播放方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210070666.5A CN103310475B (zh) | 2012-03-16 | 2012-03-16 | 动画播放方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103310475A CN103310475A (zh) | 2013-09-18 |
CN103310475B true CN103310475B (zh) | 2017-09-12 |
Family
ID=49135651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210070666.5A Active CN103310475B (zh) | 2012-03-16 | 2012-03-16 | 动画播放方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103310475B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853562B (zh) * | 2014-03-26 | 2017-02-15 | 北京奇艺世纪科技有限公司 | 一种视频帧渲染方法及装置 |
CN106485771B (zh) * | 2015-08-27 | 2019-07-19 | 博雅网络游戏开发(深圳)有限公司 | 动画性能检测方法和*** |
CN107292945B (zh) * | 2016-03-31 | 2021-01-26 | 阿里巴巴集团控股有限公司 | 视频图像的图层渲染处理方法及其*** |
CN106887029A (zh) * | 2016-06-14 | 2017-06-23 | 阿里巴巴集团控股有限公司 | 动画控制方法、装置及终端 |
CN106503159A (zh) * | 2016-10-31 | 2017-03-15 | 努比亚技术有限公司 | 一种浏览器网页的渲染方法及移动终端 |
CN106534667B (zh) * | 2016-10-31 | 2020-02-11 | 努比亚技术有限公司 | 分布式协同渲染方法及终端 |
CN108984293B (zh) * | 2017-06-01 | 2021-12-21 | 网易(杭州)网络有限公司 | 游戏内容的显示方法及装置、存储介质、处理器和终端 |
CN107517348A (zh) * | 2017-08-30 | 2017-12-26 | 广东欧珀移动通信有限公司 | 图像的渲染方法和装置 |
CN110636184B (zh) * | 2018-06-25 | 2022-03-29 | 中国电信股份有限公司 | 视频处理方法、装置及计算机可读存储介质 |
CN109460273A (zh) * | 2018-09-28 | 2019-03-12 | 北京奇艺世纪科技有限公司 | 一种信息显示方法、装置及电子设备 |
CN109524087B (zh) * | 2018-10-31 | 2020-10-27 | 上海联影医疗科技有限公司 | 组织图像处理方法、装置、存储介质及计算机设备 |
CN109491781A (zh) * | 2018-11-26 | 2019-03-19 | 深圳市瑞云科技有限公司 | 一种基于物体单元的云渲染方法 |
CN110493456B (zh) * | 2019-07-29 | 2020-10-30 | 创新先进技术有限公司 | 一种动画播放方法、装置、终端设备及服务器 |
CN110381267B (zh) * | 2019-08-21 | 2021-08-20 | 成都索贝数码科技股份有限公司 | 基于帧内切分的集群化实现大幅面多层实时编辑的方法 |
CN110599581B (zh) * | 2019-08-29 | 2023-03-31 | Oppo广东移动通信有限公司 | 图像模型数据处理方法、装置以及电子设备 |
CN113313793B (zh) * | 2021-06-17 | 2023-11-24 | 豆盟(北京)科技股份有限公司 | 动画播放方法、装置、电子设备和存储介质 |
CN113923519B (zh) * | 2021-11-11 | 2024-02-13 | 深圳万兴软件有限公司 | 视频渲染方法、装置、计算机设备及存储介质 |
CN115250374A (zh) * | 2022-07-08 | 2022-10-28 | 北京有竹居网络技术有限公司 | 展示全景图像的方法、装置、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354780A (zh) * | 2007-07-26 | 2009-01-28 | Lg电子株式会社 | 图形数据处理设备和方法 |
CN102279978A (zh) * | 2010-06-08 | 2011-12-14 | 英特尔公司 | 用于图像处理的块渲染 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8400458B2 (en) * | 2009-09-09 | 2013-03-19 | Hewlett-Packard Development Company, L.P. | Method and system for blocking data on a GPU |
-
2012
- 2012-03-16 CN CN201210070666.5A patent/CN103310475B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354780A (zh) * | 2007-07-26 | 2009-01-28 | Lg电子株式会社 | 图形数据处理设备和方法 |
CN102279978A (zh) * | 2010-06-08 | 2011-12-14 | 英特尔公司 | 用于图像处理的块渲染 |
Non-Patent Citations (1)
Title |
---|
王春.嵌入式Flash播放器研究与实现.《中国优秀硕士学位论文全文数据库 信息科技辑》.2009,第I138-675页. * |
Also Published As
Publication number | Publication date |
---|---|
CN103310475A (zh) | 2013-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103310475B (zh) | 动画播放方法及装置 | |
WO2020220915A1 (zh) | 虚拟对象显示方法、装置、电子设备及存储介质 | |
CN111045655B (zh) | 一种页面渲染的方法、装置、渲染服务器和存储介质 | |
CN104854539B (zh) | 一种对象搜索方法及装置 | |
CN105278799B (zh) | 界面切换方法及装置 | |
CN105378661B (zh) | 资源包索引 | |
CN111586466B (zh) | 一种视频数据处理方法、装置及存储介质 | |
CN111277910A (zh) | 弹幕显示方法、装置、电子设备及存储介质 | |
KR102131570B1 (ko) | 웹툰 서비스 방법 및 이러한 방법을 수행하는 장치 | |
CN107870928A (zh) | 文件读取方法和装置 | |
CN106227461B (zh) | 一种窗口切换方法及装置 | |
US20180143741A1 (en) | Intelligent graphical feature generation for user content | |
CN105335036A (zh) | 一种输入交互方法和输入法*** | |
CN110475140A (zh) | 弹幕数据处理方法、装置、计算机可读存储介质和计算机设备 | |
CN110507992A (zh) | 一种虚拟场景中的技术支持方法、装置、设备及存储介质 | |
WO2023284295A1 (zh) | 一种移动端网页视频背景处理方法、***、储存介质 | |
CN103324679B (zh) | 一种缓存服务器中数据更新的控制方法和设备 | |
US20130212500A1 (en) | Method and device for setting user interface | |
CN105920839A (zh) | 网络游戏对话在线编辑*** | |
CN106020809B (zh) | 网络游戏文学生成*** | |
CN116980605A (zh) | 视频处理方法、装置、计算机设备、存储介质和程序产品 | |
CN107291931A (zh) | 一种便签的生成方法、装置及用户终端 | |
CN109190019B (zh) | 用户形象生成方法、电子设备及计算机存储介质 | |
CN117221261A (zh) | 数据处理方法、装置、设备及介质 | |
CN107872730A (zh) | 一种视频中的嵌入内容的获取方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |