【嵌入式FLASH播放器的设计与实现10000字(论文)】_第1页
【嵌入式FLASH播放器的设计与实现10000字(论文)】_第2页
【嵌入式FLASH播放器的设计与实现10000字(论文)】_第3页
【嵌入式FLASH播放器的设计与实现10000字(论文)】_第4页
【嵌入式FLASH播放器的设计与实现10000字(论文)】_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式FLASH播放器的设计与实现研究摘要Flash是以流控制技术和矢量图形技术等技术为代表的一种多媒体形式。通过将矢量图、位图、音频、动画、交互动作有机地、灵活地结合在一起,Flash这种多媒体形式能够制作出美观、新奇、交互性更强的动画。Flash动画具有短小精悍、交互性好、传输速度快、播放采用流式技术、制作成本低等特点。正因为这些特点,Flash在网络上非常受欢迎,网络上有大量以Flash文件形式存在的资源。随着后PC时代的来临,嵌入式系统将广泛应用在人们的日常生活中,人们对嵌入式系统中的多媒体应用需求也越来越强烈。近年来随着嵌入式硬件的快速发展,嵌入式系统的计算速度进一步提高和存储容量的不断扩大,使得在嵌入式设备上进行矢量图形技术的开发成为可能。以便携式设备为主、并且具有网络互联功能的嵌入式平台的不断普及,使移动矢量图形技术成为嵌入式领域的一个发展热点。关键词:嵌入式FLASH播放器;设计;实现目录摘要 2目录 31. 序言 42. 基础理论概述 62.1嵌入式开发的基本理论 62.2建立交叉开发环境的相关工具 82.3Flash文件基本知识 103. Cohen—Sutherland线段裁剪改进算法 103.1改进算法提出的背景 104. 播放器的总体设计方案 124.1播放器功能设计 124.2DMC-2440-k2.1嵌入式评估板的结构及分析 145. 系统功能的实现 155.1模拟器中实现系统功能 155.2开发板中实现系统功能 185.3播放器系统性能分析 206. 结论 21参考文献 23序言随着微电子技术和计算机技术的发展,计算机不断趋向于微型化和嵌入化,使它更广泛地融入人们的工作、生活和娱乐等各个方面。进入21世纪以来,嵌入式技术逐渐成熟并全面展开,已经成为通信和消费类产品的共同发展方向。在信息家电领域,如网络冰箱、家庭网关、数字机顶盒、数字电视等的发展,使得嵌入式系统正扮演着越来越重要的角色。在个人计算机领域中,嵌入式产品使个人商用、娱乐和通信功能相结合,以自然的人机交互界面和丰富的多媒体处理能力迅速得以推广,并取得了巨大成功,而所有上述产品都离不开嵌入式技术。所以嵌入式系统的开发,已被人们公认为是一个具有良好发展潜力的行业。而且随着嵌入技术的不断发展,嵌入式处理器的运算能力不断地增强。音频、视频等用Smart-phone、PDA、UMD等高端产品中已经非常普遍。Flash作为一种交互式矢量多媒体技术,表现形式灵活多样,而文件体积又较小的文件格式。在各类场合,特别是Internet上取得了广泛应用。随着我国3G通讯的推进,基于移动设备的高速Internet网将成为现实,通过高速移动Internet网连接多媒体资源进行媒体播放;或者便携式媒体播放器作为独立设备通过连接线与移动设备相连接,借助移动设备通过高速移动Internet网连接多媒体资源进行媒体播放。这样可以降低便携式媒体播放器的成本、功耗,同时延长播放时间。所以便携式媒体播放器仍然有较大的发展潜力和较为广阔的发展前景,而且便携式播放器的设计应改变成基于网络的便携式媒体播放器。用户也很希望通过与网络连接共享更多的多媒体资源,而网络上存在大量以Flash格式形式存在的多媒体资源。随着通信网络技术的发展、嵌入式技术的不断发展、用户的需求,提出了便携式播放器对Flash文件格式的播放需求,如PMP和嵌入式网页浏览器等;而且,由于Flash快速开发的特性,还适合开发嵌入式系统的用户界面。但根据调查,现在网络广泛存在的媒体资源格式FLASH并没有在便携式播放器中得到很好的支持。特别是在wmce下的Flash播放器对FLASH支持并不完善,迫切需要能够支持更新的flash文件格式的播放器应用在嵌入式设备本文根据这些情况提出并设计一款基于处理器为ARM9及操作系统为wmCe5.0的嵌入式flash播放器,使这一平台下的flash播放器性能高。同时也为嵌入式软件开发、PC平台下的软件向嵌入式平台移植、flash的播放进行更深入的研宄奠定良好的的基础。随着后PC时代的到来及Internet网络的飞速发展,人们已经不满足于被局限在PC平台上的矢量图形显示,比如汽车上使用的导航电子地图,GIS系统。现在的网络资源丰富,但大多数只在传统的PC机上运行。限制FLASH在嵌入式系统上播放的主要问题是播放的速度和质量。如果技术上能实现对Flash在嵌入式系统的快速播放,则Flash的资源将会被充分的利用,其编程技术也将得到更好的推广。但由于嵌入式系统提供的硬件资源和软件资源在性能上一般低于PC机,其遵循的原则是“够用”原则,而FLASH文件的组成大多数是矢量图形,在恢复的时候要求硬件的性能要好。本文的出发点就是在现有的硬件性能的基础上,XtFlash的矢量图形数据的存储、显示算法的实现过程进行改进,使嵌入式FLASH播放器能够流畅的播放Flash,而且功能完备。算法完成以后,可应用在需要播放flash的环境中。Flash文件播放技术在SNS应用中的应用前景在互联网领域SNS有三层含义:服务SocialNetworkService,软件SocialNetworkSoftware,网站SocialNetworkSite。SocialNetworkService中文直译为社会性网络服务或社会化网络服务,意译为社交网络服务。中文的网络含义包括硬件、软件、服务及网站应用,加上四字构成的词组更符合中国人的构词习惯,因此人们习惯上用社交网络来代指SNS(包括SocialNetworkService的三层含义),用社交软件代指SocialNetworkSoftware,用社交网站代指SocialNetworkSite。SNS专指旨在帮助人们建立社会性网络的互联网应用服务。在互联网中,PC机、智能手机都没有强大的计算及带宽资源,它们依赖网站服务器,才能浏览发布信息。如果将每个设备的计算及带宽资源进行重新分配与共享,这些设备就有可能具备比那些服务器更为强大的能力。这就是分布计算理论诞生的根源,是SNS技术诞生的理论基础。SNS是一个采用分布式技术,通俗地说是采用P2P技术,构建的下一代基于个人的网络基础软件。SNS通过分布式软件编程,将现在分散在每个人的设备上的CPU、硬盘、带宽进行统筹安排,并赋予这些相对服务器来说很渺小的设备更强大的能力。这些能力包括:计算速度,通信速度,存储空间。多媒体处理技术将在SNS中得到更大范围的运用,这其中包含矢量图形的产生,传输,存储,使用等环节。因此,Flash文件播放技术在SNS应用开发中具有良好的前景。Flash文件播放技术在WebGIS应用开发中的应用前景WebGIS的基本思想是在互联网上提供地理信息,让用户通过浏览器浏览,获得地理信息系统中的数据和功能服务[25]。WebGIS由于操作简单、跨平台、可扩展、信息分布共享、高效的负载平衡等特点,已经在资源、交通、通讯、城市建设、教育、人口、海洋以及军事等几十个领域中的嵌入式平台中得到应用。以地图形式表达为主的地理信息要有效的发布在Internet上,现存方法很多,但是会造成服务器端较大负载,数据量和交互频率较高;安装定制的插件,运行开发难度较大的JavaApplet程序,灵活性高但通用性受到限制。产生矛盾的根本原因是实现GIS在网上浏览尚没有建立成型的体系,目前流行的浏览器本身不支持一定的矢量图形标准,而WebGIS离不开矢量图形,因此要实现WebGIS,建立一种矢量图形标准,使浏览器能够支持矢量图形成了当务之急。而W3C近年推出的可伸缩矢量图形技术SVG(ScalableVectorGraphics)正是一种针对于Web的矢量图形显不标准。而SVG的播放器的研宄与flash播放器的研宄所处理的问题基本一致。因为它们处理的主要对象是都是网络矢量矢量图形,所以随着技术的发展flash播放器的相关技术会在WebGIS中得到应基础理论概述2.1嵌入式开发的基本理论嵌入式系统以应用为中心,以计算机技术为基础,软硬可裁剪,适应应用系统,对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统ra。对于嵌入式系统来说,硬件是支撑,软件是灵魂。将现有的PC机算法,在嵌入式平台中进行移植,是开发嵌入式软件的一个方向。但是嵌入式应用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本;如果直接采用现有的PC上的算法,嵌入式设备有限的电池能源和运算能力难以满足进行实时视频通信的需求,因此需要依据嵌入式设备的特点对算法进行改进和优化,从而降低运算的复杂度。由于一般嵌入式系统使用的ARM7,ARM9的CPU大部分不具备硬件浮点运算器,进行一次浮点数运算操作需要编译器转换成大量定点指令进行模拟,导致进行浮点数运算操作要耗费大量的CPU时间。还会产生如流水线和总线宽度等问题。由于一部分位用来表示指数,所以浮点计算得出的值可以比整数计算得出的值大很多或是小很多。换句话说,对于给定数量的位,浮点计算的精度没有整数计算高,但浮点计算结果的范围却比整数计算大很多。非常多的通用寄存器ARM7TDMI内核中一共包括37个通用寄存器,这个与传统的CISC机器有非常大的区别,当然这也是ARM作为RISC处理器的一个非常重要的特征,寄存器多了就可以尽量减少对存储器的访问(比如传参,比如临时变量等等)。虽然在一个CPU状态下,我们能够看到的寄存器只有最多18个,但是ARM的寄存器堆确实较X86或者68K要多了不少。没有硬件堆栈ARM的处理器本身在硬件上没有堆栈的概念。这么说的意思是ARM本身在硬件上不会自己维护堆栈。比如在发生函数调用的时侯,返回地址是由硬件自动保存在R14寄存器中的,硬件不会将返回地址自动压栈。在中断或异常的时侯,硬件也只是将返回地址保存到R14,CPSR保存到相应状态的SPSR中。如果用户需要函数嵌套调用或是中断嵌套的话,必须自己通过软件管理自己的堆栈。改进型哈佛结构ARM9有独立的指令和数据存储器接口,允许处理器同时进行取指和读写数据。这叫作改进型哈佛结构。而ARM7只有数据存储器接口,它同时用来取指令和数据访问。嵌入式操作系统EOS(EmbeddedOperatingSystem)嵌入式系统的全部软、硬件资源的分配、调度工作,控制协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。除具备了一般操作系统最基本的功能,还有以下特点:(1)可装卸性。开放性、可伸缩性的体系结构。(2)强实时性。EOS实时性一般较强,可用于各种设备控制当中。(3)统一的接口。提供各种设备驱动接口。(4)操作方便、简单、提供友好的图形GUI,图形界面,追求易学易用。(5)提供强大的网络功能,支持TCP门P协议及其它协议,提供TCP、UDP、IP、PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。(6)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预,这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接日一般不提供操作命令,它通过系统调用命令向用户程序提供服务。(71)固化代码。在嵌入系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,因此,嵌入式操作系统的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统。(8)更好的硬件适应性,也就是良好的移植性。2.2建立交叉开发环境的相关工具交叉开发环境是进行嵌入式软件开发的物质基础,在进程开发时常用到以下软件或工具。EmbeddedVisualC++4.0EVC是微软专门针对嵌入式操作系统WINCE开发的集成开发环境。EVC集成开发环境与VC的较为相似,只是在工具栏下面多了一个特性工具栏,用于选择嵌入式设备类型、仿真器类型和CPU类型[15]。EVC自带较多实用的辅助开发工具。如RemoteFileViewer显示目标设备上的目录层次和文件;RemoteProcessViewer完成在桌面计算机上浏览远程设备上运行的进程以及线程,同时可以终止指定进程;RemoteZoomm抓取远程设备上的屏幕图像;RemoteRegistyEditor在桌面计算机上管理远程设备注册表;RemoteHeapWalkor显不在远程目标设备上运行的进程、堆标识和标志信息;RemoteSpy++在桌面计算机上显示远程设备上运行的窗口。ActiveSync4.0在开发完应用程序后,就要用到ActiveSync.这是一款管理WindowsMobile设备连接、与PC进行数据同步的工具。ActiveSync提供了一种支持,用来同步基于桌面Windows系统和基于CENET的便携式系统间的数据,它使用时间标记和用户参数来跟踪两个系统间的数据改变,并传送相应的数据使得每个系统上的数据都是最新的,过时的或者冗余的数据会被删除。ActiveSync支持USB、红外、调制解调器,以及Ethernet等多种连接。它不支持CE设备间的数据同步,也不支持CE设备和服务器间的数据同步。远程工具是用来在PC机上查看WindowsCE设备信息的一些工具。就功能而言,可以分为三类:用来进行调试的;用来进行性能监测的;用来进行远程信息管理的。这里只用到了第三类中的RemoteZoom-in,它是一个远程截屏软件,可远程截取WindowsCE设备上正在运行的画面。第4章中的部分图片就是由此工具截得。PlatformBuilder5.0该工具主要用于定制WinceCE5.0嵌入式操作系统的集成开发环境,也可以进行简单的运用程序开发。2.3Flash文件基本知识Flash生成过程中有几种文件格式形式,如fla、swf。本文重点分析swf文件格式。Flash播放文件米用的格式是swf文件格式,swf(ShockWaveFlash)是Micromedia公司开发的基于Flash输出的矢量图形文件格式,主要用于Web页面上的动画发布以及远程网络教学等。swf采用二进制方式存储信息,文件格式简练,具有体积小、功能强、交互能力和画面质量好等特点。swf使用矢量来显示大量的动画内容,而矢量图的笔触和填充都是进行科学计算的,因此所制作的动画具有高度的精确性与灵活性。在图像传输方面,swf不必等到文件全部下载才能观看,因此特别适合网络传输。即使是在网络传输速率不佳的情况下,也能取得较好的效果。其独特的二维网页多媒体技术,将矢量量动画、音频压缩编码和动作脚本等多种要素结合在一起,从而创造出了一种有声有色、精彩互动的新的多媒体形式,成为事实上的新一代网络动画标准。Cohen—Sutherland线段裁剪改进算法本章简述了改进的Cohen—Sutherland线段裁剪算法的意义,并重点阐述了本文提出的Cohen—Sutherland线段裁剪改进算法的原理。讨论了在处理器是ARM9、操作系统是wince5.0、编程语言是EVC4.0的平台下改进算法的性能。3.1改进算法提出的背景随着计算机技术的发展,多媒体技术将成为计算机技术研宄的热点之一。由于用户对图形的要求、计算机容量的限制、设备条件的限制等原因需要对图形进行裁剪,因此对线段进行裁剪是一个很常见的问题。由于在屏幕上需要显示的图形和图像都可以利用多面体进行模拟,每一个面由一个多边形组成。而多边形的裁剪基础技术是线段裁剪,因此线段裁剪速度是裁剪算法的核心指标。针对这个问题,目前广泛使用的3种经典裁剪算法分别是梁友栋一Batsky参数裁剪算法、Ncholl-Lee-Ncholl多区域判别算法和Cohen-Sutherland编码裁剪算法。这些算法各有特色,相比较而言Cohen-SutherLand算法是一个应用广泛的裁剪算法[3°]。其中,Cohen—Sutherland分区编码算法是为被裁剪线段两端点进行编码,通过判断两端点的编码按位相与的结果来确定被裁剪线段与窗口的位置关系,如果两端点编码皆为零,则该线段位于窗口内部,应保留;如果两端点编码相与不为零,则该线段位于窗口某一边框线外侧,应整体舍弃;如果两端点编码相与为零,则该线段与窗边框线有交点,应在交点处分割线段或进行取舍,然后继续判断直至满足上面的整体取舍条件。该算法对于裁剪那些不与窗边框线相交的线段时,效率较高;而对与那些与窗边框线相交的线段,裁减效率较低。在最坏情况下被裁剪线段与4条边框线都要计算交点。Nicholl—Lee—Nicholl多区域判别算法在Cohen一Sutherland算法的基础上,通过对二维平面的更详细划分,消除C一S算法中线段在被裁剪时需多次求交的情况,算法效率有所提高。中点分割算法采用中点对分方法分别为被裁剪线段两端点寻找最近可被裁剪线段与多条边框线相交见点,两个最近可见点的连线便是线段的可见部分。由于算法主要计算过程只用到加法和除2运算,所以特别适合用硬件实现,用软件实现则效率不高,同时该算法也适合于并行计算。梁友栋一Barsky参数裁剪算法利用线段的参数表示形式,把被裁剪线段所在直线与裁剪窗口边框线交点的计算简化为对交点对应参数值的计算,再根据交点参数与被裁剪线段的参数定义区间比较的结果,确定出有效的交点,从而得到裁剪后应保留的部分。该算法处理速度较快,但当线段在某窗口边界线的不可见一侧时或完全落在窗口内部可见时,仍需要进行算术运算。由于嵌入式系统的特点,在嵌入式系统中对于矢量图形的裁剪尤其重要。本文设计的播 放器主要播放的是Flash文件,Flash文件主要由矢量图形组成,因此采用本文提出的Cohen一Sutherland线段裁剪改进算法来提高flash文件的播放速度。Cohen—Sutherland裁剪算法对不与边框相交的线段进行裁剪时效率较高,而对与窗口边界有交点的线段裁剪效率低。而且很多的时候,被裁剪线段仅与窗口边界延长线相交,求交点到最后是无效的操作,因为线段可能完全被丢弃;并且被裁剪线段与窗口边界相交时交点的取得比较复杂。根据点与直线位置的关系性质,利用线段端点的编码的特性,做出相关的辅助线,判断辅助线与线段之间的关系。本文提出了基于Cohen—Sutherland算法的图形裁剪思路。本文提出的Cohen—Sutherland裁剪改进算法在继承现有的主要裁剪算法优点的基础上,结合其他裁剪算法的优点,能较快的减少无效交点的计算;对跨越三个区域的可见与不可见线段能快速判决,因此能快速判决并且对于跨越三个区域且不可见的线段能够尽快的丢弃。提高了裁剪的速度,让图像图形的显示更具有实时性。Cohen—Sutherland线段裁剪改进算法的原理假设一条线段AB,将其无限延长后将二维平面上的点为三个区域:在线的右部分,在线的左部分,在线上。播放器的总体设计方案本章详细介绍了播放器总体设计方案的思路、结构设计、算法设计。详细介绍了播放器关键功能的实现过程及相关的关键算法原理。最后从本文的目标及开发板性能的角度分析了平台选择DMC-2440-K2.1开发板的原因。4.1播放器功能设计因为嵌入式系统遵循的原则是“够用”原则,所以嵌入式系统提供的硬件资源一般低于PC机。而FLASH文件的组成大多数是矢量图形,在显示的时候要求微处理器的速度快、内存大、显示设备的屏幕尺寸大等硬件的性能要好™。但是这在资源有限的嵌入式平台下达到这个目的是比较困难的。因此,在开始创建嵌入式系统的flash考虑应用程序性能和优化是非常重要的。因而为了解决flash是矢量图形显示的问题必须多从软件的角度入手。本文的出发点就是在现有的硬件性能的基础上,将本文提出的Cohen—Sutherland裁剪改进算法、较先进的分层剪切域算法、较好的优化帧间切换方式算法、较先进的位图缓存算法等算法有机地融合在该嵌入式播放器的影片执行模块中,对flash的矢量图形数据的存储、显示算法的实现过程进行了改进。同时在设计时利用以下方法:在进行播放flash时呈现三种不同品质等级的矢量图形:低、中和高。减少同时发生的补间动画。减少补间数或设置动画序列,以使一个动画结束后另一个动画再开始。适度地对元件使用透明度(Alpha)效果,因为透明度非常消耗CPU。特别是,最好避免对具有不完全不透明(小于100%)的Alpha级别的元件进行补间。避免使用消耗CPU的可视效果,如大遮罩层、剧烈运动、Alpha混合、剧烈渐变和复杂的矢量图形。尝试使用补间、关键帧动画和ActionScript驱动运动的组合以生成最有有效的结果。经常在目标设备上测试动画。位图值越高,生成的图像品质越高,但也会生成更大的swf文件。较低的图像品质会生成较小的SWF文件。使用不同的设置来确定文件大小和图像品质之间的最佳平衡点。尽量避免字符串和模拟数组处理,因为这会非常消耗CPU。本文根据以上情况提出并设计一款基于处理器为ARM9及操作系统为wince5.0的嵌入式flash播放器,使这一平台下的flash播放器性能高。本文在将播放器分成六个模块的基础上,将标签解析模块、影片执行模块、ActionScript解析引擎模块作为核心模块来完成,并将界面设计简洁化。能够响应用户的交互行为并更好地控制Flash文档的行为。在高版本的Flash文档(6.0或者更高)中往往采用ActionScript来控制媒体元素的行为方式以及响应用户的交互行为。ActionScript代码是一种编程代码,可以将其添加到Flash文档中,以便这些文档响应用户的交互行为并更好地控制Flash文档的行为。在不使用ActionScript的情况下,也能完成Flash中的大部分任务,但使用Ac2tionScript带来了更多的可能性。例如,可以添加代码以便用户在单击某按钮时显示一幅新图像,还可以使用ActioMScript向Flash文档中添加逻辑。虽然ActionScript给Flash文档带来了很大的方便性,但如何正确地解析并执行ActionScript脚本给本播放器的设计和实现工作带来了很大的难度。因此,符合ActionScript3.0规范的AS解释引擎是Flash播放器设计中的一个难点。以下是flash中最常用到的ActionScript集合。当打开一个文件时,SWF标签解析模块首先判断此文件是不是flash文件,如果是则继续解析出相应的图形、文字、声音的tag,传给影片执行模块。影片执行模块将根据调用声音处理模块子模块,渲染引擎子模块,解析引擎子模块的算法将矢量图形等标签进行渲染显示。当影片执行模块接收到消息管理模块的消息时,根据消息的含义对影片进行跳转。在此框架中影片执行模块是核心模块。4.2DMC-2440-k2.1嵌入式评估板的结构及分析由于由自己设计并实现一个完整的硬件系统难度比较大,所以本文选择的是使用现有的嵌入式开发板,这样使论文的主要精力放在软件的开发上。通过对市场上开发板的了解,利用系统的稳定性,外设接口的丰富性,CPU主频的大小等指标,本文选择了DMC2440开发板作为硬件平台,这款开发板基本情况如下:中央处理器,SamsungS3C2440A,主频400MHz;外部存储器NANDFlash:128MB;串口,两个五线异步串行口,波特率高达115200bps;网络接口,一个10M/100M网口,采用DM9000AEP,带联接和传输指示灯;USB接口,一个USB1.1HOST接口;一个USB1.1Device.系统功能的实现5.1模拟器中实现系统功能在将程序下载到开发板之前,首先将程序基于POCKETPC2003SDK的POCKETPCEmulator上运行。选择flashMV《东北人都是活雷峰》进行实验。Flah播放器部分程序伪代procedureTMain.Button1Click(Sender:TObject);varf,fw:File;fws:string[3];//标不信息version:Byte;//SWF文件版本号CurrentPos:Integer;//内存读写位置zStream:TDecompressionStream;//实现压缩数据还原inStream:TMemoryStream;//压缩数据流beginifnotOpenDialog1.Executethenexit;FileMode:=fmOpenRead;AssignFile(f,OpenDialogl.FileName);Reset(f,l);SetLength(FileBuf,FileSize(f));BlockRead(f?FileBuf[0],Filesize(f));//将文件读入内存CloseFile(f);//下面为读取SWF文件的文件头Header部分CurrentPos:=0;//读取’FWS'标示SetLength(fws,3);Move(FileBuf[CurrentPos]?fws[1],3);Inc(CurrentPos,3);iffwso'CWS*thenbeginSetLength(FileBuf?0);ShowMessage〔该文件不是FlashSWF压缩文件!•);exit;end;//读取版本号Moye(FileBuf[CurrentPos]?version,Sizeof(version));Inc(CurrentPos,Sizeof(version));ifVersion<5thenbeginSetLength(FileBuf?0);ShowMessageC该SWF文件不是Flash6以上版本,本程序当前仅识别Flash6以上格式SWF文件!');exit;end;//读取SWF文件长度Move(FileBuf[CurrentPos]?FileLength,Sizeof(FileLength));Inc(CurrentPos,Sizeof(FileLength));//FileBuf下面的内容都是压缩数据inStream:=TMemoryStream.Create;//将压缩数据读入inStream压缩数据流inStream.Write(FileBuf[CurrentPos],Length(FileBuf)-3-Sizeof(version)-Sizeof(FileLength));inStream.Position:=0;//实现还原zStream:=TDecompressionStream.Create(inStream);//数据还原后所需缓冲区长度会加长SetLength(FileBuf,FileLength);//将还原的数据写回缓冲区Stream.Free;inStream.Free;fws:=TWS';//将原CWS改为FWSMove(fws[1]?FileBuf[0],3);//此时将缓冲区数据存盘就是SWF的还原文件ShowMessage(•压缩数据己经实现还原,请存盘!•);ifnotSaveDialogl.Executethenexit;AssignFile(fw?SaveDialog1.Filename);ReWrite(fw?l);BlockWrite(fw?FileBuf[0],Length(FileBuf));CloseFile(fw);SetLength(FileBuf,0);5.2开发板中实现系统功能由于嵌入式系统不具备自举能力,所以必须要在S3C2440A处理器及wmCe5.0操作系统为平台的开发板与主机之间建立一个交叉开发环境,建立的大概步骤如下:使用sj£2440工将bootloader烧写到NANDFLASH。用20针排线将DMC2440的20针JTAG接口(C0N7)与JTAG板的JTAG接口相连。然后将光盘里的“Flash烧写”文件夹拷贝到C盘。安装giveio驱动,进入“Flash烧写工具”文件夹下,点击“安装驱动.exe”。USB接口驱动程序安装根据开发板所提供的驱动程序和提示进行安装。需要注意的是先打开DNW.exe配置好串口,再利用串口线和USB线将PC机与开发板连接,最后才能打开开发板的电源。对于一些开发板来说,这些步骤的次序和重要。5.3播放器系统性能分析通过EVC的romotezoomin工具将开发板中显示的影片截下来。收集三种CPU数据:总体利用率,平均负载和每个进程的CPU消耗量。总体利用率有助于确定系统中CPU的运行速度是否是系统的性能瓶颈;平均负载可以对系统的总体性能有一个大概印象;每个进程的CPU消耗量能够搞清占用资源过多的进程。运行播放器CPU使用情况如表5.3所示。其中,r列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu;b列表示在等待资源的进程数,比如正在等待1/0、或者内存交换等;us列显示了用户方式下所花费CPU时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序;sy列显示了内核进程所花费的cpu时间的百分比。其中us+sy的参考值为80%,如果us+sy大于80%说明可能存在CPU不足;id列显示了cpu处在空闲状态的时间百分比;system显示采集间隔内发生的中断数。结论本文深入讨论了嵌入式flash播放器的设计与实现过程。最终在采用微处理器为ARM9,操作系统为wince5.0,开发环境EVC4.0+SP4的平台下实现了一款播放器。文章具体完成的工作如下:深入分析了较高版本的flash文件组成结构、现阶段加快矢量图形显示的相关算法、flash播放器的硬件体系结构。深入研宄了swf文件在嵌入式平台下实现平稳播放的难点和关键技术、flash文件的编解码原理。提出了一种改进后的Cohen—Sutherland线段裁剪算法,该算法基于点与直线的位置关系,通过对端点编码多次应用,再根据不同的线段与裁剪窗口的位置关系,对相应参数进行修改,提高了交点坐标计算的有效性。设计了一款flash播放器,将fla

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论