FAQ/MPEG2Dec3が使えません

原因

AviSynth 2.5.6 から、Planar YUV フォーマットにおける pitch アラインメント*1(pitch alignment)が変更されました。従来は、輝度が 16 の倍数、色差が 8 の倍数でしたが、AviSynth 2.5.6 以降、色差も 16 の倍数でアラインメントされるようになりました。これは

この仕様変更に伴い、MPEG2Dec3 などいくつかの古いプラグインが、そのままでは使用できなくなっています。

pitch とは?

AviSynth Wiki - WorkingWithImages

あらゆる画像は、pitchを与えられます。pitchは、基本的に、"1ラインの長さ"として説明されうるものです。おかしいのは、pitchは画像の幅と等しくなくてもよいということです。

詳しくは、WorkingWithImagesColorSpaces を参照。

DVD2AVI 1.76 と MPEG2Dec3 の場合

DVD2AVI 1.76 で作成した d2v ファイルを、MPEG2Dec3 プラグインの MPEG2Source フィルタで読み込んでみました。

mpeg2dec3_dvd2avi176_default.png

VirtualDub で開くと、このように画像の左端に緑色の帯が入りました。

virtualdub_error_when_seeking.png

さらにスライドバーで後方のフレームに移動しようとしたところ、上図のエラーが出て強制終了しました。

使用したソフトウェア

上の例で使用したソフトウェアのバージョン、および入手先は以下のとおりです:

対処法

最新版または同種のプラグインに差し替える

この問題は、一部の古いプラグインを使用した場合に発生する現象です。このため、同じプラグインの最新版に更新するか同種の別のプラグインを使用することによって、この問題を回避することができます。

MPEG2Dec3 に関しては、pitch アラインメントの変更に対応した MPEG2Dec3k プラグインが、kassandro 氏によって提供されています。また、MPEG2Dec3 をベースに開発されている DGDecode プラグイン(DGMPGDEC 収録)では、バージョン 1.4.0 でこの問題に対する修正が盛り込み済みです。

dgmpgdec_148_default.png

DGMPGDec 1.4.8 の DGIndex で作成した d2v ファイルを、同じく DGMPGDec 1.4.8 の DGDecode プラグインを使って読み込んだところです。ソースは上の例で使用したのと同じ MPEG-2 ファイルです。このように、とくに問題なくデコードされているのがわかります。

MPEG2Dec3k および DGDecode(DGMPGDEC)の入手先については、ビデオ入力を参照。

SetPlanarLegacyAlignment を使う

何らかの理由により、古いプラグインをそのまま使いたいという場合は、SetPlanarLegacyAlignment 関数を使用します。SetPlanarLegacyAlignment 関数は、pitch アラインメントを古い AviSynth のそれに変更するものです。

SetPlanarLegacyAlignment 関数は、以下のように使用します。

LoadPlugin("C:\your_plugins_dir\MPEG2Dec3.dll") # オートローディング時不要
MPEG2Source("C:\foo.d2v") # d2v ファイルの読み込み
SetPlanarLegacyAlignment(true) # SetPlanarLegacyAlignment 関数

関連記事


最終更新日時: 2014-03-12 (水) 23:37:48 (2078d)