国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于MiniGUI的嵌入式媒體播放器設(shè)計(jì)與實(shí)現(xiàn)

發(fā)布時(shí)間:2010-12-17 23:01    發(fā)布者:conniede
關(guān)鍵詞: MiniGUI , 播放器
隨著嵌入式系統(tǒng)的不斷發(fā)展,處理器性能的不斷提升,存儲(chǔ)系統(tǒng)容量的不斷擴(kuò)大,各種多媒體應(yīng)用程序被移植到嵌入式系統(tǒng)中,多媒體組件成為其不可或缺的重要組成部分。本文在比較如今流行的幾種嵌入式圖形系統(tǒng)的基礎(chǔ)上,提出了基于MiniGUI的嵌入式媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)方法。

1 引言

隨著嵌入式系統(tǒng)的不斷發(fā)展,處理器性能的不斷提升,存儲(chǔ)系統(tǒng)容量的不斷擴(kuò)大,各種多媒體應(yīng)用程序被移植到嵌入式系統(tǒng)中,多媒體組件成為其不可或缺的重要組成部分。嵌入式多媒體播放器的開(kāi)發(fā)是當(dāng)前 IT產(chǎn)業(yè)的熱點(diǎn)之一 ,呈現(xiàn)了巨大的市場(chǎng)需求。與些同時(shí),播放器功能復(fù)雜化和普及化對(duì)產(chǎn)品的交互界面提出了更高的要求。現(xiàn)在許多高端手機(jī)和PDA 產(chǎn)品上已經(jīng)有了多媒體播放器,可是和PC 機(jī)上的播放器相比現(xiàn)有的這些播放器的功能都有待進(jìn)一步增強(qiáng)。

將現(xiàn)代窗口和圖形技術(shù)帶入到嵌入式設(shè)備的 MiniGUI,是一個(gè)非常適合于實(shí)時(shí)嵌入式設(shè)備的高效、可靠、可定制、小巧靈活的跨操作系統(tǒng)的圖形用戶界面支持系統(tǒng)。它采用類Win32的API接口,是一個(gè)多窗口GUI支持系統(tǒng)。本文首先比較各種嵌入式圖形系統(tǒng),然后提出基于MiniGUI的嵌入式媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)方法。

2 各種嵌入式圖形系統(tǒng)之比較

目前,流行的面向嵌入式系統(tǒng)的圖形系統(tǒng)有MicoroWindows/NanoX、Qt/Embedded、MiniGUI、DirectFB、PicoGUI以及GTK /FB等。它們中的大多數(shù)遵循LGPL條款發(fā)布,而MicoroWindows/NanoX遵循的是MGPL,Qt/Embedded采用QGPL條款發(fā)布。

MicroWindows/NanoX能夠在沒(méi)有任何操作系統(tǒng)或其他圖形系統(tǒng)的支持下運(yùn)行,它能對(duì)裸顯示設(shè)備進(jìn)行直接操作。這樣,MicroWindows就顯得十分小巧,便于移植到各種硬件和軟件系統(tǒng)上。然而MicroWindows/NanoX的免費(fèi)版本開(kāi)發(fā)進(jìn)展慢,而且缺乏全面專業(yè)的技術(shù)支持。

Qt/Embedded功能強(qiáng)大,但是,由于它是基于C 類庫(kù)的,所以和其他GUI相比系統(tǒng)消耗資源較大,一般應(yīng)用于手持式高端信息產(chǎn)品。

GTK /FB與Qt/Embedded類似,跳過(guò)X層直接與FrameBuffer溝通,也具有Qt/Embedded的幾項(xiàng)優(yōu)點(diǎn),但發(fā)展速度緩慢。

DirectFB是專注于Linux FrameBuffer加速的一個(gè)圖形庫(kù),并試圖建立一個(gè)兼容GTK的嵌入式GUI系統(tǒng)。

PicoGUI是一種新型的小巧的嵌入式圖形系統(tǒng)。同X Windows系統(tǒng)一樣具有一個(gè)彈性的客戶服務(wù)端架構(gòu)。PicoGUI將字體,位圖,窗口小部件,以及其他應(yīng)用程序需要的東西都直接建立在服務(wù)器上,與X Windows相比,雖然靈活性有所降低,但速度顯著提升、體積大大縮小。

MiniGUI為實(shí)時(shí)嵌入式操作系統(tǒng)提供了非常完善的圖形及用戶界面支持。MiniGUI本身的可移植性設(shè)計(jì),使得不論在哪個(gè)硬件平臺(tái),哪種操作系統(tǒng)上運(yùn)行,MiniGUI均能為上層應(yīng)用程序提供一致的應(yīng)用程序編程接口(API)。MiniGUI小巧、靈活且對(duì)中文的支持性最好。

3 設(shè)計(jì)與實(shí)現(xiàn)

3.1播放器總體結(jié)構(gòu)

本文中的播放器采用MiniGUI作為底層圖形庫(kù),用于生成用戶界面以及讀寫(xiě)FrameBuffer。

播放器軟件總體結(jié)構(gòu)如圖2所示,它主要由三部分組成,分別是圖形用戶界面模塊、系統(tǒng)管理主控模塊和音/視頻解碼器。三部分功能設(shè)計(jì)如下面所述:

圖形用戶界面模塊通過(guò)事件/消息機(jī)制和系統(tǒng)管理主控模塊交互。

音/視頻解碼器模塊可以看作是系統(tǒng)管理主控模塊的插件(plug-in),從系統(tǒng)管理主控模塊獲得編碼的音/視頻數(shù)據(jù)并對(duì)其解碼后發(fā)送己解碼的音/視頻數(shù)據(jù)給系統(tǒng)管理主控模塊。

系統(tǒng)管理主控模塊則負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)的接收和解析、圖形用戶界面模塊和音/視頻解碼器模塊的工作協(xié)調(diào)和音/視頻數(shù)據(jù)的輸出。這個(gè)模塊是播放器軟件中非常重要的一個(gè)模塊。

3.2 用戶圖形界面設(shè)計(jì)

MiniGUI提供了豐富的GUI元素,如常見(jiàn)的控件類、對(duì)話框與消息框以及菜單等,此外,MiniGUI支持界面皮膚。因此,利用MiniGUI可以非常方便地設(shè)計(jì)出漂亮的用戶圖形界面。

播放器的人機(jī)交互界面主要包括播放控制與文件列表管理兩大部分。播放控制用來(lái)實(shí)現(xiàn)對(duì)所選擇的媒體文件作播放/暫停、停止及進(jìn)度控制等;文件列表管理則用來(lái)實(shí)現(xiàn)向播放列表添加、刪除媒體文件以及對(duì)列表中文件排序等功能。

3.3 主要函數(shù)及具體實(shí)現(xiàn)

⑴ 播放控制事件回調(diào)函數(shù)

static int main_event_cb (HWND hwnd, skin_item_t* item, int event,
void* data)

{ …

if (event==SIE_BUTTON_CLICKED) {

switch (item->id) {

case SIID_PLAY:



case SIID_PAUSE:



case SIID_STOP:



case SIID_CLOSE:



}

}

else if (event==SIE_SLIDER_CHANGED && item->id!=SIID_VOLUME)

{



}

return 1;

}

⑵ 列表事件處理函數(shù)

void playlist_handle_event(PEvent *event, void *data)

{



switch(event->type) {

case ButtonPress:



case ButtonRelease:



case KeyPress:

if(!playlist)

return;

mykeyevent = event->xkey;

LockDisplay(gGui->display);

len=LookupString(&mykeyevent, kbuf, sizeof(kbuf), &mykey, NULL);

UnlockDisplay(gGui->display);

switch (mykey) {

case K_Down:

case K_Next:

browser_step_up(playlist->playlist, NULL);

break;

case K_Up:

case K_Prior:

browser_step_down(playlist->playlist, NULL);

break;

default:

gui_handle_event(event, data);

break;

}

break;

case MappingNotify:

LockDisplay(gGui->display);

RefreshKeyboardMapping((MappingEvent *)event);

UnlockDisplay(gGui->display);

break;

}

}

⑶ 主函數(shù)

int MiniGUIMain(int argc, const char* argv[])

{



PlayerHandle=PlayerNew();



free(buffer);

PlayerGetInfo(PlayerHandle, &fi);



InitCreateInfo(&CreateInfo);

hMainWnd=CreateMainWindow(&CreateInfo);

if (hMainWnd==HWND_INVALID)

return -1;



while( GetMessage(&Msg, hMainWnd) )

{

TranslateMessage(&Msg);

DispatchMessage(&Msg);



}

PlayerClose(PlayerHandle);



MainWindowThreadCleanup(hMainWnd);

return 0;

}

4 結(jié)束語(yǔ)

隨著嵌入式系統(tǒng)硬件性能的不斷提升,用戶對(duì)應(yīng)用程序界面的友好性和功能的完備性提出了更高的要求。本文介紹的基于MiniGUI的嵌入式媒體播放器具有設(shè)計(jì)簡(jiǎn)單,占用系統(tǒng)資源少等特點(diǎn),可作為開(kāi)發(fā)基于嵌入式圖形界面系統(tǒng)的應(yīng)用軟件的參考。
本文地址:http://m.qingdxww.cn/thread-47012-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開(kāi)發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開(kāi)發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区视频| 天天射影院| 三级黄在线播放| 一区二区在线视频观看| 亚洲va韩国va欧美va天堂| 在线观看精品视频| 国产精品无码亚洲网| 暖暖日本免费播放| 中文字幕乱码一区久久麻豆樱花 | x69老师x日本| 久久这里只有精品国产精品99| 我和妽妽在厨房里的激情区二区| 一级成人毛片免费观看| 亚洲男女网站| 五月婷婷激情视频| 亚洲综合激情网| 精品国产原创在线观看视频| 我的奶头被客人吸的又肿又红| 亚洲二区视频| 日韩种子| 性欧美xxxx乳高跟| 国产老头与老太hd| 伊人久久精品AV无码一区| 婷婷伊人网| 四虎最新永久在线精品免费| 天美传媒免费| 55夜色66夜亚洲精品播放| 解开美女胸衣2破解版| 亚欧日韩毛片在线看免费网站| 青青99| 色婷婷5月精品久久久久| 亚洲高清视频在线播放| 99热久久精品国产一区二区| 久久中文字幕综合不卡一二区| 手机国产乱子伦精品视频| 日本美女视频韩国视频网站免费| 四虎最新视频| 一本一道波多波多野结衣视频| 久久综合久综合久久鬼色| 色久网| 桃花综合久久久久久久久久网 |