5.10. Applying a Remote Description (リモート記述の適用)
5.10. Applying a Remote Description (リモート記述の適用)
リモート記述 (remote description) を適用するために以下の手順が実行される. エラーが返された場合, セッションはこれらの手順を実行する前の状態に復元しなければならない (MUST).
アンサーに "trickle" が属性として列挙されている "a=ice-options" 属性が含まれる場合, PeerConnection の canTrickleIceCandidates プロパティを "true" に更新する. そうでない場合, このプロパティを "false" に設定する.
セッションレベルの属性について, 以下の手順を実行しなければならない (MUST). いずれかのパラメータが範囲外であるか適用できない場合, 処理は停止し, エラーを返さなければならない (MUST).
-
指定された "CT" 帯域値がある場合, [RFC4566] セクション 5.8 に従い, すべての "m=" セクションに対する最大合計ビットレートの上限としてこの値を設定する. この全体上限の範囲内で, 実装は利用可能な帯域を "m=" セクション間にどう配分するかを動的に決定してよい. 個々の "m=" セクションに指定された上限は尊重する.
-
指定された "RR" または "RS" 帯域値は, [RFC3556] セクション 2 に従って処理する.
-
"AS" 帯域値 ([RFC4566] セクション 5.8) は無視しなければならない (MUST). セッションレベルでのこの構造の意味は十分に定義されていないためである.
各 "m=" セクションについて, 以下の手順を実行しなければならない (MUST). いずれかのパラメータが範囲外であるか適用できない場合, 処理は停止し, エラーを返さなければならない (MUST).
-
前のリモート記述から ICE の ufrag または password が変更された場合:
-
記述のタイプが "offer" である場合, 実装は [RFC8839] セクション 4.4.1.1.1 に記載のとおり ICE 再起動が必要であることを記録しなければならない (MUST).
-
記述のタイプが "answer" または "pranswer" である場合, 現在のローカル記述が ICE 再起動かどうかを確認し, そうでなければエラーを生成する. PeerConnection の状態が "have-remote-pranswer" で, かつ前の暫定アンサーから ICE の ufrag または password が変更された場合, ICE エージェントに当該 "m=" セクションの以前の ICE チェックリスト状態を破棄するよう通知する. 最後に, ICE エージェントにチェックの開始を通知する.
-
-
現在のローカル記述が ICE 再起動を示しているのに, ICE の ufrag も password も前のリモート記述から変更されていない場合 ([RFC8445] セクション 9 の規定に従う), エラーを生成する.
-
このメディアセクションに関連付けられた ICE コンポーネントを, 接続チェックに供給された ICE リモートの ufrag と password を使用するよう構成する.
-
[RFC8445] セクション 6.1.2 に記載のとおり, 供給された ICE 候補を収集済みのローカル候補とペアにし, 適切な資格情報で接続チェックを開始する.
-
"a=end-of-candidates" 属性が存在する場合, [RFC8838] セクション 14 に従って候補終了の指示を処理する.
-
当該 "m=" セクションの
protoフィールドの値が RTP の使用を示す場合:-
"m=" セクションが再利用されている場合 (セクション 5.2.2 参照), 現在関連付けられている RtpTransceiver の
midプロパティをnullに設定して関連付けを解除し, トランシーバとその "m=" セクション索引との対応付けを破棄する. -
"m=" セクションがいずれの RtpTransceiver にも関連付けられていない場合 (前の手順で関連付け解除された可能性がある), 次の手順に従って RtpTransceiver を見つけるか作成する:
-
"m=" セクションが sendrecv または recvonly であり,
addTrackによって PeerConnection に追加された同型の RtpTransceiver があり, いずれの "m=" セクションにも関連付けられておらず停止もしていない場合, セクション 5.2.1 に記載の正規順序に従って最初のそのような RtpTransceiver を見つける. -
前の手順で RtpTransceiver が見つからなかった場合, 方向 recvonly のものを 1 つ作成する.
-
見つかったまたは作成した RtpTransceiver を "m=" セクションに関連付ける. RtpTransceiver の
midプロパティの値を当該 "m=" セクションの MID に設定し, トランシーバと "m=" セクションの索引との対応付けを確立する. "m=" セクションに MID が含まれない場合 (つまりリモートエンドポイントが MID 拡張をサポートしない), セクション 5.2.1 の "a=mid" に関する指針に従って RtpTransceiver のmidプロパティの値を生成する.
-
-
ローカル実装がサポートする各指定メディアフォーマットについて, [RFC3264] セクション 6.1 に従い, 指定されたペイロードタイプとメディアフォーマットの対応付けを確立する. 具体的には, 各指定メディアフォーマットを送信するときに発信 RTP パケットで使用するペイロードタイプ, およびその並び順が示す各フォーマットの相対的な優先度を実装が記録する. 指定されたメディアフォーマットのいずれかがローカル実装でサポートされない場合, それは無視しなければならない (MUST).
-
指定された各 "rtx" メディアフォーマットについて, [RFC4588] セクション 4 に従い RTX ペイロードタイプと関連するプライマリペイロードタイプの対応付けを確立する. 参照されるプライマリペイロードタイプのいずれかが存在しない場合, エラーとならなければならない (MUST). RTX ペイロードタイプは, ローカルメディア実装がサポートしないプライマリペイロードタイプを参照しうることに注意する. その場合, 当該 RTX ペイロードタイプも無視しなければならない (MUST).
-
ローカル実装がサポートする各指定 fmtp パラメータについて, 関連するメディアフォーマットで有効にする.
-
"m=" セクションでシグナルされた各指定同期ソース (Synchronization Source, SSRC) について, [RFC8843] セクション 9.2 に従い, その SSRC を用いてこの "m=" セクション向けの RTP ストリームをデマルチプレックスする準備をする.
-
ローカル実装がサポートする各指定 RTP ヘッダ拡張について, [RFC5285] セクション 5 に従い拡張 ID と URI の対応付けを確立する. 具体的には, 各指定ヘッダ拡張を送信するときに発信 RTP パケットで使用する拡張 ID を実装が記録する. 指定された RTP ヘッダ拡張のいずれかがローカル実装でサポートされない場合, それは無視しなければならない (MUST).
-
ローカル実装がサポートする各指定 RTCP フィードバック機構について, 関連するメディアフォーマットで有効にする.
-
指定された "TIAS" ("Transport Independent Application Specific Maximum") 帯域値について, [RFC3890] に従い, メディア送信時に使用する最大 RTP ビットレートの制約としてこの値を設定する. "TIAS" 値がなく "AS" 値のみが指定されている場合, 次の式で "TIAS" 値を生成する:
TIAS = AS * 1000 * 0.95 - (50 * 40 * 8)1000 は単位を kbps から bps に変換する (TIAS の要件), 0.95 は RTCP に 5% を割り当てるためである. 続いてヘッダオーバーヘッドの推定を減算する. 50 は秒あたり 50 パケット, 40 は典型的なヘッダサイズ (バイト), 8 はバイトをビットに変換する. "TIAS" は "AS" より望ましい. 帯域制御がより正確になるためである.
-
"RR" または "RS" 帯域値は, [RFC3556] セクション 2 に従って処理する.
-
指定された "CT" 帯域値は無視しなければならない (MUST). メディアレベルでのこの構造の意味は十分に定義されていないためである.
-
"m=" セクションのタイプが "audio" である場合:
-
指定された各 "CN" メディアフォーマットについて, [RFC3389] セクション 5 に従い, 同一クロックレートのサポートされるすべてのメディアフォーマットに対して無音抑制を構成する. ただし独自の内部無音抑制機構を持つフォーマットは除く. そのようなフォーマット (例: Opus) の無音抑制は fmtp パラメータで制御され, セクション 5.2.3.2 で論じる.
-
指定された各 "telephone-event" メディアフォーマットについて, [RFC4733] セクション 2.5.1.2 に従い, 同一クロックレートのサポートされるすべてのメディアフォーマットに対して DTMF (dual-tone multifrequency) 送信を有効にする. 対応する telephone-event フォーマットを持たないサポート済みメディアフォーマットがある場合, それらのフォーマットでは DTMF 送信を無効にする.
-
指定された "ptime" 値について, 利用可能なメディアフォーマットが送信時に指定されたパケットサイズを使用するよう構成する. 指定サイズがメディアフォーマットでサポートされない場合, 最も近い値を代わりに使用する.
-
-
最後に, この記述のタイプが "pranswer" または "answer" である場合, セクション 5.11 に定義された処理に従う.