基于地面高清機(jī)頂盒的 PVR 系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)
1引言
2006 年8 月18 日,國(guó)家標(biāo)準(zhǔn)化管理委員會(huì)正式發(fā)布了我國(guó)具有自主知識(shí)產(chǎn)權(quán)的《數(shù)字電視地面廣播傳輸系統(tǒng)幀結(jié)構(gòu)、信道編碼和調(diào)制》標(biāo)準(zhǔn)(簡(jiǎn)稱(chēng)“中國(guó)數(shù)字電視地面?zhèn)鬏敇?biāo)準(zhǔn)”)。該標(biāo)準(zhǔn)支持高清晰度電視(HDTV)、標(biāo)準(zhǔn)清晰度電視(SDTV)和多媒體數(shù)據(jù)廣播(MMDB)等多種業(yè)務(wù),滿(mǎn)足大范圍固定覆蓋和移動(dòng)接收的需要。地面高清數(shù)字廣播系統(tǒng)于2008 年7 月投入使用,已成功進(jìn)行了北京奧運(yùn)會(huì)的全程直播,并將直播2010 年上海世博會(huì)。針對(duì)地面高清市場(chǎng)的各類(lèi)產(chǎn)品及技術(shù)應(yīng)運(yùn)而生,而PVR 功能則是相關(guān)產(chǎn)品技術(shù)中的難點(diǎn)和亮點(diǎn)。
PVR 的全稱(chēng)是Personal Video Recorder(個(gè)人視頻錄像機(jī)),但其實(shí)際功能超出了名稱(chēng)的表述。PVR 的突出特點(diǎn)是以硬盤(pán)為存儲(chǔ)媒介,建立本地的海量緩沖區(qū)和節(jié)目存儲(chǔ)庫(kù),利用數(shù)字化處理技術(shù),實(shí)現(xiàn)對(duì)節(jié)目的控制和管理。數(shù)字化和存儲(chǔ)技術(shù)是PVR 技術(shù)的核心,PVR 技術(shù)和數(shù)字機(jī)頂盒結(jié)合而產(chǎn)生的PVR 機(jī)頂盒,將兩種先進(jìn)技術(shù)相結(jié)合,將電視生活向前推進(jìn)了一步。PVR 數(shù)字機(jī)頂盒應(yīng)用于數(shù)字電視系統(tǒng),相對(duì)于模擬PVR,它把數(shù)字化放在前端,而不是在機(jī)頂盒客戶(hù)端上來(lái)進(jìn)行數(shù)字編碼,使得節(jié)目更清晰、終端成本更低、節(jié)目控制更方便。.PVR 機(jī)頂盒把硬盤(pán)錄放技術(shù)和電子節(jié)目指南(Electronic Program Guide,EPG)相結(jié)合,將節(jié)目的內(nèi)容和節(jié)目的信息相關(guān)聯(lián),方便節(jié)目的查詢(xún)和管理,亦可根據(jù)節(jié)目單進(jìn)行預(yù)約錄像,操作簡(jiǎn)單方便。PVR 技術(shù)和
數(shù)字機(jī)頂盒的結(jié)合是電視節(jié)目播放技術(shù)發(fā)展的必然趨勢(shì)。
本文研究在嵌入式系統(tǒng)下 ADTB-T 高清電視信號(hào)以及標(biāo)清電視信號(hào)的PVR 功能的實(shí)現(xiàn)。論文主要針對(duì)高清電視信號(hào)特有的高碼率TS 流傳輸和處理與嵌入式系統(tǒng)的相對(duì)緊張的系統(tǒng)資源這一矛盾進(jìn)行研究,過(guò)軟硬件的配合實(shí)現(xiàn)PVR 的各項(xiàng)基本功能,并在此基礎(chǔ)上,通過(guò)緩存技術(shù),實(shí)現(xiàn)錄制與播放的無(wú)縫連接,同時(shí)充分利用ADBT-T 信號(hào)提供的EPG 信息,方便用戶(hù)預(yù)約錄制,并提供人性化的界面設(shè)計(jì),提高用戶(hù)友好度。1 硬件架構(gòu)本系統(tǒng)基于 Sigma Designs 公司的EM8622 平臺(tái)進(jìn)行開(kāi)發(fā),使用主頻為202MHz 的ARM7 中央處理器、128MBDDR 內(nèi)存、以及8MB FLAsH 芯片,配合上海高清HD2910 國(guó)際融合芯片,可以支持地面高清數(shù)字信號(hào)以及標(biāo)清模擬信號(hào)的兼容播放與無(wú)損錄制,同時(shí)配合時(shí)鐘板和地面廣播信號(hào)配套EPG,可以實(shí)現(xiàn)電視節(jié)目的定時(shí)錄制、自動(dòng)開(kāi)機(jī)預(yù)約錄制以及斷電續(xù)錄功能。硬件框架圖如下圖1 所示:
如圖,射頻信號(hào)由天線(xiàn)接收后送至HD2910TUNER(調(diào)諧器)板解調(diào)為MPEG2格式的TS(Transport Stream)流,經(jīng)RISC架構(gòu)的2D圖形引擎處理后傳輸至DEMUX(解復(fù)用)芯片,經(jīng)解復(fù)用后分為APES流(打包的音頻基本碼流)和VPES流(打包的視頻基本碼流)。此時(shí)根據(jù)錄制模式的不同,數(shù)據(jù)的走向也不同,具體分類(lèi)如下:
(1)只播模式:通道1開(kāi),通道2、通道3關(guān)。APES/VPES流輸送到DECODER(解碼芯片)解碼后生成音/視頻數(shù)據(jù),分別進(jìn)行音/視頻輸出。
(2)只錄模式:通道2開(kāi),通道1、通道3關(guān)。為了保證錄制文件碼率的穩(wěn)定,將APES/VPES流經(jīng)過(guò)PCI總線(xiàn)送至系統(tǒng)緩存,緩沖3至5s后再經(jīng)PCI總線(xiàn)分別保存為音/視頻硬盤(pán)文件。
(3)邊播邊錄模式:通道1、通道2開(kāi),通道3關(guān)。打開(kāi)通道1,APES/VPES流經(jīng)DECODER解碼后輸出至音/視頻終端,同時(shí)打開(kāi)通道2,將PES流數(shù)據(jù)經(jīng)系統(tǒng)緩存后保存至硬盤(pán)。
(4)錄像播放模式:通道3開(kāi),通道1、通道2關(guān)。打開(kāi)硬盤(pán)音視頻文件,將數(shù)據(jù)送到系統(tǒng)緩存,然后經(jīng)過(guò)音視頻同步處理后再傳輸?shù)紻ECODER,最后進(jìn)行相應(yīng)的音/視頻輸出。
(5)時(shí)移播放模式:通道2、通道3開(kāi),通道1關(guān)。時(shí)移播放即指通過(guò)硬盤(pán)的緩存能力,用戶(hù)可以像操作本地文件一樣暫停當(dāng)前播放的電視節(jié)目,過(guò)任意時(shí)間后繼續(xù)播放,或者隨時(shí)回放已播精彩鏡頭。在這種模式下,系統(tǒng)先將APES/VPES流經(jīng)系統(tǒng)緩存后保存為硬盤(pán)音/視頻文件,然后根據(jù)用戶(hù)需要可以隨時(shí)將硬盤(pán)文件音/視頻解碼并輸出。
(6)預(yù)約錄制模式:與邊播邊錄模式類(lèi)似,不同之處在于利用EPG和時(shí)鐘板定時(shí)喚醒系統(tǒng)進(jìn)行節(jié)目的錄制。
2 軟件結(jié)構(gòu)
本系統(tǒng)采用sigma Designs公司提供的配套軟件開(kāi)發(fā)包(SDK),主要分為兩個(gè)部分:Armutils開(kāi)發(fā)包與EM8623L開(kāi)發(fā)包。
Armutils開(kāi)發(fā)包主要包含uClinux內(nèi)核、文件系統(tǒng)、編譯工具、編譯環(huán)境等與ARM芯片相關(guān)的軟件。使用Armutils開(kāi)發(fā)包來(lái)生成PVR機(jī)頂盒的運(yùn)行內(nèi)核,以及機(jī)頂盒應(yīng)用程序的編譯與調(diào)試環(huán)境。
EM8620L開(kāi)發(fā)包主要包含Envision EM8623L開(kāi)發(fā)板的相關(guān)驅(qū)動(dòng),啟動(dòng)引導(dǎo)程序(Boot Loader),以及名為DCC(Decoding Chain Control)的用戶(hù)接口,用戶(hù)程序可通過(guò)DCC庫(kù)的調(diào)用實(shí)現(xiàn)對(duì)底層硬件的訪(fǎng)問(wèn),PVR機(jī)頂盒應(yīng)用程序的開(kāi)發(fā)都是基于這些接口與驅(qū)動(dòng)之上的。圖2簡(jiǎn)單描述了解決方案提出的軟件開(kāi)發(fā)層次結(jié)構(gòu)。
3 關(guān)鍵實(shí)現(xiàn)技術(shù)
3.1 音、視頻同步技術(shù)
電視信號(hào)錄制產(chǎn)生的音、視頻數(shù)據(jù)各自以PES包的形式存儲(chǔ)在硬盤(pán)上,當(dāng)它們被讀出并且被解碼播放時(shí),隨之就會(huì)產(chǎn)生音頻和視頻之間的同步問(wèn)題。
數(shù)字電視廣播的MPEG-2數(shù)字碼流中包括兩種時(shí)間信息:用于機(jī)頂盒本地系統(tǒng)時(shí)鐘與廣播系統(tǒng)前端時(shí)鐘同步的節(jié)目時(shí)鐘參考(Program Clock Reference,PCR),位于TS包的首部;以及用于音視頻同步的展現(xiàn)時(shí)間戳/解碼時(shí)間戳(Presentation Time stamp/Decoding Timestamp,PTS/DTS),位于PES包的首部。在本PVR系統(tǒng)中,由于音、視頻數(shù)據(jù)是以PES包的格式被存儲(chǔ)到硬盤(pán)的,所以PCR并沒(méi)有被存儲(chǔ);而另外一方面,在播放已錄節(jié)目時(shí),音、視頻數(shù)據(jù)是實(shí)時(shí)從硬盤(pán)中讀出的,讀取數(shù)據(jù)和播放數(shù)據(jù)都同屬于PVR系統(tǒng)內(nèi)部的操作,所以并不存在系統(tǒng)間時(shí)鐘同步的問(wèn)題,因此,在PVR系統(tǒng)的回放操作中不用考慮PCR。所以在錄像回放過(guò)程中,只能利用PTS/DTS來(lái)維持音頻與視頻的同步。播放錄像時(shí),幀速率(FrameRate)決定了視頻數(shù)據(jù)的解碼速率,所以可以將視頻PTS作為基準(zhǔn),將音頻PTS與之相比較,以此調(diào)整音頻解碼的速率,從而達(dá)到使音頻與視頻同步的目的,具體采用的方法如下:
(1)視頻數(shù)據(jù)被傳送到解碼單元的視頻緩沖區(qū)的過(guò)程中,對(duì)它進(jìn)行解析,記錄其中的PTS,并構(gòu)建視頻PTS表;
(2)對(duì)于音頻數(shù)據(jù),也同樣構(gòu)建音頻PTS表;
(3)在解碼過(guò)程中將視頻PTS作為基準(zhǔn),修正解碼單元中由系統(tǒng)時(shí)鐘驅(qū)動(dòng)的SCR(系統(tǒng)時(shí)鐘參考)計(jì)數(shù)器的值;
(4)根據(jù)音頻緩沖區(qū)指針的位置,在音頻PTS表中查找相應(yīng)的PTS值,將此值與SCR計(jì)數(shù)器的值相比較,作為調(diào)整音頻解碼速率的依據(jù),從而控制音頻解碼器解碼動(dòng)作,實(shí)現(xiàn)音頻數(shù)據(jù)跟隨視頻數(shù)據(jù)的同步。
3.2 緩存技術(shù)
如圖2所示,經(jīng)過(guò)前端解調(diào)得到的TS流經(jīng)由2D圖像引擎處理后進(jìn)入DEMUX模塊。DEMUX模塊是一個(gè)集成在主控芯片中的特殊微處理器,主要任務(wù)是進(jìn)行TS流的分析和解復(fù)用。由于硬盤(pán)的傳輸速率有限,因此為了減少磁盤(pán)讀寫(xiě)次數(shù),系統(tǒng)在內(nèi)存中開(kāi)辟一塊緩沖區(qū)用以緩沖音、視頻數(shù)據(jù),當(dāng)緩沖區(qū)數(shù)值達(dá)到門(mén)限時(shí),將其存儲(chǔ)數(shù)據(jù)寫(xiě)入硬盤(pán)。寫(xiě)數(shù)據(jù)與寫(xiě)硬盤(pán)兩個(gè)操作采用并行的線(xiàn)程來(lái)執(zhí)行,線(xiàn)程間通過(guò)信號(hào)進(jìn)行同步。
而在錄像文件的回放過(guò)程中,從硬盤(pán)中讀出的音、視頻PES文件分別放入音、視頻緩沖區(qū)中,系統(tǒng)不斷檢測(cè)緩沖區(qū)數(shù)據(jù)大小,如果數(shù)據(jù)小于門(mén)限值,則通知數(shù)據(jù)傳輸線(xiàn)程把新數(shù)據(jù)送入。
錄像文件的記錄方式包括兩種。正常錄制的文件大小隨著錄制時(shí)長(zhǎng)的增長(zhǎng)而增加,直到節(jié)目錄制完成或者硬盤(pán)空間耗盡為止。而在時(shí)移錄制模式下,錄像文件大小固定,它包括了寫(xiě)指針和讀指針。在開(kāi)始時(shí)移錄制時(shí),寫(xiě)指針開(kāi)始往后移動(dòng),畫(huà)面靜止在開(kāi)始錄制的時(shí)刻。當(dāng)回復(fù)收看時(shí),讀指針與寫(xiě)指針同步向后移動(dòng),寫(xiě)指針在節(jié)目結(jié)束時(shí)停止移動(dòng),而讀指針自然在與寫(xiě)指針重合時(shí)停止移動(dòng)。需要指出的是,由于時(shí)移錄制并不以錄制文件并回放為目的,所以播放過(guò)的節(jié)目即被丟棄,因此該文件是一個(gè)循環(huán)文件,寫(xiě)指針與讀指針在到達(dá)文件末尾時(shí)跳回文件開(kāi)頭。由于硬盤(pán)空間所限,循環(huán)文件大小即為最大時(shí)移錄制時(shí)長(zhǎng),超過(guò)該時(shí)長(zhǎng)則時(shí)移模式失效。
通過(guò)緩存技術(shù)的使用,系統(tǒng)大幅度減少了硬盤(pán)I/O次數(shù),提高了系統(tǒng)效率,同時(shí)也達(dá)到了保護(hù)硬盤(pán)的效果。同時(shí),緩存技術(shù)和音、視頻同步技術(shù)相結(jié)合,實(shí)現(xiàn)了電視節(jié)目的回放以及時(shí)移播放,真正體現(xiàn)了數(shù)字化PVR的強(qiáng)大人機(jī)交互功能。
3.3 EPG信息的提取和使用
本系統(tǒng)的EPG通過(guò)兩種方式獲取,其一是在播放節(jié)目時(shí)按下EPG按鍵顯示的present/following(當(dāng)前/隨后)信息,其二是通過(guò)主界面的EPG菜單進(jìn)入節(jié)目指南,顯示出頻道列表和按照時(shí)間排列的各頻道節(jié)目信息,為用戶(hù)提供電視節(jié)目列表。系統(tǒng)通過(guò)Tuner板的解調(diào)芯片,從接收的TS流中解析出服務(wù)信息(Service information,SI)數(shù)據(jù),并在系統(tǒng)緩存中建立SI數(shù)據(jù)庫(kù),用戶(hù)通過(guò)EPG的用戶(hù)界面(UserInterface,UI)與SI數(shù)據(jù)庫(kù)進(jìn)行交互。EPG的SI以節(jié)目為單位,將與每個(gè)節(jié)目相關(guān)的事件都存儲(chǔ)在該節(jié)目的事件鏈表上,對(duì)于單個(gè)頻道的事件,其數(shù)據(jù)結(jié)構(gòu)如下:
如上所示,EPG信息主要包含了每個(gè)節(jié)目所對(duì)應(yīng)的節(jié)目名、開(kāi)始時(shí)間、持續(xù)時(shí)長(zhǎng)以及相鄰事件的指針,當(dāng)然,事件信息還包括它所對(duì)應(yīng)的頻道信息三要素(transportid,network id,service id)。
EPG的信息量非常大,并且經(jīng)常更新,但是由于系統(tǒng)搜索一次EPG信息周期長(zhǎng)達(dá)8~10s,所以除了開(kāi)機(jī)之后的第一次獲取外,當(dāng)用戶(hù)按鍵瀏覽EPG時(shí),只有當(dāng)前節(jié)目已經(jīng)過(guò)期的情形下,系統(tǒng)才實(shí)時(shí)地分析獲取,并將其緩存至系統(tǒng)內(nèi)存,其余情形下系統(tǒng)讀取緩存數(shù)據(jù)以大幅度提高響應(yīng)速度。由于EPG的信息時(shí)效性很強(qiáng),因此在退出系統(tǒng)時(shí)無(wú)需保存。
用戶(hù)通過(guò)UI來(lái)實(shí)現(xiàn)與EPG之間的交互,在UI部分,向用戶(hù)提供了非常友好的EPG菜單界面,實(shí)現(xiàn)了節(jié)目的按頻道分類(lèi)以及按日期分類(lèi),用戶(hù)通過(guò)這些菜單界面,可以方便地瀏覽節(jié)目中近期播放的事件的信息,選擇自己喜歡的節(jié)目來(lái)播放,并且可以設(shè)置自動(dòng)錄制指定某個(gè)頻道的某個(gè)時(shí)間段的節(jié)目。3.4 預(yù)錄節(jié)目管理
前文已經(jīng)提到了使用EPG信息與時(shí)鐘板來(lái)進(jìn)行電視節(jié)目的預(yù)約錄制。用戶(hù)在瀏覽EPG列表時(shí)選中想要錄制的節(jié)目,按下預(yù)約錄制按鈕,系統(tǒng)自動(dòng)將預(yù)錄信息寫(xiě)入配置文件,并存儲(chǔ)至硬盤(pán),文件條目格式如下:
其中條目按照開(kāi)始時(shí)間的先后順序排列,開(kāi)始時(shí)間與結(jié)束時(shí)間均以BCD碼的形式保存以節(jié)省存儲(chǔ)空間,同時(shí)也可以與通用的struct tm格式方便地進(jìn)行轉(zhuǎn)換。用戶(hù)可以隨時(shí)進(jìn)入預(yù)錄條目管理界面刪除不需要的條目,也可以再次進(jìn)入EPG界面選擇并添加新條目,系統(tǒng)將根據(jù)已有條目情況判斷是否有時(shí)間沖突,若有則無(wú)法預(yù)錄,若無(wú)則選擇正確的位置插入條目。系統(tǒng)在開(kāi)機(jī)時(shí)自動(dòng)檢測(cè)硬盤(pán)上是否存在配置文件,若存在,則讀取文件第一個(gè)沒(méi)有過(guò)期的條目,取出節(jié)目開(kāi)始時(shí)間,與從時(shí)鐘板獲得的系統(tǒng)當(dāng)前時(shí)間進(jìn)行循環(huán)比較,一旦到點(diǎn),系統(tǒng)將停止當(dāng)前音、視頻的播放,并且跳轉(zhuǎn)至預(yù)約節(jié)目的錄制。通過(guò)配置文件的使用,系統(tǒng)實(shí)現(xiàn)了電視節(jié)目的一鍵錄制,錄制信息,包括節(jié)目名、頻道名以及錄制開(kāi)始時(shí)間,均以文件名的形式記錄,方便用戶(hù)對(duì)于錄制文件的查找與分類(lèi)管理。由于配置文件被寫(xiě)入硬盤(pán),所以除了極端特殊情況,比如在寫(xiě)配置文件時(shí)意外斷電,通常情形下在系統(tǒng)斷電后文件仍然存在,從而實(shí)現(xiàn)了預(yù)錄節(jié)目的斷電續(xù)錄功能。
4 結(jié)束語(yǔ)
本文開(kāi)發(fā)的PVR系統(tǒng)已經(jīng)產(chǎn)品化,并隨著地面高清信號(hào)的開(kāi)播同步大批量投放市場(chǎng)。由于采用成熟的uClinux操作系統(tǒng)、sigma FM8622L芯片組以及配套的SDK進(jìn)行二次開(kāi)發(fā),系統(tǒng)表現(xiàn)穩(wěn)定,在電視信號(hào)質(zhì)量良好的情況下,錄像文件碼率平穩(wěn),播放效果流暢,長(zhǎng)時(shí)問(wèn)錄制與播放均不會(huì)出現(xiàn)死機(jī)等系統(tǒng)異常狀況,配合液晶高清電視和家庭影院,完全體現(xiàn)了分辨率高達(dá)1920×1080的高質(zhì)量視頻以及高保真音頻所帶來(lái)的震撼感受,并且通過(guò)優(yōu)化的UI設(shè)計(jì),使得EPG無(wú)縫嵌入電視播放流程,用戶(hù)查看節(jié)目指南、錄制當(dāng)前節(jié)目以及預(yù)錄節(jié)目均可一鍵實(shí)現(xiàn),相比PC平臺(tái)同類(lèi)型產(chǎn)品而言,具有性?xún)r(jià)比高、系統(tǒng)穩(wěn)定、防病毒木馬侵襲、以及使用專(zhuān)用音、視頻解碼芯片,高清解碼能力更出色等優(yōu)點(diǎn)。當(dāng)前系統(tǒng)仍存在一些缺點(diǎn),如天線(xiàn)對(duì)信號(hào)方位敏感,雨雪天氣收看效果不佳,以及錄制高清信號(hào)時(shí)由于碼率較高,占用大量系統(tǒng)緩存,從而妨礙其他功能(比如BT下載)的并發(fā)執(zhí)行。下一步工作是設(shè)法在硬件上提高天線(xiàn)性能,以及優(yōu)化代碼,減少系統(tǒng)開(kāi)銷(xiāo),確保各項(xiàng)功能并發(fā)執(zhí)行互不影響。
評(píng)論
查看更多