MEMO / MPEG-4_AVC


MEMO / MPEG-4_AVC
2016-02-07 (日) 17:09:56更新
以下はDoom9のMPEG-4 AVC / H.264 Informationの試訳です。
MPEG-4 AVC / H.264 Information

ISO 14496-10 (ビデオ) - Advanced Video Coding (AVC)

  • MPEG -4 AVC/H.264 ビデオ符号化規格。
  • 2003年に二つの団体が協同で策定。ISO-MPEG*1とITU-VCEG*2 。実際の規格開発はJVT。*3
  • MPEGサイド MPEG-4 Part 10 (ISO 14496-10)。
  • ITU サイドではH.264
  • AVC(Advanced Video Coding)という 有名な呼び方はMPEGがAACとのバランスを考えてつけた。

AVC/H.264 プロファイル

  • AVC/H.264 は4つのプロファイルを定義。
  • 各プロファイルには、他と同様に、さらにLevelによる分類がある。
    プロファイルoffersupport
    BaselineI/P-フレームprogressive 、CAVLCのみ
    ExtendedI/P/B/SP/SI-フレームprogressive、 CAVLC のみ
    MainI/P/B-フレーム、CAVLC または CABACprogressive, interlaced
    High(別名 FRExt)Main プロファイルに加えて: 8x8 intra prediction, custom quants, lossless video coding, more yuv formats (4:4:4...)
    • ※:offerとsupportの違い未詳。
    • ※:手許のQTP7pro(Mac版)では、Apple-H.264.mov作成時のみ、MainとBaseLineが選択可能。Extended はグレイアウト。

現時点では、どれがDVDバックアップに適したプロファイルかはなんとも言えない。おそらくは、MainもしくはHighで、以下の toolを使うのが良いように思う。 (MPEG-4 ASP toolの説明も読んで下さい。GMC以外はAVCでも使えます。

  • ※:英文では以下のものを"tool"と呼ぶ事が有る。国内では"オプション"が多い。

CAVLC/CABAC:

AVC/H.264 では二つの、MPEG-4 ASPより先進的なビットストリーム記述方式のエントロピー符号化ツール (macroblock-type, motionvectors + reference-index...)を定義しています : CAVLC(Context-Adaptive Variable Length Coding) と CABAC (Context-Adaptive Binary Arithmetic Coding)

CABACはAVC/H.264デフォルトのCAVLC (別名UVLC)より強力な圧縮方式で、 ビットレートを約10-15% 節約できると言われています(特に高ビットレート時)。 CABACは (CAVLCも同様) ロスレスで画質低下が一切ありません。しかしエンコードとデコード速度は低下します。

Loop/Deblocking Filter:

プレフィルタ(例えばavisynthが行うエンコード前のフィルタリング)やポストプロセス/フィルタ (デコーダが最終出力前に行うもの)とは事なり、ループフィルタリングは各フレーム毎のエンコードプロセスの工程中に行われます。厳密にはエンコードの後、但し、後続フレームの為の参照フレームとして使われる前の時点です。これは特に低ビットレート時のブロックノイズ減少に効果があります。しかし、エンコードとデコードは遅くなります。

Variable Block Sizes/Macroblock Partitions:(可変ブロックサイズ/マクロブロックパーティション)

MPEG-4 ASP (Inter4V/4MVを使った場合のみ、ブロックサイズは16x16 〜8x8 ピクセルの間で変化する)と異なり、AVC/H.264規格ではモーションサーチの精度を決めるマクロブロックを4x4 pixelまで下げる事を提案しています(8x4のように段階的に下げる事もできます) 。ブロックサイズは適応性があり、可変です。各マクロブロックにどの程度のブロックサイズを与えれば最も効果的か、その判断が賢いものが良いエンコーダと呼ばれるでしょう。

*Mainでは4と16の組み合わせ(4x4,4x16,16x4,16x16)しか使えない。これは闇階調でぱたぱた動くブロックノイズの発生に繋がり、x264では抑制困難。Apple-H264のマルチパスが5パス程度行うのはこの対策と思われる。商用DVDを作成するプロの世界でもMainではmpeg2に勝てないとの問題が指摘され、これがFRext拡張(High profileなど)の誕生に繋がった*


Multiple Reference Frames: (複数参照フレーム)

MPEG-4 ASP (直前のフレームのみを参照フレームにする)と異なり、 AVC/H.264 では複数の候補から参照フレームを選べるようにになりました。つまり、ビデオコデックはASPのようにシンプルに直前フレームを参照するか、それとももっと前のフレームを参照するか自分で決められると言う事です。

このために(例えば、P-フレームが直前のI-フレームよりも前のフレームを参照できるようにするために) 新しいタイプのフレームが必要になりました: IDR-フレームというのがそれです。これはI-フレームの一種ですが、後続のフレームに参照を許可しません。複数参照フレームを使うとエンコード、デコード速度は低下し、カットもIDR-フレーム単位でしかできなくなります。

Weighted Prediction: (適応重み補完予測) [#q02f2d8c]

Weigthed Predictionを使うと参照フレームに「重要性」を付ける事が出来ます(例えば、直前の映像を(ブライトネス方向に) スケーリングできます)。これは特にフェードのある場面、後続の映像が直前の映像によく似ているんだけど、暗さが違うだけ、、、といった場合に効果的です。クロスフェード(フェードを使った場面転換)には効果がありません。

※実際には白フェード、黒フェード、フェードイン、フェードアウトで別の計算式を用意しないと効果が安定しない模様。

Rate Distortion Optimisation (RDO):

RDO を使うと、エンコーダは2種類の選択肢があるような場合に最も効率の良い符号化方式を選べるようになります(例えば inter/intra decisions, motion search...などなど)

RDO はAVC/H.264 仕様書の定義にありません。しかし、この新しいアプローチを最初に導入したのはH.264のレファレンスソフトウェア(JM)です。他のコデックもRDOを組み込む事が出来ます。例えば、既にRDOを装備しているXviDのVHQ モードのように。

AVC/H.264と他のビデオコデック比較:

compchart2fa.png
  • ※VC-1:別名wmv9。AVCと並んで次世代DVDに採用されている
  • ※SNOW:libavcodecの最新コデック。MPEG系とは圧縮に対する考え方が違う。

AVC/H.264 コデック

現時点で使えるAVC/H.264コデックは、x264, Nero, Apple, MainConcept, Sorenson, Moonlight, CyberLink, VSS, mpegable, Envivio, Hdot264 (binary), DSPR, JM (reference software) (binary), ffmpeg, Philips, FastVDO, Skal, Sony,,,などなど、すでに沢山あります。


エンコーダ

名前種別CABACLoopmax B-Framesmultiple B-FramesB-Referencesmultiple Reference Framesweighted predictionP-Frame SizeB-Frame Sizeanamorphic signallingHigh ProfileAdaptive Quant (Psy High)multiple Slices
x264GPL16(no)weight_b4x48x8thread
NeroDigital AVC製品◎(adaptive)?8x816x16
Apple製品XX1X

※全文を訳してもあまり意味が無いので一部に限定。原文ではApple-h264はCABAC,Loop,weighted prediction非対応としている。x264についてはコマンド一覧から相当するものを補完した。表には無いがx264はcustom quantization matrixが実装されるなど(2005/秋頃)進化が速い

デコーダ

Doom9の比較記事

AVC/H.264の問題点

相互運用性:

現時点では、多くの実行環境が異なるコンテナをサポートしています:

.mp4
AVC が MPEG-4 規格 (ISO 14496-15) で定義したコンテナ。現時点でサポートしているのは Nero, Sorenson, Envivio , Moonlight
.mpg
AVC が MPEG-2 規格 (ISO 13818-1, AMD3) で定義したコンテナ。現時点でサポートしているのは Mainconcept と Moonlight。
.avi
AVC をAVI の中に入れる事は誰も規格化していないため、既に相互運用性の問題がおきています。AVI と VFW の制限(例えば b-フレーム または自由なフレーム符号化順番)は、これら二つのフォーマットに対するハッキングを不可欠なものにしており、その結果、AVC が提供する全ての側面のフル実装の妨げとなっています。これは再生品質悪化の可能性があり、少なくとも開発の速度を鈍らせ、相互運用性の問題を起こし、競争力低下の原因となっています。現在AVI は VSS, x264 (mencoder と vfw) , mpegableでサポートされています。
.264/.h264
レファレンスエンコーダが出力するraw bitstream。コンテナに入っていない。JM,x264cli, mencoder, mainconceptが出力可能。

速度:

現在のエンコード実行環境は非常に遅い (大半は商業製品のプレビュー版) 。

それでも x264 と NeroDigital'の AVC エンコーダは既に良い速度と品質を提供しているようですが。とはいえ、 AVC が非常に先端的なビデオ符号化フォーマットである事に変わりはなく、古い CPUでのエンコードは非常に時間がかかるでしょう。


ハードウェアにおけるMPEG-4 AVC/H.264 - HD-DVD/Blu-ray

二つの組織 (DVDフォーラムとBlu-rayディスクアソシエーション) が現在一般的な DVD フォーマットの後継となるべく活動しています。これはいわゆる High Definition コンテンツ (現行DVDより大きな映像サイズになる)と呼ばれる物です: HD-DVD と BD-ROM

DVD フォーラムは既に MPEG-4 AVC/H.264 をHD-DVDの必須のビデオコデックとして採用しました。 Blu-rayディスクアソシエーションも、MPEG-4 AVC/H.264を対応ビデオコデックに含めるとアナウンスしています。

以上の事から、AVC/H.264 が広く使われ、サポートされる次世代ビデオフォーマットになる確率は非常に高いように思えます。DVDの中で使われている現在のMPEG-2 のように。


  • ありがとうございました! -- playfellow? 2007-01-31 (水) 03:39:28
  • ありがとうございます -- 2007-03-24 (土) 06:44:39


:用語集

FrontPage
MPlayer
Manuals
Documents
カテゴリ

■GENERAL
MEMO
LINK
雑談所
最近の更新
popular

■Other Tools
ffmpeg
mkvmerge
mp4box
MPEG Streamclip
QTCoffee
x264cli

■About
About Wiki

edit


blog


本日1
昨日0
累積16409


*1 国際標準化機構。各国のJISみたいな機関の連合体。MPEGはその中のMoving Pictures Experts Groupという組織。
*2 国際電気通信連合。国連に属す。VCEGはVideo Coding Experts Group。H.263規格などを定める。これは主にTV会議等でつかわれている。
*3 Joint Video Team。MPEGとVCEGの合同チーム。JVTの推奨する方針はコレコレみたいな記述がタマにある。