7. SDP 定義
[RFC4585] のセクション 4 は, Reference Picture Selection, Picture Loss Indication など特定の AVPF コマンドおよび表示を扱う能力を交渉するために用いられ得る新しい SDP [RFC4566] 属性 rtcp-fb を定義する. rtcp-fb の ABNF は [RFC4585] のセクション 4.2 に記述されている. 本節では rtcp-fb 属性を拡張し, 本文書で Codec Control について記述したコマンドおよび表示を含める. また Codec Control のコマンドおよび表示に関する Offer/Answer の含意についても論じる.
7.1. rtcp-fb 属性の拡張
AVPF [RFC4585] で記述されるとおり, rtcp-fb 属性は RTCP Feedback を用いる能力を示す. AVPF は rtcp-fb 属性をメディアレベル属性にのみ用い, セッションレベルでは提供してはならないと規定する. [RFC4585] に記述された rtcp-fb 属性に関する, ペイロード型およびセッション記述内の複数の rtcp-fb 属性に関するすべての規則は, 本メモで定義する新しい Feedback メッセージにも適用される.
[RFC4585] で定義される rtcp-fb の ABNF [RFC4234] は次のとおり:
"a=rtcp-fb: " rtcp-fb-pt SP rtcp-fb-val CRLF
ここで rtcp-fb-pt はペイロード型であり, rtcp-fb-val は ack, nack, trr-int, rtcp-fb-id など Feedback メッセージの種類を定義する. 例えば Picture Loss Indication の Feedback のサポートを示すには, 送信者は SDP に次のように記述する:
v=0
o=alice 3203093520 3203093520 IN IP4 host.example.com
s=Media with feedback
t=0 0
c=IN IP4 host.example.com
m=audio 49170 RTP/AVPF 98
a=rtpmap:98 H263-1998/90000
a=rtcp-fb:98 nack pli
本文書では, RTCP Feedback メッセージを用いた Codec Control のサポートを示す新しい Feedback 値 "ccm" を定義する. "ccm" Feedback 値は, サポートする特定の Codec Control コマンドを示すパラメータと併用すべきである (SHOULD). 本文書ではそのようなパラメータを 4 つ定義する:
- "fir" は Full Intra Request (FIR) のサポートを示す.
- "tmmbr" は Temporary Maximum Media Stream Bit Rate Request/Notification (TMMBR/TMMBN) のサポートを示す. 用いるセッション最大パケットレート(パケット毎秒で測定)を示す任意のサブパラメータをもつ. 含めない場合, 既定は無限大である.
- "tstr" は Temporal-Spatial Trade-off Request/Notification (TSTR/TSTN) のサポートを示す.
- "vbcm" は H.271 Video Back Channel Messages (VBCM) のサポートを示す. サポートする H.271 の "payloadType" 値を識別するゼロ個以上のサブパラメータをもつ.
[RFC4585] で定義される rtcp-fb-val の ABNF には, 新しい Feedback 型を定義するためのプレースホルダ rtcp-fb-id がある. "ccm" は本文書で新しい Feedback 型として定義され, ccm 用パラメータの ABNF をここで定義する(完全な ABNF 構文は [RFC4585] のセクション 4.2 を参照).
rtcp-fb-val =/ "ccm" rtcp-fb-ccm-param
rtcp-fb-ccm-param = SP "fir" ; Full Intra Request
/ SP "tmmbr" [SP "smaxpr=" MaxPacketRateValue]
; Temporary max media bit rate
/ SP "tstr" ; Temporal-Spatial Trade-Off
/ SP "vbcm" *(SP subMessageType) ; H.271 VBCMs
/ SP token [SP byte-string]
; for future commands/indications
subMessageType = 1*8DIGIT
byte-string = <as defined in section 4.2 of [RFC4585] >
MaxPacketRateValue = 1*15DIGIT
7.2. Offer-Answer
Codec Control プロトコル Feedback メッセージに関する Offer/Answer [RFC3264] の含意は, [RFC4585] に記述されたものと類似している. オファー側は, 選択した Codec コマンドおよび表示をサポートする能力を示してもよい (MAY). アンサー側は, 当該メディアセッションでサポートしたくない CCM パラメータをすべて除去しなければならない (MUST)(例: 当該メッセージを実装していない, またはアプリケーションロジック上そのメッセージのサポートに価値がないなど). アンサー側は, オファーに含まれたもの以外に新しい ccm パラメータを追加してはならない (MUST NOT).
アンサーはメディアセッションに拘束力があり, オファー側およびアンサー側とも, 双方が明示的にサポートすると示したもの以外の Feedback メッセージを用いてはならない (MUST NOT). 言い換えれば, オファーとアンサーからの CCM パラメータの共通部分のみが用いられ得る.
オファーまたはアンサーに CCM パラメータを含めることは, 当該当事者(オファー側またはアンサー側)が少なくとも対応する CCM を受信しそれに従って行動できることを示す. 交渉済み CCM の受信が当事者に別の CCM で応答することを義務付ける場合, その能力も備えていなければならない. 交渉済み型の CCM を開始することが義務付けられてはいないが, 一般には当事者は適切なときに CCM を開始すると期待される.
TMMBR 表示の一部であるセッション最大パケットレートパラメータは宣言的であり, オファーとアンサーのうち高い値を用いなければならない (SHALL). オファーにセッション最大パケットレートパラメータがない場合, アンサー側はそれを含んではならない (SHALL NOT).
7.3. 例
例 1: 次の SDP は, H.263 を用いたポイントツーポイント動画呼において, 呼の発信者が FIR および TSTR/TSTN Codec Control メッセージをサポートする能力を宣言する様子を記述する. SDP は SIP などの高レベルシグナリングプロトコルで運ばれる.
v=0
o=alice 3203093520 3203093520 IN IP4 host.example.com
s=Point-to-Point call
c=IN IP4 192.0.2.124
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 51372 RTP/AVPF 98
a=rtpmap:98 H263-1998/90000
a=rtcp-fb:98 ccm tstr
a=rtcp-fb:98 ccm fir
上記の例では, 送信者がリモート当事者から TSTR メッセージを受信した場合, RTCP TSTN Feedback メッセージで示されるとおりトレードオフを調整できる.
例 2: 次の SDP は, マルチパーティ動画会議セッションをホストする動画ミキサに SIP エンドポイントが参加する様子を記述する. 参加者は Full Intra Request (FIR) の Codec Control コマンドのみをサポートし, セッション記述で宣言する.
v=0
o=alice 3203093520 3203093520 IN IP4 host.example.com
s=Multiparty Video Call
c=IN IP4 192.0.2.124
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 51372 RTP/AVPF 98
a=rtpmap:98 H263-1998/90000
a=rtcp-fb:98 ccm fir
動画 MCU が当該参加者の動画をルーティングすると決めたとき, RTCP FIR Feedback メッセージを送る. この Feedback メッセージを受信したエンドポイントは, フルイントラ要求を生成することが求められる.
例 3: 次の例は Codec Control メッセージに関する Offer/Answer の含意を記述する. オファー側は "tstr", "fir", "tmmbr" をサポートしたい. オファー SDP は次のとおり:
-------------> Offer
v=0
o=alice 3203093520 3203093520 IN IP4 host.example.com
s=Offer/Answer
c=IN IP4 192.0.2.124
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 51372 RTP/AVPF 98
a=rtpmap:98 H263-1998/90000
a=rtcp-fb:98 ccm tstr
a=rtcp-fb:98 ccm fir
a=rtcp-fb:* ccm tmmbr smaxpr=120
アンサー側は FIR および TSTR/TSTN メッセージのみをサポートし, アンサー SDP は次のとおり:
<---------------- Answer
v=0
o=alice 3203093520 3203093524 IN IP4 otherhost.example.com
s=Offer/Answer
c=IN IP4 192.0.2.37
m=audio 47190 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 53273 RTP/AVPF 98
a=rtpmap:98 H263-1998/90000
a=rtcp-fb:98 ccm tstr
a=rtcp-fb:98 ccm fir
例 4: 次の例は H.271 Video Back Channel Messages (VBCM) に関する Offer/Answer の含意を記述する. オファー側は VBCM および payloadType 1(全体または一部が失われた 1 枚以上の画像)と 2(全体または一部が失われた 1 枚の画像のブロック集合)のサブメッセージをサポートしたい.
-------------> Offer
v=0
o=alice 3203093520 3203093520 IN IP4 host.example.com
s=Offer/Answer
c=IN IP4 192.0.2.124
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 51372 RTP/AVPF 98
a=rtpmap:98 H263-1998/90000
a=rtcp-fb:98 ccm vbcm 1 2
アンサー側は型 1 のサブメッセージのみをサポートしたい:
<---------------- Answer
v=0
o=alice 3203093520 3203093524 IN IP4 otherhost.example.com
s=Offer/Answer
c=IN IP4 192.0.2.37
m=audio 47190 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 53273 RTP/AVPF 98
a=rtpmap:98 H263-1998/90000
a=rtcp-fb:98 ccm vbcm 1
したがって上記の例では, "payloadType" 1 で構成される VBCM 表示のみがサポートされる.