1引言
高清晰度數(shù)字電視(HDTV)信源解碼器的同步系統(tǒng)是高清晰電視解碼器中的重要部分,。由于全數(shù)字電視系統(tǒng)采用數(shù)字編解碼和數(shù)字電視傳輸技術(shù),,因而和傳統(tǒng)的模擬電視有本質(zhì)的區(qū)別。高清晰度電視與模擬信號(hào)的重要區(qū)別除了信號(hào)傳輸?shù)膲嚎s編碼方式外,,由于數(shù)字電視在編解碼過程中因存儲(chǔ),、傳輸?shù)纫黄鹧訒r(shí),在同步方式上也有明顯的區(qū)別,。對于模擬電視而言,,圖像信息以同步方式傳輸,因而接收機(jī)可以從圖像同步信號(hào)中直接獲得時(shí)鐘信號(hào),,其每一幀端到端的傳輸延時(shí)自然是固定的,,同步相對簡單,其發(fā)送和接收是嚴(yán)格同步的,。但對數(shù)字壓縮系統(tǒng)而言,,每一幀圖像所占的數(shù)據(jù)量是不同的,,其依賴于圖像的編碼方式和圖像的復(fù)雜度,而一般無線廣播的傳輸信道碼率是固定的,,因而對于每一幀而言,,其傳輸時(shí)延是可變的,從而不能從圖像數(shù)據(jù)的開始處獲得定時(shí)信息,,傳輸和顯示之間沒有自然的同步概念,。為了解決這一問題,MPEG-2采用了在ES,,PES和TS/PS這3個(gè)碼流層次中設(shè)置相關(guān)的時(shí)鐘信息,,并通過其聯(lián)合作用達(dá)到編解碼器的同步和音頻、視頻的同步,。
2MPEG-2碼流層次簡介
MPEG-2的結(jié)構(gòu)可分為壓縮層和系統(tǒng)層,。一路節(jié)目的視頻、音頻及其他輔助數(shù)據(jù)經(jīng)過數(shù)字化后通過壓縮層完成信源壓縮編碼,,分別形成視頻的基本流ES(Elementary Stream),、音頻的基本流和其他輔助數(shù)據(jù)的基本流;緊接著系統(tǒng)層將不同的基本流分別加包頭打包為PES(Packetised ES)包,,為了多路數(shù)據(jù)節(jié)目流的復(fù)用和有效的傳輸,,又將PES包作為負(fù)載分割后插入傳送流包(TS包)或節(jié)目流包(PS包)中,MPEG-2標(biāo)準(zhǔn)規(guī)定了兩種碼流,,分別是基于可變長度打包的節(jié)目流PS(Program Steam)和基于固定長度打包的傳送流(Transport Stream),。這兩種碼流分別適應(yīng)于不同的場合應(yīng)用,節(jié)目流PS適合在相對出錯(cuò)較少的環(huán)境下使用,,其長度是變化的,,而傳送流TS能夠把多個(gè)節(jié)目在基于一個(gè)或多個(gè)時(shí)間標(biāo)識(shí)的基礎(chǔ)上構(gòu)成一個(gè)流,傳送流適合于出錯(cuò)較多的場合下使用,,如在存儲(chǔ),、傳輸數(shù)據(jù)易丟失或在噪聲媒介場合使用。用于視頻,、音頻同步以及系統(tǒng)時(shí)鐘恢復(fù)的時(shí)間標(biāo)簽分別在ES,,PES和TS/PS這3個(gè)層次中。在MPEG-2碼流的ES層,,和同步有關(guān)的主要是VBV-Delay域,,表示MPEG-2所定義的一個(gè)假設(shè)的解碼器視頻緩存校驗(yàn)器在收到圖像起始碼的最后一個(gè)字節(jié)后,至當(dāng)前解碼幀解碼開始所應(yīng)等待的時(shí)間,,用以防止解碼器的緩沖器(buffer)出現(xiàn)上溢或下溢,。在PES層,主要是在PES包頭信息中出現(xiàn)的PTS(顯示時(shí)間標(biāo)簽)和DTS(解碼時(shí)間標(biāo)簽),。而在TS流中,,TS包頭包含了PCR(節(jié)目時(shí)鐘參考),用于解碼器的系統(tǒng)時(shí)鐘恢復(fù),。在節(jié)目流PS包頭中包含SCR,它的定義和作用與PCR域相似,。
3時(shí)間模型
MPEG-2在其系統(tǒng)層語法中給出了一個(gè)具有恒定的端到端的延遲的時(shí)間模型,該模型可用來指導(dǎo)系統(tǒng)層編碼器與解碼器的同步,。同步的好壞直接影響到視頻和音頻的連續(xù)性和配合效果,,因而,系統(tǒng)層編碼器與解碼器之間同步的實(shí)現(xiàn)在整個(gè)系統(tǒng)中占有極為重要的地位,,而解碼器是否同步于編碼器也成為解碼器件設(shè)計(jì)優(yōu)劣的一個(gè)判定標(biāo)準(zhǔn),。
在MPEG-2系統(tǒng)層時(shí)間模型中,它的端到端延遲——從信號(hào)進(jìn)入編碼器到信號(hào)從解碼器輸出是一個(gè)常數(shù),,信號(hào)總共經(jīng)過編碼器,、編碼緩沖器、多路復(fù)用器,、傳輸或存儲(chǔ),、解復(fù)用器、解碼緩沖器以及解碼器等器件的延遲,,其時(shí)間模型如圖2所示,。
所有的視頻和音頻采樣進(jìn)入編碼器后,經(jīng)一恒定的延遲,,在解碼器分別輸出顯示,,采樣率在編碼器和解碼器中應(yīng)嚴(yán)格相等。在MPEG-2中,,所有的時(shí)序被定義成一個(gè)共同的系統(tǒng)時(shí)鐘,,即系統(tǒng)時(shí)間時(shí)鐘(STC),故編碼器,、解碼器的系統(tǒng)時(shí)鐘必須同步,。解碼器的系統(tǒng)時(shí)鐘應(yīng)由編碼器的系統(tǒng)時(shí)鐘經(jīng)恒定延遲后恢復(fù)出來,以服從于編碼器,。
對于節(jié)目流而言,,這個(gè)時(shí)鐘可以與視頻或音頻采樣時(shí)鐘之間有一個(gè)嚴(yán)格的特定比率,或者稍有區(qū)別,,但仍足以提供精確的端到端的時(shí)序和時(shí)鐘恢復(fù),,而在傳輸流中,此系統(tǒng)時(shí)鐘頻率與視頻或音頻采樣時(shí)鐘之間任何時(shí)候都必須有嚴(yán)格的比率關(guān)系,,其目的是為了在解碼器中恢復(fù)采樣率,。
4時(shí)間標(biāo)簽定義及同步機(jī)制
編碼器中有單一的共同系統(tǒng)時(shí)鐘(其頻率惟27 MHz),此時(shí)鐘用來產(chǎn)生指示音頻和視頻的正確顯示和解碼時(shí)序的時(shí)間標(biāo)簽,,同時(shí)可用來指示在抽樣間隙中系統(tǒng)時(shí)鐘本身的瞬時(shí)值,。指示音頻和視頻顯示時(shí)間的時(shí)間標(biāo)簽稱為顯示時(shí)間標(biāo)簽(PTS),,指示音頻和視頻的解碼時(shí)間標(biāo)簽稱為解碼時(shí)間標(biāo)簽(DTS),指示系統(tǒng)時(shí)鐘本身的瞬時(shí)值的時(shí)間標(biāo)簽稱為節(jié)目參考時(shí)鐘標(biāo)簽(PCR/SCR),。解碼器通過VBV Delay來確定解碼起始,,用解碼時(shí)間標(biāo)簽(DTS)和顯示時(shí)間標(biāo)簽(PTS)來確定解碼和顯示次序,用PCR/SCR來獲得系統(tǒng)時(shí)鐘的同步。解碼器中的系統(tǒng)時(shí)鐘和同步就是依*這些時(shí)間標(biāo)簽來進(jìn)行恢復(fù)和修正,。
PCR/SCR,,PTS,DTS具體編碼方式如下:
PCR/SCR的插入必須在PCR/SCR字段的最后離開復(fù)用器的那一時(shí)刻,,同時(shí)把27 MHz系統(tǒng)時(shí)鐘的采樣瞬時(shí)值作為PCR/SCR字段插入到相應(yīng)的PCR/SCR域,。PCR/SCR為42 bits的計(jì)數(shù)值,其中33 bits為PCR Base/SCR Base,,是以27 MHz時(shí)鐘經(jīng)300分頻后的時(shí)鐘為單位的計(jì)數(shù)值,;9 bits的PCR Ext/SCR Ext,則是以27 MHz時(shí)鐘為單位的計(jì)數(shù)值,?!(i)表示第i 個(gè)包含PCR/SCR字段的最后一位的字節(jié)最后離開復(fù)用器的時(shí)間。PCR具體編碼方式如下(SCR的編碼方式和PCR雷同):
PCR Base( i )=\[系統(tǒng)時(shí)鐘頻率× t(i) DIV300\]%2 33
PCR Ext( i )=\[系統(tǒng)時(shí)鐘頻率× t(i) \]%300
PCR( i )=PCR Base( i )×300+PCR Ext( i )
PTS域?yàn)?3 bits,,編碼成為3個(gè)獨(dú)立的字段,,表示此分組中第一個(gè)訪問單元在系統(tǒng)目標(biāo)解碼器中的預(yù)定顯示時(shí)間,其具體的編碼方式如下:
PTS( k )=\[系統(tǒng)時(shí)間頻率× tp(k) DIV300\]%2 33
式中: tp(k) ——顯示單垣p(k) 的顯示時(shí)間,;
p(k) ——相應(yīng)于此分組數(shù)據(jù)的第一個(gè)訪問單元的顯示單元,。
DTS域也為33 bits,編碼成為3個(gè)獨(dú)立的字段,,表示此分組中第一個(gè)訪問單元在系統(tǒng)目標(biāo)解碼器中的預(yù)定解碼時(shí)間,,其具體的編碼方式如下:
DTS( j )=\[系統(tǒng)時(shí)間頻率× td(j) DIV300\]%2 33
式中: td(j)——訪問單元An(j)的解碼時(shí)間;
An(j) ——相應(yīng)于此分組數(shù)據(jù)開始的第一個(gè)訪問單元的顯示單元,。
一般地,,解碼端解碼時(shí),首先利用PCR重建和編碼器同步的27 MHz系統(tǒng)時(shí)鐘,,恢復(fù)27 MHz系統(tǒng)時(shí)鐘后,,再利用PES流中的DTS,PTS進(jìn)行音,、視頻的同步,,同時(shí)利用VBV Delay在解碼器中的Buffer充盈到相應(yīng)程度后啟動(dòng)初始解碼。
由MPEG-2推薦的解碼模型(見圖3)可以知道,,MPEG-2解碼器的同步是由系統(tǒng)層解復(fù)用器,、時(shí)鐘控制單元和基本流解碼器三者共同配合來完成的。
根據(jù)該模型以及本文前面的分析,可知解碼器同步算法如下:
(1) MPEG-2復(fù)用器從輸入碼流的包頭中解出時(shí)間信息PCR/SCR送入到系統(tǒng)時(shí)間時(shí)鐘恢復(fù)電路,;
(2) 系統(tǒng)時(shí)間時(shí)鐘恢復(fù)電路在接收到每一個(gè)新的SCR/PCR時(shí),,進(jìn)行本地系統(tǒng)時(shí)間時(shí)鐘恢復(fù)和鎖相;
(3) 解復(fù)用器從輸入碼流的PES包頭中解出顯示時(shí)間標(biāo)簽PTS和解碼時(shí)間標(biāo)簽DTS,,并送入到基本流解碼器中,;
(4) 基本流解碼器在接收到新的PTS/DTS存入對應(yīng)的FIFO中進(jìn)行管理,;
(5) 對于沒有DTS/PTS的顯示單元,,需要對其時(shí)間標(biāo)簽進(jìn)行插值,并送入到FIFO中管理,;
(6) 每一顯示單元開始解碼前,,用其對應(yīng)的DTS與STC進(jìn)行比較,當(dāng)STC與DTS相等時(shí)開始解碼,;
(7) 每一顯示單元開始顯示前,,用其對應(yīng)的PTS與STC進(jìn)行比較,當(dāng)STC與PTS相等時(shí)開始顯示,。
在理想情況下,,PTS和DTS的值應(yīng)該是相同的,但由于實(shí)際解碼器解碼需要一定的時(shí)間,,一般PTS和DTS的值是不同的,。如果在PES包頭中只出現(xiàn)了PTS,我們就認(rèn)為DTS=PTS,。
5系統(tǒng)時(shí)鐘(STC)恢復(fù)
在編碼器中,,STC的恢復(fù)是同步的關(guān)鍵。如果解碼器中的時(shí)鐘頻率和編碼器的時(shí)鐘頻率嚴(yán)格匹配,,那么視頻和音頻的解碼和顯示將自動(dòng)和編碼器保持相同的速率,,而端到端的延遲將為常數(shù)。當(dāng)編碼器與解碼器匹配時(shí),,任何正確的SCR/PCR值可用來設(shè)置解碼器STC的瞬時(shí)值,,而且此后不需要更多的調(diào)整,解碼器的STC就與編碼器的STC相匹配,。但在實(shí)際中,,解碼器均有自主的系統(tǒng)時(shí)間頻率,并不和編碼器的系統(tǒng)時(shí)鐘匹配,,因而需要利用接收到的SCR/PCR值來使解碼器服從于編碼器,,使解碼器的時(shí)鐘服從于接收的數(shù)據(jù)流的典型方法是通過鎖相環(huán)(PLL)。
用鎖相環(huán)技術(shù)進(jìn)行系統(tǒng)時(shí)鐘恢復(fù)的框圖如圖4所示,。
當(dāng)一個(gè)新節(jié)目的PCR到達(dá)解碼器時(shí),,需要更新時(shí)間基點(diǎn),STC被設(shè)置為編碼于PCR/SCR中的當(dāng)前值。通常第一個(gè)從解復(fù)用器中解出的PCR/SCR被直接裝入到STC的計(jì)數(shù)器,,其后PLL為閉環(huán)操作,。每當(dāng)一個(gè)新節(jié)目的PCR/SCR到達(dá)解碼器時(shí),此值被認(rèn)為是鎖相環(huán)的參考頻率,,用來和STC的當(dāng)前值比較,,產(chǎn)生的差值 e 經(jīng)過脈寬調(diào)制后被輸入低通濾波器并經(jīng)放大,輸出為控制信號(hào) f ,,用來控制振蕩器(VCO)的瞬時(shí)頻率,,VCO輸出的頻率是在27 MHz左右振蕩信號(hào),它作為解碼器的系統(tǒng)時(shí)鐘,。27 MHz時(shí)鐘經(jīng)波形整理后輸入到計(jì)數(shù)器中,,產(chǎn)生當(dāng)前的STC值,其33 bits的90 kHz部分用于和PTS/DTS比較,,產(chǎn)生解碼和顯示的同步信號(hào),。
6DTS/PTS的管理
STC輸出的33 bits中,90 kHz部分(即PCR-Base域)用于與PTS和DTS作比較,,當(dāng)二者相同時(shí),,相應(yīng)的單元被顯示或者解碼。但按照MPEG-2標(biāo)準(zhǔn)的規(guī)定,,PTS/DTS位于PES包的包頭中,,而解復(fù)用器所解出的PES包頭的字節(jié)不被送入到任何基本流解碼器的輸入緩沖區(qū),僅用于控制各解碼器工作,。每當(dāng)解復(fù)用解到一個(gè)PTS/DTS時(shí),,就表明其后送入各個(gè)基本流解碼器的輸入緩沖器中的編碼數(shù)據(jù)的顯示/解碼時(shí)間,但此時(shí)送入信道緩沖器中的基本流并不一定立即被解碼,,因此基本流解碼器必須記錄當(dāng)前這個(gè)PTS/DTS及所對應(yīng)的碼流位置,,以利于后面的解碼和顯示同步。
針對以上分析,,我們采用如下方法來達(dá)到解碼與顯示的同步:在每一個(gè)基本流解碼器中建立一個(gè)33 bits的PTS/DTS先入先出存儲(chǔ)器(FIFO),,用以存放PTS/DTS值,同時(shí)MPEG-2碼流解復(fù)用器中加入一個(gè)檢測電路,,每當(dāng)碼流開始新的一幀圖像時(shí),,則產(chǎn)生一個(gè)信號(hào),用來通知基本流解碼器,,并將該幀圖像的PTS/DTS寫入到FIFO中,,同時(shí),每當(dāng)解碼器解到一幀圖像時(shí),,就從FIFO中讀出相應(yīng)的PTS/DTS,,此PTS/DTS與STC進(jìn)行比較,,當(dāng)兩者相等時(shí),當(dāng)前圖像就開始顯示/解碼,。
在MPEG-2標(biāo)準(zhǔn)中,,并非每一個(gè)PES包或每一幀圖像均有PTS和DTS,一般PS流中每兩個(gè)PTS之間的間隔是0.7 s,,而TS流中每兩個(gè)PTS之間的間隔是0.1 s,,所以在沒有PTS和DTS的一幀圖像出現(xiàn)時(shí),我們可以在前一PTS/DTS的基礎(chǔ)上加一增量得到對應(yīng)該幀圖像的PTS/DTS,,并將計(jì)算出來的新的PTS/DTS插入到存放PTS/DTS的FIFO中去,,即:
PTS n =PTS n -1+ΔPTS
7PTS/DTS同步實(shí)現(xiàn)和失步處理
27 MHz系統(tǒng)時(shí)鐘經(jīng)過1/300分頻后,得到本地的33 bits PCR Base,,該時(shí)鐘與寄存器中當(dāng)前圖像的PTS/DTS進(jìn)行比較,,系統(tǒng)軟件根據(jù)比較結(jié)果做出相應(yīng)的處理:
(1) 若當(dāng)前的PTS/DTS比PCR計(jì)數(shù)器的值小于半幀以上,即
PTS-SCR Base≤-ΔPTS/2
此時(shí)說明系統(tǒng)解碼過慢,,解碼器處于失步狀態(tài),應(yīng)根據(jù)該幀的結(jié)構(gòu)做出相應(yīng)的同步調(diào)整,;
(2) 若當(dāng)前的PTS/DTS比SCR計(jì)數(shù)器的值在半幀時(shí)間以內(nèi),,我們認(rèn)為此時(shí)系統(tǒng)解碼正常,立即顯示/解碼當(dāng)前幀;
(3) 若當(dāng)前的PTS/DTS大于SCR計(jì)數(shù)器的值,,則此時(shí)解碼器正?;蛏钥欤谶@種情況下,,只需等到SCR與PTS/DTS相等時(shí),,就可顯示/解碼。