2021-4-10 | 電影電視
我們可以通過遙控器或面板按鍵操作來選擇電視接收機所提供的功能,由于人機交互的迫切需求,友好的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或掩膜片大小允許的情況下,我們可以多增加一些語言。