<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è) > 嵌入式系統 > 設計應用 > 矢量字庫在嵌入式機頂盒中的應用

矢量字庫在嵌入式機頂盒中的應用

——
作者:華中師范大學(xué) 萬(wàn) 偉 陳明宏 夏洪星 時(shí)間:2007-02-02 來(lái)源:21IC中國電子網(wǎng) 收藏
引言

在當前系統設計中,廣泛涉及到字符和圖標的顯示。過(guò)去的方法通常是使用硬件自帶字庫或者轉換中文操作系統(例如UCDOS)的點(diǎn)陣字庫,但隨著(zhù)開(kāi)發(fā)技術(shù)的發(fā)展,人們對用戶(hù)界的要求也越來(lái)截止高,大小固定、字體有限、使用不便的點(diǎn)陣字庫已經(jīng)難再滿(mǎn)足要求。于是眾多開(kāi)發(fā)人員將目光投向了Windows操作系統豐富的字庫和圖標資源,以Widnows 2000系統為例,其OpenType有基于Unicode內碼的四萬(wàn)多個(gè)字符,特殊符號以及近百種字體可以選用。但是Windows系統結構復雜,難以直接提取,并且解析算法涉及到Micorosoft和Adobe公司OpenType字體專(zhuān)利,這些問(wèn)題為Windows字庫的使用帶來(lái)了很大的困難。

在筆者參與的DVB-S數字衛星接收用戶(hù)界面的設計工作中,也遇到了同樣的問(wèn)題。按照設計要求,需要用到一套完備的,支持包括俄、德、拉丁、阿拉伯等多種語(yǔ)言和特殊符號的小型字庫,但是難以找到合適的現成字庫,在參考了一些商業(yè)字模提取軟件的功能后,提出了一種提取Win
dows矢量字符以及圖標資源的方法,并用Visual C++6.0程序實(shí)現。實(shí)際應用表明,用本方法生成的字庫字形美觀(guān),字體多樣,完全可以替代商業(yè)字庫,同時(shí)還具有使用方便,便于擴展等優(yōu)點(diǎn)。

1 圖文顯示原理

中文字和位圖的顯示是通過(guò)(圖文屏顯技術(shù))模塊完成的。傳統的屏顯示主要應用在VCR、LD和電視機上,采用專(zhuān)用的芯片修改屏幕上指定部位的信號的角度和亮度,實(shí)現模擬視頻的同步改變,從而達到顯示的目的。含有的視頻輸出信號在屏幕上從底向上以6個(gè)層次顯示:邊界顏色、靜止視頻圖像、活動(dòng)視頻圖像、OSD背窗口、OSD位圖區域和OSD硬件游標。本文介紹的機頂盒系統是基于ST公司的方案,接收機軟件是ST公司為其數字衛星接收機硬件評估板配套提供的。其主芯片采用Sti5518微控制器,內部集成OSD處理單元。OSD功能模塊框圖如圖1所示。

OSD模塊框圖 



OSD功能模塊位于NTSC/PAL/SECAM編碼之前,包括一張顏色查找表(LUTs)、Alpha混合濾波器和控制邏輯單元,所有子功能先于將信息從重建緩沖區傳到SDRAM或與其它靜態(tài)圖像混合前執行。

當要輸出圖文信息時(shí),將字符圖標的位圖信息送至OSD位圖區域的相應位置。OSD位圖區域由其頭部定義,每個(gè)OSD頭主要包括OSD顯示短形區域的起始位置、大小及兩個(gè)分別指向頂場(chǎng)和底場(chǎng)圖像數據的指針(這是針對隔行掃描顯示方式;對于逐行掃描,這兩個(gè)指針向同一塊內存區域),還有一個(gè)指向下一個(gè)OSD位圖數據頭的指針。由于采用了這種基于指針的OSD數據管理結構,理論上OSD位圖數據塊的數目不受限制,實(shí)際上它要受到內存大小的限制。頭部不僅定義了位圖區域的尺寸、位置以及及顏色信息,而且提供了顏色表更新等功能。字符的顏色設置使用OSD處理單元(LUT)的顏色查找表,也稱(chēng)做調色板。2位的LUT意味著(zhù)有4種顏色可以選擇,并且位圖中的每個(gè)像素僅占有存儲單元的2位。如果是透明文字,還要把第一個(gè)像素的調色板顏色值定為透明色掩碼值,這個(gè)過(guò)程由Alpha混合處理完成。如果輸出像素不在OSD區域,停止處理視頻接口處理器數據;如果輸出像素在OSD區域,OSD數據或OSD和視頻接口處理數據的混合數據經(jīng)Alpha混合濾波處理后以16位YC(Cb,Cr)格式傳輸。對于調色板顏色值是透明的情況,則直接傳送視頻數據而略過(guò)OSD位圖數據。

OSD的軟件部分可以分為兩部分:硬件抽象層和圖形函數接口。OSD模塊軟件部分為整個(gè)系統軟件部分提供一系列的圖形函數接口,是實(shí)現圖文顯示的基礎,也是給用戶(hù)提供一個(gè)方便直觀(guān)的圖形文字交互方式的保障。本文中硬件抽象層為ST公司提供的STAPI函數庫,圖形函數接口在中間件的基礎上自行開(kāi)發(fā)。

由此可見(jiàn),在機頂盒系統中字符輸出有三個(gè)主要步驟:①系統專(zhuān)用字庫的建立;②字符數據的查找;③調用OSD模塊功能將字符在屏幕上輸出。下面介紹如何通過(guò)轉換Windows矢量字符,建立一套功能完善,使用方便的字庫系統。

2 提取矢量字符

Winodws矢量字庫存儲漢字的矢量圖形。因為存儲的是筆樣條,對于字符做旋轉、縮放、甚至三維拉伸都不會(huì )產(chǎn)生失真,但在字符顯示的時(shí)候需要計算樣條曲線(xiàn)而增加了計算量。由于系統只是針對專(zhuān)一控制應用的系統,處理器的性能和資源還不如PC機,一般使用的仍然是點(diǎn)陣字庫。本文介紹的DVB-S機頂盒系統同樣沒(méi)有直接使用矢量字庫;而是通過(guò)提取Windows中矢量字庫的方法將矢量字符轉換成相應的點(diǎn)陣信息。在本開(kāi)發(fā)方案中,字庫文件中所有漢字的字模信息和圖標信息被存儲到兩個(gè)大的數組中,并作為一個(gè)頭文件包含在漢字顯示模塊中。利用計算出的偏移值得到字模數組中的下標,從而得到漢字存放在數組中的字模點(diǎn)陣信息。使用程序存儲器空間做字庫,這在漢字用量不大的情況下是一種較完美的解決方案。本系統中負責屏顯功能的API函烽是STOSD函數庫,里面已把位圖的寬度定義為32像素的整數倍。這是由于系統的內存操作函數只能對16字節整數倍的塊進(jìn)行拷貝操作,否則內存只能一個(gè)字節一個(gè)字節地填充,速度非常慢。例如在16色的調色板情況下,無(wú)論是24

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


評論


相關(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>