發(fā)布成功
贊賞金額:
支付金額:5元
支付方式:
贊賞成功!
你的贊賞是對作者最大的肯定~?
【中心議題】
* 介紹了數(shù)字電視機頂盒與中間件
* 設(shè)計了基于數(shù)字電視機頂盒的交互式中間件
【解決方案】
* 基于長虹Sti7109機頂盒設(shè)計和實現(xiàn)
* 通過中間件可以實現(xiàn)廣播方式下的單向和雙向交互功能
1數(shù)字電視機頂盒軟件架構(gòu)介紹
數(shù)字電視機頂盒除具有基本的信號轉(zhuǎn)換功能外,且已成為一種嵌入式計算設(shè)備,具有完善的實時操作系統(tǒng),提供強大的CPU計算能力,用來協(xié)調(diào)控制機頂盒各部分硬件設(shè)施,并提供易操作的圖形用戶界面。機頂盒的軟件結(jié)構(gòu)大致可分為三層:操作系統(tǒng)及硬件驅(qū)動層、中間件軟件系統(tǒng)層、應(yīng)用程序?qū)印F鋵哟谓Y(jié)構(gòu)如圖1所示。
2交互式中間件(MRP)原理與實現(xiàn)
交互處理引擎(MRP)是為了實現(xiàn)廣播環(huán)境下的交互式服務(wù),其原理是通過在普通廣播電視節(jié)目中添加交互信息,在機頂盒端對所收到的信息進行解碼播放,按照要求將同步信息和音視頻疊加顯示在電視機上,用戶根據(jù)同步信息提示來完成交互操作,從而實現(xiàn)節(jié)目和觀眾的互動。下圖2為MRP運行流程圖,由圖上可以看出MRP主要有以下幾大模塊構(gòu)成:
(1)同步內(nèi)容管理模塊:同步內(nèi)容管理是MRP中間件的核心部分,主要負責(zé)同步內(nèi)容管理控制并接收、解析從前端發(fā)送過來的數(shù)據(jù)廣播,它是以事件驅(qū)動的單任務(wù)形式運行在系統(tǒng)中的,并一直處于監(jiān)測狀態(tài),一旦監(jiān)測到相關(guān)MRP觸發(fā)事件,立即處理。它需要有一個合作進程,即DVBApplSectionFilterMonitor任務(wù)負責(zé)接收數(shù)據(jù)廣播的section數(shù)據(jù),該合作進程由機頂盒廠家提供。
(2)同步內(nèi)容播放模塊:同步內(nèi)容播放模塊是展示模塊,即用戶能看到效果的模塊,它是將同步內(nèi)容管理模塊解析后的數(shù)據(jù)有效地在OSD層上進行顯示的過程。它的實質(zhì)是在普通的數(shù)字電視基礎(chǔ)上增加了一個實時彈出信息框的過程,其目的主要是對正在播放的電視內(nèi)容進行輔助性說明,即視頻注解,增強對電視內(nèi)容的理解,該模塊負責(zé)交互功能。
(3)平臺接口層:該部分接口對內(nèi)主要是完成和機頂盒底層函數(shù)的對接從而實現(xiàn)圖形之類的顯示操作,對外是為了方便MRP在不同型號機頂盒之間的移植操作。
2.1 基于數(shù)字電視機頂盒的交互式中間件工作原理分析
下圖為MRP軟件內(nèi)部結(jié)構(gòu)圖,在整個運行過程中,MRP主要完成的工作包括中間件的初始化、系統(tǒng)的運行監(jiān)控、同步信息接受、解析、儲存,同步信息播放及交互操作,具體如下:
2.1.1 基于數(shù)字電視機頂盒的交互式中間件初始化
機頂盒開機啟動之后,監(jiān)控函數(shù)(main函數(shù))開始運行,它是機頂盒啟動時的唯一入口,它會執(zhí)行機頂盒的一些系統(tǒng)初始化和與硬件相關(guān)的啟動工作,MRP的任務(wù)也是在這個時候被初始化。
2.1.2同步信息接收
初始化完成,進入到MRP主入口,此時循環(huán)監(jiān)聽MRP事件的程序一旦監(jiān)聽到了請求事件就會通知底層接收數(shù)據(jù),底層硬件接收到請求同步信息(section)就會告訴數(shù)據(jù)接收部件,這樣數(shù)據(jù)接收部件就會將同步信息以section的方式發(fā)給MRP中間件的同步管理模塊進行接收。MRP中間件提供一個接口MRP_HandleAllData(),由合作進程DVBApplSectionFilterMonitor任務(wù)調(diào)用,實現(xiàn)數(shù)據(jù)接收,終端開辟一段內(nèi)存對接收到的數(shù)據(jù)重組還原,其數(shù)據(jù)流程如圖4所示。
2.1.3同步信息解析與存貯
同步管理模塊解析完同步信息后,相應(yīng)的信息存于同步信息緩沖區(qū),它是一個樹型結(jié)構(gòu)。它既是同步內(nèi)容管理模塊的輸出項也是同步內(nèi)容播放模塊的輸入項,同步內(nèi)容播放模塊播出的同步信息就是直接從那里提取的。
2.1.4同步信息顯示與交互
同步內(nèi)容播放模塊搜索到相關(guān)同步信息時,就會調(diào)用相關(guān)OS層顯示接口進行同步信息顯示。該部分顯示內(nèi)容比普通電視增加了同步可交互功能。顯示的信息一般用紅、黃、藍、綠4種彩色鍵進行標注,用文字、圖片、直線、橢圓、圓、矩形等進行顯示。同步內(nèi)容播放模塊可以接收遙控器的按鍵觸發(fā)事件,并根據(jù)遙控器按鍵調(diào)用按鍵處理接口進行處理。
上述顯示的同步信息,必須在一定的規(guī)范下進行編輯和操作,在視頻通過廣播網(wǎng)發(fā)放到機頂盒之前,必須將原始的TS流經(jīng)過同步信息編輯,加入符合要求的同步信息,才可以被中間件獲取和顯示,不同的同步信息可以實現(xiàn)不同的交互操作,比如在線答題,問卷調(diào)查、在線查詢等服務(wù)。
2.2 基于數(shù)字電視機頂盒的交互式中間件實現(xiàn)
2.2.1基于數(shù)字電視機頂盒的交互式中間件同步內(nèi)容管理模塊
當(dāng)同步信息到達機頂盒時,該模塊主要實現(xiàn)同步內(nèi)容管理控制并接收、解析從前端發(fā)送過來的數(shù)據(jù)廣播,具體如下:
(1)同步內(nèi)容控制
負責(zé)監(jiān)聽是否有MRP觸發(fā)事件,該事件包括:請求鏈接數(shù)據(jù)管道接收MRP同步內(nèi)容、釋放MRP數(shù)據(jù)接收管道。主要函數(shù)為MRP_SNY_Monitor:
MRP_SNY_Monitor{//一直監(jiān)聽有沒有MRP_dataControl()發(fā)的消息
while(1){
//收到MRP觸發(fā)事件,MRP_cmd message為以數(shù)據(jù)結(jié)構(gòu)
MRP_cmd message=waitmassege();
if(MRP_cmd message){
switch(MRP_cmd message->MRP_cmd_type)//判斷命令類型
case MRP_REQUEST_SNYINF://請求接收同步內(nèi)容設(shè)置filter參數(shù),鏈接數(shù)據(jù)管道
break;
case MRP_STOP_SNYINF://停止請求接收同步內(nèi)容釋放filter,
default:break;
}
release MRP_cmd
}
}
MRP_SNY_Monitor是在main()中對MRP中間件創(chuàng)建任務(wù)后就會一直循環(huán)運行,直到關(guān)機才停止。它會一直搜索有沒有MRP_dataControl()發(fā)送的MRP觸發(fā)事件,當(dāng)發(fā)現(xiàn)有觸發(fā)事件時,則會判斷是請求接收還是停止接收同步信息。并通知數(shù)據(jù)接收部件接收同步數(shù)據(jù)。
(2)同步信息接收
當(dāng)MRP_dataControl發(fā)送的消息為同步內(nèi)容請求時,MRP_SNY_Monitor會通知數(shù)據(jù)接收部件接收同步信息,此時MRP_HandleAllData()會被調(diào)用并接收廣播發(fā)來的section數(shù)據(jù),section數(shù)據(jù)以參數(shù)方式傳入接收函數(shù)從而實現(xiàn)了數(shù)據(jù)接收。
void MRP_HandleAllData(BYTE*SectionData)/*接收同步信息section*/
{
if(SectionData[0]==MRP_SYN_TABLEID){
index=Get2Byte(&SectionData[3]);
if(0xfffe==index)
同步顯示標記的相關(guān)處理
else{
MRP_ParseSynInf(synNum,SectionData);//調(diào)用解析同步信息函數(shù)
}
}
else return;
}
數(shù)據(jù)以section表格數(shù)據(jù)下發(fā),根據(jù)內(nèi)容不同可能為一個或多個section。接收的數(shù)據(jù)包括兩種:同步內(nèi)容數(shù)據(jù)和場景顯示標記,同步內(nèi)容數(shù)據(jù)包含了要顯示的內(nèi)容,收到后要解析出來,而場景顯示標記只是告訴播放模塊可以顯示了。
(3)同步內(nèi)容解析
MRP_ParseSynInf()負責(zé)對接收到的同步信息進行解析,解析后的同步信息存儲在緩存中等待播放。解析后的數(shù)據(jù)以樹形結(jié)構(gòu)存在與結(jié)構(gòu)體中,具體如下圖5:
2.2.2基于數(shù)字電視機頂盒的交互式中間件同步內(nèi)容播放模塊
播放模塊負責(zé)對解析后的同步信息進行顯示,在中間件運行的過程中,該模塊會不斷地循環(huán)運行,在本項目中這個接口是MRP_Service(),其框架代碼如下:
MRP_Service()
{
初始化代碼,發(fā)送請求同步信息的消息
while(1)
{
if(接收到了同步信息)//有同步信息的電視節(jié)目播放,
……
MRP_DrawPane();//顯示主或子信息框,包括文字、按鍵等信息
MRP_Key_Handle();//處理觀眾的交換響應(yīng)
……
……//雙向機頂盒還可以調(diào)用瀏覽器、回傳數(shù)據(jù)
else
//正常電視節(jié)目播放
}
}
用戶接口模塊調(diào)用MRP_Service()播放接口后,首先初始化所需的變量并發(fā)送請求接收同步信息的指令,接著不斷循環(huán)判斷接收到的電視節(jié)目是否有同步信息需要顯示。當(dāng)有同步信息需要顯示時,就轉(zhuǎn)向有同步信息的電視節(jié)目播放,否則就會按照原始正常的情況顯示電視節(jié)目。
對于同步信息的顯示,一般分為主顯示和次顯示,所謂主顯示就是當(dāng)有同步信息時,在當(dāng)前的電視節(jié)目上以提示的方式提醒用戶當(dāng)前節(jié)目有同步信息,此時,當(dāng)用戶按照提示進行操作時,將會轉(zhuǎn)到同步信息的次顯示畫面,即同步信息的內(nèi)容部分。
3基于數(shù)字電視機頂盒的交互式中間件測試
本測試在STi7109機頂盒上進行,使用的TS流不僅含有原始的音視頻等信息,還含有經(jīng)過編輯處理后的同步信息內(nèi)容,TS流的加工流程如下圖6所示:
含同步信息的TS流經(jīng)過復(fù)用器和調(diào)制器等設(shè)備在電視上顯示,最終的效果圖如下圖7和圖8所示:
4結(jié)束語
該中間件是基于長虹Sti7109機頂盒上設(shè)計和實現(xiàn)的,通過該中間件可以實現(xiàn)廣播方式下的單向和雙向交互功能,響應(yīng)速度比較快,且不會影響正常的播放功能。但對于網(wǎng)站的瀏覽,由于機頂盒的硬件性能比較低,且受網(wǎng)絡(luò)和機頂盒中瀏覽器的影響,其響應(yīng)速度相對慢一點,總體上說可以滿足多數(shù)業(yè)務(wù)需求。