Signaling Media Decoding Dependency in the Session Description Protocol (SDP)
Extracted elements (24)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
IANA registered the 'DDP' (Decoding Dependency) token in the Semantics for the 'group' SDP Attribute under SDP Parameters, per RFC 5583.
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.
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.
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.
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.
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.