前言:尋找寫作靈感?中文期刊網用心挑選的電視顯屏的風格與特點,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
我們可以通過遙控器或面板按鍵操作來選擇電視接收機所提供的功能,由于人機交互的迫切需求,友好的GUI圖像用戶界面被研發出來。在對電視機進行操控的時候,我們提出以下一些問題,希望通過對這些問題的逐一解釋,逐步理解電視OSD顯示的機理。 字符或符號是怎么顯示到屏幕上的? 屏幕菜單界面是怎樣進行控制的? 字符大小、顏色是怎樣選擇和控制的? 多語言是怎樣進行控制和顯示的? 一些特定的應用和界面是怎樣進行控制的? 一、OSD電路與字符存儲 東芝TMPA8821系列電視芯片內置了OSD屏顯電路,當需要顯示字符符號時,OSD顯示控制啟動,來自字符符號ROM區(ROM.Fable)的OSD字符被加載到顯示輸出控制緩存,由TV信號處理器控制顯示。字符是點陣式,采用模擬疊加技術,把OSD信號疊加在R、G、B三槍上,送到屏上顯示。這不同于數字電視的數字疊加技術,在數字電視中,OSD字符或位圖一般在SCALER(圖像比例變換)處理階段通過修改DISPLAYRAM(顯示動態內存)來加載,最后通過顯示電路顯示在屏上,例如P七七1硒、止s公司的PWll3芯片。 在東芝TMpA8821系列芯片中,顯示字符共有大、中、小三種可選,在最小字體顯示下,滿屏可以顯示12行,每行最多可以顯示32個字符,故此系列芯片最多的ROM字符表為384(=32x12)個。 東芝該系列電視芯片的開發語言為C一IJ跳,這是一個介于C語言與匯編語言的開發語言,同時兼有了C高級語言的易于實現、匯編語言的對硬件方便控制等各自的不同優勢。 我們知道,在ANSIC(美國國家標準化組織標準C語言)中一個字節可以用來表示一個字符,通常給一個字符變量賦值可以直接指定該字符,或指定其對應的ASCn數值(不同的計數制式都可以)。如:Chareh;ch==‘0’ch=Ox30/*直接指定該字符*//*指定其對應的ASCll(地址)數值*/因此,為了便于在C一LI跳中方便使用每一個常用字符,所有的常用字符都定義同ANSIC一樣的映射。假定我們定義的字符映射表不是這樣,如:“0”字符不是在0x31而是ox41,那我們在C一IJKE中對該字符的賦值就只能夠使用“指定其地址對應的數值”了,相應的其他字符與數值的轉換也會帶來一系列的問題。 同樣,如下圖3所示,我們知道,一個字符的最大可表示范圍為0龍55(O習xFr),而ROM字符空間為384個,那如何表示超過0xFF的字符呢?使用轉義字符可以解決此問題。轉義字符、逃逸字符(EscapeChar)在通信中經常被使用,用以表示在其后緊跟的字符被轉義,這里的使用方法其實是擴展了它的使用功能,即:擴展了字符的顯示范圍,被轉義的字符為0xFT后的字符,本質上一個轉義字符最多也可以擴展(0xFT+l)個字符。至此,字符的存儲問題得到了解決。 在數字LCD電視的屏顯技術中,采用了兼容WINDOWS字體的設計方法,即,一種新的字體,只要在wiNDOWS系統平臺中有,就可以把該字體“引進”到系統中,作為顯示設計的一種字體,在給定不同的顯示字符后,選擇對應的需要采用的字體即可,具體的轉換細節由底層的SDK(阮眾wareDevefopment幻t,軟件開發工具包)實現。 二、OSD菜單界面控制 前面提到,東芝TMpA8821系列芯片中,在最小字符格式下,滿屏可以顯示12行,每行可以顯示32個字符,因為在此系列芯片中不支持位圖格式的OSD顯示,所以在oSD中顯示的所有圖標,都是點陣式的字符。由于某些圖標的復雜性或特殊需要,一個完整意義上的圖標可能會占用多個OSD字符存儲空間。 OSD菜單界面設計,主要涉及到OSD的排版和風格,類似一些可視化語言應用開發的界面設計:首先,通過拖動各類控件實現整個界面;然后,通過各個控件對應的事件實現基本模塊功能;最后,通過消息傳遞機制整合整個的項目。對應這個過程,下面我們來簡單分析東芝模擬電視芯片所采用的OsD菜單顯示。 控件界面設計:這里,控件即字符。考慮到視覺可視性和操作習慣,菜單界面一般設計為多層次,首層一般為主菜單,其次為二級、三級子菜單等,主菜單一般作為功能分類導航。按照不同的設計風格,主菜單一般可設計為橫式或豎式,子菜單出現后一般保留主菜單的顯示,或保留顯示當前主菜單的選擇。 在數字LCD電視的屏顯技術中,位圖與字符已經分開,在實際顯示的時候需要進行不同的處理。顯示的位圖需要在設計階段給定,并且給定位圖的位深需要根據不同的開發平臺來定義,在顯示時,對應需要顯示的位圖被加載到FrameBuffer中,然后根據坐標轉換,通過顯示電路顯示到屏上。 Pixe1Works的PWll3SDK中,在OSD的設計上與模擬電視的不同點在于其OSD是單獨設計的,設計過程非常類似wiNDOWS犯程序的開發。在模擬電視中,我們需要顯示一個圖標或一個字符,過程往往是:規劃要顯示的位置與要顯示的字符內容,通過代碼控制顯示特定行,加載特定的字符,然后通過一個特定的系統顯示函數,把欲顯示的內容顯示到屏上。但在Pixe1Works的PWI13SDK中,通過特定的GUIBuilder工具,你可以構建一個需要顯示的界面,該工具的輸人來自該SDK的PWCo浦g的一個特定輸出,在GUIBuilder中你可以自定義一些需要顯示的條件,使得需要顯示的內容只在特定的條件觸發后顯示?;谶@種獨立模塊的開發的確帶來了開發高效,但同時,一個不容忽視的事實凸現出來:終端開發人員對系統的可控性變得越來越低,如果需要改動一個特定的內容往往需要改動系統的結構,因此,Rxe1W0rks的針對數字電視開發的下一代SDK又回到了從前,依然采用代碼交互式的開發方法,讓終端開發人員有了更多的可控之處。 三、多語言的顯示與控制 不同的語言,本質對應的是不同的OSD字符顯示,在OSDROM表可以允許的條件下,在OTP或掩膜片大小允許的情況下,我們可以多增加一些語言。#p#分頁標題#e# 首先,在東芝TMPA8821系列芯片中讓我們了解一下字符的定義:/*SOUND*/constcharosdesstr--bass〔]={”BAss,,,0x65,0x()e,0#ifdefLANG_IND0N’ESIA/*假定該宏被定義*/,’B’,’A’,’S’,’S’,0#endif};對常量osd_str_bass字符定義了兩種語言,”BASS”、O湯5,oxoc,0和’B’,’A’,’S’,’S’,0,我們注意到在C語言中,字符串是以0籠加表示結束的(不是字符“O,’),在該例中,”BASS”隱式包含了0,00,后面兩個字符串顯式表示了ox(X),在給定一種語言的條件下,如第二種語言,在程序運行態中,通過具體的0喊X)的計數(第二個),即可定位具體的字符串,顯示正確的字符。 考慮到不同的語言習慣,不同的語言需要安排合適的字符顯示次序。如,中、英等語言字符顯示由左到右,但阿拉伯語、波斯語等語言是由右到左,因此,在界面字符定義的時候需要考慮到由右到左的那些字符,在界面排版的時候需要按照不同語言的習慣加以控制。 前面提及,在PixelWOrk,的PWI13SDK中,多語言的實現依賴于當前開發平臺是否有需要顯示的語言,同時還依賴于OSD的可用空間大小。我們知道,在一特定平臺下,提供給顯存的空間是有限的,如果界面布局過于凌亂或超過了顯存的邊界大小,則會出現OSD顯示不正常的現象。 四、特定顯示界面的控制 在不同的產品中,可能會包含不同的特定功能需求,如開關機拉幕、游戲、屏保、OSDLoGO、動畫菜單等,這些特定的應用是如何控制的呢?關鍵在于算法。 開關機拉幕,通過對AREA的控制,我們可以顯示拉幕的效果。我們注意到,在雙拉幕的過程中,我們需要確定如下的關鍵點:拉幕的中心位置、拉幕的步幅、拉幕步幅的時間等,通過細致分析,利用兩個AREA,雙拉幕的效果很容易實現。當然,進一步分析我們還可以得到更多其他效果的拉幕,如單拉幕、卷邊拉幕、放射狀拉幕等。 在屏保中,我們的屏保字符圖標在全屏上下左右移動,實現了動畫的功能,如何實現呢?前面我們提到,osD字符的顯示具體位置受到一些位置寄存器的控制,利用這些oSD顯示位置寄存器,我們便可實現動畫的功能。 動畫菜單,關鍵在于何時動?具有何效果?通過中斷定時器,我們可以定時驅動菜單顯示的動畫,通過不同的排版或OSD字符的顯示次序/位置,我們可以實現具體的動畫效果,當然,在16位或更高的開發平臺上,我們能夠實現的一些特效功能幾乎可以是磯NDOWS平臺的一個字集,為界面友好性及功能的提升創造了良好的條件。 五、結束語 通過以上的一些簡單示例,對電視的OSD顯示已經有了一些基本的概念和認識。當然,在一些其他廠家的模擬TVOSD顯示控制中,已經采取了一些更為先進的處理方式,如:直接使用BITMAP位圖,彩色OSD字符、所見即所得OSD排版等,都極大地縮短了OSD界面的開發時間,提高了工作效率,但無論如何,一般情況下,廠家都會提供其對應的一些OSD字符工具、位圖工具等,以創造出更為絢麗的人機界面,滿足消費者日益提高的需求。