當前位置:首頁 > 消費電子 > 消費電子
[導讀]本文在比較如今流行的幾種嵌入式圖形系統(tǒng)的基礎上,提出了基于MiniGUI的嵌入式媒體播放器的設計與實現方法。

摘要隨著嵌入式系統(tǒng)的不斷發(fā)展,處理器性能的不斷提升,存儲系統(tǒng)容量的不斷擴大,各種多媒體應用程序被移植到嵌入式系統(tǒng)中,多媒體組件成為其不可或缺的重要組成部分。本文在比較如今流行的幾種嵌入式圖形系統(tǒng)的基礎上,提出了基于MiniGUI的嵌入式媒體播放器的設計與實現方法。
關鍵詞嵌入式系統(tǒng);嵌入式圖形系統(tǒng);MiniGUI;媒體播放器

1 引言

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

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

 

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

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

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

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

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

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

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

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

 

3 設計與實現

3.1播放器總體結構

本文中的播放器采用MiniGUI作為底層圖形庫,用于生成用戶界面以及讀寫FrameBuffer。基于MiniGUI的嵌入式系統(tǒng)總體架構如圖1所示。


圖1 基于MiniGUI的嵌入式系統(tǒng)總體架構

 

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

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

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

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


圖2 播放器應用程序結構圖

 

3.2 用戶圖形界面設計

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

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

 

3.3 主要函數及具體實現

⑴ 播放控制事件回調函數

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;

}

⑵ 列表事件處理函數

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;   

  }

}

 

⑶ 主函數

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 結束語

  隨著嵌入式系統(tǒng)硬件性能的不斷提升,用戶對應用程序界面的友好性和功能的完備性提出了更高的要求。本文介紹的基于MiniGUI的嵌入式媒體播放器具有設計簡單,占用系統(tǒng)資源少等特點,可作為開發(fā)基于嵌入式圖形界面系統(tǒng)的應用軟件的參考。

 

參考文獻

 

[1] 魏永明.M in iGUI用戶手冊v1.6 [M].北京:北京飛漫軟件技術有限公司,2006.

[2] 魏永明.M in iGUI編程指南v1.6 [M].北京:北京飛漫軟件技術有限公司,2006.

[3] 楊小軍.基于嵌入式Linux系統(tǒng)界面的研究[[J].現代電子技術,2004, 27 (IS):89-91.

[4] BarrM. C/C++嵌入式系統(tǒng)編程[M].十志宏譯.北京:中國電力出版社,2001.

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉