zoukankan      html  css  js  c++  java
  • PAT, PMT in MPEG2 Stream :筆記

    原文作者:Checko

    转载自: http://checko.blogspot.com/2005/12/pat-pmt-in-mpeg2-stream.html

    --------------------------------------------

    在做DVB播放時,出現的option和information,有這兩個字: PMT, PAT。所以google一下:

    ES : Elementary Stream - 經過壓縮後的節目內容Audio ES,Video ES。
    PES : Packetized Elememtary Stream,將ES由一個連續的stream分成一個一個packet後的packet。
    TS : Transport Stream - 實際傳輸的Stream。由一連串的TS packet組成。
    PID : TS Packet 中,用來代表這一個Packet 的資料ID的欄位。
    Synch : TS Stream中用來代表TS Packet開頭的byte
    PAT : Program Associate Table
    PMT : Program Mapping Table

    eedesign的這一篇有很好的概論,說明MPEG TS (Transport Stream)。

    一般的攝影裝置,輸出都是BT601(270Mbps)。
    利用ISO/IEC13818 作Video Coding,壓縮到3~5Mbps。

    壓縮後的Video, Audio 資料都是Elementary Stream(Video ES, Audio ES)。

    ES被切割成很多小小的packet。稱作Packetized Elementary Stream (Video PES, Audio PES)。

    這 些PES,經由Multiplexer混在一起,成為單一的stream,就是Transport Stream (TS)。並且加上Information Packet (Table),例如EPG (Electronic Program Guide),PSI (Program Specific Information),SI (Service Informaion)再裡面,這些額外的資訊是提工接收端的demux將TS中的ES解出來用的。

    一個TS並沒有規定只能包含多少節目,depends on 用來傳輸TS的頻寬(bandwidth)。
    台灣的band width是6MHz,所以一個TS可以包含三個SDTV 節目。

    ref中有一張圖(圖四)。是很好的說明。
           -----
    Video PES-->|     |
    Audio PES-->| mux |------ TS1..------------
    Data PES--->|     |                       |
    PSI ------->|     |                       |       ----
          ------                         -----|    |
    /|\ PCR(Program Clock      TS2..--|    |==>
     |         Reference )     TS3..--|    |  DVB
    STC                               |    |
    (System Timer Clock)                   ----

    一個TS可用的bandwidth是4Mbps ~ 7Mbps。內含
    Video : 2~6Mbps
    Audio : 32 ~ 384kbps
    Data :  -- depends--
    PSI/SI : 0~1Mbps
    目前DVB-C/S/T的bandwidh是
    Cable : 38.153Mbps
    Satelite : 38.015Mbps
    Terrestrial : 4.98~31.67Mbps
    Decoder的動作,ref 的圖五是很好的說明

    找到TS中的同步byte 0x47
    找到PSI的PAT, PAT中有所有PMT的PID,利用這個PID找到PMT,一個program有一個PMT。
    經由PMT找到PES的PID。利用PID挑出TS中所需要觀看的Video/Audio PES。
    挑出需要的PES後,開始Decode,decode時要參考Stream中的clock information : PCR, PTS和PES中的DTS(Decode Time Stamps)。

    upsdn的這一篇有進一步的說明 :
    TS的一個packet有188 bytes,分為head 和load。
    Head 內含Synch byte,PID
    Synch Byte(0x47)代表Packet的開頭
    PID 代表這一個TS packet的內容類別。
    Load 部份就是資料的實際內容。

    解碼的動作就是先找到PAT 的packet,PAT封包的PID固定是0x00。
    PAT 封包的內容(load)是每個program 的PMT 的PID。以下是一個PAT封包的例子:
    Program index,  PID
    0       122
    1        60
    ,,        ,,
    20       200
    其中program 0固定是NIT (Network Information Table)。從上面的例子看,NIC在PID=122的TS Packet中。
    之後的就是各個program的PMT所在packet的PID。可以看到第20個program的PMT在PID=200的TS pocket中。
    Decoder接著去找PID=200的TS pocket,其中包含的是program 20的節目內容,如:
    PES    , PID
    Video    500
    Audio    510
    Audio2   512
    PCR      500
    ....
    Private  540
    這個例子說明節目20,內涵一個Video 資料,在PID=200的TS pocket中,有兩個語音信號(雙語音),各在PID 510, 512的TS pocket中。

    Decoder知道Video, Audio 的PID後,就可以將收到的TS pocket,取出PID =500的部份,丟到Video decoder中,將PID=510的pocket丟到Audio decoder中。

    Hardware support ,上一篇的內容會說到hardware support decoding的動作。
    利用一個內建的lookup table,和TS pocket hardware分段的動作,解出PID。
    並且利用look up table決定這個pid要處理的方式(送到Video, Audio decoder或是丟棄)。

    PID=0,解出,更新look up table的Video,Audio PID。
    PID=? 經果lookup table篩選出需要的PID,送到解壓縮模組。

    這一頁是英文的說明,附TS pocket的圖解,和MPEG2 stream的部份。

    ISO 文件要錢,這裡 有ISO 13818-1文件(pdf)可以下載。這一篇文件就是說明這些協定的實際格式。
    當初google pmt pat 沒有很多資料,原來要google : pmt pat decode。
    這樣資料就很多。

    這個 http://www.tvtechnology.com/ 是TV 相關的網站,還有雜誌,好像是free的喔。
    dvbsnoop http://dvbsnoop.sourceforge.net/ linux的application,使用dvb api (2.6 kernel 內建)。用來解析TS 的pid, pmt 資訊,還可以將TS stream 解出binary file 存成file。
    這一篇 http://www.techonline.com/community/ed_resource/feature_article/14706 是DVB Primer
    http://www.dvb.org/ 看名字就知道,是有關DVB的org。
    http://www.linuxtv.org/ 是一個在linux上看TV的project。
  • 相关阅读:
    【纯水题】POJ 1852 Ants
    【树形DP】BZOJ 1131 Sta
    【不知道怎么分类】HDU
    【树形DP】CF 1293E Xenon's Attack on the Gangs
    【贪心算法】CF Emergency Evacuation
    【思维】UVA 11300 Spreading the Wealth
    【树形DP】NOI2003 逃学的小孩
    【树形DP】BZOJ 3829 Farmcraft
    【树形DP】JSOI BZOJ4472 salesman
    【迷宫问题】CodeForces 1292A A NEKO's Maze Game
  • 原文地址:https://www.cnblogs.com/bouygues/p/4479998.html
Copyright © 2011-2022 走看看