張啟武,于鴻洋,張 萍
(電子科技大學(xué) 電子工程學(xué)院,四川 成都 611731)
PVR(Personal Video Recorder)功能因其實(shí)用和內(nèi)置硬盤存儲(chǔ)量大的特點(diǎn)而成為數(shù)字電視機(jī)頂盒的重要擴(kuò)展功能。它能有效提高產(chǎn)品的市場(chǎng)競(jìng)爭(zhēng)力,是數(shù)字電視機(jī)頂盒一個(gè)重要的發(fā)展方向。在當(dāng)前網(wǎng)絡(luò)電視快速發(fā)展的情況下,PVR數(shù)字電視機(jī)頂盒增強(qiáng)了電視的吸引力,因此受到廣電服務(wù)提供商的青睞。隨著硬盤價(jià)格的不斷走低,擁有該功能的產(chǎn)品不會(huì)明顯增加消費(fèi)者的經(jīng)濟(jì)壓力,具有普及推廣的潛力[1]。
音視頻數(shù)據(jù)及數(shù)字信號(hào)首先經(jīng)過(guò)MPEG-2編碼器進(jìn)行數(shù)據(jù)壓縮形成基本碼流ES(Elementary Stream),再經(jīng)打包后形成有包頭的基本碼流PES。不同音視頻信號(hào)的PES流被送入傳輸復(fù)用器進(jìn)行系統(tǒng)復(fù)用,形成傳輸流(TS)[2-6]。 TS 結(jié)構(gòu)如圖 1 所示。
圖1 傳輸流結(jié)構(gòu)
傳輸流中包括多個(gè)節(jié)目源的不同信號(hào)。為了區(qū)分這些不同的音視頻信號(hào),在系統(tǒng)復(fù)用時(shí)加入服務(wù)信息SI以使接收端可以識(shí)別不同的節(jié)目。DVB標(biāo)準(zhǔn)定義的部分服務(wù)信息如表1所示[7]。
表1 DVB標(biāo)準(zhǔn)定義的部分服務(wù)信息
當(dāng)接收機(jī)要接收某個(gè)指定節(jié)目時(shí),它首先從節(jié)目關(guān)聯(lián)表中取得這個(gè)節(jié)目PMT的PID值,然后從TS流中找出與PID值相對(duì)應(yīng)的PMT,從中獲得構(gòu)成這個(gè)節(jié)目的基本碼流的PID值,根據(jù)這個(gè)PID值濾出相應(yīng)的視頻、音頻和數(shù)據(jù)等基本碼流,解碼后復(fù)原為原始信號(hào)[8]。PVR功能只是在濾出相應(yīng)的基本碼流后不進(jìn)行解碼,而直接將它們存儲(chǔ)在硬盤當(dāng)中。
在機(jī)頂盒只有一個(gè)高頻頭的情況下,只能對(duì)同一個(gè)TS流里的節(jié)目進(jìn)行邊看邊錄的操作。在沒(méi)有收看電視節(jié)目時(shí)可以對(duì)任一節(jié)目進(jìn)行錄制,而在收看節(jié)目時(shí)只能錄制與該節(jié)目在同一頻點(diǎn)的其他節(jié)目。定義兩個(gè)函數(shù),RECORDING1(見(jiàn)圖 2)用于普通存儲(chǔ),RECORDING2(見(jiàn)圖3)用于時(shí)移播放。時(shí)移播放是在硬盤中開(kāi)設(shè)足夠的緩存區(qū),一旦在收看電視節(jié)目時(shí)按下了暫停鍵,立即進(jìn)行錄制,等錄制后按下播放鍵,即從暫停處開(kāi)始播放,就像發(fā)生了時(shí)移一樣。兩個(gè)函數(shù)的區(qū)別在于,前者記錄的數(shù)據(jù)在播放后仍需保存,而后者在播放后實(shí)時(shí)刪除。
圖2 普通錄制
圖3 時(shí)移錄制
PVR機(jī)頂盒接收的數(shù)據(jù)在硬盤中是以PES數(shù)據(jù)包的格式存儲(chǔ)的。
采用SATA硬盤,其數(shù)據(jù)傳輸率可達(dá)150 Mbyte/s。將磁盤分成C,D兩個(gè)區(qū),C區(qū)12 Gbyte,其余分配給D區(qū)。均采用EXT2文件格式。每個(gè)格式化后的扇區(qū)可容512 byte數(shù)據(jù)。因?yàn)橛脖P數(shù)據(jù)的存放一般都以磁盤塊(扇區(qū)大小的整數(shù)倍)為單位,為了減少尋道延遲和旋轉(zhuǎn)延遲從而導(dǎo)致文件讀寫速度變慢,應(yīng)該將PVR機(jī)頂盒磁盤塊設(shè)置得相對(duì)大些,以使有限的嵌入式系統(tǒng)內(nèi)存能夠全部存放文件分配表從而加快讀寫速度。設(shè)置磁盤塊大小為16 kbyte。
每個(gè)節(jié)目流都有一個(gè)信息文件、索引文件和數(shù)據(jù)文件。其中,數(shù)據(jù)文件記錄碼流,分為常規(guī)文件和時(shí)移文件。RECORDING1()使用常規(guī)文件,存于/convention目錄。該文件建立時(shí)有一定的初始大小,其長(zhǎng)度隨著記錄時(shí)間的增加而增加,直到節(jié)目錄制完成或硬盤沒(méi)有空間為止。RECORDING2()使用時(shí)移文件,存于/shift目錄。該文件也需要建立索引,有一個(gè)讀指針和一個(gè)寫指針,初始時(shí)兩個(gè)指針均指向時(shí)移文件開(kāi)始處。RECORDING2()錄像的目的是使節(jié)目在硬盤上緩存一定的時(shí)間,用于觀眾收看節(jié)目時(shí)臨時(shí)按下的暫停命令。當(dāng)選擇暫停時(shí),畫面靜止,而寫指針會(huì)立即向后移動(dòng)并開(kāi)始錄制。當(dāng)恢復(fù)收看時(shí),讀指針開(kāi)始從暫停處向后移動(dòng)并解析和播放,播放過(guò)的數(shù)據(jù)隨后刪除。若指針到達(dá)文件結(jié)尾則跳轉(zhuǎn)到文件頭部重新記錄或播放。時(shí)移播放示意圖見(jiàn)圖4。當(dāng)觀眾恢復(fù)播放后又進(jìn)行了變換頻道操作,則將先前時(shí)移錄制的文件刪除,讀寫指針歸置初始處。
圖4 時(shí)移播放示意圖
對(duì)音視頻數(shù)據(jù)流進(jìn)行解析,在它們被存入到硬盤的過(guò)程中記錄其中I幀的位置,形成索引文件。在播放時(shí)按播放速度的要求,按索引文件讀出所需I幀數(shù)據(jù)送給解碼單元解碼播放,這樣就可以實(shí)現(xiàn)快進(jìn)、快退的特技播放效果了。根據(jù)MPEG-2語(yǔ)法,在圖像代碼中指明了幀類型,二進(jìn)制001代表I幀,010代表P幀,011代表B幀。這樣就可以根據(jù)這些幀標(biāo)識(shí)判斷幀類型并記錄I幀的位置,從而進(jìn)行相應(yīng)的特技播放。特技播放部分C代碼如下:
void play_hdd(int prognum)
{int pace=1,pressnum=0;
int*progp;/*指向節(jié)目名稱的指針*/
long int*indexp;/*具體節(jié)目索引文件的指針*/
while(*indexp!=NULL)
{switch(pace)
{case 1∶{…}/*對(duì) GOP 解碼播放 */
break;
default∶{…}/* 對(duì) I幀解碼播放 */
}
if(before_for())
pace=pace%4+1;/*最快4倍速播放*/
if(back_for())
{if(pressnum==0)
pace=-1;
else
pace--;
pressnum++;
if(pressnum==5)
pace=1;/*若4倍速快退后繼續(xù)按倒退鍵則變成正常播放*/
}
if(play())
pace=1;
if(pause())
pace=0;
indexp+=pace;
}}
在慢放過(guò)程中,對(duì)同一幀進(jìn)行兩次重現(xiàn)。為了避免產(chǎn)生尖銳或拖沓的聲音,在各種特技播放的過(guò)程中不對(duì)音頻進(jìn)行解碼。
筆者從MPEG-2標(biāo)準(zhǔn)入手進(jìn)行分析,找到了PVR功能的實(shí)現(xiàn)方法。對(duì)磁盤進(jìn)行分區(qū)并建立文件系統(tǒng),定義不同函數(shù)實(shí)現(xiàn)了普通錄制和時(shí)移播放,并基于索引文件和重放技巧實(shí)現(xiàn)了特技播放??稍诖鎯?chǔ)的音視頻文件的組織方面做進(jìn)一步研究和改進(jìn),以便提高硬盤讀寫速度和利用率。
[1]蒲海銘,荊濤,彭貴定.高清數(shù)字電視機(jī)頂盒的研究與設(shè)計(jì)[J].電視技術(shù),2006(9):40-42.
[2]STMi-croelectronics.STi7109 low-cost HDTV set-top box decoder for H.264 and Microsoft WMA9[EB/OL].[2010-02-25].http∶//www.st.com/stonline/products/literature/bd/11660.pdf.
[3]劉文開(kāi),劉遠(yuǎn)航.有線廣播數(shù)字電視技術(shù)[M].北京:人民郵電出版社,2003.
[4]ISO/IEC 13818-2,Information technology-generic coding of moving pictures and associated audio∶pictu[S].1995.
[5]ISO/IEC 13818-3,Information technology-generic coding of moving pictures and associated audio∶audio[S].1995.
[6]鐘玉琢,王琪,趙黎,等.MPEG-2運(yùn)動(dòng)圖像壓縮編碼國(guó)際標(biāo)準(zhǔn)及MPEG的新進(jìn)展[M].北京:清華大學(xué)出版社,2002.
[7]趙堅(jiān)勇.數(shù)字電視技術(shù)[M].西安:西安電子科技大學(xué)出版社,2004.
[8]廖洪濤,徐征.數(shù)字電視業(yè)務(wù)支撐系統(tǒng)[M].北京:電子工業(yè)出版社,2007.