基于地面高清機(jī)頂盒的PVR系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)
(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é)目的錄制。本文引用地址:http://m.butianyuan.cn/article/166862.htm
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ī)交互功能。
評(píng)論