ソースやエンコード後のサイズが2GBを超えていると、圧縮率まわりの表示がおかしくなるので修正しました。

配布ファイル (zip)

で、本題。vctest を使っていろんなソースでいろんなコーデックを計測してましたが、MSU Lossless 0.6.0 で稀に化ける症状が見られました。ググっても化けたって話は出てこないので、よっぽど稀な現象なのかもしれません。ググり方が悪いだけかもしれませんが。

こんなソース(アイマスのOP画面を320×180に縮小したものの一部)を、コーデックの設定を
Quality: Absolutely lossless
Mode: Maximize speed
Format: Always suggest RGB for output も Compressing interlaced movie もチェック「しない」
にしてエンコードさせます。CPU は Q6600。

C:\>vctest D:\エンコード比較\横幅テスト\320.avi -c
dwLength = 20
dwScale=166833
dwRate=10000000
Lossless Checking is enabled
YUY2
statesize=88
msud
    0/   20   4.077735ms   4.255507ms     109bytes ( 0.1%) KEY
(中略)
   18/   20  13.672683ms   6.129988ms   16682bytes (14.5%) KEY
   19/   20   7.796078ms   8.452022ms   16873bytes (14.6%)
NOT LOSSLESS!!! - aborting

vctest に問題でもあるのかと思って AviUtl でエンコードしてみましたが、やはり化けて以下のようになります。

オリジナル
化けるフレーム(オリジナル)

エンコード後
化けるフレーム(エンコード後)

上の方が化けてます。途中で RGB など他の形式に変換してしまう編集ソフトを経由した場合は、このソースでは化けないかもしれませんが、他のソースで化けるかもしれません。なお、手元の別のマシン(Pen4 630)でも同じなので、CPU アーキテクチャに起因する問題でもなさそうです。

MSU Lossless は「かなり遅い代わりに高圧縮」な数少ない?可逆コーデックなのですが、稀とはいえ化けるとなると怖くて使えませんねぇ…残念です。

Trackback

3 comments untill now

  1. びびり @ 2008-06-22 22:37

    縦の解像度が16の倍数でないってのが怪しくないですか。そういう仕様であるとかのドキュメントがあるのかどうか調べてませんが。手元で軽くいくつかのソースで試したところ320×176では解消されました。

  2. 梅澤 威志 @ 2008-06-23 00:12

    むむっ、確かに<16の倍数
    と思ってAviUtlでトリミングして縦のサイズを変更しつつテストしようと思ったら、どんなサイズにしてもエンコードエラーになって「ビデオ圧縮に失敗しました。画像サイズやフレームレートを適正に設定しないと使用できないコーデックの可能性があります。」というメッセージが。夕方にはエンコードできたのに何が起きたんだ…(T_T

  3. 梅澤 威志 @ 2008-06-23 00:15

    あ、ところで MSU Lossless のページ http://www.compression.ru/video/ls-codec/index_en.html には解像度の制限に関する記述はありませんね。インストールしてもドキュメントがインストールされるわけでもないようですし、制限はどこにも書いていないのでは。

    制限を書いていないことに関して言えば私も大きなことは言えませんが…

Add your comment now