5.1. RTP Header Usage (RTP ヘッダの使用)
5.1. RTP Header Usage (RTP ヘッダの使用)
RTP ヘッダの形式は RFC 3550 [5] で規定され, 便宜のため図 1 に再掲する。本ペイロード形式は, その仕様と整合的にヘッダ各フィールドを用いる。
1 RTP パケットに 1 NAL ユニット (Network Abstraction Layer Unit) をカプセル化する場合, 推奨 (RECOMMENDED) の RTP ペイロード形式はセクション 5.6 で規定する。集約パケットおよびフラグメント化ユニットの RTP ペイロード (および一部 RTP ヘッダビットの設定) は, それぞれセクション 5.7.2 および 5.8 で規定する。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
図 1. RFC 3550 に従う RTP ヘッダ
本 RTP ペイロード形式に従って設定すべき RTP ヘッダ情報は次のとおり。
マーカビット M (Marker bit): 1 ビット
RTP タイムスタンプで示されるアクセスユニット (access unit) の最終パケットに対してセットする。これはビデオ形式における M ビットの通常用法と一致し, 効率的なプレイアウトバッファ処理を可能にする。集約パケット (STAP および MTAP) では, RTP ヘッダのマーカビットは, 集約パケット内の最後の NAL ユニットが単独の RTP パケットで運ばれた場合にそのマーカビットが取る値にしなければならない (MUST)。デコーダはこのビットをアクセスユニット最終パケットの早期指示として用いてもよい (MAY) が, この性質に依存してはならない (MUST NOT)。
参考注: 複数の NAL ユニットを運ぶ集約パケットに関連付けられる M ビットは 1 つだけである。したがって, ゲートウェイが集約パケットを複数パケットに再パケット化した場合, それらの M ビットを信頼して設定できない。
ペイロードタイプ PT (Payload type): 7 ビット
本新形式の RTP ペイロードタイプの割当ては本書の範囲外であり, ここでは規定しない。ペイロードタイプの割当ては, 使用するプロファイルを通じるか, 動的に行う必要がある。
シーケンス番号 SN (Sequence number): 16 ビット
RFC 3550 に従って設定・使用する。単一 NALU および非インターリーブパケット化モードでは, シーケンス番号は NALU のデコード順序の決定に用いられる。
タイムスタンプ (Timestamp): 32 ビット
RTP タイムスタンプはコンテンツのサンプリングタイムスタンプに設定する。90 kHz のクロックレートを用いなければならない (MUST)。
NAL ユニットに固有のタイミング特性がない場合 (例: パラメータセットおよび SEI NAL ユニット), RTP タイムスタンプは, その NAL ユニットが含まれるアクセスユニットのプライマリコーディングピクチャの RTP タイムスタンプに設定する。これは [1] のセクション 7.4.1.2 に従う。
MTAP の RTP タイムスタンプの設定はセクション 5.7.2 で定義する。
受信者は, 表示タイムスタンプが 1 つだけのアクセスユニットに含まれるピクチャタイミング SEI メッセージを無視すべきである (SHOULD)。代わりに表示処理の同期には RTP タイムスタンプを用いるべきである (SHOULD)。
1 つのアクセスユニットがピクチャタイミング SEI メッセージに複数の表示タイムスタンプを持つ場合, SEI メッセージ内の情報は RTP タイムスタンプを基準とした相対として扱うべきである (SHOULD)。最も早い事象は RTP タイムスタンプで示される時刻に発生し, 以降は SEI に含まれるピクチャ時刻値の差に応じて遅れる。
tSEI1, tSEI2, ..., tSEIn をアクセスユニットの SEI メッセージに含まれる表示タイムスタンプとし, tSEI1 をそのうち最も早いものとする。tmadjst() を SEI メッセージの時間スケールを 90 kHz に調整する関数とする。TS を RTP タイムスタンプとする。すると, tSEI1 に関連する事象の表示時刻は TS である。tSEIx (x は [2..n]) に関連する事象の表示時刻は TS + tmadjst(tSEIx - tSEI1) である。
参考注: コーディングフレームをフィールドとして表示することは, コーディングフレームからなるフィルムコンテンツをインターレース走査のディスプレイに表示する 3:2 プルダウンとして広く必要となる。ピクチャタイミング SEI メッセージは同一コーディングピクチャに複数タイムスタンプを運べるため, 3:2 プルダウンを正確に制御できる。コーディングフレームあたり RTP タイムスタンプでは 1 タイムスタンプしか伝えられないため, この機構が必要である。