關鍵字:STC,PCR,DTS,PTS
一、引言
Mpeg-2用于視音頻同步以及系統時鐘恢復的時間標簽分別在ES,PES和TS這3個層次 中。在ES層,與同步有關的主要是視頻緩沖驗證VBV(Video Buffer Verifier),用以防止解碼器的緩沖器出現上溢或者下溢;在PES層,主要是在PES頭信息里出現的顯示時間標簽PTS(Presentation Time Stamp)和解碼時間標簽DTS(Decoding Time Stamp);在TS層中,TS頭信息包含了節目時鐘參考PCR(Program Clock Reference),用于恢復出與編碼端一致的系統時序時鐘STC(System Time Clock)。
通常的視頻壓縮算法都采用了可變長編碼,編碼生成的視頻碼流是可變碼率的。為了能夠在實際的 固定碼率信道或者可變碼率信道上傳輸,需要引入緩沖區緩存視頻碼流數據。因此,視頻編碼算法必須提供一個有效的緩沖區管理策略,確保緩沖區不會發生上溢和 下溢。編碼器通過碼率控制算法,調整生成的視頻碼流滿足既定的緩沖區管理策略;同時在碼率控制算法中使用自適應量化方法,確保壓縮視頻的質量。
緩沖區管理策略通常都是建立在一個假想的解碼器模型上,該解碼器模型直接和編碼器的輸出相連 接,緩沖區管理策略通過控制編碼視頻數據流移入和移出解碼器緩沖區的時間以保證解碼器模型的數據緩沖區不上溢也不下溢。在Mpeg標準中,該解碼器模型稱 為VBV。VBV在ES層中定義。
在Mpeg-2編碼器中有單一的共同系統時鐘,此時鐘用來產生指示音頻和視頻的正確顯示和解 碼時序的時間標簽,同時可用來指示在抽樣瞬間系統時鐘時間的瞬時值。正是編碼器中共同系統時鐘的出現,以及解碼器中時鐘的重新生成和時間標簽的正確使用, 才為解碼器中操作的正確同步提供了基準。
Mpeg-2規定的系統時鐘頻率為27MHz,傳輸流中的PCR,PTS/DTS等均為對該 共同系統時鐘的采樣值。解碼端捕獲PCR,恢復出本地的STC,作為音視頻同步控制的基準,并依據PTS(DTS)時間標簽來安排解碼和顯示時間表,使音 視頻分別同步于STC,以實現音視頻之間的同步。標準規定在原始音頻和視頻流中,PTS的間隔不能超過0.7s,而出現在TS包頭的PCR間隔不能超過 0.1s。
二、STC與PCR
STC是視音頻同步控制的基準,它是一串頻率為27MHz的脈沖,觸發計數器而形成一個二進 制表示的時間基準,再通過對該時間基準SCT進行取樣得到PCR、PTS和DTS等時間標簽。在編碼和解碼端,系統時鐘脈沖是由振蕩器等硬件產生,在解碼 端STC通過在碼流中定時傳送的PCR利用鎖相環(PLL)技術來與編碼端STC保持一致。
PCR是由對系統時鐘脈沖觸發的計數器狀態抽樣而來,是放在TS包頭的自適應區中傳送。 PCR共占6Bytes,其中6bits預留,42bits有效位。42bits的PCR分為兩部分:33bits的PCR-Base和9bits的 PCR-Ext。PCR-Base是由27MHz脈沖經300分頻后的90kHz脈沖觸發計數器,再對計數器狀態進行取樣得到的。PCR-Ext是由 27MHz脈沖直接觸發計數器,再對計數器狀態進行取樣得到的。PCR的具體編碼方式如下(編碼在PCR(i)中的數值代表了t(i),i指包含PCR- Base字段的最后一位的字節):
PCR-Base(i)=90kHz×t(i), mod(233)
PCR-Ext(i)=27MHz×t(i), mod(300)
PCR(i)=PCR-Base(i)×300+PCR-Ext(i)
當新節目的PCR到達解碼器時,需要更新時間基點,STC就被置位。通常第一個從解復用器中 解出的PCR被直接裝入到STC計數器,其后PLL閉環操作。每當一個新節目的PCR到達解碼器時,此值被認為是鎖相環的參考頻率,用來與STC的當前值 比較,產生的差值e經過脈寬調制后被輸入低通濾波器并經放大,輸出控制信號f,用來控制振蕩器(VCO)的瞬時頻率,VCO輸出的頻率是在27MHz左右 振蕩的信號,作為解碼器的系統時鐘。27MHz時鐘經過波形整理后輸入到計數器中,產生當前的STC值,其33bits的90kHz部分用于和 PTS/DTS比較,產生解碼和顯示的同步信號。
PCR-Base的作用是在解碼器切換節目時,提供對解碼器PCR計數器的初始值,以讓該PCR值與PTS、DTS最大可能地達到相同的時間起點。PCR-ext的作用是通過解碼器端的鎖相環電路修正解碼器的系統時鐘,使其達到和編碼器一致的27MHz。
圖1顯示了解碼器如何用PCR 來重建每個節目的遠地27MHz時鐘。
圖略
圖1 用PCR重建遠地27MHz時鐘
三、DTS和PTS
DTS是編碼器在編碼時定義的,為解碼器預定的解碼時間。該時間標記出現在PES層,在 PES頭部時間域中存在。它也是一個33bits的計數值,也是對系統時鐘的300分頻的時鐘的計數值。由于它和PCR有相同的起點,在PCR值連續的情 況下,可以起到時間定時的作用,當本機PCR值(連續)和DTS值相等時,表示它們計算了同樣的時鐘,也即它們經過了相同的時間。本機PCR起到的是連續 計數的功能,DTS則是在等待這個時間,一旦等到這個時間,就表明它的解碼次序排好了,因為這個解碼次序是在編碼的時候規定的,對編碼的具體細節我們可以 不做了解,我們只要查詢到DTS就可以進行下一步的工作。這個也有利于編碼器和解碼器研發的獨立性,少了一些捆綁,多了一些兼容。DTS就視頻來說,因為 視頻編碼的時候用到了雙向預測,一個圖像單元被解出,并非馬上就被顯示,可能在存儲器中留一段時間,作為其余圖像單元的解碼參考,在被參考完畢后,才被顯 示。針對視頻的顯示,Mpeg還提出了一個視頻PTS。針對音頻和視頻的同步顯示,又提出了一個音頻PTS。由于聲音沒有用到雙向預測,它的解碼次序就是 它的顯示次序,故對它只提出PTS的概念。
PTS是編碼器定義的,為解碼器規定某個單元的顯示時間。它也是一個33b的計數值,也是對 系統時鐘的300分頻的時鐘的計數值。要注意的是,PCR、DTS、PTS應該具有相同的時間起點,選在模擬圖像的場同步處開始計時是很好的辦法。一個單 元解碼后被顯示,PCR計數器重新計數,開始下一個單元的工作。
四、PCR測量
㈠PCR 精度(PCR_AC):接收PCR中所含27MHz時鐘的不準確度,但不包含任何傳輸定時損傷。測量時傳輸碼流中PCR字節位置作為起點,計算出PCR 到達時間。
㈡PCR 漂移率(PCR_DR):PCR漂移率測量指的是PCR中的低頻誤差并計入了由PCR發生和再生引起的誤差以及由傳輸損傷所引起的到達時間誤差。即PCR 內所含27MHz時鐘的低頻變化速率,測量時以某一穩定外部基準作為參考,因此包含了任何傳輸定時變化。下面的例子可用來說明PCR 漂移率的重要性:
我們來看一下由PLL控制的本地時鐘再生器。再生器輸出端的信號頻率應當跟蹤輸入信號頻率, 隨著輸入信號頻率的變化,PLL也隨之作出響應,本地再生器將跟蹤輸入信號,隨著輸入信號變化速率的增加,PLL的跟蹤能力會有所降低,最后將導致本地發 生信號失鎖而丟失節目。PCR 漂移率的測量給出了一種測定方法,即如何更好地使去復用器/ 解碼器或再復用器的節目時鐘鎖定于輸入TS中所包含的PCR(注意這里指的是漂移率的測量而不是絕對頻率的測量,接收機端的PLL電路可以鎖定于系統時 鐘,該時鐘有著固定的頻率誤差-如果是快速變化或漂移率大,則會出現問題)。
㈢PCR 總抖動(PCR_OJ):PCR內所含27MHz時鐘的高頻變化,測量時以某一穩定外部基準作為參考,因此包含了任何傳輸定時變化。它是PCR測量中最重 要的一項,是PCR中高頻誤差的總體測量并且還包括來自PCR發生和PCR 再生的誤差以及由傳輸損傷引起的到達時間誤差。例如該項傳輸損傷可能會引入到接收機中的RF解調器中。接收機內再生的TS時鐘以及去復用器/解碼器所使用 的TS時鐘可能包含有基本高頻變化,它會對PCR的恢復帶來直接影響。在這種情形下,解碼器在復原PCR 中所發現的PCR 到達時間誤差可能是±500ns容限的許多倍,給PCR精度帶來不利。任何解碼器均靠接收PCR以準確再生其節目時鐘并提供穩定的視頻輸出。與此相同,任 何再復用器均靠接收PCR以在其輸出端精確地重新作出PCR標記。PCR的到達時間是嚴格的;因此,測量包含有到達時間誤差和精度誤差的總抖動 (PCR_OJ)就是非常必要的。
在理想運行系統中,傳輸損傷應當是可以設計的。然而在目前典型的分配網絡中,包含有再復用器、ATM 層等各級鏈路,它們均會引入誤差。PCR_AC是在復用器輸出端直接測量的數值,不過它在網絡中的運行監視常會使人迷惑不解,因為按照定義,它應當消除一切傳輸損傷。
㈣PCR頻率偏置(PCR_FO):即PCR中所含27MHz 時鐘的頻率偏置,測量時以某一穩定的外部基準作為參考歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |