Aller au contenu principal

1. Introduction

1.1. Terminology

Ce document utilise la terminologie de [RFC8825]. En outre, les termes suivants sont employés comme décrit ci-dessous :

Flux RTP : un flux de paquets RTP contenant des données média [RFC7656].

MediaStream : un assemblage de MediaStreamTracks [W3C.CR-mediacapture-streams]. Un MediaStream peut contenir plusieurs MediaStreamTracks, de types identiques ou différents.

MediaStreamTrack : défini dans [W3C.CR-mediacapture-streams] comme un flux unidirectionnel de données média (audio ou vidéo, mais pas les deux). Correspond au terme « source stream » de [RFC7656]. Un MediaStreamTrack peut être présent dans zéro, un ou plusieurs MediaStreams.

Description de média : définie dans [RFC4566] comme un ensemble de champs commençant par un champ m= et se terminant soit par le champ m= suivant, soit par la fin de la description de session.

Les mots clés « MUST », « MUST NOT », « REQUIRED », « SHALL », « SHALL NOT », « SHOULD », « SHOULD NOT », « RECOMMENDED », « NOT RECOMMENDED », « MAY » et « OPTIONAL » dans ce document doivent être interprétés comme décrit dans le BCP 14 [RFC2119] [RFC8174] lorsqu'ils apparaissent en majuscules comme indiqué ici.

1.2. Structure of This Document

Ce document ajoute un nouveau mécanisme du Session Description Protocol (SDP) [RFC4566] permettant d'attacher des identifiants aux flux RTP et aux groupements qu'ils forment. Il est conçu pour être utilisé avec WebRTC [RFC8825].

La section 1.3 expose le contexte expliquant pourquoi un nouveau mécanisme est nécessaire.

La section 2 donne la définition du nouveau mécanisme.

La section 3 fournit les informations sémantiques et les procédures nécessaires pour utiliser l'attribut msid afin de signaler l'association des MediaStreamTracks aux MediaStreams au service de l'API WebRTC [W3C-WebRTC].

1.3. Why a New Mechanism Is Needed

Lorsque le média est transporté par RTP [RFC3550], chaque flux RTP est distingué au sein d'une session RTP par sa Synchronization Source (SSRC) ; chaque session RTP se distingue de toutes les autres par le fait d'être sur une association de transport différente (strictement parlant, deux associations de transport, une pour RTP et une pour le RTP Control Protocol (RTCP), sauf si le multiplexage RTP/RTCP [RFC5761] est utilisé).

Le SDP [RFC4566] fournit un format pour décrire une session SDP pouvant contenir plusieurs descriptions de média. Selon le modèle utilisé dans [RFC8829], chaque description de média décrit exactement une source média. Si plusieurs sources média sont transportées dans une session RTP, cela est signalé au moyen de BUNDLE [RFC8843] ; si BUNDLE n'est pas utilisé, chaque source média est transportée dans sa propre session RTP.

Le SDP Grouping Framework [RFC5888] peut servir à grouper les descriptions de média. Cependant, pour le cas d'usage WebRTC, une application doit pouvoir spécifier des informations au niveau application concernant l'association entre la description de média et le groupe. Ce n'est pas possible avec le SDP Grouping Framework.

1.4. The WebRTC MediaStream

La spécification de l'API WebRTC du W3C [W3C-WebRTC] précise que la communication entre entités WebRTC s'effectue via des MediaStreams contenant des MediaStreamTracks. Un MediaStreamTrack est généralement transporté à l'aide d'un seul SSRC dans une session RTP, formant un flux RTP. La collision terminologique est malheureuse. Il peut exister des SSRC supplémentaires, éventuellement dans des sessions RTP supplémentaires, pour prendre en charge des fonctions comme la correction d'erreur directe ou le simulcast. Ces SSRC supplémentaires ne sont pas concernés par cette spécification.

Les MediaStreamTracks sont unidirectionnels ; ils transportent le média dans une seule direction.

Dans la spécification RTP, les flux RTP sont identifiés à l'aide du champ SSRC. Les flux sont regroupés en sessions RTP et portent aussi un CNAME. Ni le CNAME ni la session RTP ne correspondent à un MediaStream. Par conséquent, l'association d'un flux RTP à des MediaStreams doit être signalée explicitement.

WebRTC définit un mappage (documenté dans [RFC8829]) où une description de média SDP est utilisée pour décrire chaque MediaStreamTrack, et le mécanisme BUNDLE [RFC8843] sert à regrouper les MediaStreamTracks en sessions RTP. Il faut donc spécifier l'identifiant (ID) du MediaStreamTrack et son MediaStream associé pour chaque description de média, ce qui peut se faire avec un attribut SDP au niveau média.

Cette utilisation est décrite à la section 3.