Aller au contenu principal

5.8.2. Media Section Parsing

5.8.2. Media Section Parsing

Comme les lignes au niveau session, les lignes de section média (Media Section) DOIVENT apparaître dans l'ordre spécifique et avec la syntaxe spécifique définis dans [RFC4566], section 5.

La ligne m= elle-même DOIT être analysée comme décrit dans [RFC4566], section 5.14, et les valeurs <media>, <port>, <proto> et <fmt> stockées.

Après la ligne m=, un traitement spécifique DOIT être appliqué aux lignes non-attribut suivantes :

  • Comme pour la ligne c= au niveau session, la ligne c= DOIT être analysée selon [RFC4566], section 5.7, mais sa valeur n'est pas utilisée.

  • La ligne b=, si présente, DOIT être analysée comme spécifié dans [RFC4566], section 5.8, et les valeurs bwtype et bandwidth stockées.

Un traitement spécifique DOIT aussi être appliqué aux lignes d'attribut suivantes :

  • Si présente, une seule ligne a=ice-ufrag est analysée comme spécifié dans [RFC8839], section 5.4, et la valeur ufrag est stockée.

  • Si présente, une seule ligne a=ice-pwd est analysée comme spécifié dans [RFC8839], section 5.4, et la valeur du mot de passe est stockée.

  • Si présente, une seule ligne a=ice-options est analysée comme spécifié dans [RFC8839], section 5.6, et l'ensemble des options spécifiées est stocké.

  • Tout attribut a=candidate DOIT être analysé comme spécifié dans [RFC8839], section 5.1, et ses valeurs stockées.

  • Tout attribut a=remote-candidates DOIT être analysé comme spécifié dans [RFC8839], section 5.2, mais ses valeurs sont ignorées.

  • Si présent, un seul attribut a=end-of-candidates DOIT être analysé comme spécifié dans [RFC8840], section 8.1, et sa présence ou absence est marquée et stockée.

  • Toute ligne a=fingerprint est analysée comme spécifié dans [RFC8122], section 5, et l'ensemble des valeurs d'empreinte et d'algorithme est stocké.

Si la valeur <proto> de m= indique l'utilisation de RTP, comme décrit en section 5.1.2, les lignes d'attribut suivantes DOIVENT être traitées :

  • La valeur <fmt> de m= DOIT être analysée comme spécifié dans [RFC4566], section 5.14, et les valeurs individuelles stockées.

  • Toute ligne a=rtpmap ou a=fmtp DOIT être analysée comme spécifié dans [RFC4566], section 6, et ses valeurs stockées.

  • Si présente, une seule ligne a=ptime DOIT être analysée comme décrit dans [RFC4566], section 6, et sa valeur stockée.

  • Si présente, une seule ligne a=maxptime DOIT être analysée comme décrit dans [RFC4566], section 6, et sa valeur stockée.

  • Si présente, une seule ligne d'attribut de direction (par ex. a=sendrecv) DOIT être analysée comme décrit dans [RFC4566], section 6, et sa valeur stockée.

  • Tout attribut a=ssrc DOIT être analysé comme spécifié dans [RFC5576], section 4.1, et ses valeurs stockées.

  • Tout attribut a=extmap DOIT être analysé comme spécifié dans [RFC5285], section 5, et ses valeurs stockées.

  • Tout attribut a=rtcp-fb DOIT être analysé comme spécifié dans [RFC4585], section 4.2, et ses valeurs stockées.

  • Si présent, un seul attribut a=rtcp-mux DOIT être analysé comme spécifié dans [RFC5761], section 5.1.3, et sa présence ou absence est marquée et stockée.

  • Si présent, un seul attribut a=rtcp-mux-only DOIT être analysé comme spécifié dans [RFC8858], section 3, et sa présence ou absence est marquée et stockée.

  • Si présent, un seul attribut a=rtcp-rsize DOIT être analysé comme spécifié dans [RFC5506], section 5, et sa présence ou absence est marquée et stockée.

  • Si présent, un seul attribut a=rtcp DOIT être analysé comme spécifié dans [RFC3605], section 2.1, mais sa valeur est ignorée, car cette information est superflue avec ICE.

  • Si présents, les attributs a=msid DOIVENT être analysés comme spécifié dans [RFC8830], section 3.2, et leurs valeurs stockées, en ignorant tout champ appdata. S'il n'y a aucun attribut a=msid, une valeur msid-id aléatoire est générée pour un MediaStream default de la session, si elle n'existe pas déjà, et cette valeur est stockée.

  • Tout attribut a=imageattr DOIT être analysé comme spécifié dans [RFC6236], section 3, et ses valeurs stockées.

  • Toute ligne a=rid DOIT être analysée comme spécifié dans [RFC8851], section 10, et ses valeurs stockées.

  • Si présente, une seule ligne a=simulcast DOIT être analysée comme spécifié dans [RFC8853], et ses valeurs stockées.

Sinon, si la valeur <proto> de m= indique l'utilisation de SCTP, les lignes d'attribut suivantes DOIVENT être traitées :

  • La valeur <fmt> de m= DOIT être analysée comme spécifié dans [RFC8841], section 4.3, et la valeur du protocole d'application stockée.

  • Un attribut a=sctp-port DOIT être présent, et il DOIT être analysé comme spécifié dans [RFC8841], section 5.2, et la valeur stockée.

  • Si présent, un seul attribut a=max-message-size DOIT être analysé comme spécifié dans [RFC8841], section 6, et la valeur stockée. Sinon, utiliser la valeur par défaut spécifiée.

D'autres attributs sans rapport avec JSEP peuvent aussi être présents, et les implémentations DEVRAIENT traiter ceux qu'elles reconnaissent. Comme l'exige [RFC4566], section 5.13, les lignes d'attribut inconnues DOIVENT être ignorées.