一種優(yōu)化的機頂盒電子節目指南系統的設計方案
本文針對兩類(lèi)不同的SI表接收要求設計不同的SI引擎解決方案。其中簡(jiǎn)單EPG的SI引擎流程如圖2,高級EPG的SI引擎流程如圖3.

當過(guò)濾器收到EIT表并調用中斷處理函數時(shí),簡(jiǎn)單EPG采用先關(guān)閉EIT P/F信道,并設置相關(guān)標志,等待后臺輪詢(xún)函數解析處理完該表以后再打開(kāi)EIT P/F信道重新接收,即過(guò)濾器接收表的過(guò)程和后臺輪詢(xún)函數解析處理是串行處理的,這種機制能夠實(shí)時(shí)處理當前的表,適合簡(jiǎn)單EPG信息量小、更新速度快的特點(diǎn);高級EPG則不關(guān)閉信道,而是先解析表頭,如果該段沒(méi)有接收過(guò),則將該段信息插入消息隊列,等待后臺輪詢(xún)函數解析處理,即過(guò)濾器接收表的過(guò)程和后臺輪詢(xún)函數解析處理是并行處理的,這種機制能夠保證過(guò)濾器收表過(guò)程連續而不被后臺打斷,適合高級EPG信息量大、前端連續發(fā)送的特點(diǎn)。
在EIT表版本更新方面,簡(jiǎn)單EPG收到當前和下一個(gè)節目信息以后,立即將過(guò)濾器設置成只接收新版本EIT P/F表,這樣可以實(shí)時(shí)接收并更新簡(jiǎn)單EPG信息;對于高級EPG,由于信息量大且前端更新速度慢,所以在只在每次重新開(kāi)機時(shí)接收最新版本的EIT表信息。
3.2 EPG數據庫
傳統機頂盒上的EPG數據庫是單一的節目信息數據庫,本文的優(yōu)化處理在于:節目索引和節目詳細信息分別建立數據庫并彼此獨立維護。其中節目索引數據庫是按照頻道-子表-段-節目的樹(shù)狀索引結構,如圖4所示。其中段節點(diǎn)包含了它所屬所有節目的id(參數event_id),同時(shí)還包含了表示該段是否接收的參數sectavail.
這種樹(shù)狀索引數據庫有三個(gè)優(yōu)點(diǎn):
1. 樹(shù)狀索引所有節目id,這樣便于節目信息的查詢(xún)和按時(shí)間排序;
2. 記錄某頻道的EIT表所有段的接收情況,便于SI引擎在接收時(shí)判斷該段是否已經(jīng)接收;
3. 索引結構便于節目信息數據庫的管理,如刪除某一個(gè)頻道的所有高級EPG信息等。
節目信息數據庫則存儲了每個(gè)節目的詳細信息,包括節目名稱(chēng)、節目起始和終止時(shí)間、節目簡(jiǎn)介以及節目語(yǔ)言種類(lèi)等。其中重要的參數是節目id,通過(guò)該參數節目索引數據庫可以訪(fǎng)問(wèn)相應的節目信息數據庫內容。
3.3 EPG應用程序測試與分析
EPG應用程序主要功能是響應遙控器中相關(guān)的EPG按鈕,并查詢(xún)EPG數據庫,將節目信息按照時(shí)間排序輸出到OSD界面中。對于簡(jiǎn)單EPG,只需作當前和下一個(gè)節目的時(shí)間排序輸出;而對于高級EPG,OSD界面中選中特定頻道和特定日期以后,通過(guò)訪(fǎng)問(wèn)EPG數據庫中的節目索引數據庫,提取出指定頻道的所有節目id,然后根據節目id在節目信息數據庫中篩選出指定日期的節目,并按節目起始時(shí)間做冒泡排序,最后輸出到OSD顯示。
4 結論
本文介紹了機頂盒中EPG系統的架構,并就具體的功能模塊介紹了優(yōu)化方案。在SI引擎方面提出了針對簡(jiǎn)單EPG和高級EPG不同的流程,在EPG數據庫方面提出了節目索引和節目信息分離的數據庫結構。這種優(yōu)化結構在實(shí)際的EPG碼流測試中取得良好的效果。
評論