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