[RFCs/IDs] [Plain Text] [WG] [Email] [Diff1] [Diff2] [Nits]
Versions: (draft-wenger-avt-rtp-svc) 00 01 02
03 04 05 06 07 08 09 10 11 12 13 14
15
Audio/Video Transport WG S. Wenger
Internet Draft Y.-K. Wang
Intended status: Standards track Nokia
Expires: December 2008 T. Schierl
Fraunhofer HHI
A. Eleftheriadis
Vidyo
June 30, 2008
RTP Payload Format for SVC Video
draft-ietf-avt-rtp-svc-12.txt
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
This Internet-Draft will expire on December 30, 2008.
Copyright Notice
Copyright (C) The IETF Trust (2008).
Wenger, et al Expires December 30, 2008 [Page 1]
Internet-Draft RTP Payload Format for SVC Video June 2008
Abstract
This memo describes an RTP payload format for Scalable Video Coding
(SVC) as defined in_Annex G of ITU-T Recommendation H.264, which is
technically identical to Amendment 3 of ISO/IEC International
Standard 14496-10. The RTP payload format allows for packetization
of one or more H.264 Network Abstraction Layer (NAL) units in each
RTP packet payload, supporting both single-session as well as multi-
session streams. For single-session streams the packetization modes
of RFC 3984 are used, whereas for multi-session streams four
different packetization modes are defined in this memo. The payload
format is backwards compatible to RFC 3984, and has wide
applicability in conversational applications such as
videoconferencing, Internet video streaming, and high bit-rate
entertainment-quality video, among others.
Table of Contents
Status of this Memo ............................................ 1
Copyright Notice ............................................... 1
Abstract ....................................................... 2
Table of Contents .............................................. 2
1. Introduction ................................................ 4
2. Conventions ................................................. 6
3. Scope ....................................................... 7
4. Definitions and Abbreviations ............................... 7
4.1 Definitions ............................................. 7
4.1.1 Definitions from the SVC Specification ............. 7
4.1.2 Definitions Specific to This Memo .................. 9
4.2 Abbreviations .......................................... 12
5. The SVC Codec .............................................. 12
5.1 Overview ............................................... 12
5.2 Parameter Sets ......................................... 15
5.3 Network Abstraction Layer Units ........................ 16
6. RTP Payload Format ......................................... 20
6.1 Design Principles ...................................... 20
6.2 RTP Header Usage ....................................... 20
6.3 Common Structure of the RTP Payload Format ............. 20
6.4 NAL Unit Header Usage .................................. 20
6.5 Packetization Modes .................................... 22
6.5.1 Packetization Modes for Single-Source
Transmission ...................................... 22
6.5.2 Packetization Modes for Multi-Source
Transmission ...................................... 22
Wenger, et al Expires December 30, 2008 [Page 2]
Internet-Draft RTP Payload Format for SVC Video June 2008
6.6 Aggregation Packets .................................... 25
6.7 Fragmentation Units (FUs) .............................. 25
6.8 Payload Content Scalability Information (PACSI)
NAL Unit ............................................... 25
6.9 Non-Interleaved Multi-Time Aggregation Packets
(NI-MTAPs) ............................................. 32
6.10 Decoding Order Number (DON) ........................... 34
6.10.1 Cross-Session DON (CS-DON) for Multi-Source
Transmission ............................................ 35
7. Packetization Rules ........................................ 36
7.1 Packetization Rules for Multi-Source Transmission ...... 37
7.1.1 NI-T / NI-TC Packetization Rules .................. 38
7.1.2 NI-C / NI-TC Packetization Rules .................. 38
7.1.3 I-C Packetization Rules ........................... 40
7.1.4 Packetization Rules for Non-VCL NAL Units ......... 40
7.1.5 Packetization Rules for Prefix NAL Units .......... 40
8. De-Packetization Process ................................... 41
8.1 De-Packetization Process for Multi-Source Transmission . 41
8.1.1 Decoding Order Recovery for the NI-T and
NI-TC Modes ....................................... 42
8.1.1.1 Informative Algorithm for NI-T Decoding Order
Recovery within an Access Unit ............... 45
8.1.2 Decoding Order Recovery for the NI-C, NI-TC and I-C
Modes ............................................. 48
9. Payload Format Parameters .................................. 50
9.1 Media Type Registration ................................ 50
9.2 SDP Parameters ......................................... 60
9.2.1 Mapping of Payload Type Parameters to SDP ......... 61
9.2.2 Usage with the SDP Offer/Answer Model.............. 61
9.2.3 Usage with Multi-Source Transmission .............. 66
9.2.4 Usage in Declarative Session Descriptions ......... 66
9.3 Examples ............................................... 67
9.3.1 Example for Offering A Single SVC Session ......... 67
9.3.2 Example for Offering Session Multiplexing ......... 68
9.4 Parameter Set Considerations ........................... 69
10. Security Considerations ................................... 69
11. Congestion Control ........................................ 69
12. IANA Consideration ........................................ 70
13. Informative Appendix: Application Examples................. 71
13.1 Introduction .......................................... 71
13.2 Layered Multicast ..................................... 71
13.3 Streaming of an SVC Scalable Stream ................... 72
13.4 Multicast to MANE, SVC Scalable Stream to Endpoint .... 73
13.5 Scenarios Currently Not Considered .................... 74
13.6 SSRC Multiplexing ..................................... 76
14. References ................................................ 76
14.1 Normative References................................... 76
Wenger, et al Expires December 30, 2008 [Page 3]
Internet-Draft RTP Payload Format for SVC Video June 2008
14.2 Informative References................................. 77
15. Authors' Addresses......................................... 78
Intellectual Property Statement ............................... 79
Disclaimer of Validity......................................... 79
Copyright Statement............................................ 80
Acknowledgement................................................ 80
16. Open Issues................................................ 80
17. Changes Log................................................ 81
From draft-ietf-avt-rtp-svc-08 to draft-ietf-avt-rtp-svc-09 ... 81
From draft-ietf-avt-rtp-svc-09 to draft-ietf-avt-rtp-svc-10 ... 82
From draft-ietf-avt-rtp-svc-10 to draft-ietf-avt-rtp-svc-11 ... 83
From draft-ietf-avt-rtp-svc-11 to draft-ietf-avt-rtp-svc-12 ... 83
1. Introduction
This memo specifies an RTP [RFC3550] payload format for the Scalable
Video Coding (SVC) extension of the H.264/AVC video coding standard.
SVC is specified in Amendment 3 to ISO/IEC 14496 Part 10 [MPEG4-10],
and Annex G of ITU-T Rec. H.264/AVC [H.264].
SVC covers the entire application range of H.264/AVC, from low
bitrate Internet streaming applications, to HDTV broadcasting, and
even Digital Cinema that requires nearly lossless coding and
hundreds of Mbps. The payload format specified in this memo is a
backwards compatible enhancement to the H264/AVC payload format
(H264, [RFC3984]), in which the specific features introduced by SVC
are taken into account. It is assumed that the reader is familiar
with the terminology and concepts defined in RFC 3984.
SVC provides a coded representation of a video signal as a set of
hierarchical components, composed of a base layer and one or more
enhancement layers, as explained in Section 5 All data produced by
an SVC encoder are structured in H.264 Network Abstraction Layer
(NAL) units. This payload specification can only be used to carry
the raw H.264 NAL unit stream over RTP, and not the byte stream
format specified in Annex B of [H.264].
Depending on the packetization mode used, one or more than one NAL
unit may be present in a single RTP packet. The base layer is, by
design, compatible to H264, but may be formatted either according to
RFC 3984 ("AVC base layer") or according to this memo ("SVC base
layer"). Furthermore, the base layer may have multiple temporal
components (i.e., supporting different frame rates). As a result,
we distinguish the lowest temporal component ("T0") of the base
layer (either AVC or SVC) as the starting point of the SVC bitstream
Wenger, et al Expires December 30, 2008 [Page 4]
Internet-Draft RTP Payload Format for SVC Video June 2008
hierarchy. The difference of an SVC base layer as compared to an
AVC base layer is that additional NAL unit types may be present in
the RTP stream in the SVC base layer case, which, however, are
ignored by a receiver conforming to RFC 3984.
This specification allows to encapsulate in a given RTP stream NAL
units belonging to either:
o the T0 AVC base layer or the T0 SVC base layer only;
o one or more enhancement layers; or
o the T0 SVC base layer, and one or more enhancement layers.
Furthermore, this specification allows the packetization of SVC data
for either single-source or multi-source transmission. In the case
of single-source transmission (SST) all SVC data are carried in a
single RTP session with the same SSRC. In the case of Multi-Source
Transmission (MST), two or more RTP sessions are used to carry the
SVC data, using distinct SSRC's, in accordance with the
packetization modes defined in this memo and in RFC 3984. Each RTP
session is associated with one RTP stream, which MAY carry one or
more layers, structured according to one of the three cases
indicated above.
When MST is not used, the following applies.
o When an H.264/AVC compatible subset of the SVC base layer is
transmitted, the subset SHOULD be carried in one RTP stream that
MUST be encapsulated according to RFC 3984. This way, an RFC
3984 receiver will be able to receive the H.264/AVC compatible
bitstream subset.
o When a set of layers including one or more SVC enhancement layers
is transmitted, the set SHOULD be carried in one RTP stream that
SHOULD be encapsulated according to this memo.
When MST is used, this memo defines four different packetization
modes. The modes differ depending on if the SVC data are allowed to
be interleaved, i.e., to be transmitted in an order different than
the intended decoding order, and they also differ in the mechanisms
provided in order to recover the correct decoding order of the NAL
units across the multiple RTP sessions. These four MST modes re-use
the packetization modes introduced in RFC 3984 for the packetization
of NAL units in each of their individual RTP sessions.
Wenger, et al Expires December 30, 2008 [Page 5]
Internet-Draft RTP Payload Format for SVC Video June 2008
MST SHOULD be used in a multicast session when different receivers
may request different layers of the scalable bitstream. An
operation point for an SVC bit stream, as defined in this memo,
corresponds to a set of layers that together conform to one of the
profiles defined in Annex A or G of [H.264] and, when decoded, offer
a representation of the original video at a certain fidelity. The
number of streams used in MST SHOULD be at least equal to the number
of operation points that may be requested by the receivers.
Depending on the application, this may result in each layer being
carried in its own RTP session, or in having multipe layers
encapsulated within one RTP session.
Informative note: Layered multicast is a term commonly used to
describe the application where multicast is used to transmit
layered or scalable data that has been encapsulated into more
than one RTP session. This application allows different
receivers in the multicast session to receive different
operation points of the scalable bitstream. Layered
multicast, among other application examples, is discussed in
more detail in Section 13.2
This RTP payload specification is designed to be unaware of the NAL
unit payload defined in [H.264]. Similar to RFC 3984, this memo
introduces two new NAL unit types, using unit type numbers from the
space explicitly left unspecified in [H.264] and not used in RFC
3984. When the single NAL unit packetization mode is used, where
one NAL unit always corresponds to one RTP packet, the NAL unit
header defined in [H.264] co-serves as the payload header of this
RTP payload format. In this case, the payload of the NAL unit
follows immediately. In all other modes data from multiple NAL units
may be present in an RTP packet, either through nesting (a NAL unit
is contained in another one) or serialization (NAL units appear in
sequence in an RTP packet).
This memo also also defines signaling support for SVC, including a
new media subtype name (H264-SVC).
2. Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14, RFC 2119
[RFC2119].
This specification uses the notion of setting and clearing a bit
when bit fields are handled. Setting a bit is the same as assigning
Wenger, et al Expires December 30, 2008 [Page 6]
Internet-Draft RTP Payload Format for SVC Video June 2008
that bit the value of 1 (On). Clearing a bit is the same as
assigning that bit the value of 0 (Off).
3. Scope
o The scalability features that SVC adds to the H.264 specification
enable several system-level functionalities related to the
ability of a system to adapt the signal to different system
conditions with no or minimal processing. The adaptation relates
both to the capabilities of potentially heterogenous receivers
(screen resolution, processing speed, etc.), as well as differing
or time-varying network conditions. The adaptation can be
performed at the source, the destination, or in intermediate
media-aware network elements. This payload specification exposes
these system-level functionalities so that system designers can
take direct advantage of these features. The likely applications
of this specification are in the IP-based multimedia
communication fields, including conversational multimedia, video
telephony or video conferencing, Internet streaming, and IPTV.
4. Definitions and Abbreviations
4.1 Definitions
4.1.1 Definitions from the SVC Specification
This document uses the terms and definitions of [H.264]. The
following terms are relevant to this memo, and their definitions are
copied here from [H.264] for convenience.
access unit: A set of NAL units always containing exactly one
primary coded picture. In addition to the primary coded picture,
an access unit may also contain one or more redundant coded
pictures, one auxiliary coded picture, or other NAL units not
containing slices or slice data partitions of a coded picture.
The decoding of an access unit always results in a decoded
picture.
base layer: A bitstream subset that contains all the NAL units
with the nal_unit_type syntax element equal to 1 or 5 of the
bitstream and does not contain any NAL unit with the
nal_unit_type syntax element equal to 14, 15, or 20 and conforms
to one or more of the profiles specified in Annex A of [H.264].
base quality layer representation: The layer representation of
the target dependency representation of an access unit that is
associated with the quality_id syntax element equal to 0.
Wenger, et al Expires December 30, 2008 [Page 7]
Internet-Draft RTP Payload Format for SVC Video June 2008
coded video sequence: A sequence of access units that consists,
in decoding order, of an IDR access unit followed by zero or more
non-IDR access units including all subsequent access units up to
but not including any subsequent IDR access unit.
dependency representation: A subset of VCL NAL units within an
access unit that are associated with the same value of the
dependency_id syntax element, which is provided as part of the
NAL unit header or by an associated prefix NAL unit. A
dependency representation consist of one or more layer
representations.
IDR access unit: An access unit in which the primary coded
picture is an IDR picture.
IDR picture: A coded picture in which all slices of the target
dependency representation within the access unit are I or EI
slices that causes the decoding process to mark all reference
pictures as "unused for reference" immediately after decoding the
IDR picture. After the decoding of an IDR picture all following
coded pictures in decoding order can be decoded without inter
prediction from any picture decoded prior to the IDR picture.
The first picture of each coded video sequence is an IDR picture.
layer representation: A subset of VCL NAL units within an access
unit that are associated with the same values of the
dependency_id and quality_id syntax elements, which are provided
as part of the VCL NAL unit header or by an associated prefix NAL
unit. One or more layer representations represent a dependency
representation.
prefix NAL unit: A NAL unit with nal_unit_type equal to 14 that
immediately precedes in decoding order a NAL unit with
nal_unit_type equal to 1, 5, or 12. The NAL unit that
immediately succeeds in decoding order the prefix NAL unit is
referred to as the associated NAL unit. The prefix NAL unit
contains data associated with the associated NAL unit, which are
considered to be part of the associated NAL unit.
reference base picture: A reference picture that is obtained by
decoding a base quality layer representation with the nal_ref_idc
syntax element not equal to 0 and the store_ref_base_pic_flag
syntax element equal to 1 of an access unit and all layer
representations of the access unit that are referred to by inter-
layer prediction of the base quality layer representation. A
reference base picture is not an output of the decoding process,
but the samples of a reference base picture may be used for inter
Wenger, et al Expires December 30, 2008 [Page 8]
Internet-Draft RTP Payload Format for SVC Video June 2008
prediction in the decoding process of subsequent pictures in
decoding order. Reference base picture is a collective term for
a reference base field or a reference base frame.
scalable bitstream: A bitstream with the property that one or
more bitstream subsets that are not identical to the scalable
bitstream form another bitstream that conforms to the SVC
specification[SVC].
target dependency representation: The dependency representation
of an access unit that is associated with the largest value of
the dependency_id syntax element for all dependency
representations of the access unit.
target layer representation: The layer representation of the
target dependency representation of an access unit that is
associated with the largest value of the quality_id syntax
element for all layer representations of the target dependency
representation of the access unit.
4.1.2 Definitions Specific to This Memo
anchor layer representation: An anchor layer representation is
such a layer representation that, if decoding of the operation
point corresponding to the layer starts from the access unit
containing this layer representation, all the following layer
representations of the layer, in output order, can be correctly
decoded. An anchor layer representation is a random access point
to the layer the anchor layer representation belongs to.
However, some layer representations, succeeding an anchor layer
representation in decoding order but preceding the anchor layer
representation in output order, may refer to earlier layer
representations for inter prediction, and hence may not be
correctly decoded if random access is performed at the anchor
layer representation.
AVC base layer: The subset of the SVC base layer in which all
prefix NAL units (type 14) are removed. Note that this is
equivalent to the term "base layer" as defined in Annex G of
[H.264].
base RTP session: When multi-source transmission is used, the RTP
session that carries the RTP stream containing the T0 AVC base
layer or the T0 SVC base layer, and zero or more enhancement
layers. This RTP session does not depend on any other RTP
session as indicated by mechanisms defined in [I-D.ietf-mmusic-
Wenger, et al Expires December 30, 2008 [Page 9]
Internet-Draft RTP Payload Format for SVC Video June 2008
decoding-dependency]. The base RTP session may carry NAL units
of NAL unit type equal to 14 and 15.
effective NAL unit timestamp: The value that the RTP timestamp
would have if the particular NAL unit was transported in its own
RTP packet. (The NAL unit time is different than that actual RTP
timestamp of the packet containing the particular NAL unit in the
case of MTAPs.)
enhancement RTP session: When multi-source transmission is used,
an RTP session that is not the base RTP session. An enhancement
RTP session typically contains an RTP stream that depends on at
least one other RTP session as indicated by mechanisms defined in
[I-D.ietf-mmusic-decoding-dependency]. A lower RTP session to an
enhancement RTP session is an RTP session which the enhancement
RTP session depends on. The lowest RTP session for a receiver is
the RTP session that does not depend on any other RTP session
received by the receiver. The highest RTP session for a receiver
is the RTP session which no other RTP session received by the
receiver depends on.
cross-session decoding order number (CS-DON): A derived variable
indicating NAL unit decoding order number over all NAL units
within all the session-multiplexed RTP sessions that carry the
same SVC bitstream.
enhancement layer: A layer in which at least one of the values of
dependency_id or quality_id is higher than 0, or a layer in which
none of the NAL units is associated with the value of temporal_id
equal to 0. An operation point constructed using the maximum
temporal_id, dependency_id, and quality_id values associated with
an enhancement layer may or may not conform to one or more of the
profiles specified in Annex A of [H.264].
H.264/AVC compatible: A biststream subset that conforms to one or
more of the profiles specified in Annex A of [H.264].
intra layer representation: A layer representation that contains
only slices that use intra prediction, and hence do not refer to
any earlier layer representation in decoding order in the same
layer. Note that in [SVC] intra prediction includes intra-layer
intra prediction as well as inter-layer intra prediction.
layer: A bistream subset in which all NAL units of type 1, 5, 12,
14, or 20 have the same values of dependency_id and quality_id,
either directly through their NAL unit header (for NAL units of
type 14 or 20) or through association to a prefix (type 14) NAL
Wenger, et al Expires December 30, 2008 [Page 10]
Internet-Draft RTP Payload Format for SVC Video June 2008
unit (for NAL unit types 1, 5, or 12). A layer may contain NAL
units associated with more than one values of temporal_id.
multi-source transmission: This specifies that the SVC bitstream
is distributed across multiple RTP sessions, with each stream
having a distinct SSRC, and consequently its own timestamp and
sequence number spaces. Those multiple streams can be associated
using the RTCP CNAME, or explicit signalling of the SSRC used.
[Ed. (AE): Is the single transport connection mode supported? It
does not appear to, as seen by the definitions of base and
enhancement RTP sessions, and the rest of the text. I modified
the definition so that it is not allowed.] Dependency between RTP
sessions MUST be signaled according to [I-D.ietf-mmusic-decoding-
dependency] and this memo.
operation point: An operation point is identified by a set of
values of temporal_id, dependency_id, and quality_id. A bistream
corresponding to an operation point can be constructed by
removing all NAL units associated with a higher value of
dependency_id, and all NAL units associated with the same value
of dependency_id but higher values of quality_id or temporal_id.
Additional NAL units may be removed (with lower dependency_id or
same dependency_id but lower quality_id) if they are not required
for decoding the bitstream at the particular operation point. An
operation point bitstream conforms to at least one of the
profiles defined in Annex A or Annex G of [H.264], and offers a
representation of the original video signal at a certain
fidelity. [Ed.Note(YkW): Need to check whether a bitstream subset
with those additional NAL units removed is a conforming
bitstream.]
operation point representation: The set of all NAL units of an
operation point within the same access unit.
RTP packet stream: A sequence of RTP packets with increasing
sequence numbers (except for wrap-around), identical PT and
identical SSRC (Synchronization Source), carried in one RTP
session. Within the scope of this memo, one RTP packet stream is
utilized to transport one or more layers.
SVC base layer: The layer that includes all NAL units associated
with dependency_id and quality_id values both equal to 0,
including prefix NAL units (NAL unit type 14).
SVC enhancement layer: A layer in which at least one of the
values of dependency_id or quality_id is higher than 0. An
operation point constructed using the maximum dependency_id and
Wenger, et al Expires December 30, 2008 [Page 11]
Internet-Draft RTP Payload Format for SVC Video June 2008
quality_id values and any temporal_id value associated with an
SVC enhancement layer does not conform to any of the profiles
specified in Annex A of [H.264].
SVC NAL unit: A NAL unit of NAL unit type 14, 15, or 20 as
specified in Annex G of [H.264].
SVC NAL unit header: A four-byte header resulting from the
addition of a three-byte SVC-specific header extension added in
NAL unit types 14, 15 and 20.
SVC RTP session: Either the base RTP session or an enhancement
RTP session.
T0 AVC base layer: A subset of the AVC base layer constructed by
removing all VCL NAL units associated with temporal_id values
higher than 0.
T0 SVC base layer: A subset of the SVC base layer constructed by
removing all VCL NAL units associated with temporal_id values
higher than 0 as well as their associated prefix NAL units.
4.2 Abbreviations
In addition to the abbreviations defined in [RFC3984], the following
abbrevations are used in this memo.
CGS: Coarse-Grain Scalability
CS-DON: Cross-Session Decoding Order Number
ETS: Effective Timestamp (of a NAL unit)
MGS: Medium-Grain Scalability
MST: Multi-Source Transmission
PACSI: Payload Content Scalability Information
SST: Single-Source Transmission
SNR: Signal-to-Noise Ratio
SVC: Scalable Video Coding
5. The SVC Codec
5.1 Overview
SVC [H.264]defines a coded video representation in which a given
bitstream offers representations of the source material at different
levels of fidelity (hence the term "scalable"). Scalable video
coding bitstreams, or scalable bitstreams, are constructed in a
Wenger, et al Expires December 30, 2008 [Page 12]
Internet-Draft RTP Payload Format for SVC Video June 2008
pyramidal fashion: the coding process creates bitstream components
that improve the fidelity of hierarchically lower components.
The fidelity dimensions offered by SVC are spatial (picture size),
quality (or Signal-to-Noise Ratio - SNR), as well as temporal
(pictures per second). Bitstream components associated with a given
level of spatial, quality, and temporal fidelity are identified
using corresponding parameters in the bitstream: dependency_id,
quality_id, and temporal_id (see also Section 5.3). The fidelity
identifiers have integer values, where higher values designate
components that are higher in the hierarchy. It is noted that SVC
offers significant flexibility in terms of how an encoder may choose
to structure the dependencies between the various components.
Decoding of a particular component requires the availability of all
the components it depends upon, either directly, or indirectly. An
operation point of an SVC bitstream consists of the bistream
components required to be able to decode a particular dependency_id,
quality_id, and temporal_id combination.
SVC maintains the bitstream organization introduced in H.264/AVC.
Specifically, all bitstream components are encapsulated in Network
Abstraction Layer (NAL) units which are organized as Access Units
(AU). An AU is associated with a single sampling instance in time.
A subset of the NAL unit types correspond to the Video Coding Layer
(VCL), and contain the coded picture data associated with the source
content. Non-VLC NAL units carry ancillary data that may be
necessary for decoding (e.g., parameter sets as explained below), or
that facilitate certain system operations but are not needed by the
decoding process itself. Coded picture data at the various fidelity
dimensions are organized in slices. Within one AU, a coded picture
of an operation point consists of all the coded slices required for
decoding up to the particular combination of dependency_id and
quality_id values at the time instance corresponding to the AU.
The NAL encapsulates each slice generated by the VCL into one or
more NAL units. RFC 3984 provides a more in-depth discussion of the
NAL unit concept. SVC specifies the decoding order of NAL units.
It is noted that the concept of temporal scalability is already
present in H.264/AVC, as profiles defined in Annex A of [H.264]
already support it. Specifically, in [H.264] sub-sequences have
been introduced in order to allow optional use of temporal layers.
SVC extends this approach by exposing the temporal scalability
information using the temporal_id parameter, alongside (and unified
with) the dependency_id and quality_id values that are used for
spatial and quality scalability. For coded picture data defined in
Annex G of [H.264] this is accomplished by using a new type of NAL
unit where the fidelity parameters are part of its header. For
Wenger, et al Expires December 30, 2008 [Page 13]
Internet-Draft RTP Payload Format for SVC Video June 2008
coded picture data that follow H.264/AVC, and to ensure
compatibility with existing H.264/AVC receivers, a new type of
"prefix" NAL unit has been defined to carry this header information.
This prefix NAL unit type is among those ignored by H.264/AVC
receivers as explained in [RFC3984].
Within an AU, the VCL NAL units associated with a given
dependency_id and quality_id are referred to as a "layer
representation". The layer representation corresponding to the
lowest values of dependency_id and quality_id (i.e., zero) is
referred to as the base layer representation and is compliant by
design to H.264/AVC. The set of VCL and associated non-VCL NAL
units across all AUs in a bitstream associated with a particular
combination of values of dependency_id and quality_id, and
regardless of the value of temporal_id, is conceptually a scalable
layer. Due to the backwards compatibility with H.264/AVC, it is
important to differentiate, however, whether or not SVC-specific NAL
units are present in a given bitstream or not. This is particularly
important for the lowest fidelity values in terms of dependency_id
and quality_id (zero for both), as the corresponding VCL data are
compliant to H.264/AVC, and may or may not be accompanied by
associated prefix NAL units. This memo therefore uses the term "AVC
base layer" to designate the layer that contains only H.264/AVC VCL
NAL units, and "SVC base layer" to designate the same layer but with
the addition of the associated SVC prefix NAL units. Note that the
SVC specification uses the term "base layer" for what in this memo
will be referred to as "AVC base layer". Similarly, it is also
important to be able to differentiate, within a layer, the temporal
fidelity components it contains. This memo uses the term "T0" to
indicate, within a particular layer, the subset that contains the
NAL units associated with temporal_id equal to 0.
The term "layer" is used in various contexts in this memo. For
example, in the terms "Video Coding Layer" and "Network Abstraction
Layer" it refers to conceptual organization levels. When referring
to bitstream syntax elements such as block layer or macroblock
layer, it refers to hierarchical bitstream structure levels. When
used in the context of bitstream scalability, e.g., "AVC base
layer", it refers to a level of representation fidelity of the
source signal with a specific set of NAL units included. The
correct interpretation is supported by providing the appropriate
context.
SNR scalability in SVC is offered in two different ways. In what is
called Coarse-Grained Scalability (CGS), scalability is provided by
including or excluding a complete layer when decoding a particular
bitstream. In contrast, in Medium-Grained Scalability (MGS),
Wenger, et al Expires December 30, 2008 [Page 14]
Internet-Draft RTP Payload Format for SVC Video June 2008
scalability is provided by selectively omitting the decoding of
specific NAL units belonging to MGS layers. The selection of the
NAL units to omit can be based on fixed length fields present in the
NAL unit header.
5.2 Parameter Sets
The parameter set concept is defined in [H.264]. Please refer to
Section 1.2 of RFC 3984 for more details.
SVC introduces a new type of sequence parameter set, referred to as
a subset sequence parameter set [H.264]. Subset sequence parameter
sets have NAL unit type equal to 15, which is different from the NAL
unit type value (7) of sequence parameter sets. VCL NAL units of
NAL unit type 1 to 5 must only (indirectly) refer to sequence
parameter sets, while VCL NAL units of NAL unit type 20 must only
(indirectly) refer to subset sequence parameter sets. The
references are indirect because VCL NAL units refer to picture
parameter sets (in their slice header), which in turn refer to
sequence parameter sets. Subset sequence parameter sets use a
separate identifier value space than sequence parameter sets. An
overview of the NAL unit and packet types used in this memo can be
found in Table 1 in Section 5.3.
In SVC, coded picture data from different layers may use the same or
different sequence and picture parameter sets. At any time instant
during the decoding process there may be one active sequence
parameter set (for the layer representation with the highest value
of (dependency_id * 16 + quality_id)) and one or more active layer
SVC sequence parameter set(s) (for layer representations with lower
values of (dependency_id * 16 + quality_id)). The active sequence
parameter set or an active layer SVC sequence parameter set remains
unchanged throughout a coded video sequence in the scalable layer in
which the active sequence parameter set or active layer SVC sequence
parameter set is referred to. This means that the referred sequence
parameter set or subset sequence parameter set can only change at
IDR access units for any layer. At any time instant during the
decoding process there may be one active picture parameter set (for
the layer representation with the highest value of (dependency_id *
16 + quality_id)) and one or more active layer picture parameter
set(s) (for layer representations with lower values of
(dependency_id * 16 + quality_id)). The active picture parameter
set or an active layer picture parameter set remains unchanged
throughout a layer representation in which the active picture
parameter set or active layer picture parameter set is referred to,
but may change from one AU to the next.
Wenger, et al Expires December 30, 2008 [Page 15]
Internet-Draft RTP Payload Format for SVC Video June 2008
5.3 Network Abstraction Layer Units
The NAL unit organization is central to [ H.264], RFC 3984, as well
as this memo. In addition to the NAL unit types defined originally
for H.264/AVC, [H.264]introduces two new NAL unit types for SVC
(among others): SVC VCL NAL units ("slice in scalable extension",
type 20), and prefix NAL units (type 14). SVC VCL NAL units
encapsulate VCL data as defined in Annex G of [H.264]. The prefix
NAL unithas no payload of its own, and instead includes descriptive
information of the associated H.264/AVC VCL NAL unit (type 1 or 5)
that immediately follows the prefix NAL unit.
In addition to the NAL unit types introduced for packetization
purposes in RFC 2984, this memo also introduces two new NAL unit
types to facilitate packetization (PACSI and NI-MTAP, specified in
detail later on). The following table gives an overview of NAL unit
and packet types used in this memo and also provides references to
the appropriate document and section where their use is defined.
Table 1. Summary of NAL unit and packet types used in this memo
Type Description Definition in: [RC3984] / this memo
--------------------------------------------------------------------
0 unspecified - / -
1-23 NAL unit per [H.264]/Single NAL unit packet 5.2 / 6.3
14 Prefix NAL unit per [SVC] - / 5.1
15 Subset sequence parameter set per [SVC] - / 5.2
20 Slice in scalable extensions per [SVC] - / 5.3
24 Single-time aggregation packet (STAP-A) 5.7.1 / 6.6
25 Single-time aggregation packet (STAP-B) 5.7.1 / 6.6
26 Multi-time aggregation packet (MTAP16) 5.7.2 / 6.6
27 Multi-time aggregation packet (MTAP24) 5.7.2 / 6.66.7
28 Fragmentation unit (FU-A) 5.8 / 6.7
Wenger, et al Expires December 30, 2008 [Page 16]
Internet-Draft RTP Payload Format for SVC Video June 2008
29 Fragmentation unit with DON (FU-B) 5.8 / 6.7
30 Payload Content Scalability Info. (PACSI) - / 6.8
31 unspecified - / -
SVC extends the one-byte H.264/AVC NAL unit header by three
additional octets for NAL units of type 14 and 20. The header
indicates the type of the NAL unit, the (potential) presence of bit
errors or syntax violations in the NAL unit payload, information
regarding the relative importance of the NAL unit for the decoding
process, the layer identification information, and other fields as
discussed below.
The syntax and semantics of the NAL unit header are specified in
[H.264], but the essential properties of the NAL unit header are
summarized below for convenience.
The first byte of the NAL unit header has the following format (the
bit fields are the same as defined for the one-byte H.264/AVC NAL
unit header, while the semantics of some fields have changed
slightly, in a backward compatible way):
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+
The semantics of the components of the NAL unit type octet, as
specified in the H.264 specification, are described briefly below.
F: 1 bit
forbidden_zero_bit. H.264/AVC declares a value of 1 as a syntax
violation.
NRI: 2 bits
nal_ref_idc. A value of '00' (in binary form) indicates that the
content of the NAL unit is not used to reconstruct reference
pictures for future prediction. Such NAL units can be discarded
without risking the integrity of the reference pictures in the
same layer. A value greater than '00' indicates that the
decoding of the NAL unit is required to maintain the integrity of
reference pictures in the same layer, or that the NAL unit
contains parameter sets.
Wenger, et al Expires December 30, 2008 [Page 17]
Internet-Draft RTP Payload Format for SVC Video June 2008
Type: 5 bits
nal_unit_type. This component specifies the NAL unit type as
defined in Table 7-1 of [H.264], and later within this memo. For
a reference of all currently defined NAL unit types and their
semantics, please refer to Section 7.4.1 in [H.264].
In H.264/AVC, NAL unit types 14, 15 and 20 are reserved for
future extensions. SVC uses these three NAL unit types as
follows: NAL unit type 14 is used for prefix NAL unit, NAL unit
type 15 is used for subset sequence parameter set, and NAL unit
type 20 is used for coded slice data in scalable extension (see
Section 7.4.1 in [H.264]). NAL unit types 14 and 20 indicate the
presence of three additional octets in the NAL unit header, as
shown below.
+---------------+---------------+---------------+
|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|I| PRID |N| DID | QID | TID |U|D|O| RR|
+---------------+---------------+---------------+
R: 1 bit
reserved_one_bit. Reserved bit for future extension. R MUST be
equal to 1. Receivers SHOULD ignore the value of R.
I: 1 bit
idr_flag. This component specifies whether the layer
representation is an instantaneous decoding refresh (IDR) layer
representation (when equal to 1) or not (when equal to 0).
PRID: 6 bits
priority_id. This flag specifies a priority identifier for the
NAL unit. A lower value of PRID indicates a higher priority.
N: 1 bit
no_inter_layer_pred_flag. This flag specifies, when present in a
coded slice NAL unit, whether inter-layer prediction may be used
for decoding the coded slice (when equal to 1) or not (when equal
to 0).
DID: 3 bits
dependency_id. This component indicates the inter-layer coding
dependency level of a layer representation. At any access unit,
a layer representation with a given dependency_id may be used for
inter-layer prediction for coding of a layer representation with
a higher dependency_id, while a layer representation with a given
Wenger, et al Expires December 30, 2008 [Page 18]
Internet-Draft RTP Payload Format for SVC Video June 2008
dependency_id shall not be used for inter-layer prediction for
coding of a layer representation with a lower dependency_id.
QID: 4 bits
quality_id. This component indicates the quality level of an MGS
layer representation. At any access unit and for identical
dependency_id values, a layer representation with quality_id
equal to ql uses a layer representation with quality_id equal to
ql-1 for inter-layer prediction.
TID: 3 bits
temporal_id. This component indicates the temporal level of a
layer representation. The temporal_id is associated with the
frame rate, with lower values of _temporal_id corresponding to
lower frame rates. A layer representation at a given temporal_id
typically depends on layer representations with lower temporal_id
values, but it never depends on layer representations with higher
temporal_id values.
U: 1 bit
use_ref_base_pic_flag. A value of 1 indicates that only
reference base pictures are used during the inter prediction
process. A value of 0 indicates that the reference base pictures
are not used during the inter prediction process.
D: 1 bit
discardable_flag. A value of 1 indicates that the current NAL
unit is not used for decoding NAL units with values of
dependency_id higher than the one of the current NAL unit, in the
current and all subsequent access units. Such NAL units can be
discarded without risking the integrity of layers with higher
dependency_id values. discardable_flag equal to 0 indicates that
the decoding of the NAL unit is required to maintain the
integrity of layers with higher dependency_id.
O: 1 bit
output_flag: Affects the decoded picture output process as
defined in Annex C of [H.264].
RR: 2 bits
reserved_three_2bits. Reserved bits for future extension. RR
MUST be equal to '11' (in binary form). Receivers SHOULD ignore
the value of RR.
This specification extends the semantics of F, NRI, I, PRID, DID,
QID, TID, U, and D per [H.264] as described in Section 6.4.
Wenger, et al Expires December 30, 2008 [Page 19]
Internet-Draft RTP Payload Format for SVC Video June 2008
6. RTP Payload Format
6.1Design Principles
The following design principles have been observed:
o Backward compatibility with [RFC3984] wherever possible.
o The SVC base layer or any H.264/AVC compatible subset of the SVC
base layer, when transmitted in its own RTP stream, MUST be
encapsulated using [RFC3984]. This ensures that such an RTP
stream can be understood by RFC 3984 receivers.
o Media-Aware Network Elements (MANEs) as defined in [RFC3984] are
signaling-aware and rely on signaling information. MANEs have
state.
o MANEs can aggregate multiple RTP streams, possibly from multiple
RTP sessions.
o MANEs can perform media-aware stream thinning (selective
elimination of packets or portions thereof). By using the
payload header information identifying Layers within an RTP
session, MANEs are able to remove packets from the incoming RTP
packet stream. This implies rewriting the RTP headers of the
outgoing packet stream and rewriting of RTCP Receiver Reports.
6.2 RTP Header Usage
Please see Section 5.1 of [RFC3984].
6.3 Common Structure of the RTP Payload Format
Please see Section 5.2 of [RFC3984].
6.4 NAL Unit Header Usage
The structure and semantics of the NAL unit header were introduced
in Section 5.3. This section specifies the semantics of F, NRI, I,
PRID, DID, QID, TID, U, and D according to this specification.
The semantics of F specified in Section 5.3 of [RFC3984] also apply
in this memo.
For NRI, for a bitstream conforming to one of the profiles defined
in Annex A of [H.264] and transported using [RFC3984], the semantics
specified in Section 5.3 of [RFC3984] apply, i.e., NRI also
Wenger, et al Expires December 30, 2008 [Page 20]
Internet-Draft RTP Payload Format for SVC Video June 2008
indicates the relative importance of NAL units. For a bitstream
conforming to one of the profiles defined in Annex G of [H.264] and
transported using this memo, in addition to the semantics specified
in Annex G of [H.264], NRI also indicates the relative importance of
NAL units within a layer.
For I, in addition to the semantics specified in Annex G of [H.264],
according to this memo, MANEs MAY use this information to protect
NAL units with I equal to 1 better than NAL units with I equal to 0.
MANEs MAY also utilize information of NAL units with I equal to 1 to
decide when to forward more packets for an RTP packet stream. For
example, when it is sensed that spatial layer switching has happened
such that the operation point has changed to a higher value of DID,
MANEs MAY start to forward NAL units with the higher value of DID
only after forwarding a NAL unit with I equal to 1 with the higher
value of DID.
Note that, in the context of this section, "protecting a NAL unit"
means any RTP or network transport mechanism that could improve the
probability of success delivery of the packet conveying the NAL
unit, including applying a QoS-enabled network, Forward Error
Correction (FEC), retransmissions, and advanced scheduling behavior,
whenever possible.
For PRID, the semantics specified in Annex G of [H.264] applies.
Note, that MANEs implementing unequal error protection MAY use this
information to protect NAL units with smaller PRID values better
than those with larger PRID values, for example by including only
the more important NAL units in an FEC protection mechanism. The
importance for the decoding process decreases as the PRID value
increases.
For DID, QID, TID, in addition to the semantics specified in Annex G
of [H.264], according to this memo, values of DID, QID, or TID
indicate the relative importance in their respective dimension. A
lower value of DID, QID, or TID indicates a higher importance if the
other two components are identical. MANEs MAY use this information
to protect more important NAL units better than less important NAL
units.
For U, in addition to the semantics specified in Annex G of [H.264],
according to this memo, MANEs MAY use this information to protect
NAL units with U equal to 1 better than NAL units with U equal to 0.
For D, in addition to the semantics specified in Annex G of [H.264],
according to this memo, MANEs MAY use this information to determine
whether a given NAL unit is required for successfully decoding a
Wenger, et al Expires December 30, 2008 [Page 21]
Internet-Draft RTP Payload Format for SVC Video June 2008
certain Operation Point of the SVC bitstream, hence to decide
whether to forward the NAL unit.
6.5 Packetization Modes
6.5.1Packetization Modes for Single-Source Transmission
Section 5.4 of RFC 3984 applies when using single-source
transmission. The packetization modes specified in Section 5.4 of
RFC 3984 are also referred to as session-specific packetization
modes.
6.5.2 Packetization Modes for Multi-Source Transmission
When multi-source transmission (MST) is used this memo specifies
four cases of MST packetization modes:
o Non-interleaved timestamp based mode (NI-T);
o Non-interleaved cross-session decoding order number (CS-DON)
based mode (NI-C);
o Non-interleaved combined timestamp and CS-DON mode (NI-TC); and
o Interleaved CS-DON (I-C) mode.
These four modes differ in two ways. First, they differ in terms of
if they require that the NAL units are transmited in NAL unit
decoding order (non-interleaved) or if they allow them to be
transmitted in an arbitrary order (interleaved). Second, they differ
in the mechanisms they provide in order to recover the correct
decoding order of the NAL units across all RTP sessions involved.
The NI-T, NI-C, and NI-TC modes do not allow interleaving, and are
thus targeted for systems that require relatively low end-to-end
latency, e.g. conversational systems. The I-C mode allows
interleaving and is thus targeted for systems that do not require
very low end-to-end latency.
The NI-T and NI-TC modes use timestamps to recover the decoding
order of NAL units, whereas NI-TC, NI-C, and I-C all use the CS-DON
mechanism (explained later on) to do so. Note that the NI-TC mode
uses both timestamps and the CS-DON method; receivers in this case
may use either method for performing decoding order recovery.
Wenger, et al Expires December 30, 2008 [Page 22]
Internet-Draft RTP Payload Format for SVC Video June 2008
The MST packetization mode in use MAY be signaled by the value of
the OPTIONAL pmode media type parameter or by external means. When
the value of pmode is equal to "NI-T", the NI-T mode MUST be used.
When the value of pmode is equal to "NI-C", the NI-C mode MUST be
used. When the value of pmode is equal to "NI-TC" or pmode is not
present, the NI-TC mode MUST be used. When the value of pmode is
equal to "I-C", the I-C mode MUST be used. [Ed.Note(YkW): There MAY
be at most one global pmode present in the SDP common for all the
multiplexed RTP sessions. It is also possible to have pmode
session-specific in the SDP, but then all the multiplexed sessions
MUST have the same value of this parameter. When pmode is not
present, the NI-TC mode is implied.]
The used MST packetization mode governs which session-specific
packetization modes are allowed in the associated RTP sessions,
which in turn govern which NAL unit types are allowed as RTP
payloads.
Table 2 summarizes the allowed session-specific packetization modes
for the NI-T, NI-C and NI-TC packetization modes. Table 3
summarizes the allowed session-specific packetization modes for the
I-C packetization mode.
Table 2 Summary of allowed session-specific packetization modes for
the NI-T, NI-C and NI-TC packetization modes (yes = allowed, no =
disallowed)
Session-Specific Mode Base Session Enhancement Session
----------------------------------------------------------
Single NAL Unit Mode yes no
Non-Interleaved Mode yes yes
Interleaved Mode no no
Table 3 Summary of allowed session-specific packetization modes for
the I-C packetization mode (yes = allowed, no = disallowed)
Session-Specific Mode Base Session Enhancement Session
----------------------------------------------------------
Single NAL Unit Mode no no
Non-Interleaved Mode no no
Interleaved Mode yes yes
Table 4 summarizes the allowed NAL unit types for each allowed
session-specific packetization mode of the NI-T packetization mode.
Table 5 summarizes the allowed NAL unit types for each allowed
session-specific packetization mode of the NI-C and NI-TC
packetization modes. Table 6 summarizes the allowed NAL unit types
Wenger, et al Expires December 30, 2008 [Page 23]
Internet-Draft RTP Payload Format for SVC Video June 2008
for the only allowed session-specific packetization mode (i.e. the
interleaved mode) of the I-C packetization mode.
Table 4 Summary of allowed NAL unit types for each session-specific
packetization mode of the NI-T packetization mode (yes = allowed, no
= disallowed, ig = ignore)
Type Packet Single NAL Non-Interleaved
Unit Mode Mode
------------------------------------------------
0 undefined ig ig
1-23 NAL unit yes yes
24 STAP-A no yes
25 STAP-B no no
26 MTAP16 no no
27 MTAP24 no no
28 FU-A no yes
29 FU-B no no
30 PACSI no yes
31 NI-MTAP no yes
Table 5 Summary of allowed NAL unit types for each session-specific
packetization mode of the NI-C and NI-TC packetization modes (yes =
allowed, no = disallowed, ig = ignore)
Type Packet Single NAL Non-Interleaved
Unit Mode Mode
------------------------------------------------
0 undefined ig ig
1-23 NAL unit yes yes
24 STAP-A no yes
25 STAP-B no no
26 MTAP16 no no
27 MTAP24 no no
28 FU-A no yes
29 FU-B no no
30 PACSI yes yes
31 NI-MTAP no yes
Wenger, et al Expires December 30, 2008 [Page 24]
Internet-Draft RTP Payload Format for SVC Video June 2008
Table 6 Summary of allowed NAL unit types for the session-specific
packetization mode of the I-C packetization mode (yes = allowed, no
= disallowed, ig = ignore)
Type Packet Interleaved
Mode
------------------------------
0 undefined ig
1-23 NAL unit no
24 STAP-A no
25 STAP-B yes
26 MTAP16 yes
27 MTAP24 yes
28 FU-A yes
29 FU-B yes
30 PACSI yes
31 undefined no
The NAL unit type values indicated as undefined in Tables 3.3, 3.4
and 3.5 are reserved for future extensions. NAL units of those
types SHOULD NOT be sent by a sender and MUST be ignored by a
receiver. Note that NAL unit type 30 and 31 are indicated as
undefined in RFC 3984, therefore RFC 3984 receivers MUST ignore NAL
units of this type, if present.
6.6 Aggregation Packets
Please see Section 5.7 of [RFC3984].
6.7 Fragmentation Units (FUs)
Please see section 5.8 of [RFC3984].
6.8 Payload Content Scalability Information (PACSI) NAL Unit
One of the two new NAL unit types specified in this memo is the
Payload Content Scalability Information (PACSI) NAL unit. The
OPTIONAL PACSI NAL unit, if present, MUST be the first NAL unit in
an aggregation packet or the NAL unit in a single NAL unit packet,
and it MUST NOT be present in other types of packets. The PACSI NAL
unit, when included in an aggregation packet, indicates scalability
information and other characteristics that are common for all the
remaining NAL units in the payload of the aggregation packet.
Furthermore, a PACSI NAL unit MAY contain zero or more SEI NAL
units. The PACSI NAL unit makes it easier for MANEs to decide
Wenger, et al Expires December 30, 2008 [Page 25]
Internet-Draft RTP Payload Format for SVC Video June 2008
whether to forward/process/discard the aggregation packet containing
the PACSI NAL unit. Additional reasons to use PACSI NAL units are
indicated later on, in the specification of the semantics of the
fields. Senders MAY create PACSI NAL units and receivers MAY ignore
them, or use them as hints to enable efficient aggregation packet
processing or decoding order recovery in multi-source transmission.
Note that the NAL unit type for the PACSI NAL unit (type 30) is
among the types that are left unspecified in [H.264] and [RFC3984].
When the first aggregation unit of an aggregation packet contains a
PACSI NAL unit, there MUST be at least one additional aggregation
unit present in the same packet. The RTP header and payload header
fields of the aggregation packet are set according to the remaining
NAL units in the aggregation packet.
When a PACSI NAL unit is included in a multi-time aggregation packet
(MTAP), the decoding order number (DON) for the PACSI NAL unit MUST
be set to indicate that the PACSI NAL unit has an identical DON to
the first NAL unit in decoding order among the remaining NAL units
in the aggregation packet.
When a PACSI NAL unit is included in a single NAL unit packet, the
RTP header and payload header fields of the packet are set according
to the next non-PACSI NAL unit in transmission order.
The structure of a PACSI NAL unit is as follows. The first four
octets are exactly the same as the four-byte SVC NAL unit header
discussed in Section 5.35.3. They are followed by one octet
containing several flags, then five optional octets, and finally
zero or more SEI NAL units. Each SEI NAL unit is preceded by a 16-
bit unsigned size field (in network byte order) that indicates the
size of the following NAL unit in bytes (excluding these two octets,
but including the NAL unit type octet of the SEI NAL unit). Figure
1 illustrates the PACSI NAL unit structure and an example of a PACSI
NAL unit containing two SEI NAL units.
The bits A, P, C, S, and E are specified only if the bit X is equal
to 1. The fields TL0PICIDX and IDRPICID are present only if the bit
Y is equal to 1. The field DONC is present only if the bit T is
equal to 1. The field T MUST be equal to 0 if the aggregation
packet containing the PACSI NAL unit is not an STAP-A packet.
Wenger, et al Expires December 30, 2008 [Page 26]
Internet-Draft RTP Payload Format for SVC Video June 2008
0 1 2 3
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|NRI| Type |R|I| PRID |N| DID | QID | TID |U|D|O| RR|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X|Y|T|A|P|C|S|E| TL0PICIDX (o.)| IDRPICID (o.) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DONC (o.) | NAL unit size 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| SEI NAL unit 1 |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | NAL unit size 2 | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
| SEI NAL unit 2 |
| +-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1 PACSI NAL unit structure. Fields suffixed by
"(o.)" are OPTIONAL.
The values of the fields in PACSI NAL unit MUST be set as follows.
The term "target NAL unit" is used in the semantics of some fields.
When the PACSI NAL unit is included in an aggregation packet, a
"target NAL unit" refers to one or more NAL units that are contained
in the aggregation packet, but not included in the PACSI NAL unit
itself, that are in the same access unit as the first NAL unit
following the PACSI NAL unit in the aggregation packet. When the
PACSI NAL unit is included in a single NAL unit packet, a "target
NAL unit" refers to the next non-PACSI NAL unit in transmission
order.
o The F bit MUST be set to 1 if the F bit in at least one of the
remaining NAL units in the payload of the aggregation packet is
equal to 1 (when the PACSI NAL unit is included in an aggregation
packet) or if the next non-PACSI NAL unit in transmission order
has the F bit equal to 1 (when the PACSI NAL unit is included in
a single NAL unit packet). Otherwise, the F bit MUST be set
to 0.
Wenger, et al Expires December 30, 2008 [Page 27]
Internet-Draft RTP Payload Format for SVC Video June 2008
o The NRI field MUST be set to the highest value of NRI field among
all the remaining NAL units in the payload of the aggregation
packet (when the PACSI NAL unit is included in an aggregation
packet) or the value of the NRI field of the next non-PACSI NAL
unit in transmission order (when the PACSI NAL unit is included
in a single NAL unit packet).
o The Type field MUST be set to 30.
o The R bit MUST be set to 1. Receivers SHOULD ignore the value of
R.
o The I bit MUST be set to 1 if the I bit of at least one of the
remaining NAL units in the payload of the aggregation packet is
equal to 1 (when the PACSI NAL unit is included in an aggregation
packet) or if the I bit of the next non-PACSI NAL unit in
transmission order is equal to 1 (when the PACSI NAL unit is
included in a single NAL unit packet). Otherwise, the I bit MUST
be set to 0.
o The PRID field MUST be set to the lowest value of the PRID values
of all the remaining NAL units in the payload of the aggregation
packet (when the PACSI NAL unit is included in an aggregation
packet) or the PRID value of the next non-PACSI NAL unit in
transmission order (when the PACSI NAL unit is included in a
single NAL unit packet).
o The N bit MUST be set to 1 if the N bit of all the remaining NAL
units in the payload of the aggregation packet is equal to 1
(when the PACSI NAL unit is included in an aggregation packet) or
if the N bit of the next non-PACSI NAL unit in transmission order
is equal to 1 (when the PACSI NAL unit is included in a single
NAL unit packet). Otherwise, the N bit MUST be set to 0.
o The DID field MUST be set to the lowest value of the DID values
of all the remaining NAL units in the payload of the aggregation
packet (when the PACSI NAL unit is included in an aggregation
packet) or the DID value of the next non-PACSI NAL unit in
transmission order (when the PACSI NAL unit is included in a
single NAL unit packet).
o The QID field MUST be set to the lowest value of the QID values
of all the remaining NAL units with the lowest value of DID in
the payload of the aggregation packet (when the PACSI NAL unit is
included in an aggregation packet) or the QID value of the next
non-PACSI NAL unit in transmission order (when the PACSI NAL unit
is included in a single NAL unit packet).
Wenger, et al Expires December 30, 2008 [Page 28]
Internet-Draft RTP Payload Format for SVC Video June 2008
o The TID field MUST be set to the lowest value of the TID values
of all the remaining NAL units with the lowest value of DID in
the payload of the aggregation packet (when the PACSI NAL unit is
included in an aggregation packet) or the TID value of the next
non-PACSI NAL unit in transmission order (when the PACSI NAL unit
is included in a single NAL unit packet).
o The U bit MUST be set to 1 if the U bit of at least one of the
remaining NAL units in the payload of the aggregation packet is
equal to 1 (when the PACSI NAL unit is included in an aggregation
packet) or if the U bit of the next non-PACSI NAL unit in
transmission order is equal to 1 (when the PACSI NAL unit is
included in a single NAL unit packet). Otherwise, the U bit MUST
be set to 0.
o The D bit MUST be set to 1 if the D value of all the remaining
NAL unit in the payload is equal to 1 (when the PACSI NAL unit is
included in an aggregation packet) or if the D bit of the next
non-PACSI NAL unit in transmission order is equal to 1 (when the
PACSI NAL unit is included in a single NAL unit packet).
Otherwise, the D bit MUST be set to 0.
o The O bit MUST be set to 1 if the O bit of at least one of the
remaining NAL units in the payload of the aggregation packet is
equal to 1 (when the PACSI NAL unit is included in an aggregation
packet) or if the O bit of the next non-PACSI NAL unit in
transmission order is equal to 1 (when the PACSI NAL unit is
included in a single NAL unit packet). Otherwise, the O bit MUST
be set to 0.
o The RR field MUST be set to '11' (in binary form). Receivers
SHOULD ignore the value of RR.
o If the X bit is equal to 1, the bits A, P, and C are specified as
below. Otherwise, the bits A, P, and C are unspecified, and
receivers MUST ignore these bits. The X bit SHOULD be identical
for all the PACSI NAL units in all the RTP sessions carrying the
same SVC bitstream.
o If the Y bit is equal to 1, the OPTIONAL fields TL0PICIDX and
IDRPICID MUST be present and specified as below, and the bits S
and E are also specified as below. Otherwise, the fields
TL0PICIDX and IDRPICID MUST NOT be present, whereas the S and E
bits are unspecified and receivers MUST ignore these bits. The Y
bit SHOULD be identical for all the PACSI NAL units in all the
RTP sessions carrying the same SVC bitstream.
Wenger, et al Expires December 30, 2008 [Page 29]
Internet-Draft RTP Payload Format for SVC Video June 2008
o If the T bit is equal to 1, the OPTIONAL field DONC MUST be
present and specified as below. Otherwise, the field DONC MUST
NOT be present.
o The A bit MUST be set to 1 if all the target NAL units belong to
anchor layer representations. Otherwise, the A bit MUST be set
to 0. The A bit SHOULD be identical for all the PACSI NAL units
for which the target NAL units belong to the same access unit.
Informative note: The A bit indicates whether CGS or spatial
layer switching at a non-IDR layer representation (a layer
representation with nal_unit_type not equal to 5 and idr_flag not
equal to 1) can be performed. When a picture coding structure
such as IBBP is in use, a non-IDR intra layer representation can
be used for random access. Compared to using only IDR layer
representations, higher coding efficiency can be achieved. The
H.264/AVC or SVC solution to indicate the random accessibility of
a non-IDR intra layer representation is using a recovery point
SEI message. The A bit offers direct access to this information,
without having to parse the recovery point SEI message, which may
be buried deeply in an SEI NAL unit. Furthermore, the SEI
message may not be present in the bitstream.
o The P bit MUST be set to 1 if all the remaining NAL units in the
payload of the aggregation packet have redundant_pic_cnt greater
than 0 (when the PACSI NAL unit is included in an aggregation
packet) or the next non-PACSI NAL unit in transmission order has
redundant_pic_cnt greater than 0 (when the PACSI NAL unit is
included in a single NAL unit packet). Otherwise, the P bit MUST
be set to 0.
Informative note: The P bit indicates whether a packet can be
discarded because it contains only redundant slice NAL units.
Without this bit, the corresponding information can be obtained
from the syntax element redundant_pic_cnt, which is containedin
the variable-length coded slice header.
o The C bit MUST be set to 1 if all the target NAL units belong to
intra layer representations. Otherwise, the C bit MUST be set to
0. The C bit SHOULD be identical for all the PACSI NAL units for
which the target NAL units belong to the same access unit.
Informative note: The C bit indicates whether a packet contains
intra slices, which may be the only packets to be forwarded,,
e.g. when the network conditions are particularly adverse.
Wenger, et al Expires December 30, 2008 [Page 30]
Internet-Draft RTP Payload Format for SVC Video June 2008
o The S bit MUST be set to 1, if the first VCL NAL unit, in
decoding order, of the layer representation containing the first
NAL unit following the PACSI NAL unit in the aggregation packet
is present in the payload (when the PACSI NAL unit is included in
an aggregation packet) or if the next non-PACSI NAL unit in
transmission order is the first VCL NAL unit, in decoding order,
of a layer representation (when the PACSI NAL unit is included in
a single NAL unit packet). Otherwise, the S bit MUST be set to
0.
o The E bit MUST be set to 1, if the last VCL NAL unit, in decoding
order, of the layer representation containing the first NAL unit
following the PACSI NAL unit in the aggregation packet is present
in the payload (when the PACSI NAL unit is included in an
aggregation packet) or if the next non-PACSI NAL unit in
transmission order is the last VCL NAL unit, in decoding order,
of a layer representation (when the PACSI NAL unit is included in
a single NAL unit packet). Otherwise, the E field MUST be set to
0.
Informative note: The S or E bit indicates whether the first or
last slice, in transmission order, of a layer representation is
in a packet, to enable a MANE to detect slice loss and take
proper action such as requesting a retransmission as soon as
possible, as well as to allow efficient playout buffer handling
similarly to the M bit present in the RTP header. The M bit in
the RTP header still indicates the end of an access unit, not the
end of a layer representation.
o When present, the TL0PICIDX field MUST be set to equal to
tl0_dep_rep_idx as specified in Annex G of [H.264] for the layer
representation containing the first NAL unit following the PACSI
NAL unit in the aggregation packet (when the PACSI NAL unit is
included in an aggregation packet) or containing the next non-
PACSI NAL unit in transmission order (when the PACSI NAL unit is
included in a single NAL unit packet).
o When present, the IDRPICID field MUST be set to equal to
effective_idr_pic_id as specified in Annex G of [H.264] for the
layer representation containing the first NAL unit following the
PACSI NAL unit in the aggregation packet (when the PACSI NAL unit
is included in an aggregation packet) or containing the next non-
PACSI NAL unit in transmission order (when the PACSI NAL unit is
included in a single NAL unit packet).
Informative note: The TL0PICIDX and IDRPICID fields enable the
detection of the loss of layer representations in the most
Wenger, et al Expires December 30, 2008 [Page 31]
Internet-Draft RTP Payload Format for SVC Video June 2008
important temporal layer (0) by receivers as well as MANEs. SVC
provides a solution that uses SEI messages, which are harder to
parse and may not be present in the bitstream at all.
o When present, the field DONC indicates the Cross-Session Decoding
Order Number (CS-DON) for the first NAL unit of the remaining NAL
units in the aggregation packet (when the PACSI NAL unit is
included in an aggregation packet) or the CS-DON of the next non-
PACSI NAL unit in transmission order (when the PACSI NAL unit is
included in a single NAL unit packet). The CS-DON is further
discussed in Section 6.10.
The PACSI NAL unit SHALL include a subset (zero to all) of the SEI
NAL units associated with the access unit to which the target NAL
units belong, and SHALL NOT contain SEI NAL units associated with
any other access unit. [Ed. (AE): Is the intention here to say: if
the AU has SEI messages, then they must all be included in the
PACSI. Or to say that the PACSI MAY include one or more of the SEI
NAL units..., i.e., to make it an option? The Informative note below
seems to indicate the latter (it uses the word "may").]
Informative note: Senders may repeat such SEI NAL units in the
PACSI NAL unit, so that they are repeated in more than one packet
and thus increase robustness against packet loss. Receivers may
use the repeated SEI messages in place of missing SEI messages.
In H.264/AVC and SVC, within each access unit, SEI NAL units must
appear before any VCL NAL unit in decoding order. Therefore,
without using PACSI NAL units, SEI messages are typically only
conveyed in the first of the packets comprising an access unit.
When the PACSI NAL unit is included in an aggregation packet, an SEI
message SHOULD NOT be included in the PACSI NAL unit and included in
one of the remaining NAL units contained in the same aggregation
packet.
6.9 Non-Interleaved Multi-Time Aggregation Packets (NI-MTAPs)
The second new NAL unit type introduced in this memois the Non-
Interleaved Multi-Time Aggregation packet (NI-MTAP). An NI-MTAP
consists of zero or more non-interleaved multi-time aggregation
units, as shown in Figure 2.
Informative note: The rule above differs from the constraint on
aggregation packets present in [RFC3984], where at least one NAL
unit must be contained in the aggregation packet.
Wenger, et al Expires December 30, 2008 [Page 32]
Internet-Draft RTP Payload Format for SVC Video June 2008
The NI-MTAP consists of 16 bits of unsigned size information of the
following NAL unit (in network byte order), and 16 bits (in network
byte order) of timestamp offset (TS offset) for this NAL unit.
The structure of the multi-time aggregation units for the NI-MTAP is
presented in Figure 2. The starting or ending position of an
aggregation unit within a packet MAY not be on a 32-bit word
boundary. The NAL units in the NI-MTAP are ordered in NAL unit
decoding order.
The term NAL unit Effective Timestamp (ETS) is defined as the value
that the RTP timestamp would have if the particular NAL unit was
transported in its own RTP packet. This value is different from the
actual RTP timestamp present in the packet carrying the particular
NAL units in MTAP packets.
Let ETS be the effective timestamp of a NAL unit and TS the actual
RTP timestamp of the packet carrying the NAL unit. The timestamp
offset field MUST be set to a value equal to the value of the
following formula: If ETS >= TS, then TS offset = ETS - TS. If ETS
< TS, then TS offset = ETS + (2^32 - TS).
0 1 2 3
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: NAL unit size | TS offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| NAL unit |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2 Non-interleaved Multi-time aggregation unit for
NI-MTAP
For the "earliest" multi-time aggregation unit in an MTAP the
timestamp offset MUST be zero. Hence, the RTP timestamp of the MTAP
itself is identical to the earliest NAL unit effective timestamp.
Informative note: The "earliest" multi-time aggregation unit is the
one that would have the smallest extended RTP timestamp among all
the aggregation units of an MTAP if the aggregation units were
encapsulated in single NAL unit packets. An extended timestamp is a
timestamp that has more than 32 bits and is capable of counting the
wraparound of the timestamp field, thus enabling one to determine
Wenger, et al Expires December 30, 2008 [Page 33]
Internet-Draft RTP Payload Format for SVC Video June 2008
the smallest value if the timestamp wraps. Such an "earliest"
aggregation unit may not be the first one in the order in which the
aggregation units are encapsulated in an NI-MTAP. The "earliest"
NAL unit need not be the same as the first NAL unit in the NAL unit
decoding order either.
Figure 3 presents an example of an RTP packet that contains an NI-
MTAP multi-time aggregation packet that contains two non-interleaved
multi-time aggregation units, labeled as 1 and 2 in the figure.
0 1 2 3
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|NI-MTAPNAL HDR | NALU 1 Size | NALU 1 TS Off.|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NALU 1 TS Off.| NALU 1 HDR | NALU 1 DATA |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
: :
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++
| NALU 2 SIZE | NALU 2 TS Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NALU 2 HDR | NALU 2 DATA |
+-+-+-+-+-+-+-+-+ |
: :
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| :...OPTIONAL RTP padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3 An RTP packet including a NI-MTAP non-interleaved
multi-time aggregation packet and two non-interleaved multi-
time aggregation units
6.10 Decoding Order Number (DON)
The DON concept is introduced in RFC 3984 and is used to recover the
decoding order when interleaving is used within a single session.
Section 5.5 of [RFC3984] applies when using SST.
When using MST, it is necessary to recover the decoding order across
the various RTP sessions regardless if interleaving is used or not.
In addition to the timestamp mechanism desribed later on, the CS-DON
mechanism is an extension of the DON facility that can be used for
this purpose, and is defined in the following section.
Wenger, et al Expires December 30, 2008 [Page 34]
Internet-Draft RTP Payload Format for SVC Video June 2008
6.10.1 Cross-Session DON (CS-DON) for Multi-Source Transmission
The Cross-Session Decoding Order Number (CS-DON) is a number that
indicates the decoding order of NAL units across all sessions
involved in MST. It is similar to the DON concept in [H.264], but
contrary to RFC 3984 where the DON was used only for interleaved
packetization, in this memo it is used not only in the interleaved
mode (I-C) but also in two of the non-interleaved modes as well (NI-
C and NI-TC).
When the NI-C or NI-TC MST packetization modes are in use, the
packetization of each session MUST be as specified in Section 7.1.
In PACSI NAL units the CS-DON value is explicitly coded in the field
DONC. For non-PACSI NAL units the CS-DON value is derived as
follows. Let SN indicate the RTP sequence number of a packet, and
recall that the NAL unit effective timestamp (ETS) was defined in
Section 6.9 as the value that the RTP timestamp would have if that
NAL unit would be transported in its own RTP packet.
o For each non-PACSI NAL unit carried in a session using the single
NAL unit session-specific packetization mode, the CS-DON value of
the NAL unit is equal to (DONC_prev_PACSI + SN_diff - 1) % 65536,
wherein '%' is the modulo operation, DONC_prev_PACSI is the DONC
value of the previous PACSI NAL unit with the same ETS as the
current NAL unit, and SN_diff is calculated as follows:
if SN1 > SN2, SN_diff = SN1 - SN2
else SN_diff = SN2 + 65536 - SN1
where SN1 and SN2 are the SNs of the current NAL unit and the
previous PACSI NAL unit with the same ETS, respectively.
o For non-PACSI NAL units carried in a session using a non-
interleaved session-specific packetization mode (NI-TC, NI-C),
the CS-DON value of each non-PACSI NAL unit is derived as
follows.
. For a non-PACSI NAL unit in a single NAL unit packet, the
following applies.
. If the previous PACSI NAL unit is contained in a single
NAL unit packet, the CS-DON value of the NAL unit is
calculated as above when the single NAL unit session-
specific packetization mode is in use;
Wenger, et al Expires December 30, 2008 [Page 35]
Internet-Draft RTP Payload Format for SVC Video June 2008
. otherwise (the previous PACSI NAL unit is contained in
an STAP-A packet), the CS-DON value of the NAL unit is
equal to: (the CS-DON value of the previous non-PACSI
NAL unit in decoding order + 1) % 65536, where '%' is
the modulo operation.
. For a non-PACSI NAL unit in an STAP-A packet, the following
applies.
. If the non-PACSI NAL unit is the first non-PACSI NAL
unit in the STAP-A packet, the CS-DON value of the NAL
unit is equal to DONC of the PACSI NAL unit in the STAP-
A packet;
. otherwise (the non-PACSI NAL unit is not the first non-
PACSI NAL unit in the STAP-A packet), the CS-DON value
of the NAL unit is equal to: (the CS-DON value of the
previous non-PACSI NAL unit in decoding order + 1) %
65536, wherein '%' is the modulo operation.
. For a non-PACSI NAL unit in a number of FU-A packets, the CS-
DON value of the NAL unit is calculated as above when the
single NAL unit session-specific packetization mode is in
use, with SN1 being the SN value of the first FU-A packet.
When the I-C MST packetization mode is in use, the DON values
derived according to RFC 3984 of all the NAL units in each of the
multiplexed RTP sessions MUST indicate CS-DON values.
7. Packetization Rules
Section 6 of [RFC3984] applies in this memo, with the following
additions.
All receivers MUST support the single NAL unit packetization mode to
provide backward compatibility to endpoints supporting only the
single NAL unit mode of RFC 3984. However, the use of single NAL
unit packetization mode (packetization-mode equal to 0) SHOULD be
avoided whenever possible, because encapsulating NAL units of small
sizes in their own packets (e.g. small NAL units containing
parameter sets, prefix NAL units, or SEI messages) is less efficient
due to the packet header overhead.
All receivers MUST support the non-interleaved mode of [RFC3984].
Informative note: The non-interleaved mode does allow an
application to encapsulate a single NAL unit in a single RTP
Wenger, et al Expires December 30, 2008 [Page 36]
Internet-Draft RTP Payload Format for SVC Video June 2008
packet. Historically, the single NAL unit mode has been included
into [RFC3984] only for compatibility with ITU-T Rec. H.241 Annex
A [H.241]. There is no point in carrying this historic ballast
towards a new application space such as the one provided with
SVC. The implementation complexity increase for supporting the
additional mechanisms of the non-interleaved mode (namely STAP-A
and FU-A) is minor, whereas the benefits are significant. As a
result, STAP-A and FU-A implementation is required.
A NAL unit of small size SHOULD be encapsulated in an aggregation
packet together with one or more other NAL units. For example, non-
VCL NAL units such as access unit delimiter, parameter set, or SEI
NAL unit are typically small.
A prefix NAL unit and the NAL unit with which it is associated, and
which follows the prefix NAL unit in decoding order, SHOULD be
included in the same aggregation packet whenever an aggregation
packet is used for the associated NAL unit.
Informative note: Although the prefix NAL unit is ignored by an
H.264/AVC decoder, it is necessary in the SVC decoding process.
Given the small size of the prefix NAL unit, it is best if it is
transported in the same RTP packet as its associated NAL unit.
When the first aggregation unit of an aggregation packet contains a
PACSI NAL unit, there MUST be at least one additional aggregation
unit present in the same packet.
7.1 Packetization Rules for Multi-Source Transmission
When MST is used, decoding order recovery for NAL units carried in
the associated RTP sessions is needed. The following packetization
rules ensure that decoding order of NAL units carried in the
sessions can be correctly recovered for each of the MST
packetization modes using the de-packetization process specified in
Section 8.1.
The NI-T and NI-TC modes rely on timestamps to recover the decoding
order. In order to be able to do so, it is necessary for the SVC
stream to contain data for all sampling instances of a given layer
in all enhancement layers that depend on the given layer. The NI-TC,
NI-C, and I-C modes do not have this limitation, and use the CS-DON
value as a means to explicitly indicate decoding order, either
direcly coded in PACSI NAL units, or inferred from them using the
packetization rules. It is noted that the NI-TC mode offers both
techniques and it is up to the receiver to select which one to use.
Wenger, et al Expires December 30, 2008 [Page 37]
Internet-Draft RTP Payload Format for SVC Video June 2008
7.1.1 NI-T / NI-TC Packetization Rules
When the NI-T or NI-TC packetization mode is in use, the following
applies.
o If one or more NAL units of an access unit of sampling time
instance t is present in RTP session A, then one or more NAL
units of the same access unit of the same sampling time instance
t MUST be present in any enhancement RTP session which depends on
RTP session A.
Informative note: There are multiple ways to insert additional
NAL units in order to satisfy this rule:
- One option for adding additional NAL units is to place NI-
MTAP packets (defined in Section 6.9), and not include any
aggregation packet in the payload. Although empty, these
packets are used by the process described in Section 8.1.1 for
the access unit re-ordering process.
- Additional NAL units may also be added by repeating prefix
NAL units (NAL unit type 14). Before passing NAL units to the
decoder re-ordering of the access unit as described in Section
8.1.1 is needed. This may only be possible for access units
which contain base layer NAL units. [Ed. (TS): It may be
useful to indicate in the SDP parameters that additional NAL
unit re-ordering as specified in 7.1.4 is not required.][Ed.
(AE): I don't understand this comment.]
- Additional NAL units may also be added by placing single NAL
unit packets containing exactly one PACSI NAL unit in the
enhancement RTP sessions.
- Additional NAL units may also be added by the encoder
itself. This option, however, may not be available with pre-
encoded content.
o When not using NI-TC mode and a PACSI NAL unit is present, the T
bit MUST be equal to 0, i.e. the DONC field MUST NOT be present.
7.1.2 NI-C / NI-TC Packetization Rules
When the NI-C or NI-TC packetization mode is in use, the following
applies.
Wenger, et al Expires December 30, 2008 [Page 38]
Internet-Draft RTP Payload Format for SVC Video June 2008
o For each single NAL unit packet containing a non-PACSI NAL unit,
the previous packet, if present, MUST have the same RTP timestamp
as the single NAL unit packet, and the following applies.
. If the ETS of the non-PACSI NAL unit is not equal to the ETS
of the previous non-PACSI NAL unit in decoding order, the
previous packet MUST contain a PACSI NAL unit containing the
DONC field;
. Otherwise (the ETS of the non-PACSI NAL unit is equal to the
ETS of the previous non-PACSI NAL unit in decoding order),
the previous packet MAY contain a PACSI NAL unit containing
the DONC field.
o For each STAP-A packet, the first NAL unit in the STAP-A packet,
if present, MUST be a PACSI NAL unit containing the DONC field.
[Ed. (AE): Is it possible to have an empty STAP-A? Or was the "if
present" superfluous?]
o For each FU-A packet, if present, the previous packet MUST have
the same RTP timestamp as the FU-A packet, and the following
applies. [Ed. (AE): See the previous comment for STAP-A,
regarding the "if present" part.]
. If the FU-A packet is the start of the fragmented NAL unit,
the following applies;
. If the ETS of the fragmented NAL unit is not equal to
the ETS of the previous non-PACSI NAL unit in decoding
order, the previous packet MUST contain a PACSI NAL unit
containing the DONC field;
. Otherwise (the ETS of the fragmented NAL unit is equal
to the ETS of the previous non-PACSI NAL unit in
decoding order), the previous packet MAY contain a PACSI
NAL unit containing the DONC field.
. Otherwise if the FU-A packet is the end of the fragmented NAL
unit, the following applies.
. If the next non-PACSI NAL unit in decoding order has ETS
equal to the ETS of the fragmented NAL unit, and is
carried in a number of FU-A packets or a single NAL unit
packet, the next packet MUST be a single NAL unit packet
containing a PACSI NAL unit containing the DONC field.
[Ed. (AE): Does this mean I am inserting a single RTP
packet with just PACSI in it? Just to make sure.]
Wenger, et al Expires December 30, 2008 [Page 39]
Internet-Draft RTP Payload Format for SVC Video June 2008
. Otherwise (the FU-A packet is neither the start nor the end of
the fragmented NAL unit), the previous packet MUST be a FU-A
packet.
o For each single NAL unit packet containing a PACSI NAL unit, if
present, the PACSI NAL unit MUST contain the DONC field.
7.1.3 I-C Packetization Rules
When the I-C session-multiplexing packetization mode is in use, the
following applies.
o When a PACSI NAL unit is present, the T bit MUST be equal to 0,
i.e., the DONC field MUST NOT be present.[Ed. (AE): Why?
Revisit.]
7.1.4 Packetization Rules for Non-VCL NAL Units
NAL units which do not directly encode video slices are known in
H.264 as non-VCL NAL units. Non-VCL units that are only used by, or
only relevant to, enhancement RTP sessions SHOULD be sent in the
lowest session to which they are relevant.
Some senders, however, such as those sending pre-encoded data, might
not be able to easily determine which non-VCL units are relevant to
which session. Thus, essential non-VCL NAL units (parameter sets
sent in-band, i.e., NAL unit types 7, 8, 13, and 15) MAY, instead,
be sent in session that the one they are used by depends on (e.g.,
the base RTP session), and non-essential non-VCL NAL units MAY be
sent in any RTP session.
If a non-VCL unit is relevant to more than one RTP session, neither
of which depends on the other(s), the NAL unit MAY be sent in
another session which all these sessions depend on. Alternatively,
it MAY be repeated in all such sessions. In general, identical non-
VCL units MAY be sent in more than one session for redundancy. [Ed.
(JL): Can this cause issues with HRD timing?]
7.1.5 Packetization Rules for Prefix NAL Units
When the base layer is sent on an RTP session using the Non-
Interleaved or the Interleaved mode, prefix NAL units SHOULD be
aggregated (using STAP-A or STAP-B units) with the NAL unit they
prefix, unless this would violate session MTU constraints or if
fragmentation units are used.
Wenger, et al Expires December 30, 2008 [Page 40]
Internet-Draft RTP Payload Format for SVC Video June 2008
If the base layer is sent in a base RTP session using RFC 3984,
prefix NAL units MAY be sent in the lowest enhancement RTP session
rather than in the base RTP session.
8. De-Packetization Process
For single-source transmission where a single RTP session is used,
the de-packetization process specified in Section 7 of [RFC3984]
applies. [Ed. (??): with some fixes to section 7 of RFC 3984 and
some changes/additions to section 7.3 (Additional De-Packetization
Guidelines) of RFC 3984 - TBD]
For multi-source transmission, where more than one RTP sessions are
used to receive data from the same SVC bitstream, the de-
packetization process is specified in Section 8.1.
8.1 De-Packetization Process for Multi-Source Transmission
As for a single RTP session, the general concept behind the de-
packetization process is to reorder NAL units from transmission
order to the NAL unit decoding order.
The sessions to be received SHALL be identified by mechanisms
specified in [I-D.ietf-mmusic-decoding-dependency]. Enhancement RTP
sessions typically contain an RTP stream that depends on at least
one other RTP session, as indicated by mechanisms defined in [I-
D.ietf-mmusic-decoding-dependency]. A lower RTP session to an
enhancement RTP session is an RTP session which the enhancement RTP
session depends on. The lowest RTP session for a receiver is the
base RTP session, which does not depend on any other RTP session
received by the receiver. The highest RTP session for a receiver is
the RTP session which no other RTP session received by the receiver
depends on.
For each of the RTP sessions, the RTP reception process as specified
in RFC 3550 is applied. Then the received packets are passed in
increasing order of sequence number into the payload de-
packetization to NAL units as defined in this memo.
The decoding order of the NAL units carried in all the associated
RTP sessions is then recovered by applying one of the following
subsections, depending on which of the MST packetization modes is in
use.
Wenger, et al Expires December 30, 2008 [Page 41]
Internet-Draft RTP Payload Format for SVC Video June 2008
8.1.1 Decoding Order Recovery for the NI-T and NI-TC Modes
The following process SHALL be applied when the NI-T packetization
mode is in use. The following process MAY be applied when the NI-TC
packetization mode is in use.
The process is based on RTP session dependency signaling, RTP
sequence numbers, and timestamps.
The decoding order of NAL units within an RTP packet stream in RTP
session S is given by the ordering of sequence numbers SN of the RTP
packets the NAL units are contained in. In an aggregation packet
contained in an RTP packet the decoding order is given by the order
of appearance of the NAL units within the packet. The RTP session
identifier S gives the increasing order of dependency of the
received RTP sessions as indicated by mechanisms specified in
Section 9.2.3, where S equal to 0 identifies the base RTP session.
[Ed. (AE): Does the mmusic draft excplicitly order t