負荷タイプはMPEG-4 Elementary StreamのRTPパッケージのパッケージ解説です.

6205 ワード

PTP Payload Format for MPEG-4 Elementary Stream(YC)
著作権声明:転載する時はハイパーリンクで文章の原本の出所と作者の情報と本声明を明示してください.http://volvet.blogbus.com/logs/7986021.html 
 
 
 
1.  説明
本論文の目的は、RTPにおけるMPEG 4 Video ESの伝送フォーマットを説明することであり、本明細書の主な内容はRFC-3016とRFC-640を参照しており、本論文を書くのはこの2つのRFCの内容を理解するためである.この二つのRFCと一致しないところが記載されているなら、RFCを基準としなければならない.
 
2.  MIME Format
RFC-3016とRFC-640では、MPEG 4 ESの情報記述は、MIMEフォーマットの詳細については、RFCを参照してください.­-2045とRFC-2046です
 
3.  RTP Payload Format
(1)     Global Structure
+---------+-----------+-----------+---------------+
         | RTP     | AU Header | Auxiliary | Access Unit   |
         | Header  | Section   | Section   | Data Section  |
         +---------+-----------+-----------+---------------+
 
  RTPヘッダとは、RTPプロトコルで定義されているRTP情報フォーマットである.
  AU Header Section、Auxiliary Section、Access Unit Data SectionはRTPのPayloadです.
MPEG 4 Enccoderから出力される各Packetは、Access Unitと呼ばれ、AUと略して書きます.AU Headerは、AU情報を記述する標準フォーマットです.
Auxiliary Sectionは、いくつかの補助情報を記述するために使用されており、RFCでは、この構造は定義されておらず、ユーザによって定義されたものからも、完全に無視されてもよい.
Access Unit Data Sectionは、MPEG Ecoderの出力内容です.
 
(2)     RTPヘッドのMPEG 4 Payloadに関する部分
Payload Type(PT)  RTP Payloadのタイプについては、MPEG 4タイプを定義すべきであり、この部分はRTPプロトコルによって定義されるべきであり、ここでは無関係である.
 
Marker Bit(M)RTP Payloadが完全な1つまたは複数のAUであれば、M=1である.RTP PayloadがAUの破片である場合(Fragmentとは、1つのAUが複数のRTP PacketのPayloadに分割されていることを意味する)、最後のピースのM=1だけが、他の破片のM=0です.
       
(3)     The AU Header Section
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+-+
      |AU-h-length|AU-header|AU-header|      |AU-header|padding|
      |           |   (1)   |   (2)   |      |   (n)   | bits  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+-+
 
AU-h_length     AU-Header_Length  , specifies the length in bits
   of the immediately following AU-headers, excluding the padding bits.
 
AU Header  ,   AU Header    Access Unit(     AU Fragment)     。
Padding Bits      AU Header Section   (bits)   8    
 
(4)     AUヘッドのフォーマット
 
  +---------------------------------------+
      |     AU-size                           |
      +---------------------------------------+
      |     AU-Index / AU-Index-delta         |
      +---------------------------------------+
      |     CTS-flag                          |
      +---------------------------------------+
      |     CTS-delta                         |
      +---------------------------------------+
      |     DTS-flag                          |
      +---------------------------------------+
      |     DTS-delta                         |
      +---------------------------------------+
      |     RAP-flag                          |
      +---------------------------------------+
     |     Stream-state                      |
      +---------------------------------------+
  
AU-Seize:AU Headerに対応するAccess Unitの長さ、in octetsのことです.
RTPパッケージの中のPayloadがAU Fragmentであれば、AU-Sizeも完全なAUの長さであるべきです.
Fragmentの長さではなく、受け入れセグメントでは、AU Headerで定義されているAU-Sizeと同じ長さであるかどうかを確認して、このAUは完全なユニットかそれとも破片かを判断します.このフィールドでAccess Unitが完全かどうかを判定できます.
 
AU-Index:Access UnitまたはAU Fragmentのserial numberです.隣接する2つのAU(Fragment)は、AU-Index[n+1]=AU-Index[n]+1であるべきです.
一つのRTP Packetに複数のAccess Unitが含まれている場合、最初のAU HeaderはAU-Indexフィールドが必要であり、次のいくつかのAU-HeaderはAU-Indexフィールドがあることを許さず、AU-Indeltaフィールドで置換される.
 
AU-INDX-Delta:AU-INDX-Deltaは、前のAU-INDexの値に基づいて、現在のAU-INDexを計算します.計算式はAU-INDex[n+1]=AU-INDex[n]+AU-Idx-Delta+1ですので、通常はAU-INdx-Deltaはゼロであるべきです.もしAU-Interleaveの値がゼロでないなら、RTP PacketパッケージにInterleaveモードを使用したと説明します.Interleaveモードについて、後で説明します.
 
CTS-Flags:1は次のデータがCTSであることを示し、0はCTSがないことを示している.
CTS : the composition time stamp 。
DTS-Flag : 1          DTS , 0     DTS
DTS:  the decoding time stamp
 
RAP-Flag:  1       Access Unit     Random Access Unit ,        key-packet 。 
        Access Unit Fragment ,        Fragment RAP-Flag   1,   Fragment      0。
 
Stream-state :         。         ,   +1。
RFC                ,       resolution , fps, bps         。
  
(5)      The Auxiliary Section
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+
      | auxiliary-data-size   | auxiliary-data       |padding bits |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+
 
この部分は定義されていません.ユーザーデータがあれば、Auxiliary Sectionにユーザーデータを入れることも考えられます.
 
(6)      Accessユニット 
   
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+
  | AU(1)  | AU(2)  | AU(3) | … | AU(n)
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+
 
     だからAccess UnitはMPEG 4エンコーダの出力です.
 
4.  RTP Packetのパッケージについて
RTP Payloadは、1つ以上の完全なAccess Unitを搭載することができます.
Access Unit Fragmentを1つ搭載することも可能です.
完全なAccess UnitとAccess Unit Fragmentを同じRTP Packetに封入することを禁止します.複数のAccess Unit FragmentをRTP Packetにパッケージすることは禁止されています.
通常、RTP Packetの順序は、Interleaveモードでない限り、Access Unitの順序と一致していなければならない.Interleaveモードについては、関連するRFCを参照してください.ここでは多くのことを説明しません.
  
    Reference
[1]RFC-3016
[2]RFC-640
[3]ISO/IEC 14496 Part 2
[4]RFC-2045
[5]RFC-2046
[6]RFC-1889
[7]RFC-3550