rfc-5583

Signaling Media Decoding Dependency in the Session Description Protocol (SDP)

T. Schierl, S. Wenger
date2009-07 streamIETF areaart wgmmusic statusPROPOSED STANDARD pages18 canonicalhttps://www.rfc-editor.org/rfc/rfc5583 doi10.17487/RFC5583 errataview
This memo defines semantics that allow for signaling the decoding dependency of different media descriptions with the same media type in the Session Description Protocol (SDP). This is required, for example, if media data is separated and transported in different network streams as a result of the use of a layered or multiple descriptive media coding process. A new grouping type "DDP" -- decoding dependency -- is defined, to be used in conjunction with RFC 3388 entitled "Grouping of Media Lines in the Session Description Protocol". In addition, an attribute is specified describing the relationship of the media streams in a "DDP" group indicated by media identification attribute(s) and media format description(s). [STANDARDS-TRACK]

Extracted elements (24)

design-rationale §1

Although the immediate trigger for this document was the RTP payload format for H.264 SVC, the authors deliberately designed a generic solution applicable to all layered and MDC codecs rather than an SVC-specific extension, anticipating use by Multi-View Coding and future formats.

realtime, rtp

design-rationale §4.1

MDC was included in scope despite limited current adoption because the signaling solution is very similar to layered coding and MDC media formats are anticipated within the lifetime of the document; the mechanism is extensible to new dependency types via new Standards-Track-registered codepoints.

realtime, rtp

design-rationale §4.1

The existing SDP support for layered media assumes a one-dimensional hierarchy where a higher transport address identifies a higher layer, making identification of an Operation Point trivial. Newer media formats such as SVC and MVC use tree-shaped dependency hierarchies that SDP cannot express, necessitating the new DDP mechanism.

realtime, rtp

interoperability-note §6.1

A node that does not understand DDP grouping SHOULD respond to an offer containing DDP grouping either by ignoring the grouping attribute or by refusing the request (e.g., SIP 488/606). If the original offerer still wishes to communicate after a refusal caused by DDP, it SHOULD retry with a single media stream representing one Operation Point.

realtime, sip, rtp

interoperability-note §6.2

If an RTSP receiver understands DDP signaling, it SHALL set up all media streams required to decode its chosen Operation Point. If it does not understand DDP signaling, it falls back to normal SDP processing, selecting from media types within its capabilities.

realtime, rtp

interoperability-note §9

This specification explicitly restricts a media description to membership in at most one DDP group per session description, even though RFC 3388bis (work in progress) extends the grouping mechanism to allow membership in multiple groups of the same type.

realtime, rtp

normative-requirement §5.1 MUST NOT

All media descriptions grouped under a DDP group MUST have the same media type. A media description MUST NOT be part of more than one group of the DDP grouping type defined in this specification.

realtime, rtp

normative-requirement §6.1 MUST

For unicast sessions where the answerer receives media, the answerer MAY remove media Operation Points but MUST use the dependency relations from the offer when sending. For multicast sessions, the answerer MUST accept all Operation Points and their dependencies or MUST remove non-accepted Operation Points completely.

realtime, rtp

normative-requirement §5.2.1 MUST

In a DDP group, all media streams MUST have the same type of decoding dependency as signaled by the 'depend' attribute. When using multiple codecs (e.g., for Offer/Answer), the media streams MUST have the same dependency structure regardless of which RTP payload type number is used.

realtime, rtp

normative-requirement §5.2.2 MUST

New dependency types beyond 'lay' and 'mdc' MUST be defined in an IETF Standards-Track document. New registrations for semantics of the 'depend' SDP attribute are added by the 'Specification Required' policy.

realtime, registry

normative-requirement §5.2.2 MUST

The depend-attribute MUST be followed by a sequence of dependent-fmt and corresponding dependency-tag fields that identify all related media format descriptions in all related media descriptions. There MUST be exactly one dependency-tag indicated per dependent-fmt.

realtime, rtp

normative-requirement §6.1 MUST

The offerer decides the number of media streams and the dependency between them; the answerer cannot change the dependency relations. The answerer MUST use the dependency relations provided in the offer when sending media.

realtime, rtp, sip

normative-requirement §6.3 MUST NOT

The signaling mechanisms defined in this document MUST NOT be used to negotiate between using the AVP and SAVP RTP profiles. Both profiles MAY be used separately or jointly with the DDP signaling mechanism.

realtime, rtp

protocol-element §3

A Media Partition is a subset of a Media Bitstream intended for independent transportation. In layered coding it represents one or more layers; in MDC coding it represents one or more descriptions. An integer number of Media Partitions forms a complete Media Bitstream.

realtime, rtp

protocol-element §3

An Operation Point is, in layered coding, the subset of a layered Media Bitstream that includes all Media Partitions required for reconstruction at a certain quality level without any extraneous partitions. In MDC coding, it is a subset of an MDC Media Bitstream compliant with the MDC coding standard.

realtime, rtp

protocol-element §5.2.1

The 'DDP' (Decoding Dependency) grouping semantic associates media streams, identified by their 'mid' attribute, into a group where all streams share the same type of decoding dependency. Each media stream in a DDP group must be composed of an integer number of Media Partitions and must contain at least one Operation Point.

realtime, rtp

protocol-element §5.2.2

The 'lay' dependency type identifies the described media stream as one or more Media Partitions of a layered Media Bitstream. When 'lay' is used, all media streams required for decoding the Operation Point MUST be identified by identification-tag and fmt-dependency following the 'lay' string.

realtime, rtp

protocol-element §5.2.2

The 'mdc' dependency type signals that the described media stream is part of a set of a Multiple Description Coding (MDC) Media Bitstream. At least N-out-of-M media streams of the group are required to form an Operation Point; the values of N and M are not signaled within the depend attribute.

realtime, rtp

registry §8

IANA registered the 'DDP' (Decoding Dependency) token in the Semantics for the 'group' SDP Attribute under SDP Parameters, per RFC 5583.

registry, realtime

registry §8

IANA registered the 'depend' media-level-only SDP attribute (long form: 'decoding dependency') in the 'att-field (media level only)' registry under SDP Parameters. New semantics tokens for 'depend' are added under the 'Specification Required' policy.

registry, realtime

registry §8

IANA registered two initial tokens in the Semantics for the 'depend' SDP Attribute registry: 'lay' for layered decoding dependency and 'mdc' for multi-descriptive decoding dependency, both referencing RFC 5583.

registry, realtime

security-consideration §7

An attacker may manipulate the dependency signaling in a session description, potentially causing a receiver to attempt composing a Media Bitstream from RTP streams that do not form a valid Operation Point, with potentially fatal consequences for the media decoding process.

security, realtime

security-consideration §7

It is recommended that the receiver SHOULD perform an integrity check on SDP and follow the security considerations of SDP to only trust SDP from trusted sources, as a mitigation against dependency-signaling manipulation attacks.

security, realtime

wire-format §5.2.2

The 'depend' media-level attribute uses ABNF syntax: 'a=depend:' followed by a dependent-fmt, a SP, and a dependency-tag, with additional semicolon-separated pairs. The dependency-tag encodes a dependency-type ('lay', 'mdc', or token) optionally followed by an identification-tag and colon-separated fmt-dependency values.

realtime, rtp