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