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

1. Introduction (はじめに)

1. Introduction (はじめに)

このメモは, ITU-T勧告H.264 [1] およびISO/IEC国際規格14496-10 [2] として知られるビデオコーディング規格 (どちらもAdvanced Video Coding (AVC) として知られています) のRTPペイロード仕様を規定します。このメモでは, コーデックと規格にH.264という名前を使用しますが, このメモはコーディング規格のISO/IEC対応版にも等しく適用されます。

このメモはRFC 3984を廃止します。RFC 3984からの変更は第14節にまとめられています。RFC 3984との後方互換性に関する問題は第15節で議論されています。

1.1. The H.264 Codec (H.264コーデック)

H.264ビデオコーデックは, 低ビットレートインターネットストリーミングアプリケーションからHDTV放送, ほぼロスレス符号化を伴うデジタルシネマアプリケーションまで, あらゆる形式のデジタル圧縮ビデオをカバーする非常に広範なアプリケーション範囲を持っています。現在の技術水準と比較して, H.264の全体的なパフォーマンスは50%以上のビットレート削減が報告されるほどです。たとえば, デジタル衛星TVの品質は1.5 Mbit/sで達成可能と報告されており, これは現在のMPEG 2ビデオの動作点である約3.5 Mbit/sと比較されます [10]。

コーデック仕様 [1] 自体は, 概念的にVideo Coding Layer (VCL) とNetwork Abstraction Layer (NAL) を区別しています。VCLには, 変換, 量子化, 動き補償予測などのメカニズム, およびループフィルタなど, コーデックの信号処理機能が含まれています。これは, 今日のほとんどのビデオコーデックの一般的な概念に従っており, 動き補償を伴うフレーム間予測と残差信号の変換符号化を使用するマクロブロックベースのコーダです。VCLエンコーダはスライスを出力します: 整数個のマクロブロックのマクロブロックデータとスライスヘッダの情報 (スライス内の最初のマクロブロックの空間アドレス, 初期量子化パラメータ, および同様の情報を含む) を含むビット文字列。スライス内のマクロブロックは, スライスグループの構文を使用して異なるマクロブロック割り当てが指定されない限り, スキャン順序で配置されます。フレーム内予測はスライス内でのみ使用されます。詳細情報は [10] に記載されています。

NALエンコーダは, VCLエンコーダのスライス出力をNetwork Abstraction Layer Units (NALUs) にカプセル化します。これらは, パケットネットワーク上での伝送またはパケット指向多重化環境での使用に適しています。H.264の附属書Bは, バイトストリーム指向ネットワーク上でこのようなNALUを伝送するためのカプセル化プロセスを定義しています。このメモの範囲では, 附属書Bは関連しません。

内部的に, NALはNALユニットを使用します。NALユニットは1バイトのヘッダとペイロードバイト文字列で構成されます。ヘッダは, NALユニットのタイプ, NALユニットペイロード内のビットエラーまたは構文違反の (潜在的な) 存在, およびデコードプロセスに対するNALユニットの相対的重要性に関する情報を示します。このRTPペイロード仕様は, NALユニットペイロード内のビット文字列を認識しないように設計されています。

H.264の主な特性の1つは, スライスとピクチャの伝送時間, デコード時間, およびサンプリングまたは提示時間の完全な分離です。H.264で規定されているデコードプロセスは時間を認識せず, H.264構文は, スキップされたフレームの数などの情報 (初期のビデオ圧縮規格では時間参照の形式で一般的) を運びません。また, 多くのピクチャに影響を与えるNALユニットがあり, それゆえ本質的に時間なしです。このため, サンプリングまたは提示時間が定義されていない, または伝送時に不明なNALユニットに対して, RTPタイムスタンプの処理にはいくつかの特別な考慮が必要です。

1.2. Parameter Set Concept (パラメータセット概念)

H.264の非常に基本的な設計概念の1つは, RFC 4629 [11] のヘッダ複製やMPEG-4 VisualのHeader Extension Code (HEC) [12] などのメカニズムを不要にするために, 自己完結型パケットを生成することです。これは, 複数のスライスに関連する情報をメディアストリームから分離することによって達成されました。この上位層メタ情報は, スライスパケットを含むRTPパケットストリームから, 信頼性高く, 非同期に, 事前に送信されるべきです。(この目的に適した帯域外トランスポートチャネルを持たないアプリケーションのために, この情報を帯域内で送信する規定も利用可能です。) 上位レベルパラメータの組み合わせは, パラメータセットと呼ばれます。H.264仕様には, シーケンスパラメータセットとピクチャパラメータセットの2種類のパラメータセットが含まれています。アクティブシーケンスパラメータセットは符号化ビデオシーケンス全体で変更されず, アクティブピクチャパラメータセットは符号化ピクチャ内で変更されません。シーケンスおよびピクチャパラメータセット構造には, ピクチャサイズ, 採用されるオプションの符号化モード, マクロブロックからスライスグループへのマップなどの情報が含まれています。

ピクチャパラメータ (ピクチャサイズなど) を変更できるようにするために, スライスパケットストリームにパラメータセット更新を同期的に送信する必要なく, エンコーダとデコーダは複数のシーケンスおよびピクチャパラメータセットのリストを維持できます。各スライスヘッダには, 使用されるシーケンスおよびピクチャパラメータセットを示すコードワードが含まれています。

このメカニズムにより, パラメータセットの伝送をパケットストリームから分離し, 外部手段 (たとえば, 機能交換の副作用として) または (信頼性のあるまたは信頼性のない) 制御プロトコルを通じてそれらを伝送できます。それらが決して伝送されず, アプリケーション設計仕様によって固定されている可能性さえあります。

1.3. Network Abstraction Layer Unit Types (ネットワーク抽象化層ユニットタイプ)

NAL設計に関するチュートリアル情報は, [13], [14], および [15] にあります。

すべてのNALユニットは, 単一のNALユニットタイプオクテットで構成されており, これはこのRTPペイロード形式のペイロードヘッダとしても機能します。NALユニットのペイロードの説明が続きます。

NALユニットタイプオクテットの構文とセマンティクスは [1] で指定されていますが, NALユニットタイプオクテットの基本的な特性を以下にまとめます。NALユニットタイプオクテットは次の形式を持っています:

   +---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+

H.264仕様で指定されているNALユニットタイプオクテットのコンポーネントのセマンティクスを以下に簡単に説明します。

F: 1ビット forbidden_zero_bit。H.264仕様は値1を構文違反として宣言しています。

NRI: 2ビット nal_ref_idc。値00は, NALユニットの内容がフレーム間予測の参照ピクチャを再構成するために使用されないことを示します。このようなNALユニットは, 参照ピクチャの整合性を損なうことなく破棄できます。00より大きい値は, 参照ピクチャの整合性を維持するためにNALユニットのデコードが必要であることを示します。

Type: 5ビット nal_unit_type。このコンポーネントは, [1] の表7-1およびこのメモ内で後述されるように定義されたNALユニットペイロードタイプを指定します。現在定義されているすべてのNALユニットタイプとそのセマンティクスの参照については, [1] の7.4.1節を参照してください。

このメモは新しいNALユニットタイプを導入しており, これらは第5.2節で提示されています。このメモで定義されているNALユニットタイプは, [1] では未指定としてマークされています。さらに, この仕様は第5.3節で説明されているようにFとNRIのセマンティクスを拡張します。