home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2429.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  43.1 KB  |  956 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group
  8. Request for Comments: 2429                                    C. Bormann
  9. Category: Standards Track                                   Univ. Bremen
  10.                                                                 L. Cline
  11.                                                               G. Deisher
  12.                                                                T. Gardos
  13.                                                              C. Maciocco
  14.                                                                D. Newell
  15.                                                                    Intel
  16.                                                                   J. Ott
  17.                                                             Univ. Bremen
  18.                                                              G. Sullivan
  19.                                                               PictureTel
  20.                                                                S. Wenger
  21.                                                                TU Berlin
  22.                                                                   C. Zhu
  23.                                                                    Intel
  24.                                                             October 1998
  25.  
  26.  
  27.                RTP Payload Format for the 1998 Version of
  28.                     ITU-T Rec. H.263 Video (H.263+)
  29.  
  30. Status of this Memo
  31.  
  32.    This document specifies an Internet standards track protocol for the
  33.    Internet community, and requests discussion and suggestions for
  34.    improvements.  Please refer to the current edition of the "Internet
  35.    Official Protocol Standards" (STD 1) for the standardization state
  36.    and status of this protocol.  Distribution of this memo is unlimited.
  37.  
  38. Copyright Notice
  39.  
  40.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  41.  
  42. 1. Introduction
  43.  
  44.    This document specifies an RTP payload header format applicable to
  45.    the transmission of video streams generated based on the 1998 version
  46.    of ITU-T Recommendation H.263 [4].  Because the 1998 version of H.263
  47.    is a superset of the 1996 syntax, this format can also be used with
  48.    the 1996 version of H.263 [3], and is recommended for this use by new
  49.    implementations.  This format does not replace RFC 2190, which
  50.    continues to be used by existing implementations, and may be required
  51.    for backward compatibility in new implementations.  Implementations
  52.    using the new features of the 1998 version of H.263 shall use the
  53.    format described in this document.
  54.  
  55.  
  56.  
  57.  
  58. Bormann, et. al.            Standards Track                     [Page 1]
  59.  
  60. RFC 2429                         H.263+                     October 1998
  61.  
  62.  
  63.    The 1998 version of ITU-T Recommendation H.263 added numerous coding
  64.    options to improve codec performance over the 1996 version.  The 1998
  65.    version is referred to as H.263+ in this document.  Among the new
  66.    options, the ones with the biggest impact on the RTP payload
  67.    specification and the error resilience of the video content are the
  68.    slice structured mode, the independent segment decoding mode, the
  69.    reference picture selection mode, and the scalability mode.  This
  70.    section summarizes the impact of these new coding options on
  71.    packetization.  Refer to [4] for more information on coding options.
  72.  
  73.    The slice structured mode was added to H.263+ for three purposes: to
  74.    provide enhanced error resilience capability, to make the bitstream
  75.    more amenable to use with an underlying packet transport such as RTP,
  76.    and to minimize video delay.  The slice structured mode supports
  77.    fragmentation at macroblock boundaries.
  78.  
  79.    With the independent segment decoding (ISD) option, a video picture
  80.    frame is broken into segments and encoded in such a way that each
  81.    segment is independently decodable.  Utilizing ISD in a lossy network
  82.    environment helps to prevent the propagation of errors from one
  83.    segment of the picture to others.
  84.  
  85.    The reference picture selection mode allows the use of an older
  86.    reference picture rather than the one immediately preceding the
  87.    current picture.  Usually, the last transmitted frame is implicitly
  88.    used as the reference picture for inter-frame prediction.  If the
  89.    reference picture selection mode is used, the data stream carries
  90.    information on what reference frame should be used, indicated by the
  91.    temporal reference as an ID for that reference frame.  The reference
  92.    picture selection mode can be used with or without a back channel,
  93.    which provides information to the encoder about the internal status
  94.    of the decoder.  However, no special provision is made herein for
  95.    carrying back channel information.
  96.  
  97.    H.263+ also includes bitstream scalability as an optional coding
  98.    mode.  Three kinds of scalability are defined: temporal, signal-to-
  99.    noise ratio (SNR), and spatial scalability.  Temporal scalability is
  100.    achieved via the disposable nature of bi-directionally predicted
  101.    frames, or B-frames. (A low-delay form of temporal scalability known
  102.    as P-picture temporal scalability can also be achieved by using the
  103.    reference picture selection mode described in the previous
  104.    paragraph.)  SNR scalability permits refinement of encoded video
  105.    frames, thereby improving the quality (or SNR).  Spatial scalability
  106.    is similar to SNR scalability except the refinement layer is twice
  107.    the size of the base layer in the horizontal dimension, vertical
  108.    dimension, or both.
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Bormann, et. al.            Standards Track                     [Page 2]
  115.  
  116. RFC 2429                         H.263+                     October 1998
  117.  
  118.  
  119. 2. Usage of RTP
  120.  
  121.    When transmitting H.263+ video streams over the Internet, the output
  122.    of the encoder can be packetized directly.  All the bits resulting
  123.    from the bitstream including the fixed length codes and variable
  124.    length codes will be included in the packet, with the only exception
  125.    being that when the payload of a packet begins with a Picture, GOB,
  126.    Slice, EOS, or EOSBS start code, the first two (all-zero) bytes of
  127.    the start code are removed and replaced by setting an indicator bit
  128.    in the payload header.
  129.  
  130.    For H.263+ bitstreams coded with temporal, spatial, or SNR
  131.    scalability, each layer may be transported to a different network
  132.    address.  More specifically, each layer may use a unique IP address
  133.    and port number combination.  The temporal relations between layers
  134.    shall be expressed using the RTP timestamp so that they can be
  135.    synchronized at the receiving ends in multicast or unicast
  136.    applications.
  137.  
  138.    The H.263+ video stream will be carried as payload data within RTP
  139.    packets.  A new H.263+ payload header is defined in section 4.  This
  140.    section defines the usage of the RTP fixed header and H.263+ video
  141.    packet structure.
  142.  
  143. 2.1 RTP Header Usage
  144.  
  145.    Each RTP packet starts with a fixed RTP header.  The following fields
  146.    of the RTP fixed header are used for H.263+ video streams:
  147.  
  148.    Marker bit (M bit): The Marker bit of the RTP header is set to 1 when
  149.    the current packet carries the end of current frame, and is 0
  150.    otherwise.
  151.  
  152.    Payload Type (PT): The Payload Type shall specify the H.263+ video
  153.    payload format.
  154.  
  155.    Timestamp: The RTP Timestamp encodes the sampling instance of the
  156.    first video frame data contained in the RTP data packet.  The RTP
  157.    timestamp shall be the same on successive packets if a video frame
  158.    occupies more than one packet.  In a multilayer scenario, all
  159.    pictures corresponding to the same temporal reference should use the
  160.    same timestamp.  If temporal scalability is used (if B-frames are
  161.    present), the timestamp may not be monotonically increasing in the
  162.    RTP stream.  If B-frames are transmitted on a separate layer and
  163.    address, they must be synchronized properly with the reference
  164.    frames.  Refer to the 1998 ITU-T Recommendation H.263 [4] for
  165.    information on required transmission order to a decoder.  For an
  166.    H.263+ video stream, the RTP timestamp is based on a 90 kHz clock,
  167.  
  168.  
  169.  
  170. Bormann, et. al.            Standards Track                     [Page 3]
  171.  
  172. RFC 2429                         H.263+                     October 1998
  173.  
  174.  
  175.    the same as that of the RTP payload for H.261 stream [5].  Since both
  176.    the H.263+ data and the RTP header contain time information, it is
  177.    required that those timing information run synchronously.  That is,
  178.    both the RTP timestamp and the temporal reference (TR in the picture
  179.    header of H.263) should carry the same relative timing information.
  180.    Any H.263+ picture clock frequency can be expressed as
  181.    1800000/(cd*cf) source pictures per second, in which cd is an integer
  182.    from 1 to 127 and cf is either 1000 or 1001.  Using the 90 kHz clock
  183.    of the RTP timestamp, the time increment between each coded H.263+
  184.    picture should therefore be a integer multiple of (cd*cf)/20. This
  185.    will always be an integer for any "reasonable" picture clock
  186.    frequency (for example, it is 3003 for 29.97 Hz NTSC, 3600 for 25 Hz
  187.    PAL, 3750 for 24 Hz film, and 1500, 1250 and 1200 for the computer
  188.    display update rates of 60, 72 and 75 Hz, respectively).  For RTP
  189.    packetization of hypothetical H.263+ bitstreams using "unreasonable"
  190.    custom picture clock frequencies, mathematical rounding could become
  191.    necessary for generating the RTP timestamps.
  192.  
  193. 2.2 Video Packet Structure
  194.  
  195.    A section of an H.263+ compressed bitstream is carried as a payload
  196.    within each RTP packet.  For each RTP packet, the RTP header is
  197.    followed by an H.263+ payload header, which is followed by a number
  198.    of bytes of a standard H.263+ compressed bitstream.  The size of the
  199.    H.263+ payload header is variable depending on the payload involved
  200.    as detailed in the section 4.  The layout of the RTP H.263+ video
  201.    packet is shown as:
  202.  
  203.       0                   1                   2                   3
  204.       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  205.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  206.      |    RTP Header                                               ...
  207.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  208.      |    H.263+ Payload Header                                    ...
  209.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  210.      |    H.263+ Compressed Data Stream                            ...
  211.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  212.  
  213.    Any H.263+ start codes can be byte aligned by an encoder by using the
  214.    stuffing mechanisms of H.263+.  As specified in H.263+, picture,
  215.    slice, and EOSBS starts codes shall always be byte aligned, and GOB
  216.    and EOS start codes may be byte aligned.  For packetization purposes,
  217.    GOB start codes should be byte aligned; however, since this is not
  218.    required in H.263+, there may be some cases where GOB start codes are
  219.    not aligned, such as when transmitting existing content, or when
  220.    using H.263 encoders that do not support GOB start code alignment.
  221.    In this case, follow-on packets (see section 5.2) should be used for
  222.    packetization.
  223.  
  224.  
  225.  
  226. Bormann, et. al.            Standards Track                     [Page 4]
  227.  
  228. RFC 2429                         H.263+                     October 1998
  229.  
  230.  
  231.    All H.263+ start codes (Picture, GOB, Slice, EOS, and EOSBS) begin
  232.    with 16 zero-valued bits.  If a start code is byte aligned and it
  233.    occurs at the beginning of a packet, these two bytes shall be removed
  234.    from the H.263+ compressed data stream in the packetization process
  235.    and shall instead be represented by setting a bit (the P bit) in the
  236.    payload header.
  237.  
  238. 3. Design Considerations
  239.  
  240.    The goals of this payload format are to specify an efficient way of
  241.    encapsulating an H.263+ standard compliant bitstream and to enhance
  242.    the resiliency towards packet losses.  Due to the large number of
  243.    different possible coding schemes in H.263+, a copy of the picture
  244.    header with configuration information is inserted into the payload
  245.    header when appropriate.  The use of that copy of the picture header
  246.    along with the payload data can allow decoding of a received packet
  247.    even in such cases in which another packet containing the original
  248.    picture header becomes lost.
  249.  
  250.    There are a few assumptions and constraints associated with this
  251.    H.263+ payload header design.  The purpose of this section is to
  252.    point out various design issues and also to discuss several coding
  253.    options provided by H.263+ that may impact the performance of
  254.    network-based H.263+ video.
  255.  
  256.    o The optional slice structured mode described in Annex K of H.263+
  257.      [4] enables more flexibility for packetization.  Similar to a
  258.      picture segment that begins with a GOB header, the motion vector
  259.      predictors in a slice are restricted to reside within its
  260.      boundaries.  However, slices provide much greater freedom in the
  261.      selection of the size and shape of the area which is represented as
  262.      a distinct decodable region. In particular, slices can have a size
  263.      which is dynamically selected to allow the data for each slice to
  264.      fit into a chosen packet size. Slices can also be chosen to have a
  265.      rectangular shape which is conducive for minimizing the impact of
  266.      errors and packet losses on motion compensated prediction.  For
  267.      these reasons, the use of the slice structured mode is strongly
  268.      recommended for any applications used in environments where
  269.      significant packet loss occurs.
  270.  
  271.    o In non-rectangular slice structured mode, only complete slices
  272.      should be included in a packet.  In other words, slices should not
  273.      be fragmented across packet boundaries.  The only reasonable need
  274.      for a slice to be fragmented across packet boundaries is when the
  275.      encoder which generated the H.263+ data stream could not be
  276.      influenced by an awareness of the packetization process (such as
  277.      when sending H.263+ data through a network other than the one to
  278.      which the encoder is attached, as in network gateway
  279.  
  280.  
  281.  
  282. Bormann, et. al.            Standards Track                     [Page 5]
  283.  
  284. RFC 2429                         H.263+                     October 1998
  285.  
  286.  
  287.      implementations).  Optimally, each packet will contain only one
  288.      slice.
  289.  
  290.    o The independent segment decoding (ISD) described in Annex R of [4]
  291.      prevents any data dependency across slice or GOB boundaries in the
  292.      reference picture.  It can be utilized to further improve
  293.      resiliency in high loss conditions.
  294.  
  295.    o If ISD is used in conjunction with the slice structure, the
  296.      rectangular slice submode shall be enabled and the dimensions and
  297.      quantity of the slices present in a frame shall remain the same
  298.      between each two intra-coded frames (I-frames), as required in
  299.      H.263+. The individual ISD segments may also be entirely intra
  300.      coded from time to time to realize quick error recovery without
  301.      adding the latency time associated with sending complete INTRA-
  302.      pictures.
  303.  
  304.    o When the slice structure is not applied, the insertion of a
  305.      (preferably byte-aligned) GOB header can be used to provide resync
  306.      boundaries in the bitstream, as the presence of a GOB header
  307.      eliminates the dependency of motion vector prediction across GOB
  308.      boundaries.  These resync boundaries provide natural locations for
  309.      packet payload boundaries.
  310.  
  311.    o H.263+ allows picture headers to be sent in an abbreviated form in
  312.      order to prevent repetition of overhead information that does not
  313.      change from picture to picture.  For resiliency, sending a complete
  314.      picture header for every frame is often advisable.  This means that
  315.      (especially in cases with high packet loss probability in which
  316.      picture header contents are not expected to be highly predictable),
  317.      the sender may find it advisable to always set the subfield UFEP in
  318.      PLUSPTYPE to '001' in the H.263+ video bitstream.  (See [4] for the
  319.      definition of the UFEP and PLUSPTYPE fields).
  320.  
  321.    o In a multi-layer scenario, each layer may be transmitted to a
  322.      different network address.  The configuration of each layer such as
  323.      the enhancement layer number (ELNUM), reference layer number
  324.      (RLNUM), and scalability type should be determined at the start of
  325.      the session and should not change during the course of the session.
  326.  
  327.    o All start codes can be byte aligned, and picture, slice, and EOSBS
  328.      start codes are always byte aligned.  The boundaries of these
  329.      syntactical elements provide ideal locations for placing packet
  330.      boundaries.
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Bormann, et. al.            Standards Track                     [Page 6]
  339.  
  340. RFC 2429                         H.263+                     October 1998
  341.  
  342.  
  343.    o We assume that a maximum Picture Header size of 504 bits is
  344.      sufficient.  The syntax of H.263+ does not explicitly prohibit
  345.      larger picture header sizes, but the use of such extremely large
  346.      picture headers is not expected.
  347.  
  348. 4. H.263+ Payload Header
  349.  
  350.    For H.263+ video streams, each RTP packet carries only one H.263+
  351.    video packet.  The H.263+ payload header is always present for each
  352.    H.263+ video packet.  The payload header is of variable length.  A 16
  353.    bit field of the basic payload header may be followed by an 8 bit
  354.    field for Video Redundancy Coding (VRC) information, and/or by a
  355.    variable length extra picture header as indicated by PLEN. These
  356.    optional fields appear in the order given above when present.
  357.  
  358.    If an extra picture header is included in the payload header, the
  359.    length of the picture header in number of bytes is specified by PLEN.
  360.    The minimum length of the payload header is 16 bits, corresponding to
  361.    PLEN equal to 0 and no VRC information present.
  362.  
  363.    The remainder of this section defines the various components of the
  364.    RTP payload header.  Section five defines the various packet types
  365.    that are used to carry different types of H.263+ coded data, and
  366.    section six summarizes how to distinguish between the various packet
  367.    types.
  368.  
  369. 4.1 General H.263+ payload header
  370.  
  371.    The H.263+ payload header is structured as follows:
  372.  
  373.       0                   1
  374.       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  375.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  376.      |   RR    |P|V|   PLEN    |PEBIT|
  377.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  378.  
  379.    RR: 5 bits
  380.      Reserved bits.  Shall be zero.
  381.  
  382.    P: 1 bit
  383.      Indicates the picture start or a picture segment (GOB/Slice) start
  384.      or a video sequence end (EOS or EOSBS).  Two bytes of zero bits
  385.      then have to be prefixed to the payload of such a packet to compose
  386.      a complete picture/GOB/slice/EOS/EOSBS start code.  This bit allows
  387.      the omission of the two first bytes of the start codes, thus
  388.      improving the compression ratio.
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Bormann, et. al.            Standards Track                     [Page 7]
  395.  
  396. RFC 2429                         H.263+                     October 1998
  397.  
  398.  
  399.    V: 1 bit
  400.      Indicates the presence of an 8 bit field containing information for
  401.      Video Redundancy Coding (VRC), which follows immediately after the
  402.      initial 16 bits of the payload header if present.  For syntax and
  403.      semantics of that 8 bit VRC field see section 4.2.
  404.  
  405.    PLEN: 6 bits
  406.      Length in bytes of the extra picture header.  If no extra picture
  407.      header is attached, PLEN is 0.  If PLEN>0, the extra picture header
  408.      is attached immediately following the rest of the payload header.
  409.      Note the length reflects the omission of the first two bytes of the
  410.      picture start code (PSC).  See section 5.1.
  411.  
  412.    PEBIT: 3 bits
  413.      Indicates the number of bits that shall be ignored in the last byte
  414.      of the picture header.  If PLEN is not zero, the ignored bits shall
  415.      be the least significant bits of the byte.  If PLEN is zero, then
  416.      PEBIT shall also be zero.
  417.  
  418. 4.2 Video Redundancy Coding Header Extension
  419.  
  420.    Video Redundancy Coding (VRC) is an optional mechanism intended to
  421.    improve error resilience over packet networks.  Implementing VRC in
  422.    H.263+ will require the Reference Picture Selection option described
  423.    in Annex N of [4].  By having multiple "threads" of independently
  424.    inter-frame predicted pictures, damage of individual frame will cause
  425.    distortions only within its own thread but leave the other threads
  426.    unaffected.  From time to time, all threads converge to a so-called
  427.    sync frame (an INTRA picture or a non-INTRA picture which is
  428.    redundantly represented within multiple threads); from this sync
  429.    frame, the independent threads are started again.  For more
  430.    information on codec support for VRC see [7].
  431.  
  432.    P-picture temporal scalability is another use of the reference
  433.    picture selection mode and can be considered a special case of VRC in
  434.    which only one copy of each sync frame may be sent.  It offers a
  435.    thread-based method of temporal scalability without the increased
  436.    delay caused by the use of B pictures.  In this use, sync frames sent
  437.    in the first thread of pictures are also used for the prediction of a
  438.    second thread of pictures which fall temporally between the sync
  439.    frames to increase the resulting frame rate.  In this use, the
  440.    pictures in the second thread can be discarded in order to obtain a
  441.    reduction of bit rate or decoding complexity without harming the
  442.    ability to decode later pictures.  A third or more threads can also
  443.    be added as well, but each thread is predicted only from the sync
  444.    frames (which are sent at least in thread 0) or from frames within
  445.    the same thread.
  446.  
  447.  
  448.  
  449.  
  450. Bormann, et. al.            Standards Track                     [Page 8]
  451.  
  452. RFC 2429                         H.263+                     October 1998
  453.  
  454.  
  455.    While a VRC data stream is - like all H.263+ data - totally self-
  456.    contained, it may be useful for the transport hierarchy
  457.    implementation to have knowledge about the current damage status of
  458.    each thread.  On the Internet, this status can easily be determined
  459.    by observing the marker bit, the sequence number of the RTP header,
  460.    and the thread-id and a circling "packet per thread" number.  The
  461.    latter two numbers are coded in the VRC header extension.
  462.  
  463.    The format of the VRC header extension is as follows:
  464.  
  465.       0 1 2 3 4 5 6 7
  466.      +-+-+-+-+-+-+-+-+
  467.      | TID | Trun  |S|
  468.      +-+-+-+-+-+-+-+-+
  469.  
  470.    TID: 3 bits
  471.      Thread ID.  Up to 7 threads are allowed. Each frame of H.263+ VRC
  472.      data will use as reference information only sync frames or frames
  473.      within the same thread.  By convention, thread 0 is expected to be
  474.      the "canonical" thread, which is the thread from which the sync
  475.      frame should ideally be used.  In the case of corruption or loss of
  476.      the thread 0 representation, a representation of the sync frame
  477.      with a higher thread number can be used by the decoder.  Lower
  478.      thread numbers are expected to contain equal or better
  479.      representations of the sync frames than higher thread numbers in
  480.      the absence of data corruption or loss.  See [7] for a detailed
  481.      discussion of VRC.
  482.  
  483.    Trun: 4 bits
  484.      Monotonically increasing (modulo 16) 4 bit number counting the
  485.      packet number within each thread.
  486.  
  487.    S: 1 bit
  488.      A bit that indicates that the packet content is for a sync frame.
  489.      An encoder using VRC may send several representations of the same
  490.      "sync" picture, in order to ensure that regardless of which thread
  491.      of pictures is corrupted by errors or packet losses, the reception
  492.      of at least one representation of a particular picture is ensured
  493.      (within at least one thread).  The sync picture can then be used
  494.      for the prediction of any thread.  If packet losses have not
  495.      occurred, then the sync frame contents of thread 0 can be used and
  496.      those of other threads can be discarded (and similarly for other
  497.      threads).  Thread 0 is considered the "canonical" thread, the use
  498.      of which is preferable to all others.  The contents of packets
  499.      having lower thread numbers shall be considered as having a higher
  500.      processing and delivery priority than those with higher thread
  501.      numbers.  Thus packets having lower thread numbers for a given sync
  502.      frame shall be delivered first to the decoder under loss-free and
  503.  
  504.  
  505.  
  506. Bormann, et. al.            Standards Track                     [Page 9]
  507.  
  508. RFC 2429                         H.263+                     October 1998
  509.  
  510.  
  511.      low-time-jitter conditions, which will result in the discarding of
  512.      the sync contents of the higher-numbered threads as specified in
  513.      Annex N of [4].
  514.  
  515. 5. Packetization schemes
  516.  
  517. 5.1 Picture Segment Packets and Sequence Ending Packets (P=1)
  518.  
  519.    A picture segment packet is defined as a packet that starts at the
  520.    location of a Picture, GOB, or slice start code in the H.263+ data
  521.    stream.  This corresponds to the definition of the start of a video
  522.    picture segment as defined in H.263+.  For such packets, P=1 always.
  523.  
  524.    An extra picture header can sometimes be attached in the payload
  525.    header of such packets.  Whenever an extra picture header is attached
  526.    as signified by PLEN>0, only the last six bits of its picture start
  527.    code, '100000', are included in the payload header.  A complete
  528.    H.263+ picture header with byte aligned picture start code can be
  529.    conveniently assembled on the receiving end by prepending the sixteen
  530.    leading '0' bits.
  531.  
  532.    When PLEN>0, the end bit position corresponding to the last byte of
  533.    the picture header data is indicated by PEBIT.  The actual bitstream
  534.    data shall begin on an 8-bit byte boundary following the payload
  535.    header.
  536.  
  537.    A sequence ending packet is defined as a packet that starts at the
  538.    location of an EOS or EOSBS code in the H.263+ data stream.  This
  539.    delineates the end of a sequence of H.263+ video data (more H.263+
  540.    video data may still follow later, however, as specified in ITU-T
  541.    Recommendation H.263).  For such packets, P=1 and PLEN=0 always.
  542.  
  543.    The optional header extension for VRC may or may not be present as
  544.    indicated by the V bit flag.
  545.  
  546. 5.1.1 Packets that begin with a Picture Start Code
  547.  
  548.    Any packet that contains the whole or the start of a coded picture
  549.    shall start at the location of the picture start code (PSC), and
  550.    should normally be encapsulated with no extra copy of the picture
  551.    header. In other words, normally PLEN=0 in such a case.   However, if
  552.    the coded picture contains an incomplete picture header (UFEP =
  553.    "000"), then a representation of the complete (UFEP = "001") picture
  554.    header may be attached during packetization in order to provide
  555.    greater error resilience.  Thus, for packets that start at the
  556.    location of a picture start code, PLEN shall be zero unless both of
  557.    the following conditions apply:
  558.  
  559.  
  560.  
  561.  
  562. Bormann, et. al.            Standards Track                    [Page 10]
  563.  
  564. RFC 2429                         H.263+                     October 1998
  565.  
  566.  
  567.    1) The picture header in the H.263+ bitstream payload is incomplete
  568.       (PLUSPTYPE present and UFEP="000"), and
  569.  
  570.    2) The additional picture header which is attached is not incomplete
  571.       (UFEP="001").
  572.  
  573.    A packet which begins at the location of a Picture, GOB, slice, EOS,
  574.    or EOSBS start code shall omit the first two (all zero) bytes from
  575.    the H.263+ bitstream, and signify their presence by setting P=1 in
  576.    the payload header.
  577.  
  578.    Here is an example of encapsulating the first packet in a frame
  579.    (without an attached redundant complete picture header):
  580.  
  581.       0                   1                   2                   3
  582.       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  583.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  584.      |   RR    |1|V|0|0|0|0|0|0|0|0|0| bitstream data without the    |
  585.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  586.      | first two 0 bytes of the PSC                                ...
  587.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  588.  
  589. 5.1.2 Packets that begin with GBSC or SSC
  590.  
  591.    For a packet that begins at the location of a GOB or slice start
  592.    code, PLEN may be zero or may be nonzero, depending on whether a
  593.    redundant picture header is attached to the packet.  In environments
  594.    with very low packet loss rates, or when picture header contents are
  595.    very seldom likely to change (except as can be detected from the GFID
  596.    syntax of H.263+), a redundant copy of the picture header is not
  597.    required. However, in less ideal circumstances a redundant picture
  598.    header should be attached for enhanced error resilience, and its
  599.    presence is indicated by PLEN>0.
  600.  
  601.    Assuming a PLEN of 9 and P=1, below is an example of a packet that
  602.    begins with a byte aligned GBSC or a SSC:
  603.  
  604.       0                   1                   2                   3
  605.       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  606.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  607.      |   RR    |1|V|0 0 1 0 0 1|PEBIT|1 0 0 0 0 0| picture header    |
  608.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  609.      | starting with TR, PTYPE ...                                   |
  610.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  611.      | ...                                           | bitstream     |
  612.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  613.      | data starting with GBSC/SSC without its first two 0 bytes   ...
  614.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  615.  
  616.  
  617.  
  618. Bormann, et. al.            Standards Track                    [Page 11]
  619.  
  620. RFC 2429                         H.263+                     October 1998
  621.  
  622.  
  623.    Notice that only the last six bits of the picture start code,
  624.    '100000', are included in the payload header.  A complete H.263+
  625.    picture header with byte aligned picture start code can be
  626.    conveniently assembled if needed on the receiving end by prepending
  627.    the sixteen leading '0' bits.
  628.  
  629. 5.1.3 Packets that Begin with an EOS or EOSBS Code
  630.  
  631.    For a packet that begins with an EOS or EOSBS code, PLEN shall be
  632.    zero, and no Picture, GOB, or Slice start codes shall be included
  633.    within the same packet.  As with other packets beginning with start
  634.    codes, the two all-zero bytes that begin the EOS or EOSBS code at the
  635.    beginning of the packet shall be omitted, and their presence shall be
  636.    indicated by setting the P bit to 1 in the payload header.
  637.  
  638.    System designers should be aware that some decoders may interpret the
  639.    loss of a packet containing only EOS or EOSBS information as the loss
  640.    of essential video data and may thus respond by not displaying some
  641.    subsequent video information.  Since EOS and EOSBS codes do not
  642.    actually affect the decoding of video pictures, they are somewhat
  643.    unnecessary to send at all.  Because of the danger of
  644.    misinterpretation of the loss of such a packet (which can be detected
  645.    by the sequence number), encoders are generally to be discouraged
  646.    from sending EOS and EOSBS.
  647.  
  648.    Below is an example of a packet containing an EOS code:
  649.  
  650.       0                   1                   2
  651.       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
  652.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  653.      |   RR    |1|V|0|0|0|0|0|0|0|0|0|1|1|1|1|1|1|0|0|
  654.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  655.  
  656.    5.2 Encapsulating Follow-On Packet (P=0)
  657.  
  658.    A Follow-on packet contains a number of bytes of coded H.263+ data
  659.    which does not start at a synchronization point.  That is, a Follow-
  660.    On packet does not start with a Picture, GOB, Slice, EOS, or EOSBS
  661.    header, and it may or may not start at a macroblock boundary.  Since
  662.    Follow-on packets do not start at synchronization points, the data at
  663.    the beginning of a follow-on packet is not independently decodable.
  664.    For such packets, P=0 always.  If the preceding packet of a Follow-on
  665.    packet got lost, the receiver may discard that Follow-on packet as
  666.    well as all other following Follow-on packets.  Better behavior, of
  667.    course, would be for the receiver to scan the interior of the packet
  668.    payload content to determine whether any start codes are found in the
  669.    interior of the packet which can be used as resync points.  The use
  670.    of an attached copy of a picture header for a follow-on packet is
  671.  
  672.  
  673.  
  674. Bormann, et. al.            Standards Track                    [Page 12]
  675.  
  676. RFC 2429                         H.263+                     October 1998
  677.  
  678.  
  679.    useful only if the interior of the packet or some subsequent follow-
  680.    on packet contains a resync code such as a GOB or slice start code.
  681.    PLEN>0 is allowed, since it may allow resync in the interior of the
  682.    packet.  The decoder may also be resynchronized at the next segment
  683.    or picture packet.
  684.  
  685.    Here is an example of a follow-on packet (with PLEN=0):
  686.  
  687.       0                   1                   2                   3
  688.       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  689.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  690.      |   RR    |0|V|0|0|0|0|0|0|0|0|0| bitstream data              ...
  691.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  692.  
  693. 6. Use of this payload specification
  694.  
  695.    There is no syntactical difference between a picture segment packet and
  696.    a Follow-on packet, other than the indication P=1 for picture segment or
  697.    sequence ending packets and P=0 for Follow-on packets.  See the
  698.    following for a summary of the entire packet types and ways to
  699.    distinguish between them.
  700.  
  701.    It is possible to distinguish between the different packet types by
  702.    checking the P bit and the first 6 bits of the payload along with the
  703.    header information.  The following table shows the packet type for
  704.    permutations of this information (see also the picture/GOB/Slice header
  705.    descriptions in H.263+ for details):
  706.  
  707. --------------+--------------+----------------------+-------------------
  708.  First 6 bits | P-Bit | PLEN |  Packet              |  Remarks
  709.  of Payload   |(payload hdr.)|                      |
  710. --------------+--------------+----------------------+-------------------
  711.  100000       |   1   |  0   |  Picture             |  Typical Picture
  712.  100000       |   1   | > 0  |  Picture             |  Note UFEP
  713.  1xxxxx       |   1   |  0   |  GOB/Slice/EOS/EOSBS |  See possible GNs
  714.  1xxxxx       |   1   | > 0  |  GOB/Slice           |  See possible GNs
  715.  Xxxxxx       |   0   |  0   |  Follow-on           |
  716.  Xxxxxx       |   0   | > 0  |  Follow-on           |  Interior Resync
  717. --------------+--------------+----------------------+-------------------
  718.  
  719.    The details regarding the possible values of the five bit Group
  720.    Number (GN) field which follows the initial "1" bit when the P-bit is
  721.    "1" for a GOB, Slice, EOS, or EOSBS packet are found in section 5.2.3
  722.    of [4].
  723.  
  724.    As defined in this specification, every start of a coded frame (as
  725.    indicated by the presence of a PSC) has to be encapsulated as a
  726.    picture segment packet.  If the whole coded picture fits into one
  727.  
  728.  
  729.  
  730. Bormann, et. al.            Standards Track                    [Page 13]
  731.  
  732. RFC 2429                         H.263+                     October 1998
  733.  
  734.  
  735.    packet of reasonable size (which is dependent on the connection
  736.    characteristics), this is the only type of packet that may need to be
  737.    used.  Due to the high compression ratio achieved by H.263+ it is
  738.    often possible to use this mechanism, especially for small spatial
  739.    picture formats such as QCIF and typical Internet packet sizes around
  740.    1500 bytes.
  741.  
  742.    If the complete coded frame does not fit into a single packet, two
  743.    different ways for the packetization may be chosen.  In case of very
  744.    low or zero packet loss probability, one or more Follow-on packets
  745.    may be used for coding the rest of the picture.  Doing so leads to
  746.    minimal coding and packetization overhead as well as to an optimal
  747.    use of the maximal packet size, but does not provide any added error
  748.    resilience.
  749.  
  750.    The alternative is to break the picture into reasonably small
  751.    partitions - called Segments - (by using the Slice or GOB mechanism),
  752.    that do offer synchronization points.  By doing so and using the
  753.    Picture Segment payload with PLEN>0, decoding of the transmitted
  754.    packets is possible even in such cases in which the Picture packet
  755.    containing the picture header was lost (provided any necessary
  756.    reference picture is available). Picture Segment packets can also be
  757.    used in conjunction with Follow-on packets for large segment sizes.
  758.  
  759. 7. Security Considerations
  760.  
  761.    RTP packets using the payload format defined in this specification
  762.    are subject to the security considerations discussed in the RTP
  763.    specification [1], and any appropriate RTP profile (for example [2]).
  764.    This implies that confidentiality of the media streams is achieved by
  765.    encryption.  Because the data compression used with this payload
  766.    format is applied end-to-end, encryption may be performed after
  767.    compression so there is no conflict between the two operations.
  768.  
  769.    A potential denial-of-service threat exists for data encodings using
  770.    compression techniques that have non-uniform receiver-end
  771.    computational load.  The attacker can inject pathological datagrams
  772.    into the stream which are complex to decode and cause the receiver to
  773.    be overloaded.  However, this encoding does not exhibit any
  774.    significant non-uniformity.
  775.  
  776.    As with any IP-based protocol, in some circumstances a receiver may
  777.    be overloaded simply by the receipt of too many packets, either
  778.    desired or undesired.  Network-layer authentication may be used to
  779.    discard packets from undesired sources, but the processing cost of
  780.    the authentication itself may be too high.  In a multicast
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Bormann, et. al.            Standards Track                    [Page 14]
  787.  
  788. RFC 2429                         H.263+                     October 1998
  789.  
  790.  
  791.    environment, pruning of specific sources may be implemented in future
  792.    versions of IGMP [5] and in multicast routing protocols to allow a
  793.    receiver to select which sources are allowed to reach it.
  794.  
  795.    A security review of this payload format found no additional
  796.    considerations beyond those in the RTP specification.
  797.  
  798. 8. Addresses of Authors
  799.  
  800.    Carsten Bormann
  801.    Universitaet Bremen FB3 TZI      EMail: cabo@tzi.org
  802.    Postfach 330440                  Phone: +49.421.218-7024
  803.    D-28334 Bremen, GERMANY          Fax:   +49.421.218-7000
  804.  
  805.  
  806.    Linda Cline
  807.    Intel Corp. M/S JF3-206          EMail: lscline@jf.intel.com
  808.    2111 NE 25th Avenue              Phone: +1 503 264 3501
  809.    Hillsboro, OR 97124, USA         Fax:   +1 503 264 3483
  810.  
  811.  
  812.    Gim Deisher
  813.    Intel Corp. M/S JF2-78           EMail: gim.l.deisher@intel.com
  814.    2111 NE 25th Avenue              Phone: +1 503 264 3758
  815.    Hillsboro, OR 97124, USA         Fax:   +1 503 264 9372
  816.  
  817.  
  818.    Tom Gardos
  819.    Intel Corp. M/S JF2-78           EMail: thomas.r.gardos@intel.com
  820.    2111 NE 25th Avenue              Phone: +1 503 264 6459
  821.    Hillsboro, OR 97124, USA         Fax:   +1 503 264 9372
  822.  
  823.  
  824.    Christian Maciocco
  825.    Intel Corp. M/S JF3-206          EMail: christian.maciocco@intel.com
  826.    2111 NE 25th Avenue              Phone: +1 503 264 1770
  827.    Hillsboro, OR 97124, USA         Fax:   +1 503 264 9428
  828.  
  829.  
  830.    Donald Newell
  831.    Intel Corp. M/S JF3-206          EMail: donald.newell@intel.com
  832.    2111 NE 25th Avenue              Phone: +1 503 264 9234
  833.    Hillsboro, OR 97124, USA         Fax:   +1 503 264 9428
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842. Bormann, et. al.            Standards Track                    [Page 15]
  843.  
  844. RFC 2429                         H.263+                     October 1998
  845.  
  846.  
  847.    Joerg Ott
  848.    Universitaet Bremen FB3 TZI      EMail: jo@tzi.org
  849.    Postfach 330440                  Phone: +49.421.218-7024
  850.    D-28334 Bremen, GERMANY          Fax:   +49.421.218-7000
  851.  
  852.  
  853.    Gary Sullivan
  854.    PictureTel Corp. M/S 635         EMail: garys@pictel.com
  855.    100 Minuteman Road               Phone: +1 978 623 4324
  856.    Andover, MA 01810, USA           Fax:   +1 978 749 2804
  857.  
  858.  
  859.    Stephan Wenger
  860.    Technische Universitaet Berlin FB13
  861.    Sekr. FR 6-3                     EMail: stewe@cs.tu-berlin.de
  862.    Franklinstr. 28/29               Phone: +49.30.314-73160
  863.    D-10587 Berlin, GERMANY          Fax:   +49.30.314-25156
  864.  
  865.  
  866.    Chad Zhu
  867.    Intel Corp. M/S JF3-202          EMail: czhu@ix.netcom.com
  868.    2111 NE 25th Avenue              Phone: +1 503 264 6004
  869.    Hillsboro, OR 97124, USA         Fax:   +1 503 264 1805
  870.  
  871. 9. References
  872.  
  873.    [1] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson,
  874.        "RTP : A Transport Protocol for Real-Time Applications", RFC
  875.        1889, January 1996.
  876.  
  877.    [2] Schulzrinne, H., "RTP Profile for Audio and Video Conference with
  878.        Minimal Control", RFC 1890, January 1996.
  879.  
  880.    [3] "Video Coding for Low Bit Rate Communication," ITU-T
  881.        Recommendation H.263, March 1996.
  882.  
  883.    [4] "Video Coding for Low Bit Rate Communication," ITU-T
  884.        Recommendation H.263, January 1998.
  885.  
  886.    [5] Turletti, T. and C. Huitema, "RTP Payload Format for H.261 Video
  887.        Streams", RFC 2032, October 1996.
  888.  
  889.    [6] Zhu, C., "RTP Payload Format for H.263 Video Streams", RFC 2190,
  890.        September 1997.
  891.  
  892.    [7] S. Wenger, "Video Redundancy Coding in H.263+," Proc. Audio-
  893.        Visual Services over Packet Networks, Aberdeen, U.K., September
  894.        1997.
  895.  
  896.  
  897.  
  898. Bormann, et. al.            Standards Track                    [Page 16]
  899.  
  900. RFC 2429                         H.263+                     October 1998
  901.  
  902.  
  903. 10.  Full Copyright Statement
  904.  
  905.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  906.  
  907.    This document and translations of it may be copied and furnished to
  908.    others, and derivative works that comment on or otherwise explain it
  909.    or assist in its implementation may be prepared, copied, published
  910.    and distributed, in whole or in part, without restriction of any
  911.    kind, provided that the above copyright notice and this paragraph are
  912.    included on all such copies and derivative works.  However, this
  913.    document itself may not be modified in any way, such as by removing
  914.    the copyright notice or references to the Internet Society or other
  915.    Internet organizations, except as needed for the purpose of
  916.    developing Internet standards in which case the procedures for
  917.    copyrights defined in the Internet Standards process must be
  918.    followed, or as required to translate it into languages other than
  919.    English.
  920.  
  921.    The limited permissions granted above are perpetual and will not be
  922.    revoked by the Internet Society or its successors or assigns.
  923.  
  924.    This document and the information contained herein is provided on an
  925.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  926.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  927.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  928.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  929.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Bormann, et. al.            Standards Track                    [Page 17]
  955.  
  956.