原文:Introduction paper to H.264/MPEG-4 AVC includingthe Fidelity RangeExtension. (PDF ) ※スウェーデン、 Luleå University of Technology、Dr. Peter Parne氏の講義ガイダンスの模様。 ) 2. 符号化ツール 基本的な部分では、この規格の符号化構造は既存のメジャーな映像規格、H.261, MPEG-1, MPEG-2 / H.262, H.263or MPEG-4 part 2、と良く似ている。アーキテクチャとコアブロックをFig1,Fig2に示す。この図から動き補償ベースのDCT変換符号化が基盤になっている事も解るだろう。各ピクチャは一個以上のスライスに分割することで圧縮される。各スライスはマクロブロックからなる。さらにこれは16x16ピクセルの輝度サンプルと、それに対応する
輝度 サンプルからなる。しかしながら
(*これまでとは異なり*) 各マクロブロックは、動き補償予測の為に、さらにサブ・マクロブロック・パーティションに分割される。予測パーティションのサイズは7種類となる。– 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 そして4x4だ。これまでの規格では、動き補償はマクロブロックを丸ごと使うか、新しめの規格では16x16 か8x8パーティションを使った。従って、パーティションの形にバリエーションが増えたという事は、予測精度の向上をもたらす。次に、残ったデータは8x8(FRExtでしか使えない)か4x4で空間軸変換される。過去の主要規格ではこの変換ブロックサイズは8x8のみだった。4x4ブロックサイズの採用で残りの差分信号の精度が向上する事になる。空間軸変換のブロックサイズは常に予測に使われるブロックサイズと同じか、より小さい。ビデオシークエンスのシークエンスからサンプル(*原注:ここでは特にサンプルとピクセルを区別しないが、厳密にはサンプルが正しい。)に至る階層構造は以下のようになる。
シークエンス(ピクチャ(スライス(マクロブロック(マクロブロック・パーティション(サブ-マクロブロック・パーティション(ブロック(サンプル)))))) *参考--ニコンシステム(株)H.264 解析ツールNH264H1 補足として、追加的なストラクチャも存在する。例えばパケッタイゼーション・スキーム、チャンネルコード、などなど。これらは映像データの配信に関わるもので、オーディオのように他のストリームと連携するものでは無い。ビデオ符号化ツールは基本的にスライス・レイヤー上か、それより下で動作するものなので、スライス・レイヤー以下に関わるビットをVCL(VideoCoding Layer、ビデオ符号化レイヤ)と呼ぶ。これに対し、スライス・レイヤーよりも上に関わるビットはNAL(NetworkAbstraction Layer、ネットワーク抽象レイヤ)データと呼ぶ。VCLデータと再上層部のNALデータは一緒にして単独のビットストリームとする事もできるし、別個に送る事もできる。NALは様々な送信方式に対応すべく設計されている(例えば放送、ワイヤレス通信、ストレージメディア)。ここでは、圧縮能力の心臓部たるVCLのみを取り上げる。エンコーダのブロックダイヤグラムをFig.1に示すが、概念的にはデコーダはこの逆回転だ。基本的にエントロピー・デコーダとFig.1で灰色の範囲のプロセスから構成されている。
Fig. 1: High-level encoder architecture *基本的に量子化(Quantization)以外は「短く言い換える」もの。 Fig. 2: Higher-level encoder block diagram H.264/AVC規格の初のバージョンは、4:2:0 chromaformat(一般的にはRGB-to-YCbCrカラースペース変換を介して伝達され、
彩度 信号は縦横とも2:1にサブサンプリングされている)と、
輝度 ・
彩度 は8bitサンプル精度しかサポートしなかった。FRExt追加議定書はこれに加え、4:2:2 ならびに 4:4:4 chromaformat、8bitよりも高いサンプル精度、オプションとしてアルファブレンドなどのための補助ピクチャを追加した。
マクロブロックはエンコード/デコードが使う基本的なユニットだ。4:2:0 chromaformatでは、各マクロブロックは16x16の輝度サンプルと、それに対応する8x8の
彩度 サンプル二つ
(*Cb,Cr*) から成る。4:2:2chroma formatでは、二個の
彩度 サンプルのサイズは8x16、4:4:4 chroma formatでは二個とも16x16となる。
ピクチャ中のスライスは、以下の符号化ツールを使って圧縮される:
"イントラ"空間軸(ブロック・ベースの)予測 フル-マクロブロックの輝度/彩度予測、予測は4モード(方向)。 8x8(FRExtのみ)または4x4輝度予測、予測は9モード(方向)。 "インター"時間軸予測、ブロック・ベースの動き予測と動き補償。 Multiple reference pictures --(*マルチプル・レファレンス、複数参照、複合参照、不等距離参照*) Bの参照フレーム化 Arbitrary referencing order-- (*自由な参照順番*) 動き補償における可変ブロックサイズ ブロックサイズは7種: 16x16, 16x8, 8x16, 8x8, 8x4, 4x8, 4x4 1/4-sample luma interpolation (1/4 or 1/8th-sample chromainterpolation) --1/4-サンプル輝度補間(1/4または1/8サンプル彩度補間) Weighted prediction --(*適応重み補間予測*) インターレース・スキャン映像のための、フレームまたはフィールドベース動き補償 インターレースド・符号化機能 Frame-field adaptation-- (*フレーム-フィールド適応*) Picture Adaptive Frame Field (PicAFF) --(*ピクチャ適応型フレームフィールド*) MacroBlock Adaptive Frame Field (MBAFF) --(*マクロブロック適応型フレームフィールド*) フィールドスキャン ロスレス描写能力 -- Lossless representation capability Intra PCM raw sample-value macroblocks -- (*イントラPCMrawサンプル値マクロブロック*) Entropy-coded transform-bypass lossless macroblocks(FRExt-only) --(*エントロピー符号化された変換バイパス型ロスレスマクロブロック*) 8x8(FRExt-only)または4x4の整数逆変換(概念的には有名なDCTに類似) 効率的なRGB符号化を変換ロスや肥大化抜きで実現するための、残りのカラー・トランスフォーム(FRExt-only)-- (*Residual color transform、残余の?なにか定型的な訳が?*) スカラー量子化 --(*段階的な量子化、H.264の量子化スケールは対数目盛り*) 人間の視覚認識を考慮した重み付けを施した量子化スケーリングマトリクスを、エンコーダで指定できる(FRExt-only)-- (*カスタム量子化マトリクス*) 量子化コントロール・パラメータの機能として、量子化ステップのサイズを対数的に(*Logarithmic*) コントロールできる。 デブロッキング・フィルタ -- (動き補償ループの中で) Coefficient scanning --(*協調的スキャニング?フィールド構造データでも必要の無い部分はフレーム用のZig-Zagスキャンで済ませられる?*) ロスレス・エントロピー・符号化 拡張ゴロム符号を用いた汎用可変符号化(UVLC)-- (*Universal Variable LengthCoding (UVLC) using Exp-Golomb codes*) 文脈適応型可変符号化(CAVLC) --(*Context Adaptive VLC*) 文脈適応型2進数算術符号化(CABAC)--(*Context-based Adaptive Binary Arithmetic Coding*) エラー耐性ツール フレキシブルなマクロブロックの順番 --(*Flexible Macroblock Ordering(FMO)*) 任意なスライス順番 --(*Arbitrary Slice Order (ASO)*) 冗長なスライス --(*Redundant Slices*) ストリーミングなどのためのSP と SI 同期化ピクチャ 多様なカラースペースのサポート(様々なYCbCr、YCgCo、RGB、など– FRExtでは特に) 4:2:0、4:2:2(FRExt-only)、4:4:4(FRExt-only)カラー信号 アルファブレンディングのための補助ピクチャ(FRExt-only) もちろん、上記の符号化ツール全てを全てのスライスに使わなければいけないわけではない。適用する符号化ツールの組み合わせにより、スライスにはI(Intra、イントラ)、P(Predicted、予測)、B(Bi-predicted、双予測
*「双方向」では無い* )、SP(Switching P) 、SI (Switching I) といったタイプがある。個々のピクチャ内に複数種類のスライスが混在する事もある
(* 参考図 *) 。ピクチャは基本的に2種類に別れる、参照ピクチャと非参照ピクチャだ。参照ピクチャはデコードの際に行われるフレーム間予測の過程で後続(ビットストリーム順
*これは画面表示順とは異なる* )ピクチャの基準として使われる。非参照ピクチャはこの目的では使用できない。(過去の規格とは異なり、双予測を使ったピクチャもI/Pスライス同様に参照ピクチャにすることができる事は特筆に値する。)続くセクションでは各スライスタイプに使う符号化ツールについて説明する。
この規格は映像がプログレッシブ・スキャンでもインターレースド・スキャンでも良い性能を発揮するように巧く設計されている。インターレースド・スキャン映像では、フレームは2枚のフィールドから成る。各フィールドは1/2フレームぶんの時間差を置いてキャプチャされたものだ。フィールド間には無視できない時間差があるので、フレーム内の隣接ラインにおける空間的な相関性は、動く物体のある部分では少ないものとなっている
(*要するにインタレ縞の事* )。従って、効率的な符号化の観点から、一枚のフレームとして圧縮するか、または2枚のフィールドとして圧縮するかを選択する必要がある。H.264/AVCではこの選択を縦方向に隣接したマクロブロック単位で行うか、まるっとフレーム単位で行うかを選択できる。
(*インタレ構造フレーム、インタレ構造マクロブロック-ペアで構成されたフレーム、プログレッシブフレーム、が混在できる*) マクロブロック-ペア・レベルでの符号化の場合、これをMBAFF(MacroBlock Adaptive FrameField、
*マクロブロック適応型フレームフィールド* )符号化と呼ぶ。フレーム・レベルでの符号化の場合は、PicAFF(PictureAdaptive FrameField、
*ピクチャ適応型フレームフィールド* )符号化と言う。MBAFFはMPEG-2規格のマクロブロック単位とは異なる。縦方向に隣接したマクロブロック-ペア単位である事に注意。これにより各マクロブロックは、各マクロブロックがフレームモードであろうがフィールドモードであろうが。またモードの転換がピクチャレベルであろうがマクロブロック-ペアレベルであろうが、16x16サイズと、全てのマクロブロック・パーティションをキープ出来る。
スポンサーサイト