解玉芳,郭里婷,蘇凱雄
(福州大學 物理與信息工程學院;福建省數字電視工程研究中心,福建 福州 350002)
EPG(Electronic Program Guide)是采用電子化手段進行數字電視節目預告信息傳送的一種常用方法。在符合MPEG-2標準的TS流中插入按照DVB標準定義的業務信息,在終端通過機頂盒的相關軟件對信息進行解析,并以直觀字符或圖表顯示在電視屏幕上,方便用戶迅速地搜索節目和了解節目信息[1]。因此,EPG是數字電視的基本業務之一,EPG信息的完整性、顯示速度以及占用的存儲空間一直是數字電視終端設計中的一個難點。筆者針對這些問題,提出了一種新的改進設計方法。
事件信息中提供了節目表的內容,根據EIT及其他表所提供的信息,可以實現各種EPG功能,如按節目類型檢索、按時間檢索及對某類節目的鎖定等。
現在市場上的機頂盒產品通常采用PAT表→PMT表→NIT表→SDT表→EIT表的順序解析構造EPG、搜索節目的方法[2]。基本上采用的是本地應用方案,在技術上包含兩個部分,一是播出前端的EPG編輯器,二是用戶端接收機相應的控制軟件,即EPG信息和EPG應用。在發送端,通過EPG編輯系統編輯、動態生成和播放EPG信息;在接收端,通過EPG接收軟件平臺接收、分析、處理系統業務信息(SI),完成EPG信息接收、顯示與控制,為用戶提供電子節目指南信息,將相關的節目信息顯示到電視屏幕上[3]。EPG的軟件總體結構如圖1所示。

圖1 節目指南功能的軟件總體結構
在上述EPG實現過程中,包括3個關鍵技術,即EIT表數據的濾取、EIT信息的分析和EPG界面的顯示。其中EIT表數據的濾取主要依靠解復用芯片來實現,而EIT信息的分析和EPG界面的顯示則是通過軟件來實現的[4-5]。這3個過程的相互關系如圖2所示。

圖2 EPG系統主要功能模塊的關系
Usif_Task進程為用戶交互模塊,響應用戶的操作,如用戶要求換臺則向EPG_Builder發送相應的消息請求分段數據,如果要求顯示則使用EPG_Builder進程所建立的EPG數據庫實現當前節目事件信息的顯示。
EPG_Builder進程等待來自Usif_Task或者Filter-Moniter模塊的消息。若消息來自Usif_Task模塊,則根據消息內容執行不同的申請濾表操作;若消息來自Filter-Moniter模塊,則解析FilterMoniter任務送回的數據,并將有效節目信息存入相應的EPG數據庫。
FilterMoniter進程等待來自EPG_Builder模塊的消息,根據消息內容控制底層硬件過濾和接收相應的PSI/SI信息,將數據放入緩沖區中,并向EPG_Builder進程發送消息,通知 EPG_Builder解析數據[6]。
為了方便用戶的隨機接入,SI數據采用重復發送方式。硬件模塊PTI有兩個對象,即Slot和Filter。Slot用來過濾PID值,得到相應的TS包;Filter用來過濾Table_Id,得到相應表信息。通過濾波申請函數對濾波器模式、PID、Table_Id等參數進行設置,再進行過濾,從而得到需要的分級分組[7]。
EPG在濾波方面最常見的問題就是漏包、丟失數據,這是濾波速度比分析速度快、數據量大時來不及分析造成的。改進做法是開辟一個較大的緩沖區,底層由一個較高級的進程負責數據濾波。濾到的數據段如果是EIT分段,首先判斷是否為新的分段,若是新的分段,則由暫存區拷貝到環形緩沖區中,相應的寫指針往下移,收到分段后再往下移。同時由分析數據進程分析數據,將讀指針往下移,根據寫與讀指針來控制分析與濾波兩個進程。如果緩沖區剩余空間已經不夠再寫入一段數據,則將寫指針指向緩沖區首地址,從頭開始往下寫。
同時,將濾波進程優先級設為高,可以將分析進程打斷。只有當緩沖區存滿,才會暫時將濾波通道關閉,這樣做不易漏包與丟失數據。并且,由于只有新的分段才能存入緩沖區,就不需要對重復的事件進行分析以及遍歷,從而可以在EPG信息的存儲模塊中將遍歷去除,提高效率。其結果是,無論在EPG信息的完整性上還是在效率上都得到很大提升,給用戶的交互使用帶來方便。
由于接收端的EPG系統運行于操作系統中,用戶對其速度有一定的要求,如果接收端的SI數據組織不夠合理,則將對EPG系統的整體性能產生較大影響。為了方便快捷地實現數據檢索,前端系統是按照“網絡-傳輸流-業務-事件”的分層順序來組織SI數據的。因此,在接收端也采用這樣的分層結構,來構成從傳輸流標識符到業務標識符、事件標識符的樹狀結構,每級都采用ID進行存儲,從而便于查找,提高檢索效率。
在機頂盒中,EPG信息置于本地數據庫,為了使用戶在瀏覽EPG信息時快捷方便,通常采用固定數組形式存儲事件信息,并給每個事件開辟了固定的空間。但由于每個事件的長度不一樣,每個事件的空間又是按照事件的最大長度來開辟的,這樣則會導致內存空間的浪費。
本文的改進算法中,內存采用鏈表形式管理,并根據其實際長度分配空間存儲,釋放后進行碎片整理收回空間,每個事件根據其實際長度存儲,則同樣的內存條件下可存的事件更多。這種方式有效地利用了嵌入式系統有限的內存空間,管理更靈活。
用戶所看到的畫面是電視節目圖像和EPG界面的疊加,畫面從前到后分為3層,依次為OSD層、視頻層和靜幀層。OSD層是在圖像上疊加文字顯示,EPG畫面在OSD層上構建,由許多EPG圖形元素(如文本框、選擇按鈕等)疊加而成[8]。視頻層為當前正在收看的電視節目圖像,靜幀層為EPG應用程序菜單的背景圖像。用戶依據EPG界面顯示,通過遙控器或機頂盒的前面板按鍵來進行各項功能操作,Usif_Task響應這些操作,同時向EPG_Builder發送消息,觸發其相應的處理。
通常做法是通過檢索EPG數據庫得到所需的事件進行顯示。為提高顯示速度,所做的改進是在分析完數據后馬上核對該節目是否為當前要顯示的,若是,則直接調用一個回調函數發送消息至上層,要求立即顯示,這樣就節省了將該節目存至EPG數據庫,再從事件庫中查找該節目的時間,從而使顯示速度變得更快。
筆者從EPG信息的完整性、顯示速度和存儲空間的角度出發,提出了一種基本的EPG實現方案,更高效地實現了PSI/SI信息接收、分析、處理和顯示的整個過程。實踐表明,采用以上方案,該EPG系統能夠有效地節省空間,并能更完整地顯示出EPG信息,為進一步開發交互式多媒體、網絡數字電視機頂盒奠定了基礎。
[1]蘇凱雄,郭里婷.數字衛星電視接收技術[M].北京∶人民郵電出版社,2002.
[2]JY/Z 174-2001,數字視頻廣播中文業務信息規范[S].2001.
[3]WHITAKER J.數字技術:數字電視原理與應用[M].邱緒環,樂匋,徐孟俠,等,譯.北京:電子工業出版社,2000.
[4]MONDWURFSW.LowcostMPEG-2multiplexingschemeformultimedia and digital TV distribution systems[J].Devices Circuits and Systems,2004(1):3.
[5]周曉,于鴻洋.高清/標清兼容的數字電視接收軟件的設計與實現[D].成都∶電子科技大學,2007.
[6]劉雪,王保保.數字電視機頂盒EPG系統的設計與實現[J].計算機工程與設計,2008,29(19):5129-5130.
[7]劉浩,王保保.DVB-C機頂盒軟件接收系統的研究[D].西安∶西安電子科技大學,2006.
[8]李穎,甘育裕.新型數字機頂盒的GUI系統研究與設計[J].電視技術,2007,31(5):40-42.