PVR技術(shù)應(yīng)用于SDTV機(jī)頂盒的研究與實(shí)現(xiàn)
——
1 PVR概念和技術(shù)介紹
隨著硬盤技術(shù)的發(fā)展,硬盤的容量和速度在不斷地提高,基于硬盤的個(gè)人視頻錄像機(jī)已成為新型消費(fèi)類產(chǎn)品,將逐步取代磁帶式錄像機(jī)。PVR的突出特點(diǎn)是以硬盤作為存儲(chǔ)媒介,建立本地的海量緩沖區(qū)和巨大的節(jié)目存儲(chǔ)庫(kù),利用數(shù)字化處理技術(shù)對(duì)節(jié)目進(jìn)行控制和管理。硬盤容量大、數(shù)字式、訪問(wèn)快速的存儲(chǔ)特性使得機(jī)頂盒PVR與傳統(tǒng)的錄像機(jī)相比具有如下特點(diǎn):
(1)存儲(chǔ)容量巨大,能夠進(jìn)行更長(zhǎng)時(shí)間的節(jié)目存儲(chǔ)。以40G硬盤為例,能錄制長(zhǎng)達(dá)20小時(shí)的標(biāo)準(zhǔn)清晰度數(shù)字電視節(jié)目;
(2)硬盤的尋道和定位速度非??欤梢暂p易找到已錄制的節(jié)目,立即播放,節(jié)省了倒帶時(shí)間。
(3)硬盤載體中數(shù)據(jù)的存儲(chǔ)和讀取非常準(zhǔn)確,有效地降低了存儲(chǔ)和讀取過(guò)程中可能出現(xiàn)的誤碼現(xiàn)象。
(4)可以實(shí)現(xiàn)時(shí)移播放功能。
時(shí)移播放是PVR技術(shù)的一大特點(diǎn),也是機(jī)頂盒PVR的基本功能。機(jī)頂盒PVR在硬盤中開設(shè)了海量緩存區(qū),在播放數(shù)字電視的同時(shí),對(duì)節(jié)目進(jìn)行實(shí)時(shí)存儲(chǔ),緩存區(qū)間可以錄制長(zhǎng)達(dá)數(shù)小時(shí)的節(jié)目。通過(guò)緩存技術(shù),用戶可以對(duì)正在播放的電視節(jié)目進(jìn)行暫停,過(guò)一段時(shí)間后又可以從節(jié)目的暫停處繼續(xù)播放,就好象時(shí)間發(fā)生了移動(dòng)一樣,如圖1所示。
2 PVR數(shù)字電視機(jī)頂盒硬件平臺(tái)
本課題的研究?jī)?nèi)容是開發(fā)一種應(yīng)用于有線電視的具有PVR功能的標(biāo)準(zhǔn)清晰度數(shù)字電視機(jī)頂盒。系統(tǒng)采用ST公司的單片信源解碼器芯片STi5518實(shí)現(xiàn)標(biāo)準(zhǔn)清晰度數(shù)字電視解碼,其內(nèi)嵌的ATAPI接口實(shí)現(xiàn)了與硬盤的無(wú)縫連接,為機(jī)頂盒實(shí)現(xiàn)PVR功能提供了條件。機(jī)頂盒的原理框圖如圖2所示。信號(hào)經(jīng)過(guò)QAM解調(diào)后,以TS流的形式傳入STi5518,通過(guò)解復(fù)用將其分解為音、視頻PES包。PES包既可以被送往音、視頻解碼器解碼,也可以被送到ATAPI接口作為數(shù)據(jù)存入硬盤。
3 STi5518與硬盤接口的連接
STi5518內(nèi)嵌的ATAPI接口可提供最高為PIO模式4的數(shù)據(jù)傳輸,傳輸速率為16.7MB/s。ATAPI設(shè)備可作為STi5518的存儲(chǔ)器映像設(shè)備。本系統(tǒng)將硬盤映射到CPU可編程的外部存儲(chǔ)器接口EMI的BANKl上。圖3給出了STi5518與硬盤的接口圖。
STi5518地址線的第20、19位分別與硬盤的CSl、CS0相連,地址線的第18、17、16位分別與硬盤的DA2、DAl、DA0相連,這樣可通過(guò)訪問(wèn)BANKl的存儲(chǔ)空間實(shí)現(xiàn)對(duì)硬盤的讀寫操作。ST5518提供的可編程I/O口中的ATAPI_WR和ATAPI_RD專門用來(lái)連接硬盤的DIOW和DIOR。ST5518的讀寫信號(hào)CPU_RW用來(lái)控制傳輸門的數(shù)據(jù)傳送方向。
4硬盤基本讀寫操作的控制
主機(jī)對(duì)硬盤的操作是通過(guò)將命令代碼和訪問(wèn)的地址寫入硬盤控制電路中的相應(yīng)I/O寄存器來(lái)實(shí)現(xiàn)的。以寫一個(gè)扇區(qū)的操作為例。首先,主機(jī)查詢硬盤狀態(tài)寄存器,如果BSY位為0、DRDY位為1,則可以執(zhí)行操作。然后把所要寫的CHS參數(shù)或LBA參數(shù)寫入扇區(qū)號(hào)寄存器、柱面低位寄存器、柱面高位寄存器、扇區(qū)數(shù)寄存器和設(shè)備/磁頭號(hào)寄存器,同時(shí)將寫扇區(qū)命令號(hào)0x30h寫入命令寄存器。如果沒(méi)有發(fā)生錯(cuò)誤,查詢狀態(tài)寄存器的DRQ位。如果為1,表示硬盤已經(jīng)做好傳送數(shù)據(jù)的準(zhǔn)備。最后將數(shù)據(jù)寫入數(shù)據(jù)寄存器并查詢狀態(tài)寄存器的ERR位,如果沒(méi)有發(fā)生錯(cuò)誤則寫扇區(qū)成功。
5機(jī)頂盒中PVR的系統(tǒng)軟件設(shè)計(jì)
在系統(tǒng)軟件設(shè)計(jì)上,沒(méi)有用到中間件,所有開發(fā)的上層應(yīng)用程序都是直接利用ST公司提供的底層硬件驅(qū)動(dòng)庫(kù)完成的。PVR的系統(tǒng)軟件結(jié)構(gòu)如圖4所示。主要分三個(gè)層次:
(1)ATAPI接口驅(qū)動(dòng)層,用來(lái)實(shí)現(xiàn)讀寫硬盤的基本控制。這部分的軟件設(shè)計(jì)主要是利用ANSI制訂的ATAPI接口標(biāo)準(zhǔn)中所規(guī)定的命令格式來(lái)實(shí)現(xiàn)STi5518對(duì)硬盤數(shù)據(jù)的讀寫控制。
(2)文件系統(tǒng)驅(qū)動(dòng)層,主要是建立文件系統(tǒng),實(shí)現(xiàn)操作節(jié)目文件的基本功能。
(3)節(jié)目管理層,用來(lái)完成節(jié)目記錄、回放、管理等功能。
5.1 PVR的音視頻文件系統(tǒng)
5.1.1 PVR文件系統(tǒng)結(jié)構(gòu)
為了在硬盤上實(shí)現(xiàn)數(shù)據(jù)的有效管理必須建立文件系統(tǒng)。本系統(tǒng)硬盤上的數(shù)據(jù)按照其不同的特點(diǎn)和作用分為主引導(dǎo)區(qū)(MBR)、根扇區(qū)(RS)、主CAT(簇分配表)區(qū)和數(shù)據(jù)區(qū)。
主引導(dǎo)區(qū)位于硬盤的第一個(gè)扇區(qū),也就是邏輯0扇區(qū),其結(jié)構(gòu)如圖5所示。前446字節(jié)用于放置操作系統(tǒng)的引導(dǎo)程序,后64字節(jié)(偏移量1BEH-偏移量1FDH)存儲(chǔ)DPT(硬盤分區(qū)表),該分區(qū)表記錄4個(gè)分區(qū)信息,每個(gè)分區(qū)信息里分別記錄該分區(qū)的分區(qū)狀態(tài)、起始LBA地址、分區(qū)大小、分區(qū)類型,系統(tǒng)初始化時(shí)通過(guò)讀取分區(qū)表來(lái)獲得硬盤空間的分配情況。最后兩個(gè)字節(jié)"55,AA"(偏移量1FEH-偏移量1FFH)是分區(qū)的結(jié)束標(biāo)志。整個(gè)512字節(jié)構(gòu)成了硬盤的主引導(dǎo)區(qū)。
根扇區(qū)位于每一個(gè)分區(qū)的前兩個(gè)扇區(qū),用于記錄與文件系統(tǒng)相關(guān)的數(shù)據(jù),包括文件系統(tǒng)的版本號(hào)、文件系統(tǒng)狀態(tài)標(biāo)志、簇的大小、主CAT大小、文件數(shù)據(jù)區(qū)起始地址及大小、根目錄地址。文件系統(tǒng)中數(shù)據(jù)存儲(chǔ)的最小單位是簇。簇一般由若干扇區(qū)組成,其數(shù)目根據(jù)硬盤的大小和操作的實(shí)際要求來(lái)定,數(shù)目過(guò)大或過(guò)小都會(huì)影響系統(tǒng)的運(yùn)行性能。本系統(tǒng)根據(jù)具體試驗(yàn)采用每簇大小為32個(gè)扇區(qū)。
主CAT區(qū)記錄了每一個(gè)簇塊(255個(gè)簇)中末使用的簇的數(shù)目,通過(guò)它可以方便地計(jì)算一個(gè)硬盤分區(qū)剩余空間的大小。
數(shù)據(jù)區(qū)是真正意義上的數(shù)據(jù)存儲(chǔ)的地方。本系統(tǒng)將一個(gè)分區(qū)中的數(shù)據(jù)區(qū)分成若干個(gè)簇塊,每個(gè)簇塊由三部分組成:區(qū)域CAT表、備份區(qū)和255個(gè)簇。每個(gè)區(qū)域CAT表記錄了其所屬簇塊的起始地址、255個(gè)簇的使用情況、存儲(chǔ)已占用簇的前繼內(nèi)容和后繼內(nèi)容的簇的地址似及CRC校驗(yàn)值。通過(guò)采用簇塊方式將簇分配表分散在每個(gè)簇塊中,可以減少磁頭移動(dòng)次數(shù),從而提高硬盤的訪問(wèn)速度。
在數(shù)據(jù)區(qū)中存有目錄,每個(gè)目錄包含36個(gè)目錄項(xiàng),每個(gè)目錄項(xiàng)記錄硬盤中某一文件的文件名、大小、起始地址和結(jié)束簇地址、文件狀態(tài)標(biāo)志等信息。系統(tǒng)在讀取文件時(shí),可以根據(jù)目錄中的文件的起始簇地址以及區(qū)域CAT表準(zhǔn)確地定位存儲(chǔ)文件的各簇的位置。在本系統(tǒng)中只建立了一個(gè)目錄--根目錄,它的位置由根扇區(qū)中的分區(qū)表給定,大小固定為一個(gè)簇。
5.1.2文件系統(tǒng)的完整性設(shè)計(jì)
在設(shè)計(jì),文件系統(tǒng)時(shí),不僅要保證正常條件下系統(tǒng)的可靠的數(shù)據(jù)記錄功能,而且還要考慮異常情況下出現(xiàn)的系統(tǒng)錯(cuò)誤能夠被修復(fù)。系統(tǒng)在根扇區(qū)設(shè)置了一個(gè)標(biāo)志位用以表明文件系統(tǒng)是否打開。如果要打開一個(gè)關(guān)閉的文件系統(tǒng),而標(biāo)志位表明該文件系統(tǒng)已經(jīng)打開,則說(shuō)明文件系統(tǒng)沒(méi)有被正確關(guān)閉,此時(shí)就要進(jìn)行系統(tǒng)檢查以糾正系統(tǒng)中的錯(cuò)誤。文件系統(tǒng)的恢復(fù)包括:恢復(fù)任何寫操作時(shí)被中斷的系統(tǒng)數(shù)據(jù)、重新完成未完成的操作、重建主CAT表、重建文件數(shù)據(jù)。實(shí)現(xiàn)的方法是訪問(wèn)根目錄中所有目錄項(xiàng)及其相關(guān)的區(qū)域CAT表,沿著文件指針鏈表檢查簇指針的鏈接是否正確,并核對(duì)空閑簇的數(shù)量是否和主CAT表的一致。圖6給出了一個(gè)完整的系統(tǒng)文件檢錯(cuò)并恢復(fù)的流程圖。
為了保護(hù)系統(tǒng)數(shù)據(jù),本文件系統(tǒng)使用了寫備份的方法,即在將數(shù)據(jù)寫入原始地址之前先寫入備份區(qū),當(dāng)數(shù)據(jù)發(fā)生錯(cuò)誤時(shí)可以通過(guò)備份數(shù)據(jù)恢復(fù)文件。
在讀取數(shù)據(jù)時(shí)系統(tǒng)首先檢查區(qū)域CAT表的CRC值,如果不正確就從備份區(qū)讀出數(shù)據(jù),同時(shí)檢查備份區(qū)的CRC值;如果正確則讀出數(shù)據(jù)并把備份的數(shù)據(jù)寫入簇塊地址,否則文件數(shù)據(jù)無(wú)法恢復(fù)。對(duì)于根扇區(qū),由于它沒(méi)有簇塊,因而沒(méi)有備份區(qū)。系統(tǒng)選用分區(qū)表的第二個(gè)扇區(qū)作為根扇區(qū)的備份。主CAT表的備份方法與簇塊的方法相同。圖7、圖8分別為系統(tǒng)數(shù)據(jù)備份時(shí)的寫、讀流程。
5.2 PVR系統(tǒng)的節(jié)目操作與管理
節(jié)目操作與管理對(duì)應(yīng)PVR系統(tǒng)軟件層次上的節(jié)目管理層,該層用來(lái)完成節(jié)目記錄、回放、時(shí)移、特技播放等功能。
5.2.1節(jié)目流的記錄
TS流從外部接口進(jìn)入STi5518的解復(fù)用模塊,通過(guò)PID濾波器選出指定的一路節(jié)目并拆包成PES流。在錄制節(jié)目時(shí)需要將PES流數(shù)據(jù)寫入硬盤。由于硬盤的讀寫速度較慢,因此在系統(tǒng)中開辟一個(gè)PreBuffer來(lái)緩沖數(shù)據(jù)。當(dāng)PreBuffer中的數(shù)據(jù)達(dá)到門限值時(shí),將其所存數(shù)據(jù)寫入硬盤。在設(shè)計(jì)時(shí),寫PreBuffer與寫硬盤的操作采用兩個(gè)并行的Task來(lái)完成,任務(wù)間通過(guò)信號(hào)燈同步。記錄流程如圖9所示。
5.2.2節(jié)目流的回放
當(dāng)播放硬盤上的節(jié)目時(shí),從硬盤中讀出的數(shù)據(jù)要放到讀緩沖區(qū)中。PES包的頭部信息中的stream_id字段標(biāo)明了PES包內(nèi)的信息類型。首先通過(guò)程序判別把視頻和音頻數(shù)據(jù)分開,送到視頻和音頻的Bit_buffer中,然后分別通過(guò)視頻和音頻解碼器解碼。Bit_buffer中的數(shù)據(jù)應(yīng)該始終保持一定的數(shù)量以保證有足夠的數(shù)據(jù)進(jìn)行解碼。因此程序要不斷檢測(cè)Bit_buffer的數(shù)據(jù)大小,如果小于一定門限值就通知數(shù)據(jù)傳輸Task把新的數(shù)據(jù)送到Bit_buffer中。節(jié)目回放流程如圖10所示。
5.2.3節(jié)目的時(shí)移播放
記錄在硬盤上的文件有兩種類型:常規(guī)文件和循環(huán)文件。正常錄制的節(jié)目為常規(guī)文件,文件的大小會(huì)隨著記錄時(shí)間的增長(zhǎng)而增加,直到節(jié)目錄制完成或硬盤空間耗盡為止;而時(shí)移播放時(shí)使用一種特殊的文件記錄格式--循環(huán)文件,循環(huán)文件大小固定,有一個(gè)讀指針和一個(gè)寫指針。由于時(shí)移錄像的目的不是把節(jié)目錄下來(lái)回放而是使節(jié)目在硬盤上緩存一定的時(shí)間,因而播放過(guò)的部分就不再需要存儲(chǔ)了。當(dāng)開始時(shí)移錄像時(shí),系統(tǒng)要把節(jié)目數(shù)據(jù)存儲(chǔ)到硬盤中,寫指針會(huì)向后移動(dòng),畫面靜止在錄像開始的時(shí)刻;當(dāng)恢復(fù)收看時(shí),系統(tǒng)讀取硬盤中的節(jié)目數(shù)據(jù)播放,讀指針開始向后移動(dòng),此時(shí)讀指針和寫指針之間的距離就是節(jié)目的延時(shí)時(shí)間。當(dāng)指針到達(dá)文件尾時(shí)會(huì)回到文件頭部繼續(xù)移動(dòng),直到時(shí)移播放結(jié)束為止。由此可知,循環(huán)文件的大小決定了蘆目的最大時(shí)移。
5.2.4節(jié)目的特技播放
特技播放是指快放、慢放等非逗常速度的播放方式。它復(fù)磁帶式錄像機(jī)所具有的功能,在模擬的磁帶錄像機(jī)中可以通過(guò)改變磁帶的播放方向和速度來(lái)實(shí)現(xiàn)。但是在數(shù)字錄像機(jī)中,這個(gè)功能需要采用不同的方法來(lái)實(shí)現(xiàn)。數(shù)字視頻的動(dòng)態(tài)圖像是由一幀一幀的畫面組成的,為了實(shí)現(xiàn)快速播放,解碼器需要跳過(guò)某些幀。根據(jù)播放的速度,可以計(jì)算出每個(gè)GOP中跳過(guò)的幀的數(shù)目,對(duì)剩下的幀以正常速度解碼,就可以實(shí)現(xiàn)快速播放。很明顯,速度越快,跳過(guò)不解碼的幀數(shù)就越多。同樣,慢放時(shí)可以讓解碼器每幀重復(fù)播放一次,就可以使播放速度放慢一倍,而實(shí)現(xiàn)慢放。
本課題在實(shí)現(xiàn)了標(biāo)準(zhǔn)清晰度數(shù)字電視信源解碼器的基礎(chǔ)上,完成了數(shù)字錄像機(jī)的功能,實(shí)現(xiàn)了數(shù)字電視節(jié)目的錄像和時(shí)移播放等功能,提高了機(jī)頂盒的應(yīng)用價(jià)值。本論文所介紹的內(nèi)容是天津市數(shù)字信息技術(shù)研究與開發(fā)中心的"標(biāo)準(zhǔn)清晰度數(shù)字電視機(jī)頂盒"項(xiàng)目的一部分,現(xiàn)已實(shí)現(xiàn)了由科研樣機(jī)向產(chǎn)品樣機(jī)的轉(zhuǎn)化。該項(xiàng)目技術(shù)已向相關(guān)企業(yè)進(jìn)行了技術(shù)轉(zhuǎn)讓。
評(píng)論