<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于嵌入式linux的全彩LED顯示屏脫機控制系統設計方案

基于嵌入式linux的全彩LED顯示屏脫機控制系統設計方案

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

SM501的繪圖引擎(Draw Engine)包括兩個(gè)部分,2D繪圖引擎和CSC顏色空間轉換模塊。2D繪圖引擎主要用來(lái)繪制直線(xiàn)(基于Bresenham算法),矩形填充,復制(Bitblt),旋轉復制(Rotation bitblt)??s放與顏色空間轉換功能都是通過(guò)CSC模塊來(lái)實(shí)現。CSC模塊可以實(shí)現YUV422,YUV420,RGB565,RGB888幾種色彩空間及格式轉換到RGB565和RGB888,色空間轉換隱含了縮放功能。

顯存分配與釋放管理是對映射到用戶(hù)空間的Frame buffer進(jìn)行的。實(shí)現上使用空閑鏈表的方法,并且采用最先適應的原則。最先適應分配算法有利于保留更大的連續內存塊給那些一次性?xún)却嫘枨罅看蟮姆峙湔埱?。由于視頻解碼后色空間轉換和縮放必須使用硬件加速來(lái)實(shí)現,因此總是預留1M的顯存空間給視頻顯示使用。在顯存不足的情況下,通過(guò)malloc分配系統內存。相應的所有顯示層接口的地址參數均被設計成為自動(dòng)識別地址屬于系統內存還是獨立顯存,如果地址屬于系統內存,則表明當前顯存不足,于是使用軟件的方法實(shí)現繪圖操作。在釋放顯存時(shí),程序若識別參數地址為系統內存,將調用free去完成釋放。

在多個(gè)顯示區域同時(shí)顯示的情況下,顯存的分配與釋放管理以及所有的基于硬件加速的2D操作均被互斥地調用,以避免多線(xiàn)程同時(shí)對SM501資源進(jìn)行爭用帶來(lái)的與時(shí)間相關(guān)的執行錯誤。

由于SM501加速操作只能使用本地幀存的物理地址,而通過(guò)mmap映射得到的是進(jìn)程空間的虛擬地址,顯存分配得到的地址也是基于映射后的地址,因此寫(xiě)入SM501寄存器中作為地址的操作數必須將進(jìn)程空間地址轉化為實(shí)現的幀存物理地址。轉化方法就是用顯示分配函數得到的地址減去mmap得到的首地址。

建立在底層顯示層之上,軟件實(shí)現了與屏幕絕對坐標無(wú)關(guān)的基于區域內部坐標的2D加速顯示接口。區域內部坐標與區域本身在屏幕上的絕對坐標相加即可得出要顯示的絕對坐標。另外每個(gè)顯示區域都有對齊、縮放方式的選項??s放方式可以有不縮放,線(xiàn)性縮放,非線(xiàn)性縮放三種,對齊在X,Y方向上分別有三種對齊方式。因為實(shí)際顯示的內容大小與顯示區域大小往往不是相同的,因此這兩種選項對實(shí)際顯示效果影響極大。如區域寬高比與顯示內容寬高比相差較大時(shí),非線(xiàn)性縮放將導致顯示內容嚴重畸變,而線(xiàn)性縮放將顯示內容保持為原來(lái)的寬高比。顯示層次如圖4.

圖3 顯示層次

4.2.3脫機系統的視頻播放器設計

這部分主要介紹針對SM501顯卡的解碼過(guò)程優(yōu)化設計,并給出優(yōu)化后的性能測試數據。脫機播放系統目前支持MPEG-4視頻格式的AVI文件播放。

MPEG-4是MPEG(運動(dòng)圖像專(zhuān)家組)制定的視頻壓縮標準,是目前用得最廣泛的一種視頻編碼標準。MPEG組織于1999年1月正式公布了MPEG-4 V1.0版本。MPEG-4除采用第一代視頻編碼(MPEG-1,MPEG-2,H.263等)的核心技術(shù),如變換編碼、運動(dòng)估計與運動(dòng)補償、量化、熵編碼外,還提出了一些新的有創(chuàng )見(jiàn)性的關(guān)鍵技術(shù),包括視頻對象提取技術(shù)、VOP視頻編碼技術(shù)、視頻編碼可分級性技術(shù)、運動(dòng)估計與運動(dòng)補償技術(shù)等。

Xvid是開(kāi)源的MEPG-4碼器,遵守GPL通用公共許可證,也是目前國際上公認的性能最佳的MPEG-4編解器之一,支持MPEG-4 SP框架。本文移植了Xvidcore-1.1.3到arm-Linux環(huán)境,并且基于Xvid設計了自己的脫機系統視頻播放器。

AVI文件格式是Windows系統下最常用的一種視頻文件格式。AVI文件并不局限任何視頻編碼格式。AVI文件格式是基于RIFF(Resource Interchange File Format)文件格式的。RIFF基于“塊”為信息單位,每個(gè)塊由一個(gè)4字符組成的FOURCC字標識。整個(gè)文件由一個(gè)RIFF塊構成,RIFF塊和LIST(列表)塊可以包含子塊。包含子塊的塊結構為:FOURCC+塊長(cháng)度+塊類(lèi)型+塊數據。不包含子塊的塊結構為:FOURCC+塊長(cháng)度+數據。 AVI文件在RIFF的基礎上定義了自己的塊類(lèi)型和數據。一個(gè)AVI RIFF文件由3大部分組成:RIFF文件頭,hdrl列表,movi列表,除此外還有一個(gè)可選的索引idxl塊。其中hdrl列表包含 avih 子塊和 strl 子列表,文件中有多少個(gè)流,hdrl 列表中就有多少個(gè)strl 子列表,strl子列表在 hdrl 中的次序就是流的序號。Movi列表中是實(shí)際的MPEG-4編碼流,avih子塊包含了AVI視頻文件的頭信息,比較重要的是幀頻。一般的AVI視頻文件只有一個(gè)視頻流。戶(hù)外屏幕對于音頻播放需求少,因此本文并不涉及音頻解碼。

Xvid解碼過(guò)程中要不斷輸入MPEG-4視頻編碼比特流,視頻流從AVI文件中的movi列表子塊中提取。AVI文件存儲在USB可移動(dòng)存儲盤(pán)上,文件IO時(shí)間延遲會(huì )導致解碼過(guò)程產(chǎn)生間隙性的視頻播放停頓,因此有必要采用單獨的IO線(xiàn)程從AVI文件中不斷提取視頻流。IO線(xiàn)程與解碼線(xiàn)程構成一種生產(chǎn)者-消費者類(lèi)型的線(xiàn)程同步關(guān)系,需要引入同步互斥量來(lái)保證其同步工作。

由于MPEG-4視頻編解碼的原始顏色空間是YUV420,如果直接輸出YUV420平面格式Xvid不需要進(jìn)行顏色空間轉換,其余輸出格式則需要經(jīng)過(guò)色空間轉換算法得到。Xvidcore-1.1.3解碼器輸出不同的顏色空間格式對整個(gè)解碼時(shí)間的影響非常顯著(zhù)。表1是在S3C2440平臺下使用Xvidcore-1.1.3解碼同一MPEG-4視頻文件(分辨率320x176) 使用不同輸出格式的幀頻比較。

表1 Xvid不同輸出格式解碼速率比較表

本文使Xvid解碼直接輸出YUV420平面格式,避免了Xvid使用軟件算法進(jìn)行色空間

轉換,然后使用SM501提供的YUV420轉RGBx888硬件色空間轉換命令完成視頻幀的顯示。這種方式下SM501與Xvid解碼器并行工作,發(fā)揮了最佳的效果。同時(shí)為了避免了對數據的二次復制,本文直接在SM501本地顯存中申請了空間作為解碼幀輸出地址,這些優(yōu)化使得整個(gè)解碼器的性能提高了2~3倍。 圖4表示了簡(jiǎn)要的視頻播放軟件流程。

通過(guò)硬件縮放和象素復制,本文實(shí)現了1024×768分辨率下全屏流暢視頻顯示和多區域視頻同步顯示等普通系統難以達到顯示效果。多個(gè)顯示區域下脫機播放系統AVI視頻文件播放性能測試結果如表2示??梢钥吹?,由于有硬件2D加速支持,解碼速率與視頻實(shí)際顯示速率完全相等,區域大小以及多個(gè)區域同時(shí)顯示對系統性能沒(méi)有顯著(zhù)影響。

表2 視頻播放器性能測試

測試結果表明該系統足以勝任大多數全彩類(lèi)型商業(yè)廣告LED大屏幕脫機視頻播放。

圖4 優(yōu)化的視頻播放流程

5 結論

本文采用高速MCU和SM501顯卡作為硬件平臺,突破了系統在顯示性能上的瓶頸,接口明確。在軟件上移植了Linux2.6內核作為軟件平臺,在效率和可移植性方面做了較好平衡,運用了良好的軟件設計思想,開(kāi)發(fā)出具有開(kāi)放式體系結構的LED脫機播放軟件。該系統已經(jīng)成功應用于全彩LED顯示屏的脫機播放和。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程


led顯示器相關(guān)文章:led顯示器原理



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 控制 嵌入式 LED

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>