RFC 3984 - RTP Payload Format for H.264 Video(9)

时间:2006-10-31 来源: 作者: 点击:
orderofmagnitudeasthenumberofbitsthathaveotherwisebeen spentforintrainformation.However,thismechanismdoesnotadd anydelaytothesystem. Again,thecompleteparametersetestablishmentisperformedthrough contr
  
   order of magnitude as the number of bits that have otherwise been
   spent for intra information.  However, this mechanism does not add
   any delay to the system.

   Again, the complete parameter set establishment is performed through
   control protocol means.

12.5.  Video Telephony or Streaming with FUs and Forward Error
       Correction

   This scheme has been implemented and has been shown to provide good
   performance, especially at higher packet loss rates [19].

   The most efficient means to combat packet losses for scenarios where
   retransmissions are not applicable is forward error correction (FEC).
   Although application layer, end-to-end use of FEC is often less
   efficient than an FEC-based protection of individual links
   (especially when links of different characteristics are in the
   transmission path), application layer, end-to-end FEC is unavoidable
   in some scenarios.  RFC 2733 [18] provides means to use generic,
   application layer, end-to-end FEC in packet-loss environments.  A
   binary forward error correcting code is generated by applying the XOR
   operation to the bits at the same bit position in different packets.
   The binary code can be specified by the parameters (n,k) in which k
   is the number of information packets used in the connection and n is
   the total number of packets generated for k information packets;
   i.e., n-k parity packets are generated for k information packets.

   When a code is used with parameters (n,k) within the RFC 2733
   framework, the following properties are well known:

   a) If applied over one RTP packet, RFC 2733 provides only packet
      repetition.

   b) RFC 2733 is most bit rate efficient if XOR-connected packets have
      equal length.

   c) At the same packet loss probability p and for a fixed k, the
      greater the value of n is, the smaller the residual error
      probability becomes.  For example, for a packet loss probability
      of 10%, k=1, and n=2, the residual error probability is about 1%,
      whereas for n=3, the residual error probability is about 0.1%.

   d) At the same packet loss probability p and for a fixed code rate
      k/n, the greater the value of n is, the smaller the residual error
      probability becomes.  For example, at a packet loss probability of
      p=10%, k=1 and n=2, the residual error rate is about 1%, whereas

      for an extended Golay code with k=12 and n=24, the residual error
      rate is about 0.01%.

   For applying RFC 2733 in combination with H.264 baseline coded video
   without using FUs, several options might be considered:

   1) The video encoder produces NAL units for which each video frame is
      coded in a single slice.  Applying FEC, one could use a simple
      code; e.g., (n=2, k=1).  That is, each NAL unit would basically
      just be repeated.  The disadvantage is obviously the bad code
      performance according to d), above, and the low flexibility, as
      only (n, k=1) codes can be used.

   2) The video encoder produces NAL units for which each video frame is
      encoded in one or more consecutive slices.  Applying FEC, one
      could use a better code, e.g., (n=24, k=12), over a sequence of
      NAL units.  Depending on the number of RTP packets per frame, a
      loss may introduce a significant delay, which is reduced when more
      RTP packets are used per frame.  Packets of completely different
      length might also be connected, which decreases bit rate
      efficiency according to b), above.  However, with some care and
      for slices of 1kb or larger, similar length (100-200 bytes
      difference) may be produced, which will not lower the bit
      efficiency catastrophically.

   3) The video encoder produces NAL units, for which a certain frame
      contains k slices of possibly almost equal length.  Then, applying
      FEC, a better code, e.g., (n=24, k=12), can be used over the
      sequence of NAL units for each frame.  The delay compared to that
      of 2), above,  may be reduced, but several disadvantages are
      obvious.  First, the coding efficiency of the encoded video is
      lowered significantly, as slice-structured coding reduces intra-
      frame prediction and additional slice overhead is necessary.
      Second, pre-encoded content or, when operating over a gateway, the
      video is usually not appropriately coded with k slices such that
      FEC can be applied.  Finally, the encoding of video producing k
      slices of equal length is not straightforward and might require
      more than one encoding pass.

   Many of the mentioned disadvantages can be avoided by applying FUs in
   combination with FEC.  Each NAL unit can be split into any number of
   FUs of basically equal length; therefore, FEC with a reasonable k and
   n can be applied, even if the encoder made no effort to produce
   slices of equal length.  For example, a coded slice NAL unit
   containing an entire frame can be split to k FUs, and a parity check
   code (n=k+1, k) can be applied.  However, this has the disadvantage

   that unless all created fragments can be recovered, the whole slice
   will be lost.  Thus a larger section is lost than would be if the
   frame had been split into several slices.

   The presented technique makes it possible to achieve good
   transmission error tolerance, even if no additional source coding
   layer redundancy (such as periodic intra frames) is present.
   Consequently, the same coded video sequence can be used to achieve
   the maximum compression efficiency and quality over error-free
   transmission and for transmission over error-prone networks.
   Furthermore, the technique allows the application of FEC to pre-
   encoded sequences without adding delay.  In this case, pre-encoded
   sequences that are not encoded for error-prone networks can still be
   transmitted almost reliably without adding extensive delays.  In
   addition, FUs of equal length result in a bit rate efficient use of
   RFC 2733.

   If the error probability depends on the length of the transmitted
   packet (e.g., in case of mobile transmission [14]), the benefits of
   applying FUs with FEC are even more obvious.  Basically, the
   flexibility of the size of FUs allows appropriate FEC to be applied
   for each NAL unit and unequal error protection of NAL units.

   When FUs and FEC are used, the incurred overhead is substantial but
   is in the same order of magnitude as the number of bits that have to
   be spent for intra-coded macroblocks if no FEC is applied.  In [19],
   it was shown that the overall performance of the FEC-based approach
   enhanced quality when using the same error rate and same overall bit
   rate, including the overhead.

12.6.  Low Bit-Rate Streaming

   This scheme has been implemented with H.263 and non-standard RTP
   packetization and has given good results [20].  There is no technical
   reason why similarly good results could not be achievable with H.264.

   In today’s Internet streaming, some of the offered bit rates are
   relatively low in order to allow terminals with dial-up modems to
   access the content.  In wired IP networks, relatively large packets,
   say 500 - 1500 bytes, are preferred to smaller and more frequently
   occurring packets in order to reduce network congestion.  Moreover,
   use of large packets decreases the amount of RTP/UDP/IP header
   overhead.  For low bit-rate video, the use of large packets means
   that sometimes up to few pictures should be encapsulated in one
   packet.

   However, loss of a packet including many coded pictures would have
   drastic consequences for visual quality, as there is practically no
   other way to conceal a loss of an entire picture than to repeat the
   previous one.  One way to construct relatively large packets and
   maintain possibilities for successful loss concealment is to
   construct MTAPs that contain interleaved slices from several
   pictures.  An MTAP should not contain spatially adjacent slices from
   the same picture or spatially overlapping slices from any picture.
   If a packet is lost, it is likely that a lost slice is surrounded by
   spatially adjacent slices of the same picture and spatially
   corresponding slices of the temporally previous and succeeding
   pictures.  Consequently, concealment of the lost slice is likely to
   be relatively successful.

12.7.  Robust Packet Scheduling in Video Streaming

   Robust packet scheduling has been implemented with MPEG-4 Part 2 and
   simulated in a wireless streaming environment [21].  There is no
   technical reason why similar or better results could not be
   achievable with H.264.

   Streaming clients typically have a receiver buffer that is capable of
   storing a relatively large amount of data.  Initially, when a
   streaming session is established, a client does not start playing the
   stream back immediately.  Rather, it typically buffers the incoming
   data for a few seconds.  This buffering helps maintain continuous
   playback, as, in case of occasional increased transmission delays or
   network throughput drops, the client can decode and play buffered
   data.  Otherwise, without initial buffering, the client has to freeze
   the display, stop decoding, and wait for incoming data.  The
   buffering is also necessary for either automatic or selective
   retransmission in any protocol level.  If any part of a picture is
   lost, a retransmission mechanism may be used to resend the lost data.
   If the retransmitted data is received before its scheduled decoding
   or playback time, the loss is recovered perfectly.  Coded pictures
   can be ranked according to their importance in the subjective quality
   of the decoded sequence.  For example, non-reference pictures, such
   as conventional B pictures, are subjectively least important, as
   their absence does not affect decoding of any other pictures.  In
   addition to non-reference pictures, the ITU-T H.264 | ISO/IEC
   14496-10 standard includes a temporal scalability method called sub-
   sequences [22].  Subjective ranking can also be made on coded slice
   data partition or slice group basis.  Coded slices and coded slice
   data partitions that are subjectively the most important can be sent
   earlier than their decoding order indicates, whereas coded slices and
   coded slice data partitions that are subjectively the least important
   can be sent later than their natural coding order indicates.
   Consequently, any retransmitted parts of the most important slices

   and coded slice data partitions are more likely to be received before
   their scheduled decoding or playback time compared to the least
   important slices and slice data partitions.

13.  Informative Appendix: Rationale for Decoding Order Number

13.1.  Introduction

   The Decoding Order Number (DON) concept was introduced mainly to
   enable efficient multi-picture slice interleaving (see section 12.6)
   and robust packet scheduling (see section 12.7).  In both of these
   applications, NAL units are transmitted out of decoding order.  DON
   indicates the decoding order of NAL units and should be used in the
   receiver to recover the decoding order.  Example use cases for
   efficient multi-picture slice interleaving and for robust packet
   scheduling are given in sections 13.2 and 13.3, respectively.
   Section 13.4 describes the benefits of the DON concept in error
   resiliency achieved by redundant coded pictures.  Section 13.5
   summarizes considered alternatives to DON and justifies why DON was
   chosen to this RTP payload specification.

13.2.  Example of Multi-Picture Slice Interleaving

   An example of multi-picture slice interleaving follows.  A subset of
   a coded video sequence is depicted below in output order.  R denotes
   a reference picture, N denotes a non-reference picture, and the
   number indicates a relative output time.

      ... R1 N2 R3 N4 R5 ...

   The decoding order of these pictures from left to right is as
   follows:

      ... R1 R3 N2 R5 N4 ...

   The NAL units of pictures R1, R3, N2, R5, and N4 are marked with a
   DON equal to 1, 2, 3, 4, and 5, respectively.

   Each reference picture consists of three slice groups that are
   scattered as follows (a number denotes the slice group number for
   each macroblock in a QCIF frame):

      0 1 2 0 1 2 0 1 2 0 1
      2 0 1 2 0 1 2 0 1 2 0
      1 2 0 1 2 0 1 2 0 1 2
      0 1 2 0 1 2 0 1 2 0 1
      2 0 1 2 0 1 2 0 1 2 0
      1 2 0 1 2 0 1 2 0 1 2
      0 1 2 0 1 2 0 1 2 0 1
      2 0 1 2 0 1 2 0 1 2 0
      1 2 0 1 2 0 1 2 0 1 2

   For the sake of simplicity, we assume that all the macroblocks of a
   slice group are included in one slice.  Three MTAPs are constructed
   from three consecutive reference pictures so that each MTAP contains
   three aggregation units, each of which contains all the macroblocks
   from one slice group.  The first MTAP contains slice group 0 of
   picture R1, slice group 1 of picture R3, and slice group 2 of
   picture R5.  The second MTAP contains slice group 1 of picture R1,
   slice group 2 of picture R3, and slice group 0 of picture R5.  The
   third MTAP contains slice group 2 of picture R1, slice group 0 of
   picture R3, and slice group 1 of picture R5.  Each non-reference
   picture is encapsulated into an STAP-B.

   Consequently, the transmission order of NAL units is the following:

      R1, slice group 0, DON 1, carried in MTAP,   RTP SN: N
      R3, slice group 1, DON 2, carried in MTAP,   RTP SN: N
      R5, slice group 2, DON 4, carried in MTAP,   RTP SN: N
      R1, slice group 1, DON 1, carried in MTAP,   RTP SN: N+1
      R3, slice group 2, DON 2, carried in MTAP,   RTP SN: N+1
      R5, slice group 0, DON 4, carried in MTAP,   RTP SN: N+1
      R1, slice group 2, DON 1, carried in MTAP,   RTP SN: N+2
      R3, slice group 1, DON 2, carried in MTAP,   RTP SN: N+2
      R5, slice group 0, DON 4, carried in MTAP,   RTP SN: N+2
      N2,                DON 3, carried in STAP-B, RTP SN: N+3
      N4,                DON 5, carried in STAP-B, RTP SN: N+4

   The receiver is able to organize the NAL units back in decoding order
   based on the value of DON associated with each NAL unit.

   If one of the MTAPs is lost, the spatially adjacent and temporally
   co-located macroblocks are received and can be used to conceal the
   loss efficiently.  If one of the STAPs is lost, the effect of the
   loss does not propagate temporally.

13.3.  Example of Robust Packet Scheduling

   An example of robust packet scheduling follows.  The communication
   system used in the example consists of the following components in
   the order that the video is processed from source to sink:

      o camera and capturing
      o pre-encoding buffer
      o encoder
      o encoded picture buffer
      o transmitter
      o transmission channel
      o receiver
      o receiver buffer
      o decoder
      o decoded picture buffer
      o display

   The video communication system used in the example operates as
   follows.  Note that processing of the video stream happens gradually
   and at the same time in all components of the system.  The source
   video sequence is shot and captured to a pre-encoding buffer.  The
   pre-encoding buffer can be used to order pictures from sampling order
   to encoding order or to analyze multiple uncompressed frames for bit
   rate control purposes, for example.  In some cases, the pre-encoding
   buffer may not exist; instead, the sampled pictures are encoded right
   away.  The encoder encodes pictures from the pre-encoding buffer and
   stores the output; i.e., coded pictures, to the encoded picture
   buffer.  The transmitter encapsulates the coded pictures from the
   encoded picture buffer to transmission packets and sends them to a
   receiver through a transmission channel.  The receiver stores the
   received packets to the receiver buffer.  The receiver buffering
   process typically includes buffering for transmission delay jitter.
   The receiver buffer can also be used to recover correct decoding
   order of coded data.  The decoder reads coded data from the receiver
   buffer and produces decoded pictures as output into the decoded
   picture buffer.  The decoded picture buffer is used to recover the
   output (or display) order of pictures.  Finally, pictures are
   displayed.

   In the following example figures, I denotes an IDR picture, R denotes
   a reference picture, N denotes a non-reference picture, and the
   number after I, R, or N indicates the sampling time relative to the
   previous IDR picture in decoding order.  Values below the sequence of
   pictures indicate scaled system clock timestamps.  The system clock
   is initialized arbitrarily in this example, and time runs from left
   to right.  Each I, R, and N picture is mapped into the same timeline
   compared to the previous processing step, if any, assuming that

   encoding, transmission, and decoding take no time.  Thus, events
   happening at the same time are located in the same column throughout
   all example figures.

   A subset of a sequence of coded pictures is depicted below in
   sampling order.

       ...  N58 N59 I00 N01 N02 R03 N04 N05 R06 ... N58 N59 I00 N01 ...
       ... --|---|---|---|---|---|---|---|---|- ... -|---|---|---|- ...
       ...  58  59  60  61  62  63  64  65  66  ... 128 129 130 131 ...

      Figure 16.  Sequence of pictures in sampling order

   The sampled pictures are buffered in the pre-encoding buffer to
   arrange them in encoding order.  In this example, we assume that the
   non-reference pictures are predicted from both the previous and the
   next reference picture in output order, except for the non-reference
   pictures immediately preceding an IDR picture, which are predicted
   only from the previous reference picture in output order.  Thus, the
   pre-encoding buffer has to contain at least two pictures, and the
   buffering causes a delay of two picture intervals.  The output of the
   pre-encoding buffering process and the encoding (and decoding) order
   of the pictures are as follows:

                ... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
                ... -|---|---|---|---|---|---|---|---|- ...
                ... 60  61  62  63  64  65  66  67  68  ...

      Figure 17.  Re-ordered pictures in the pre-encoding buffer

   The encoder or the transmitter can set the value of DON for each
   picture to a value of DON for the previous picture in decoding order
   plus one.

   For the sake of simplicity, let us assume that:

   o  the frame rate of the sequence is constant,
   o  each picture consists of only one slice,
   o  each slice is encapsulated in a single NAL unit packet,
   o  there is no transmission delay, and
   o  pictures are transmitted at constant intervals (that is, 1 / frame
      rate).

   When pictures are transmitted in decoding order, they are received as
   follows:

                ... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
                ... -|---|---|---|---|---|---|---|---|- ...
                ... 60  61  62  63  64  65  66  67  68  ...

      Figure 18.  Received pictures in decoding order

   The OPTIONAL sprop-interleaving-depth MIME type parameter is set to
   0, as the transmission (or reception) order is identical to the
   decoding order.

   The decoder has to buffer for one picture interval initially in its
   decoded picture buffer to organize pictures from decoding order to
   output order as depicted below:

                    ... N58 N59 I00 N01 N02 R03 N04 N05 R06 ...
                    ... -|---|---|---|---|---|---|---|---|- ...
                    ... 61  62  63  64  65  66  67  68  69  ...

      Figure 19.  Output order

   The amount of required initial buffering in the decoded picture
   buffer can be signaled in the buffering period SEI message or with
   the num_reorder_frames syntax element of H.264 video usability
   information.  num_reorder_frames indicates the maximum number of
   frames, complementary field pairs, or non-paired fields that precede
   any frame, complementary field pair, or non-paired field in the
   sequence in decoding order and that follow it in output order.  For
   the sake of simplicity, we assume that num_reorder_frames is used to
   indicate the initial buffer in the decoded picture buffer.  In this
   example, num_reorder_frames is equal to 1.

   It can be observed that if the IDR picture I00 is lost during
   transmission and a retransmission request is issued when the value of
   the system clock is 62, there is one picture interval of time (until
   the system clock reaches timestamp 63) to receive the retransmitted
   IDR picture I00.

   Let us then assume that IDR pictures are transmitted two frame
   intervals earlier than their decoding position; i.e., the pictures
   are transmitted as follows:

                       ...  I00 N58 N59 R03 N01 N02 R06 N04 N05 ...
                       ... --|---|---|---|---|---|---|---|---|- ...
                       ...  62  63  64  65  66  67  68  69  70  ...

      Figure 20.  Interleaving: Early IDR pictures in sending order

   The OPTIONAL sprop-interleaving-depth MIME type parameter is set
   equal to 1 according to its definition.  (The value of sprop-
   interleaving-depth in this example can be derived as follows:
   Picture I00 is the only picture preceding picture N58 or N59 in
   transmission order and following it in decoding order.  Except for
   pictures I00, N58, and N59, the transmission order is the same as the
   decoding order of pictures.  As a coded picture is encapsulated into
   exactly one NAL unit, the value of sprop-interleaving-depth is equal
   to the maximum number of pictures preceding any picture in
   transmission order and following the picture in decoding order.)

   The receiver buffering process contains two pictures at a time
   according to the value of the sprop-interleaving-depth parameter and
   orders pictures from the reception order to the correct decoding
   order based on the value of DON associated with each picture.  The
   output of the receiver buffering process is as follows:

                            ... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
                            ... -|---|---|---|---|---|---|---|---|- ...
                            ... 63  64  65  66  67  68  69  70  71  ...

      Figure 21.  Interleaving: Receiver buffer

   Again, an initial buffering delay of one picture interval is needed
   to organize pictures from decoding order to output order, as depicted
   below:

                                ... N58 N59 I00 N01 N02 R03 N04 N05 ...
                                ... -|---|---|---|---|---|---|---|- ...
                                ... 64  65  66  67  68  69  70  71  ...

      Figure 22.  Interleaving: Receiver buffer after reordering

   Note that the maximum delay that IDR pictures can undergo during
   transmission, including possible application, transport, or link
   layer retransmission, is equal to three picture intervals.  Thus, the

   loss resiliency of IDR pictures is improved in systems supporting
   retransmission compared to the case in which pictures were
   transmitted in their decoding order.

13.4.  Robust Transmission Scheduling of Redundant Coded Slices

   A redundant coded picture is a coded representation of a picture or a
   part of a picture that is not used in the decoding process if the
------分隔线----------------------------
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容