新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM L i nux QT的掌上多媒體系統的設計和實現

        基于ARM L i nux QT的掌上多媒體系統的設計和實現

        作者: 時間:2009-11-24 來源:網絡 收藏

        2.4 影音錄制
        影音錄制的系統框架見圖2。通過擴展用于視頻錄制的Philips的視頻解碼芯片SAA7113和ADI的JPEG壓縮芯片來。首先輸入的模擬視頻信號經過SAA7113轉換為數字信號,然后傳輸給ADI的JPEG壓縮芯片JPEG2000,壓縮為JPEG圖像信號,并通過擴展的總線接口傳輸到系統上。音頻信號則直接通過音頻輸入接口送到音頻解碼芯片,并轉化為數字信號進行編碼。編寫應用程序使傳到的音視頻數字信號一起轉化為Motion JPEG編碼的AVI格式的多媒體文件,并存入擴展的存儲設備(微硬盤或者MMC/SD卡),這樣就可以被Mplayer播放。

        本文引用地址:http://www.104case.com/article/152272.htm


        3 性能優化
        盡管9處理器主頻可以高達200MHz以上,但是為了降低功耗,本系統在保證滿足實時播放的前提下,對系統進行優化。所以,在一個資源受限的處理器上要多媒體文件的實時播放,性能優化成為關鍵。本系統主要通過解碼程序優化,打開Cache等措施來提高系統性能。
        3.1 對解碼程序的優化
        由于解碼過程絕大部分是計算,以MP3音頻文件為例,其解碼過程主要是高精度乘法和矢量運算,其中80%的CPU時間用于數值計算,因此對于解碼部分主要采用了以下方法進行優化:
        (1)整數運算。在沒有硬件浮點單元的CPU上,浮點運算是仿真方式,因此解碼代碼中應直接采用整數運算方式編碼,而避免浮點運算;
        (2)通過查表方式代替很多運算式獲取計算結果,對調用頻繁的小函數采用inline修飾;
        (3)關鍵代碼采用匯編語言編程,以獲得更高效的目標代碼,來提高系統的運行性能。
        3.2 打開Cache
        9處理器帶有獨立的16 kB數據Cache和16 kB的指令Cache。本系統中,打開指令Cache肯定能在一定程度上提高性能。至于數據Cache,由于從SD卡或者U盤讀進來解碼的數據使用完畢后就再也不會使用了,解碼產生的數據也是一樣,使用一次就會被丟棄,因此數據訪問的時間局限性基本是不存在的。但是,系統在訪問數據時存在很強的空間局限性,所以打開數據Cache后可以提高性能,因為:
        (1)Cache和IDRAM之間通過Burst方式傳遞數據,提高了總線帶寬,從而降低讀數據的延遲。
        (2)Cache一次讀128bit或256bit,當讀已在Cache中的數據時就會命中。
        (3)通過WriteBuffer或WriteBack方式讀內存時,沒有寫DRAM的延遲。
        但是這樣也會帶來數據不一致的問題,主要是DMA造成數據的不一致,因為SD卡或USB的傳輸是通過DMA進行的,其傳輸過程無需CPU干預,DMA操作直接訪問內存,但不會跟新Cache和寫緩存相應的內容,這樣就造成了數據的不一致,可用以下方法解決:
        (1)將SD卡或USB和CPU共享的控制數據空間設置為uncachable,否則無法保證CPU讀到的Cache中的數據是最新數據,從而可能造成系統運行錯誤。
        (2)SD卡或USB輸入模塊通過DMA像主存傳輸文件數據時,寫數據的緩沖區是由文件系統提供的。該緩沖區的特點是存儲空間比較大而且是順序訪問的,可將其設置為cachable。
        經過上述方法的優化以后,系統性能得到了大幅度的提高。經過測試表明,優化后解碼所需的時間為優化前的15%左右,均小于正常播放所需的時間,完全滿足實時播放的要求。


        4 結束語
        本系統以9處理器為核心建立嵌入式,并在其上移植Mplayer播放器,擴展其功能,使mpeg-1、mpeg-2、avi等視頻格式以及MP3、WMA等音頻格式都能在其上流暢地播放,并了影音錄制功能。在測試中各模塊工作正常,達到了能全屏播放視頻,流暢播放音頻,能夠將攝像頭拍到的視頻傳送到Mplayer進行播放,能讀取外接U盤或者SD卡中的多媒體文件進行播放,能從網絡下載多媒體文件到擴展存儲設備被Mplayer播放的要求。隨著多媒體技術的廣泛應用,多功能媒體播放器會有更廣闊的應用前景。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安乡县| 弥渡县| 潞城市| 略阳县| 江永县| 合肥市| 天水市| 永康市| 颍上县| 焦作市| 文昌市| 宁陕县| 区。| 延安市| 晋宁县| 手机| 河池市| 寻乌县| 建瓯市| 浮山县| 龙山县| 济阳县| 龙井市| 聂拉木县| 濮阳市| 巨鹿县| 乐至县| 额尔古纳市| 大埔区| 建阳市| 贵定县| 阳原县| 胶南市| 水城县| 屏边| 乌兰察布市| 绩溪县| 建宁县| 邻水| 安多县| 扶绥县|