MPEG2 TS小結(jié)
應(yīng)該說真正了解TS,還是看了朋友推薦的《數(shù)字電視業(yè)務(wù)信息及其編碼》一書之后,MPEG2 TS和數(shù)字電視是緊密不可分割的,值得總結(jié)一下其中的一些關(guān)系。
本文引用地址:http://www.ex-cimer.com/article/165426.htmISO/IEC-13818-1:系統(tǒng)部分;ISO/IEC-13818-2:視頻;ISO/IEC-13818-3:音頻;ISO/IEC-13818-4:一致性測試;ISO/IEC-13818-5:軟件部分;ISO/IEC-13818-6:數(shù)字存儲媒體命令與控制;ISO/IEC-13818-7:高級音頻編碼;ISO/IEC-13818-8:系統(tǒng)解碼實(shí)時接口;
MPEG2系統(tǒng)任務(wù)包括:1. 規(guī)定以包傳輸數(shù)據(jù)的協(xié)議;2. 規(guī)定收發(fā)兩端數(shù)據(jù)流同步的協(xié)議;3. 提供多個數(shù)據(jù)流的復(fù)用和解復(fù)用協(xié)議;3. 提供數(shù)據(jù)流加密的協(xié)議。以包形式存儲和傳送數(shù)據(jù)流是MPEG2系統(tǒng)之要點(diǎn)。
ES是直接從編碼器出來的數(shù)據(jù)流,可以是編碼過的視頻數(shù)據(jù)流,音頻數(shù)據(jù)流,或其他編碼數(shù)據(jù)流的統(tǒng)稱。ES流經(jīng)過PES打包器之后,被轉(zhuǎn)換成PES包。PES包由包頭和payload組成,具體格式摘錄如下:
可以看到PTS/DTS是打在PES包里面的,這兩個parameters是解決視音頻同步顯示,防止解碼器輸入緩存上溢或下溢的關(guān)鍵。PTS表示顯示單元出現(xiàn)在系統(tǒng)目標(biāo)解碼器(STD: system target decoder)的時間,DTS表示將存取單元全部字節(jié)從STD的ES解碼緩存器移走的時刻。每個I、P、B幀的包頭都有一個PTS和DTS,但PTS與DTS對B幀都是一樣的,無須標(biāo)出B幀的DTS。對I幀和P幀,顯示前一定要存儲于視頻解碼器的重新排序緩存器中,經(jīng)過延遲(重新排序)后再顯示,一定要分別標(biāo)明PTS和DTS。
ES首先需打包成PES流包,然后PES根據(jù)需要打包成PS或TS包進(jìn)行存儲或傳輸。其每路ES只包含一路信源的編碼數(shù)據(jù)流,所以每路PES也只包含相對應(yīng)信源的數(shù)據(jù)流。
對PS流而言,每個PES包頭含有PTS和DTS,流識別碼,用于區(qū)別不同性質(zhì)ES。然后通過PS復(fù)用器將PES包復(fù)用成PS包。實(shí)際上是將PES包分解為更細(xì)小的PS包。在解碼的時候,解復(fù)用器將PS分解成一個個PES包,拆包器然后將PES包拆成視頻和音頻的ES,最后輸入至各自解碼器進(jìn)行解碼。一個問題是:各個ES在解碼時,如何保證視音頻的同步呢?除了PTS和DTS的配合工作外,還有一個重要的參數(shù)是SCR(system clock reference)。在編碼的時候,PTS,DTS和SCR都是由STC(system time clock)生成的,在解碼時,STC會再生,并通過鎖相環(huán)路(PLL-phase lock loop),用本地SCR相位與輸入的瞬時SCR相位鎖相比較,以確定解碼過程是否同步,若不同步,則用這個瞬時SCR調(diào)整27MHz的本地時鐘頻率。最后,PTS,DTS和SCR一起配合,解決視音頻同步播放的問題。PS格式摘錄如下:
PS包的長度比較長且可變,主要用于無誤碼環(huán)境里,因為越長的話,同步越困難,且在丟包的情況下,重組也越困難。所以,PS適合于節(jié)目信息的編輯和本地內(nèi)容應(yīng)用的application。
TS流也是由一個或多個PES組合而來的,他們可以具有相同的時間基準(zhǔn),也可以不同。其基本的復(fù)用思想是,對具有相同時間基準(zhǔn)的多個PES現(xiàn)進(jìn)行節(jié)目復(fù)用,然后再對相互有獨(dú)立時間基準(zhǔn)的各個PS進(jìn)行傳輸復(fù)用,最終產(chǎn)生出TS。
TS包由包頭和包數(shù)據(jù)2部分組成,其中包頭還可以包括擴(kuò)展的自適用區(qū)。包頭長度占4bytes,自使用區(qū)和包數(shù)據(jù)共占184bytes,整個TS包長度相當(dāng)于4個ATM包長。TS包的包頭由如下圖摘錄所示的同步字節(jié)、傳輸誤碼指示符、有效載荷單元起始指示符、傳輸優(yōu)先、包識別(PID-Packet Identification)、傳輸加擾控制、自適應(yīng)區(qū)控制和連續(xù)計數(shù)器8個部分組成。
其中,可用同步字節(jié)位串的自動相關(guān)特性,檢測數(shù)據(jù)流中的包限制,建立包同步;傳輸誤碼指示符,是指有不能消除誤碼時,采用誤碼校正解碼器可表示1bit 的誤碼,但無法校正;有效載荷單元起始指示符,表示該數(shù)據(jù)包是否存在確定的起始信息;傳輸優(yōu)先,是給TS包分配優(yōu)先權(quán);PID值是由用戶確定的,解碼器根據(jù)PID將TS上從不同ES來的TS包區(qū)別出來,以重建原來的ES;傳輸加擾控制,可指示數(shù)據(jù)包內(nèi)容是否加擾,但包頭和自適應(yīng)區(qū)永遠(yuǎn)不加擾;自適應(yīng)區(qū)控制,用2 bit表示有否自適應(yīng)區(qū),即(01)表示有有用信息無自適應(yīng)區(qū),(10)表示無有用信息有自適應(yīng)區(qū),(11)表示有有用信息有自適應(yīng)區(qū),(00)無定義;連續(xù)計數(shù)器可對PID包傳送順序計數(shù),據(jù)計數(shù)器讀數(shù),接收端可判斷是否有包丟失及包傳送順序錯誤。顯然,包頭對TS包具有同步、識別、檢錯及加密功能。
TS包自適應(yīng)區(qū)由自適應(yīng)區(qū)長、各種標(biāo)志指示符、與插入標(biāo)志有關(guān)的信息和填充數(shù)據(jù)4部分組成。其中標(biāo)志部分由間斷指示符、隨機(jī)存取指示符、ES優(yōu)化指示符、PCR標(biāo)志、接點(diǎn)標(biāo)志、傳輸專用數(shù)據(jù)標(biāo)志、原始PCR標(biāo)志、自適應(yīng)區(qū)擴(kuò)展標(biāo)志8個部分組成。重要的是標(biāo)志部分的PCR字段,可給編解碼器的27MHz時鐘提供同步資料,進(jìn)行同步。其過程是,通過PLL,用解碼時本地用PCR相位與輸入的瞬時PCR相位鎖相比較,確定解碼過程是否同步,若不同步,則用這個瞬時PCR調(diào)整時鐘頻率。因為,數(shù)字圖像采用了復(fù)雜而不同的壓縮編碼算法,造成每幅圖像的數(shù)據(jù)各不相同,使直接從壓縮編碼圖像數(shù)據(jù)的開始部分獲取時鐘信息成為不可能。為此,選擇了某些(而非全部)TS包的自適應(yīng)區(qū)來傳送定時信息。于是,被選中的TS包的自適應(yīng)區(qū),可用于測定包信息的控制bit和重要的控制信息。自適應(yīng)區(qū)無須伴隨每個包都發(fā)送,發(fā)送多少主要由選中的TS包的傳輸專用時標(biāo)參數(shù)決定。標(biāo)志中的隨機(jī)存取指示符和接點(diǎn)標(biāo)志,在節(jié)目變動時,為隨機(jī)進(jìn)入I幀壓縮的數(shù)據(jù)流提供隨機(jī)進(jìn)入點(diǎn),也為插入當(dāng)?shù)毓?jié)目提供方便。自適應(yīng)區(qū)中的填充數(shù)據(jù)是由于PES包長不可能正好轉(zhuǎn)為TS包的整數(shù)倍,最后的TS包保留一小部分有用容量,通過填充字節(jié)加以填補(bǔ),這樣可以防止緩存器下溢,保持總碼率恒定不變。
前面3節(jié)總結(jié)了MPEG2 TS的基本格式,其中包括PES,PS和TS,以及相關(guān)字段的介紹。那么作為一種傳輸流,TS將內(nèi)容進(jìn)行打包/復(fù)用,讓其媒體內(nèi)容變成TS傳輸,并最終在解碼端解碼。簡單來看,TS是一個傳輸層的協(xié)議棧,它可以承載各種內(nèi)容的傳輸,比如MPEG,WMV,H264,甚至是IP,那么其中的傳輸規(guī)范是如何定義的呢?這個即是PSI(節(jié)目特定信息)要做的事情。
pid控制相關(guān)文章:pid控制原理
評論