<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于linux的全彩LED顯示屏脫機(jī)控制系統(tǒng)設(shè)計(jì)

          基于linux的全彩LED顯示屏脫機(jī)控制系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2013-09-28 來(lái)源:網(wǎng)絡(luò) 收藏
          示分配函數(shù)得到的地址減去mmap得到的首地址。

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

          基于linux的全彩LED顯示屏脫機(jī)控制系統(tǒng)設(shè)計(jì)

            圖3 顯示層次

            4.2.3脫機(jī)系統(tǒng)的視頻播放器設(shè)計(jì)

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

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

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

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

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

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

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

          基于linux的全彩LED顯示屏脫機(jī)控制系統(tǒng)設(shè)計(jì)

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

            轉(zhuǎn)換,然后使用SM501提供的YUV420轉(zhuǎn)RGBx888硬件色空間轉(zhuǎn)換命令完成視頻幀的顯示。這種方式下SM501與Xvid解碼器并行工作,發(fā)揮了最佳的效果。同時(shí)為了避免了對(duì)數(shù)據(jù)的二次復(fù)制,本文直接在SM501本地顯存中申請(qǐng)了空間作為解碼幀輸出地址,這些優(yōu)化使得整個(gè)解

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

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




          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();