VC-1
VC-1（ブイシーワン）は、マイクロソフトが開発した動画像圧縮方式であるWindows Media Video 9を規格化したものである。
規格化にあたり、MPEGなどと同様に、復号処理、すなわちデコーダの設計に関する規格として標準化されており、符号化処理、すなわちエンコーダの設計に関しては言及しない。なお、Windows Media Videoの場合はWindows Media PlayerやWindows Mediaエンコーダ等で利用するコーデック全般を指す。
2003年9月、マイクロソフトは米国映画テレビジョン技術者協会(SMPTE)に、Windows Media Video 9の符号化技術にインタレース対応のための拡張を追加したものを規格化し、VC-9という名称で提出した。Windows Media Video 9相当の部分はベースラインプロファイルおよびメインプロファイル、インタレース対応の部分はアドバンスドプロファイルとして定められている。
その後、最初に提出した規格の名称の番号が9ではおかしいという指摘があり、VC-1に改称された。
2004年2月、DVDフォーラムがVC-9(当時)およびMPEG-4 AVCをHD DVDプレーヤの必須コーデックとすることを承認し、同12月にVC-1についてはアドバンスドプロファイルを採用することを決定した。また、Blu-ray Discでも同9月にVC-1アドバンスドプロファイルとMPEG-4 AVCハイプロファイルの採用を決定している。
2005年10月、SMPTEでのVC-1規格化作業が完了し、SMPTE 421Mとして発表された。
2007年1月30日、Windows Media Player 11 for Windows XPが、Windows Vistaの発売にあわせ正式公開された。それまではβ版コーデックを入れないといけなかったが、WMP 11にはVC-1コーデック(WVC1)が同梱され、扱いやすくなった。なお、Windows Vistaには最初からWMP 11が含まれているため、VC-1コーデックに標準で対応している。
2014年現在、ffmpegはエンコードをサポートせずVC-1をエンコードできるエンコーダーは商用、非商用とも僅かである。またマルチプラットホームでの再生にも難があり、普及率ではH.264に大きく後れをとっている。
符号化技術そのものはMPEG-4パート2をベースとしており、さらに圧縮効率を高めるためのさまざまな工夫が施されている。この点に加えて、全ての符号化処理が16ビット整数で実現可能であることが、H.264との共通点といえるため、VC-1とH.264は技術面でも性能面でもしばしば比較の対象として取り上げられている。
H.264と同様に、VC-1では浮動小数点精度の離散コサイン変換(DCT)の代わりに整数変換を採用している。画像特徴に応じて8×8,8×4,4×8,4×4の4種類から変換行列を選択可能であることがVC-1の特徴である。
H.264では整数変換のスケーリング演算と量子化が統合されているのに対して、VC-1の整数変換は単純にDCTの整数近似として定められている。このため、変換行列の近似には、デコーダに影響のない範囲での誤差が許容される。
VC-1のフレーム間予測方式はMPEG-4パート2とほぼ同等であり、16×16および8×8のいずれかの画素ブロックを単位とした動き補償を行う。
VC-1ではピクチャ単位で動きベクトルの画素精度を1/2と1/4のうちいずれかから選択可能である。なお、MPEG-4パート2ではストリーム単位でしか画素精度を選択できない。
また、デコーダ側の処理負荷を軽減することを目的として、1/2画素精度の場合は画素補間フィルタをバイキュービックフィルタかバイリニアフィルタのうちいずれかから選択できる。
MPEG-4では、動きベクトルをより小さい表現でできるようにするために、上、右上、左に隣接するブロックの動きベクトルの中間値を予測動きベクトルとして、実際の動きベクトルと予測動きベクトルの誤差を符号化するようにしている。これにより、画面全体で動きベクトルの変化が緩やかなときに動きベクトルの符号量を大幅に削減することができる。これをメジアン予測と呼ぶ。
一方、メジアン予測の場合、局所的に大きさや向きが大幅に異なる動きベクトルが出現した場合、予測によってかえって符号量が増大することがある。そこでVC-1では、メジアン予測を使わずに上ないし左のブロックの動きベクトルをそのまま予測値として利用するブロックを指定できる。これをハイブリッド動きベクトル予測と呼んでいる。
VC-1では、フレーム間予測を用いないピクチャやブロックにおいて、MPEG-4パート2と同様のAC/DC予測を採用している。
MPEG-4との違いは、エントロピー符号化におけるハフマンテーブルが条件によって異なるものと利用するという点である。
VC-1では、ブロック境界での歪みを軽減するために、ブロック境界をスムージングするフィルタを、動き補償の参照フレームに対して適用する。
H.264で採用されているデブロッキングフィルタと同等の役割を果たすが、H.264に比べて単純な処理構造を持つことが特徴である。
一般に、MPEG系の符号化方式では、16×16画素のマクロブロックを単位として、そのマクロブロックの符号化モードやDCT係数、動きベクトルなどを符号化する。
これに対して、VC-1では各マクロブロックに固定的に1ビットずつ割り当てられる符号化モードのデータについては、ピクチャ単位でまとめて符号化する。これをビットプレーン符号化と呼んでいる。スキップモード(DCT係数も動きベクトルも符号化せず、予測可能な情報のみを用いて復号するモード)やハイブリッド動きベクトル予測などのデータが対象となる。
VC-1では、分数精度動き補償でのバイキュービックフィルタなどのような処理負荷の高いツールを省いたベースラインプロファイル(Baseline Profile)と、インタレース対応以外の全てのツールを採用したメインプロファイル(Main Profile)、インタレース対応のための拡張プロファイルであるアドバンスドプロファイル(Advanced Profile)の3種類が規定されている。
なお、もともとPC向けのストリーミング用コーデックであるWindows Media Video 9をベースとして、後付けの形でインタレースに対応したため、アドバンスドプロファイルとメインプロファイルに全く互換性がないのが特徴である。このため、Microsoft Windows向けには、Windows Media Player 10の付属コーデックとしてWindows Media Video 9 Advanced Profileが追加されている。
映像と音声を多重化するシステムフォーマットとして、Windows MediaではASFがよく用いられる。これに対し、SMPTEでは放送向けにVC-1を用いる際、MPEG-2 TSを用いるための勧告(SMPTE RP227)を公開している。また、HD DVDとBlu-ray Discでも、MPEG-2 TSを多重化フォーマットとして採用している。
これまで、マイクロソフトがWindows Media Videoとしてプロプライエタリな製品技術として利用していた頃には表面化しなかったが、VC-1としてSMPTEに提出されるにあたり、これがMPEG-4をベースとした技術であることが判明した。そのため、その技術がマイクロソフト以外の特許を含む可能性が高いものと考えられるようになり、ライセンスの扱い方が問題となった。
この問題を解決するため、2004年3月、米国のライセンス管理会社MPEG LAが、MPEG-2やMPEG-4、H.264と同様にVC-9(当時)のライセンス管理を行うことを表明し、関連特許の募集を開始している。