of deint-buf-cap MUST be an integer in the
range of 0 to 4294967295, inclusive.
Informative note: deint-buf-cap indicates
the maximum possible size of the
deinterleaving buffer of the receiver only.
When network jitter can occur, an
appropriately sized jitter buffer has to
be provisioned for as well.
sprop-init-buf-time:
This parameter MAY be used to signal the
properties of a NAL unit stream. The parameter
MUST NOT be present, if the value of
packetization-mode is equal to 0 or 1.
The parameter signals the initial buffering
time that a receiver MUST buffer before
starting decoding to recover the NAL unit
decoding order from the transmission order.
The parameter is the maximum value of
(transmission time of a NAL unit - decoding
time of the NAL unit), assuming reliable and
instantaneous transmission, the same
timeline for transmission and decoding, and
that decoding starts when the first packet
arrives.
An example of specifying the value of sprop-
init-buf-time follows. A NAL unit stream is
sent in the following interleaved order, in
which the value corresponds to the decoding
time and the transmission order is from left to
right:
0 2 1 3 5 4 6 8 7 ...
Assuming a steady transmission rate of NAL
units, the transmission times are:
0 1 2 3 4 5 6 7 8 ...
Subtracting the decoding time from the
transmission time column-wise results in the
following series:
0 -1 1 0 -1 1 0 -1 1 ...
Thus, in terms of intervals of NAL unit
transmission times, the value of
sprop-init-buf-time in this
example is 1.
The parameter is coded as a non-negative base10
integer representation in clock ticks of a 90-
kHz clock. If the parameter is not present,
then no initial buffering time value is
defined. Otherwise the value of sprop-init-
buf-time MUST be an integer in the range of 0
to 4294967295, inclusive.
In addition to the signaled sprop-init-buf-
time, receivers SHOULD take into account the
transmission delay jitter buffering, including
buffering for the delay jitter caused by
mixers, translators, gateways, proxies,
traffic-shapers, and other network elements.
sprop-max-don-diff:
This parameter MAY be used to signal the
properties of a NAL unit stream. It MUST NOT
be used to signal transmitter or receiver or
codec capabilities. The parameter MUST NOT be
present if the value of packetization-mode is
equal to 0 or 1. sprop-max-don-diff is an
integer in the range of 0 to 32767, inclusive.
If sprop-max-don-diff is not present, the value
of the parameter is unspecified. sprop-max-
don-diff is calculated as follows:
sprop-max-don-diff = max{AbsDON(i) -
AbsDON(j)},
for any i and any j>i,
where i and j indicate the index of the NAL
unit in the transmission order and AbsDON
denotes a decoding order number of the NAL
unit that does not wrap around to 0 after
65535. In other words, AbsDON is calculated as
follows: Let m and n be consecutive NAL units
in transmission order. For the very first NAL
unit in transmission order (whose index is 0),
AbsDON(0) = DON(0). For other NAL units,
AbsDON is calculated as follows:
If DON(m) == DON(n), AbsDON(n) = AbsDON(m)
If (DON(m) < DON(n) and DON(n) - DON(m) <
32768),
AbsDON(n) = AbsDON(m) + DON(n) - DON(m)
If (DON(m) > DON(n) and DON(m) - DON(n) >=
32768),
AbsDON(n) = AbsDON(m) + 65536 - DON(m) + DON(n)
If (DON(m) < DON(n) and DON(n) - DON(m) >=
32768),
AbsDON(n) = AbsDON(m) - (DON(m) + 65536 -
DON(n))
If (DON(m) > DON(n) and DON(m) - DON(n) <
32768),
AbsDON(n) = AbsDON(m) - (DON(m) - DON(n))
where DON(i) is the decoding order number of
the NAL unit having index i in the transmission
order. The decoding order number is specified
in section 5.5 of RFC 3984.
Informative note: Receivers may use sprop-
max-don-diff to trigger which NAL units in
the receiver buffer can be passed to the
decoder.
max-rcmd-nalu-size:
This parameter MAY be used to signal the
capabilities of a receiver. The parameter MUST
NOT be used for any other purposes. The value
of the parameter indicates the largest NALU
size in bytes that the receiver can handle
efficiently. The parameter value is a
recommendation, not a strict upper boundary.
The sender MAY create larger NALUs but must be
aware that the handling of these may come at a
higher cost than NALUs conforming to the
limitation.
The value of max-rcmd-nalu-size MUST be an
integer in the range of 0 to 4294967295,
inclusive. If this parameter is not specified,
no known limitation to the NALU size exists.
Senders still have to consider the MTU size
available between the sender and the receiver
and SHOULD run MTU discovery for this purpose.
This parameter is motivated by, for example, an
IP to H.223 video telephony gateway, where
NALUs smaller than the H.223 transport data
unit will be more efficient. A gateway may
terminate IP; thus, MTU discovery will normally
not work beyond the gateway.
Informative note: Setting this parameter to
a lower than necessary value may have a
negative impact.
Encoding considerations:
This type is only defined for transfer via RTP
(RFC 3550).
A file format of H.264/AVC video is defined in
[29]. This definition is utilized by other
file formats, such as the 3GPP multimedia file
format (MIME type video/3gpp) [30] or the MP4
file format (MIME type video/mp4).
Security considerations:
See section 9 of RFC 3984.
Public specification:
Please refer to RFC 3984 and its section 15.
Additional information:
None
File extensions: none
Macintosh file type code: none
Object identifier or OID: none
Person & email address to contact for further information:
stewe@stewe.org
Intended usage: COMMON
Author:
stewe@stewe.org
Change controller:
IETF Audio/Video Transport working group
delegated from the IESG.
8.2. SDP Parameters
8.2.1. Mapping of MIME Parameters to SDP
The MIME media type video/H264 string is mapped to fields in the
Session Description Protocol (SDP) [5] as follows:
o The media name in the "m=" line of SDP MUST be video.
o The encoding name in the "a=rtpmap" line of SDP MUST be H264 (the
MIME subtype).
o The clock rate in the "a=rtpmap" line MUST be 90000.
o The OPTIONAL parameters "profile-level-id", "max-mbps", "max-fs",
"max-cpb", "max-dpb", "max-br", "redundant-pic-cap", "sprop-
parameter-sets", "parameter-add", "packetization-mode", "sprop-
interleaving-depth", "deint-buf-cap", "sprop-deint-buf-req",
"sprop-init-buf-time", "sprop-max-don-diff", and "max-rcmd-nalu-
size", when present, MUST be included in the "a=fmtp" line of SDP.
These parameters are expressed as a MIME media type string, in the
form of a semicolon separated list of parameter=value pairs.
An example of media representation in SDP is as follows (Baseline
Profile, Level 3.0, some of the constraints of the Main profile may
not be obeyed):
m=video 49170 RTP/AVP 98
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42A01E;
sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==
8.2.2. Usage with the SDP Offer/Answer Model
When H.264 is offered over RTP using SDP in an Offer/Answer model [7]
for negotiation for unicast usage, the following limitations and
rules apply:
o The parameters identifying a media format configuration for H.264
are "profile-level-id", "packetization-mode", and, if required by
"packetization-mode", "sprop-deint-buf-req". These three
parameters MUST be used symmetrically; i.e., the answerer MUST
either maintain all configuration parameters or remove the media
format (payload type) completely, if one or more of the parameter
values are not supported.
Informative note: The requirement for symmetric use applies
only for the above three parameters and not for the other
stream properties and capability parameters.
To simplify handling and matching of these configurations, the
same RTP payload type number used in the offer SHOULD also be used
in the answer, as specified in [7]. An answer MUST NOT contain a
payload type number used in the offer unless the configuration
("profile-level-id", "packetization-mode", and, if present,
"sprop-deint-buf-req") is the same as in the offer.
Informative note: An offerer, when receiving the answer, has to
compare payload types not declared in the offer based on media
type (i.e., video/h264) and the above three parameters with any
payload types it has already declared, in order to determine
whether the configuration in question is new or equivalent to a
configuration already offered.
o The parameters "sprop-parameter-sets", "sprop-deint-buf-req",
"sprop-interleaving-depth", "sprop-max-don-diff", and "sprop-
init-buf-time" describe the properties of the NAL unit stream that
the offerer or answerer is sending for this media format
configuration. This differs from the normal usage of the
Offer/Answer parameters: normally such parameters declare the
properties of the stream that the offerer or the answerer is able
to receive. When dealing with H.264, the offerer assumes that the
answerer will be able to receive media encoded using the
configuration being offered.
Informative note: The above parameters apply for any stream
sent by the declaring entity with the same configuration; i.e.,
they are dependent on their source. Rather then being bound to
the payload type, the values may have to be applied to another
payload type when being sent, as they apply for the
configuration.
o The capability parameters ("max-mbps", "max-fs", "max-cpb", "max-
dpb", "max-br", ,"redundant-pic-cap", "max-rcmd-nalu-size") MAY be
used to declare further capabilities. Their interpretation
depends on the direction attribute. When the direction attribute
is sendonly, then the parameters describe the limits of the RTP
packets and the NAL unit stream that the sender is capable of
producing. When the direction attribute is sendrecv or recvonly,
then the parameters describe the limitations of what the receiver
accepts.
o As specified above, an offerer has to include the size of the
deinterleaving buffer in the offer for an interleaved H.264
stream. To enable the offerer and answerer to inform each other
about their capabilities for deinterleaving buffering, both
parties are RECOMMENDED to include "deint-buf-cap". This
information MAY be used when the value for "sprop-deint-buf-req"
is selected in a second round of offer and answer. For
interleaved streams, it is also RECOMMENDED to consider offering
multiple payload types with different buffering requirements when
the capabilities of the receiver are unknown.
o The "sprop-parameter-sets" parameter is used as described above.
In addition, an answerer MUST maintain all parameter sets received
in the offer in its answer. Depending on the value of the
"parameter-add" parameter, different rules apply: If "parameter-
add" is false (0), the answer MUST NOT add any additional
parameter sets. If "parameter-add" is true (1), the answerer, in
its answer, MAY add additional parameter sets to the "sprop-
parameter-sets" parameter. The answerer MUST also, independent of
the value of "parameter-add", accept to receive a video stream
using the sprop-parameter-sets it declared in the answer.
Informative note: care must be taken when parameter sets are
added not to cause overwriting of already transmitted parameter
sets by using conflicting parameter set identifiers.
For streams being delivered over multicast, the following rules apply
in addition:
o The stream properties parameters ("sprop-parameter-sets", "sprop-
deint-buf-req", "sprop-interleaving-depth", "sprop-max-don-diff",
and "sprop-init-buf-time") MUST NOT be changed by the answerer.
Thus, a payload type can either be accepted unaltered or removed.
o The receiver capability parameters "max-mbps", "max-fs", "max-
cpb", "max-dpb", "max-br", and "max-rcmd-nalu-size" MUST be
supported by the answerer for all streams declared as sendrecv or
recvonly; otherwise, one of the following actions MUST be
performed: the media format is removed, or the session rejected.
o The receiver capability parameter redundant-pic-cap SHOULD be
supported by the answerer for all streams declared as sendrecv or
recvonly as follows: The answerer SHOULD NOT include redundant
coded pictures in the transmitted stream if the offerer indicated
redundant-pic-cap equal to 0. Otherwise (when redundant_pic_cap
is equal to 1), it is beyond the scope of this memo to recommend
how the answerer should use redundant coded pictures.
Below are the complete lists of how the different parameters shall be
interpreted in the different combinations of offer or answer and
direction attribute.
o In offers and answers for which "a=sendrecv" or no direction
attribute is used, or in offers and answers for which "a=recvonly"
is used, the following interpretation of the parameters MUST be
used.
Declaring actual configuration or properties for receiving:
- profile-level-id
- packetization-mode
Declaring actual properties of the stream to be sent (applicable
only when "a=sendrecv" or no direction attribute is used):
- sprop-deint-buf-req
- sprop-interleaving-depth
- sprop-parameter-sets
- sprop-max-don-diff
- sprop-init-buf-time
Declaring receiver implementation capabilities:
- max-mbps
- max-fs
- max-cpb
- max-dpb
- max-br
- redundant-pic-cap
- deint-buf-cap
- max-rcmd-nalu-size
Declaring how Offer/Answer negotiation shall be performed:
- parameter-add
o In an offer or answer for which the direction attribute
"a=sendonly" is included for the media stream, the following
interpretation of the parameters MUST be used:
Declaring actual configuration and properties of stream proposed
to be sent:
- profile-level-id
- packetization-mode
- sprop-deint-buf-req
- sprop-max-don-diff
- sprop-init-buf-time
- sprop-parameter-sets
- sprop-interleaving-depth
Declaring the capabilities of the sender when it receives a
stream: