1. Introduction (Einführung)
1.1. Terminology (Terminologie)
Dieses Dokument verwendet die Terminologie aus [RFC8825]. Zusätzlich gelten die folgenden Begriffe wie unten beschrieben:
RTP-Stream: Ein Strom von RTP-Paketen mit Mediendaten [RFC7656].
MediaStream: Eine Zusammenstellung von MediaStreamTracks [W3C.CR-mediacapture-streams]. Ein MediaStream kann mehrere MediaStreamTracks gleichen oder unterschiedlichen Typs enthalten.
MediaStreamTrack: In [W3C.CR-mediacapture-streams] definiert als unidirektionaler Medienfluss (entweder Audio oder Video, nicht beides). Entspricht dem Begriff „source stream“ in [RFC7656]. Ein MediaStreamTrack kann in null, einem oder mehreren MediaStreams vorkommen.
Medienbeschreibung: In [RFC4566] definiert als Menge von Feldern, beginnend mit einem m=-Feld und endend entweder beim nächsten m=-Feld oder am Ende der Sitzungsbeschreibung.
Die Schlüsselwörter „MUST“, „MUST NOT“, „REQUIRED“, „SHALL“, „SHALL NOT“, „SHOULD“, „SHOULD NOT“, „RECOMMENDED“, „NOT RECOMMENDED“, „MAY“ und „OPTIONAL“ in diesem Dokument sind wie in BCP 14 [RFC2119] [RFC8174] beschrieben zu interpretieren, und zwar nur, wenn sie wie hier gezeigt in Großbuchstaben erscheinen.
1.2. Structure of This Document (Aufbau)
Dieses Dokument fügt einen neuen Mechanismus des Session Description Protocol (SDP) [RFC4566] hinzu, mit dem RTP-Strömen Kennungen zugeordnet werden können und den Gruppierungen, die sie bilden. Er ist für die Verwendung mit WebRTC [RFC8825] konzipiert.
Abschnitt 1.3 gibt den Hintergrund, warum ein neuer Mechanismus nötig ist.
Abschnitt 2 enthält die Definition des neuen Mechanismus.
Abschnitt 3 liefert die notwendigen semantischen Informationen und Verfahren zur Verwendung des Attributs msid zur Signalisierung der Zuordnung von MediaStreamTracks zu MediaStreams zur Unterstützung der WebRTC-API [W3C-WebRTC].
1.3. Why a New Mechanism Is Needed (Warum ein neuer Mechanismus)
Wenn Medien per RTP [RFC3550] transportiert werden, wird jeder RTP-Stream innerhalb einer RTP-Sitzung durch seine Synchronization Source (SSRC) unterschieden; jede RTP-Sitzung unterscheidet sich von allen anderen dadurch, dass sie auf einer anderen Transportassoziation liegt (streng genommen zwei Transportassoziationen, eine für RTP und eine für das RTP Control Protocol (RTCP), sofern kein RTP/RTCP-Multiplexing [RFC5761] verwendet wird).
SDP [RFC4566] liefert ein Format zur Beschreibung einer SDP-Sitzung mit mehreren Medienbeschreibungen. Nach dem in [RFC8829] verwendeten Modell beschreibt jede Medienbeschreibung genau eine Medienquelle. Werden mehrere Medienquellen in einer RTP-Sitzung transportiert, wird dies mit BUNDLE [RFC8843] signalisiert; ohne BUNDLE wird jede Medienquelle in einer eigenen RTP-Sitzung transportiert.
Das SDP Grouping Framework [RFC5888] kann zum Gruppieren von Medienbeschreibungen dienen. Für den WebRTC-Anwendungsfall besteht jedoch die Notwendigkeit, anwendungsspezifische Informationen über die Zuordnung zwischen Medienbeschreibung und Gruppe anzugeben. Das ist mit dem SDP Grouping Framework nicht möglich.
1.4. The WebRTC MediaStream
Die W3C-WebRTC-API-Spezifikation [W3C-WebRTC] legt fest, dass die Kommunikation zwischen WebRTC-Entitäten über MediaStreams erfolgt, die MediaStreamTracks enthalten. Ein MediaStreamTrack wird in der Regel mit einer einzelnen SSRC in einer RTP-Sitzung transportiert und bildet einen RTP-Stream. Die terminologische Überschneidung ist unglücklich. Es können zusätzliche SSRCs geben, gegebenenfalls in weiteren RTP-Sitzungen, um Funktionen wie Vorwärtsfehlerkorrektur oder Simulcast zu unterstützen. Diese zusätzlichen SSRCs fallen nicht unter diese Spezifikation.
MediaStreamTracks sind unidirektional; sie transportieren Medien nur in eine Richtung.
In der RTP-Spezifikation werden RTP-Ströme über das SSRC-Feld identifiziert. Ströme werden zu RTP-Sitzungen gruppiert und tragen auch einen CNAME. Weder CNAME noch RTP-Sitzung entsprechen einem MediaStream. Daher muss die Zuordnung eines RTP-Streams zu MediaStreams explizit signalisiert werden.
WebRTC definiert eine Abbildung (in [RFC8829] dokumentiert), bei der jede SDP-Medienbeschreibung einen MediaStreamTrack beschreibt und der BUNDLE-Mechanismus [RFC8843] MediaStreamTracks zu RTP-Sitzungen gruppiert. Daher ist es nötig, für jede Medienbeschreibung den Bezeichner (ID) des MediaStreamTracks und den zugehörigen MediaStream anzugeben, was mit einem SDP-Attribut auf Medienebene erfolgen kann.
Diese Verwendung wird in Abschnitt 3 beschrieben.