メインコンテンツまでスキップ

5.8.2. Media Section Parsing (メディアセクションの解析)

5.8.2. Media Section Parsing (メディアセクションの解析)

セッションレベルの行と同様に, メディアセクション (Media Section) の行は, [RFC4566] のセクション 5 で定義される特定の順序と特定の構文で現れなければならない.

m= 行自体は [RFC4566] のセクション 5.14 の記述に従って解析し, <media>, <port>, <proto>, および <fmt> の値を格納しなければならない.

m= 行の後に, 次の非属性行に特定の処理を適用しなければならない.

  • セッションレベルの c= 行と同様に, c= 行は [RFC4566] のセクション 5.7 に従って解析しなければならないが, その値は用いられない.

  • 存在する場合, b= 行は [RFC4566] のセクション 5.8 のとおり解析し, bwtype および bandwidth の値を格納しなければならない.

次の属性行にも特定の処理を適用しなければならない.

  • 存在する場合, 単一の a=ice-ufrag 行は [RFC8839] のセクション 5.4 のとおり解析し, ufrag 値を格納する.

  • 存在する場合, 単一の a=ice-pwd 行は [RFC8839] のセクション 5.4 のとおり解析し, パスワード値を格納する.

  • 存在する場合, 単一の a=ice-options 行は [RFC8839] のセクション 5.6 のとおり解析し, 指定されたオプションの集合を格納する.

  • すべての a=candidate 属性は [RFC8839] のセクション 5.1 のとおり解析し, その値を格納しなければならない.

  • すべての a=remote-candidates 属性は [RFC8839] のセクション 5.2 のとおり解析しなければならないが, その値は無視する.

  • 存在する場合, 単一の a=end-of-candidates 属性は [RFC8840] のセクション 8.1 のとおり解析し, その有無をフラグして格納しなければならない.

  • すべての a=fingerprint 行は [RFC8122] のセクション 5 のとおり解析し, フィンガープリントとアルゴリズム値の集合を格納する.

m=<proto> 値が RTP の使用を示す場合 (セクション 5.1.2 の記述), 次の属性行を処理しなければならない.

  • m=<fmt> 値は [RFC4566] のセクション 5.14 のとおり解析し, 個々の値を格納しなければならない.

  • すべての a=rtpmap または a=fmtp 行は [RFC4566] のセクション 6 のとおり解析し, その値を格納しなければならない.

  • 存在する場合, 単一の a=ptime 行は [RFC4566] のセクション 6 の記述に従って解析し, その値を格納しなければならない.

  • 存在する場合, 単一の a=maxptime 行は [RFC4566] のセクション 6 の記述に従って解析し, その値を格納しなければならない.

  • 存在する場合, 単一の方向属性行 (例: a=sendrecv) は [RFC4566] のセクション 6 の記述に従って解析し, その値を格納しなければならない.

  • すべての a=ssrc 属性は [RFC5576] のセクション 4.1 のとおり解析し, その値を格納しなければならない.

  • すべての a=extmap 属性は [RFC5285] のセクション 5 のとおり解析し, その値を格納しなければならない.

  • すべての a=rtcp-fb 属性は [RFC4585] のセクション 4.2 のとおり解析し, その値を格納しなければならない.

  • 存在する場合, 単一の a=rtcp-mux 属性は [RFC5761] のセクション 5.1.3 のとおり解析し, その有無をフラグして格納しなければならない.

  • 存在する場合, 単一の a=rtcp-mux-only 属性は [RFC8858] のセクション 3 のとおり解析し, その有無をフラグして格納しなければならない.

  • 存在する場合, 単一の a=rtcp-rsize 属性は [RFC5506] のセクション 5 のとおり解析し, その有無をフラグして格納しなければならない.

  • 存在する場合, 単一の a=rtcp 属性は [RFC3605] のセクション 2.1 のとおり解析しなければならないが, ICE 使用時はこの情報は冗長であるためその値は無視する.

  • 存在する場合, a=msid 属性は [RFC8830] のセクション 3.2 のとおり解析し, 任意の appdata フィールドは無視してその値を格納しなければならない. a=msid 属性がない場合, セッション用の default MediaStream に対してランダムな msid-id 値を (まだなければ) 生成し, その値を格納する.

  • すべての a=imageattr 属性は [RFC6236] のセクション 3 のとおり解析し, その値を格納しなければならない.

  • すべての a=rid 行は [RFC8851] のセクション 10 のとおり解析し, その値を格納しなければならない.

  • 存在する場合, 単一の a=simulcast 行は [RFC8853] のとおり解析し, その値を格納しなければならない.

そうでなく, m=<proto> 値が SCTP の使用を示す場合, 次の属性行を処理しなければならない.

  • m=<fmt> 値は [RFC8841] のセクション 4.3 のとおり解析し, アプリケーションプロトコル値を格納しなければならない.

  • a=sctp-port 属性が存在しなければならず, [RFC8841] のセクション 5.2 のとおり解析し, その値を格納しなければならない.

  • 存在する場合, 単一の a=max-message-size 属性は [RFC8841] のセクション 6 のとおり解析し, その値を格納しなければならない. そうでなければ, 指定されたデフォルトを用いる.

JSEP に関連しない他の属性も存在しうる. 実装は, 認識できる属性は処理すべきである. [RFC4566] のセクション 5.13 で要求されるとおり, 未知の属性行は無視しなければならない.