吳林煌,楊秀芝,云桂桂,鄒 濤
(福州大學 福建省數(shù)字電視工程研究中心,福建 福州 350002)
責任編輯:薛 京
數(shù)字電視作為當代信息技術發(fā)展的重要產(chǎn)物,已經(jīng)全面進入大眾的生活領域,人們對電視節(jié)目的內(nèi)容要求越來越高,對電視節(jié)目的編輯也變得越來越重要。其中,電視節(jié)目的無縫插播是研究重點。傳統(tǒng)的節(jié)目插播都是將原來的節(jié)目解碼后,進行像素點的替換,然后再重新編碼發(fā)送,這樣就造成原有節(jié)目信息的丟失,而且效率比較低下。
本文提供了一種數(shù)字電視節(jié)目插播替換的方法,可以將一路數(shù)字電視傳輸流中的一套或多套節(jié)目替換為另一數(shù)字電視傳輸流中的一套或幾套節(jié)目,并使替換之后的數(shù)字電視傳輸流保持原來的各種標識符,具有結構簡單、硬件設備少、成本低、速度快等優(yōu)點。該方法采用滑動優(yōu)先級復用調(diào)度策略,在替換過程中僅過濾掉不需要的節(jié)目,同時將替換的節(jié)目、需要保留的節(jié)目以及各種服務信息通過復用調(diào)度的方式,重新合成為多節(jié)目傳輸流。
數(shù)字電視無縫插播系統(tǒng)是用一路TS流中的某一套節(jié)目或者廣告去插播另一路TS中的任意一套節(jié)目或者廣告。由于其工作在AVS標準的系統(tǒng)層,TS流中各套節(jié)目的時間基點允許不相同,并且TS流的抗誤碼性能高,因此本文所設計的數(shù)字電視無縫插播系統(tǒng)是基于TS流格式[1]。本節(jié)首先分析切換時出現(xiàn)馬賽克或黑屏的3個原因,再針對這些原因提出解決方法。
通常情況下在節(jié)目或者廣告進行插播的過程中偶爾會出現(xiàn)黑屏或馬賽克現(xiàn)象,其根本原因是解碼器在解碼時出錯[2],主要原因有3個:1)由于兩路AVS傳送流的時間基準可能不同,直接進行節(jié)目切換會導致節(jié)目參考時鐘PCR不連續(xù);2)由于切換點的選擇不準確,導致解碼的重要參數(shù)時間標記(DTS)和顯示時間標記(PTS)出現(xiàn)不連續(xù);3)視頻信息量比較多,為其開辟的緩沖區(qū)不夠大,出現(xiàn)溢出現(xiàn)象[3]。
1.2.1 PCR調(diào)整
在AVS標準中,通過在TS流中加入PCR來確保編解碼端時鐘的同步。但由于兩路TS流的時間基準點可能不同,這就導致PCR不連續(xù)。通過尋找拼接點前被替換節(jié)目的最后一個TS包的PCR和拼接點后替換節(jié)目中的首個TS包的PCR,再根據(jù)AVS標準中的PCR公式進行計算從而求出偏移量。把源節(jié)目TS包的PCR,DTS和PTS都附加上偏移量就可保證PCR連續(xù)[4]。
1.2.2 無縫拼接點的選擇
AVS標準的視頻層規(guī)定了3種幀類型:I幀(獨立編碼幀)、P幀(預測編碼幀)和B幀(雙向預測編碼幀)??梢宰鳛閰⒖紟闹挥蠭幀和P幀,而B幀不能作為參考幀。所以在進行節(jié)目替換或者廣告插播時,應該進行檢測使替換源的節(jié)目以I幀開始。同時由于解碼器在解碼后對幀進行重排,因此被替換的視頻流的圖像組必須完整通過,才能正確顯示替換之前的圖像,否則將產(chǎn)生馬賽克現(xiàn)象。所以無縫拼接點的選擇必須以被替換視頻流的B幀結束和替換視頻流的I幀開始。
1.2.3 緩沖區(qū)控制和碼率調(diào)整
由于兩個節(jié)目TS流的碼率和結構不同,為了保證緩沖區(qū)不發(fā)生上溢出和下溢出,在不改變兩個連續(xù)PCR間差值的條件下,通過插入或者剔除部分空包來實現(xiàn)碼率的有效控制,從而避免視頻緩沖區(qū)溢出[5]。
數(shù)字電視插播系統(tǒng)主要包括以下幾個部分:ASI輸入輸出接口模塊、前端輸入檢測和中間處理模塊、Nios II處理器模塊、液晶顯示和按鍵輸入??傮w結構如圖1所示。前端輸入檢測模塊對ASI接口輸入的TS碼流進行分析處理,將提取的碼流信息送給中間處理模塊,中間處理模塊提取出替換源、被替換源PID值等相關信息,此時默認將被替換源和默認的第一路替換源的PID值傳輸給Nios II處理器,Nios II將其值傳給液晶屏進行顯示。如果需要選擇替換源,通過按鍵模塊進行選擇,Nios II將檢測到的按鍵輸入值傳遞給Nios II處理器,Nios II處理器再將這個替換源路數(shù)的值傳遞給中間處理模塊,中間處理模塊對碼流替換后通過ASI接口輸出。
圖1 系統(tǒng)設計結構框圖
根據(jù)數(shù)字電視插播系統(tǒng)的要求,設計了一個硬件平臺。該平臺具有多種外設接口,適用于基于FPGA嵌入IP軟核的系統(tǒng)開發(fā)。硬件平臺的總體結構如圖2所示。
圖2 硬件平臺的總體結構
該硬件平臺的主芯片選用Altera公司Stratix II系列的芯片EP2S90F1020C4[6];ASI接口電路的ASI接收和發(fā)送芯片選用CYPRESS半導體公司推出的一種用于點對點之間高速串行數(shù)據(jù)通信的接收芯片CY7B933和發(fā)送芯CY7B923[7];10/100 Mbit/s以太網(wǎng)控制器選擇LAN91C111芯片[8],便于計算機通過網(wǎng)絡對系統(tǒng)進行監(jiān)測和控制;支持JTAG和AS兩種配置模式。
系統(tǒng)的軟件開發(fā)工具為Altera公司的Quartus II軟件,該軟件集成多種仿真測試工具,可以與SOPC Builder和Nios II IDE一起協(xié)同開發(fā)[9]。
2.3.1 FPGA邏輯設計
數(shù)字電視插播系統(tǒng)中的前端輸入檢測和中間處理模塊是系統(tǒng)核心,用FPGA內(nèi)部的邏輯和存儲資源來實現(xiàn)。具體模塊連接如圖3所示。
1)串行接口輸入模塊,主要完成對輸入信號的格式轉換。與兩組輸入相對應,分別將來自于ASI輸入接口的ASI格式數(shù)據(jù)轉換成8位并行格式。ASI_IN1為替換源的碼流輸入,ASI_IN2為被替換源的碼流輸入。
2)FPGA模塊包含多個子模塊,下面做進一步論述。
(1)碼流同步模塊:它將串行接口模塊輸入的信號進行同步及失步判別,找出碼流的同步頭字節(jié),并將同步后的TS流合成為188或204個字節(jié)的包,以利于后續(xù)模塊的處理。
(2)節(jié)目匹配檢測模塊:接收同步后的替換源碼流和被替換源碼流,對替換和待替換節(jié)目標識符進行匹配,主要有PMT_PID,VIDEO_PID,AUDIO_PID,PCR_PID等標識符的匹配。匹配過程中需要進行該路信息PSI信息的解析及提取,以獲得該路的節(jié)目信息。
圖3 節(jié)目插播系統(tǒng)FPGA設計部分系統(tǒng)框圖
(3)PCR調(diào)整模塊:傳輸系統(tǒng)必須是恒定延時系統(tǒng),解碼端才能解碼正確。在進行插播時,PCR位置可能會隨TS的變化而變化,因此必須對PCR進行校正。該模塊一旦檢測到輸入的TS包當中有PCR時,就啟動備用的某個計數(shù)器對系統(tǒng)時鐘進行計數(shù)直到該PCR域的最后一個字節(jié)離開系統(tǒng)時,PCR補償模塊根據(jù)選用的計數(shù)器對PCR值進行相應補償。
(4)圖像組頭檢測模塊:因為無縫拼接點的選擇必須以被替換視頻流的B幀結束和替換視頻流的I幀開始,所以該模塊負責檢測圖像組頭(即I幀的開始)。只有檢測到圖像組頭,才進行TS包的替換操作。
(5)節(jié)目過濾模塊:它接收被替換源的碼流,同時接收節(jié)目匹配檢測模塊的匹配信息。當有匹配節(jié)目存在并需要替換時,該模塊就將指定的待替換節(jié)目的數(shù)據(jù)包丟棄,其他與替換無關的數(shù)據(jù)包存入數(shù)據(jù)緩沖器FIFO2中。當沒有需要替換的節(jié)目時,該模塊不對輸入的碼流進行處理。
(6)服務信息生成模塊:根據(jù)現(xiàn)行節(jié)目信息,重新生成新的服務描述表,使其名稱與替換的節(jié)目名稱一致。重新生成的數(shù)據(jù)送入數(shù)據(jù)緩沖FIFO3中。
(7)數(shù)據(jù)緩沖模塊:暫存經(jīng)過處理后的數(shù)據(jù),為后續(xù)的數(shù)據(jù)調(diào)度提供緩沖。當其滿188 byte字節(jié)時,即輸出一個半滿信號供數(shù)據(jù)調(diào)度模塊進行判斷。
(8)數(shù)據(jù)調(diào)度模塊:調(diào)度策略采用滑動優(yōu)先級的方式,對于同時有幾個半滿信號輸入的情況,優(yōu)先級高的先調(diào)度,而優(yōu)先級根據(jù)調(diào)度的順序進行輪轉,即剛調(diào)度過的優(yōu)先級變?yōu)樽畹停@樣能夠保證各路碼流被均勻調(diào)度。該模塊的調(diào)度速率根據(jù)輸入碼流的速率來確定。
3)串行接口輸出模塊,接收來自數(shù)據(jù)調(diào)度模塊輸出的數(shù)據(jù),完成格式轉換。本設計采用一個專用集成電路CY7B923,它將并行的碼流數(shù)據(jù)轉換為270 Mbit/s的串行數(shù)據(jù),再通過輸出耦合驅(qū)動電路完成ASI信號的驅(qū)動及耦合輸出。
2.3.2 Nios II軟件設計
本文的Nios II軟件采用中斷的方式。首先進行初始化設置,當檢測到復位信號時則進行復位,否則進入下一步,此時默認將替換源與第一路被替換源的PID號顯示在液晶屏上,如selection有輸入,則把計數(shù)器自加1,此時中間處理系統(tǒng)把下一套節(jié)目的PID號傳遞過來,若有enter信號,則開始替換并在液晶屏上顯示,若替換成功則傳回一個success信號,并在液晶屏上顯示替換成功。Nios II軟件設計流程如圖4所示。
圖4 軟件設計流程圖
用實際的電視節(jié)目進行系統(tǒng)測試,其實物連接如圖5所示。首先用衛(wèi)星天線接收來自衛(wèi)星的電視信號,通過衛(wèi)星接收機將其轉換成符合AVS標準的TS流,一路送到FPGA開發(fā)板作為被替換源進行節(jié)目替換,另一路送到復用器中產(chǎn)生單節(jié)目替換源,并將其輸出到被替換源的輸入端口,經(jīng)無縫插播系統(tǒng)處理之后的輸出碼流送到QAM調(diào)制器,調(diào)制后的數(shù)據(jù)經(jīng)機頂盒解調(diào)后送到電視機播放。
測試時設置機頂盒解調(diào)信號的頻點為283 MHz,調(diào)制方式為QAM256,將硬件設備按上述方式進行連接,得到單節(jié)目替換源只有中央6套少兒頻套;另一路被替換源包含中央1套、中央6套、中央13套等8套節(jié)目。本次測試將少兒頻套替換成新聞頻套,通過電視機播放觀察結果。在進行節(jié)目替換的過程中,節(jié)目無縫拼接沒有出現(xiàn)馬賽克和黑屏現(xiàn)象,由此可以證明本系統(tǒng)設計合理,切實可用,完成了數(shù)字電視節(jié)目的無縫插播。圖5中電視播放的是替換前的新聞頻道,圖6所示的是替換后在同一頻道播放少兒節(jié)目。
本文是基于系統(tǒng)層的無縫拼接,主要在系統(tǒng)層對兩個傳輸流進行處理,不經(jīng)過解復用、解碼、編碼和重新復用的過程。通過選擇合適的拼接點、調(diào)整PSI信息、調(diào)整時間信息等手段在系統(tǒng)層實現(xiàn)無縫拼接,運算量小,能快速完成;同時對視頻基本層沒做處理,能保證質(zhì)量無損,消除了黑屏和馬賽克現(xiàn)象,實現(xiàn)了數(shù)字電視節(jié)目無縫插播。
[1]王立.TS流復用解復用及DSM-CC特技播放研究[D].天津:天津大學,2004.
[2]謝志華,鄒道文,汪勝前.一種新的數(shù)字電視TS流無縫拼接處理技術[J].廣播與電視技術,2006(2):78-80.
[3]劉運鋒.基于FPGA的多功能視頻服務器設計與實現(xiàn)[D].武漢:華中科技大學,2006.
[4]崔巍,李煜,秦文.MPEG-2 TS無縫拼接技術的研究與實現(xiàn)[J].電視技術,2004,28(10):65-67.
[5]劉昱,李桂苓.MPEG-2視頻流的拼接[J].有線電視技術,2002(10):8-9.
[6]Altera corporation.Stratix II Device Handbook[EB/OL].[2012-10-10].http://www.altera.com.cn/literature/lit-s2gx.jsp.
[7]CY7B923/CY7B933:HOTLink Transmitter/Receiver[EB/OL].[2012-10-10].http://www.cypress.com/?rid=13675.
[8]LAN91C111 Rev.B Datasheet[EB/OL].[2012-10-10].http://www.icfull.com/LAN_datasheet/LAN91C111-NC.html.
[9]霍梅梅,吳劍鐘,蔡建平.Quartus II圖形仿真用于計算機組成原理實驗教學[J].科技創(chuàng)新導報,2010(24):157-157.