999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MFC的SWF動畫文件解析設計*

2011-11-27 01:46:08魯云飛何明華
網絡安全與數據管理 2011年17期
關鍵詞:嵌入式界面工程

魯云飛,何明華

(1.福州大學 電氣工程與自動化學院,福建 福州 350108;2.福州大學 物理與信息工程學院,福建 福州 350108)

SWF作為Flash動畫文件的一個重要分枝,是嵌入網頁或獨立播放的Flash影片壓縮格式,具有非常優秀的壓縮性、傳輸性與交互性,且因其能將矢量圖、位圖、音頻、視頻和深一層交互動作等有機地、靈活地結合在一起,所以該矢量圖形文件格式的動畫具有美觀、新奇、交互性強的效果[1]。伴隨著Flash技術的不斷發展,SWF動畫以其眾多的優點被人們廣泛應用于生活的方方面面,特別是在娛樂方面,更是占有相當大的市場[2-3]。 同時,隨著嵌入式技術的迅速發展,人們對生活娛樂的需求越來越大,其要求也越來越高,如對娛樂設備的便攜性需求。然而,縱觀國內外,嵌入式設備對SWF動畫播放的支持存在很多不足,特別是嵌入式WinCE設備。因而,研究與解析SWF動畫文件以獲取文件中各個元素信息及識別動畫信息,具有更加現實而迫切的意義。

目前,已有人在對SWF動畫文件開發上投入大量時間與精力,但大多是用其他開發工具進行開發,如借用具有強大數據庫支持的Delphi為開發媒介[4]。嵌入式系統對編程語言的限制,使得如將以Pascal編程語言為媒介的Delphi開發平臺開發的PC應用程序移植到嵌入式系統中,其難度及工作量將大大增加,不利于其后續的開發與研究;而MFC是微軟基礎類庫,提供了所有一般C++編程的優點,且封裝了成千上萬行正確、優化和功能強大的Windows代碼,能極大地加快程序開發速度及簡化開發工作量,同時MFC還具有良好的移植性能[5-6]。因而,考慮到后續在嵌入式WinCE操作系統上開發SWF動畫播放器,本文在分析與研究SWF動畫文件的基礎上,充分利用MFC的眾多優點,以VS 2005為開發平臺,C++語言為編程工具,實現了對SWF文件的解析與文件信息的讀取,并利用MFC界面窗口的人性化,構建了一個簡潔而直觀的窗口對文件的解析信息進行顯示。

1 解析方法設計

1.1 SWF結構簡析

SWF文件主要由文件頭和多個標簽組成,且最后以一個結束標簽(End Tag)結束[7]。SWF文件的文件頭具有一個標準格式,即包括了SWF文件的標識符、版本號、文件大小、影片尺寸、幀速率以及文件總幀數等信息,如表1所示。

而文件標簽則主要包含標簽頭和標簽數據兩個部分信息。標簽的數據部分緊跟在標簽頭后,承載了該標簽所有的數據信息;標簽頭則主要包含標簽類型(即標簽的ID值)兩方面的信息和該標簽的長度。由于長度大小的差異,標簽頭存在短格式和長格式兩種格式,詳見2.2.2。當按照各自的功能劃分時,又可將SWF文件中所有的標簽劃分為描述標簽和控制標簽。描述標簽描述了SWF影片的內容,如形狀、文本、圖像、聲音等;而控制標簽可以對描述標簽所定義的元素進行操作,以控制動畫的播放。

1.2 解析工程架構設計

簡單分析SWF動畫文件結構后,現對整個解析工程構架進行設計。圖1所示為所設計的SWF文件解析工程整體構架圖。該架構主要分為工程平臺搭建與解析工程實現兩大部分,前者為整個項目的基礎,后者則是核心。

對于一個SWF文件而言,由于文件頭信息是固定的,但其標簽遠不止一個,因而在解析工程實現進程中,解析數據的顯示實現采用了分開顯示的方法,即對于文件頭數據邊解析邊顯示;而對于標簽數據則是邊解析邊存儲,當所有標簽全解析完成后再顯示。

2 解析的實現

MFC(Microsoft Foundation Class Library)實現了對應用程序概念的封裝,能為Windows應用程序開發提供程序控制框架,并能完成一定的預定義或事件和消息處理等。根據圖1所示的解析流程圖,在VS 2005程序開發平臺下利用MFC編程實現對SWF文件的解析。

2.1 工程平臺搭建

在VS 2005開發平臺上,新建一個基于對話框的MFC項目工程,圖2所示為新建項目工程中的一個工程設置界面。

項目工程設置完畢后,為方便而直觀地呈現本應用程序的解析結果,本文在對SWF文件進行解析前,先對應用程序顯示界面進行了設計。該界面設計主要分為功能按鈕和窗口顯示兩個部分。功能按鈕部分實現 “打 開 ”、“退 出 ”、“確定”以及“取消”等操作,而窗口顯示部分則完成對SWF文件解析信息的顯示功能。

圖1 解析工程整體構架

圖2 工程項目設置

2.2 解析工程實現

當搭建完項目工程平臺并設計完應用程序顯示界面外觀后,接下來進行本項目工程的核心工作——實現SWF文件解析。此處涉及顯示界面通信與解析主程序兩方面的程序編寫與功能實現,其中,解析主程序為本項目工程的重點部分。

2.2.1顯示界面的通信

顯示界面主要是與解析主程序通信,以實現對SWF文件解析完成后的結果顯示。為減小通信操作的復雜度,在程序編寫時充分使用MFC所封裝的消息機制及程序參變量存儲等方式,將文件解析所得數據傳送到顯示界面相應顯示部分。

以SWF文件的選中與打開為例,顯示解析界面部分主要通過編程使用MFC中封裝的CFileDialog類,定義一個文件對話框對象lpszOpenFile來完成對SWF文件的過濾選取操作。當點擊界面中的“打開”按鈕在過濾框中選中需解析的SWF文件后,再點擊界面中的“確定”按鈕,lpszOpenFile實例化對象就可通過MFC封裝的消息機制返回得到已選中打開SWF文件的路徑參數。將此路徑作為參變量傳入到解析主程序的文件打開接口后,即可在文件解析主程序中實現對SWF文件打開、存盤及后續的數據解析操作。

2.2.2解析核心的實現

如上,解析主程序開始前,先將解析界面已選中的SWF文件以二進制讀寫方式打開。文件被成功打開之后,開始完成SWF文件解析的第一步——文件頭解析實現。

如表 1所示,SWF文件頭一般以 0x46、0x57、0x53(FWS)或 0x43、0x57、0x53(CWS)開始。 使用 Windows API函數fread讀取并存儲文件頭的前3個字節,若該字節內容為“FWS”,則表示未被壓縮;否則,則表示文件被壓縮過,此時如要正確解析該文件,就需要先調用ZLIB解壓包,對從文件頭第9個字節直至文件結束的所有數據進行解壓,解壓還原后的數據操作即與“FWS”所對應數據處理相一致。

緊接文件頭前3個字節處理之后的數據操作如下:讀取1 B的版本號信息及4 B的文件長度信息,以及幀尺寸RECT數據。其中,RECT型數據是從第9個字節開始的,其數據結構如表2所示。由于該類型數據大小不確定,因而該部分數據的分析很關鍵。分析及計算RECT數據占用總字節大小過程如圖3所示,式(1)為Buff2大小的計算方法。

表2 幀尺寸RECT的數據結構

圖3 RECT數據占用字節計算

由于該段數據存儲內容使用twip(1 pixel=20 twips)為單位,因而還需對讀取的Buff3個字節長度的數據進行相應計算處理,將其最終還原為SWF動畫文件編碼前的幀尺寸數據。緊接此后,將幀速率數據讀取出來,并使用Ctring類中小數點操作成員函數Format對讀取的數據進行相應的小數點格式化處理,以得到文件幀速率。最后為幀總數大小數據處理,此時只需緊接幀速率數據后讀取兩個字節數據并進行相應存儲即可。

其次,則是對SWF文件標簽解析的實現。此時,要想解析工作準確無誤地展開,就需先解決長、短標簽頭的問題。所謂短標簽,其緊跟的標簽數據總長度小于或等于62 B,其標簽頭結構如表3所示。而長標簽頭結構如表4所示,其前16 bit數據結構與短標簽頭結構相似,其后的一個無符號32 bit數據才是該標簽頭后緊跟的標簽數據實際長度。

表3 短標簽頭結構

表4 長標簽頭結構

依據表3、表4結構規則及各標簽在文件中出現的先后次序,依次將各標簽的Tag類型號、數據長度及偏移字節數等信息讀取出來,并做相應處理,處理流程如圖4所示。

圖4 Tag解析流程

其中,標簽類型值計算如式(2)所示。而標簽長度則需進行 “與”操作以取出參變量Code中數據的后6 bit數據,且如該標簽為短標簽時,標簽的實際長度即為“與”操作后的數據值,即 TagLen=Code&0x3F,否則,則需從讀取Code參變量后的位置開始繼續向后讀取4個無符號的字節數據,作為該標簽的實際長度。

解析主程序著重從文件頭與文件標簽兩方面完成對SWF文件的解析,并通過MFC的消息反饋機制及參數傳遞完成了與顯示窗口通信,實現了對所得解析數據的顯示。當然,在主程序編程過程中,需特別注意文件數據讀取中位置指針及偏移量的改變,同時,為減少頻繁更新偏移量與指針定位操作,本文在必要時使用了指針變量替代單個參變量存儲的方法,既確保數據的準確讀取,又有效減少了讀取的工作量。

3 性能測試與分析

3.1 界面介紹

為方便而直觀地查看本設計的解析效果,本文充分利用MFC面向對象編程方法的優越性能,將解析結果以人性化的對話框形式展現出來。其界面主要包括以下幾個方面:Header信息顯示、Tag數據信息顯示及基本操作按鍵。其中,標簽數據信息顯示部分則包括兩部分內容,即當前標簽數據信息的顯示和下一標簽數據基本信息的顯示。

3.2 測試結果與分析

本文以一個SWF格式的網絡動畫文件為測試對象,用二進制查看器UltraEdit查看該測試文件的部分數據,如圖5所示。而用所開發的軟件解析程序對該測試動畫文件進行解析后,其實現效果如圖6所示。

圖5 測試文件的部分二進制信息

圖6 解析效果

通過對圖5中數據進行分析,可得該測試動畫文件的信息:文件的版本為7.0,總幀數為1 083幀,文件總大小為611 726 B,且其播放時的幀頻為 12.0幀/s,畫面尺寸大小為602 Pixel×420.9 Pixel。圖 6顯示了該測試文件的頭數據信息及TagID為18的標簽數據。當點擊TagID后的下拉菜單時,可對隨意選取的測試文件中任意標簽數據信息進行顯示。因而,本設計軟件解析出來的數據信息與以上分析所得相一致,且數據參看操作便捷。由此可見,本設計已能成功對SWF動畫文件進行解析,且解析數據精準,效果理想。

本文以MFC編程為手段,在簡析了SWF動畫文件結構后,充分利用MFC高效的編程效率及一系列優秀性能,在VS 2005開發平臺上重點實現了對SWF動畫文件頭及文件標簽的解析。在此基礎上,利用MFC直觀而便捷地將解析與提取的SWF動畫文件信息在對話框窗口上進行了顯示。隨著嵌入式技術的迅速發展及人們日益增長的生活娛樂需求,在便攜的嵌入式設備上實現對功能強大的SWF動畫文件播放功能開發變得越來越迫切,而本文基于MFC對SWF動畫信息進行解析開發,為嵌入式WinCE操作系統上SWF播放器的設計奠定了堅實基礎。

[1]Yang Jun, Li Qing, Liu Wenyin, et al.Searching for Flash movies on the Web:a content and context based framework [C].Internetand Web Information Systems,2005:1-27.

[2]李麗華,毛淑華,魏樹全.基于嵌入式應用的 SWF文件文本信息的提取研究[J].長沙大學學報,2010,24 (2):65-67.

[3]SWAMINATHAN A.Creating interactive and reusable learning contents using Flash and XML to make E-learning interesting.ITE TEACHERS′CONFERENCE,2005:1-7.

[4]曾益民,葉汝強.使用ActiveX控件實現對Flash電影的支持[J].計算機應用研究,2000(8):66-76.

[5]甄力,郭寶增.MFC中的消息映射和命令傳遞[J].計算機與數字工程,2005,35(7):46-48.

[6]范躍華,張素芹,徐飛.基于 WinCE平臺的應用程序移植研究[J].西安工業大學學報,2007,27(1):91-94.

[7]AdobeSystemsIncorporated.MacromediaFlash (SWF)File Format Specification Version[EB/OL].http://www.macromedia.com/support/documentation/doctypes.html.2008-11.

猜你喜歡
嵌入式界面工程
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
搭建基于Qt的嵌入式開發平臺
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
人機交互界面發展趨勢研究
子午工程
太空探索(2016年6期)2016-07-10 12:09:06
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
工程
工程
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 国产精品成人一区二区不卡 | 亚洲热线99精品视频| 在线亚洲小视频| 国产精品短篇二区| 国产精品偷伦在线观看| 国产成人精品优优av| 欧洲亚洲一区| 日韩在线欧美在线| 久久精品这里只有精99品| 久久免费观看视频| 国产亚洲高清视频| 久久免费观看视频| 伊人久热这里只有精品视频99| 国产屁屁影院| 国产高清不卡视频| 亚洲av无码牛牛影视在线二区| 网友自拍视频精品区| 91在线精品免费免费播放| 成人福利在线观看| 亚洲国模精品一区| 亚洲一区免费看| 欧美97色| 亚洲永久精品ww47国产| 亚洲中久无码永久在线观看软件| 韩日无码在线不卡| 亚洲精品自拍区在线观看| 九色在线观看视频| 国产一区亚洲一区| 亚洲中文字幕在线观看| 国产精品性| 日本国产一区在线观看| 国产特一级毛片| 强乱中文字幕在线播放不卡| 综合社区亚洲熟妇p| 欧美一级大片在线观看| 国产欧美日韩91| 亚洲高清中文字幕在线看不卡| 日韩不卡免费视频| 欧美亚洲香蕉| 国产精品欧美亚洲韩国日本不卡| 亚洲精品视频免费看| 久草视频精品| 久久99精品国产麻豆宅宅| 亚洲免费黄色网| 国产肉感大码AV无码| 色丁丁毛片在线观看| 亚洲欧洲AV一区二区三区| 亚洲免费人成影院| 婷婷色在线视频| 71pao成人国产永久免费视频 | 成人va亚洲va欧美天堂| 亚洲av无码成人专区| 成年人视频一区二区| 高清不卡一区二区三区香蕉| 欧美性精品不卡在线观看| 狠狠亚洲婷婷综合色香| 久草热视频在线| 日韩经典精品无码一区二区| 国产女人在线观看| 亚洲天堂在线免费| 欧美一区中文字幕| 中文纯内无码H| 91免费国产高清观看| 中文字幕在线一区二区在线| 色综合中文综合网| 国产aⅴ无码专区亚洲av综合网| 日韩AV无码一区| 漂亮人妻被中出中文字幕久久| 四虎国产精品永久一区| 亚洲视频a| 精品久久久久久中文字幕女| 成人午夜精品一级毛片| 成人免费一级片| 手机永久AV在线播放| 热99re99首页精品亚洲五月天| 在线观看国产精品一区| 亚洲天堂精品在线观看| 日本在线国产| 国产美女免费| 亚洲欧美不卡中文字幕| 日本在线国产| 国产精品专区第1页|