機能追加
  • DMO インターフェースでデコーダを使えるようにした。

readme 日本語 英語 / インストーラ x86 x64 / ソース

AviSynth の DirectShowSource で Ut Video Codec Suite でエンコードされた AVI ファイルを pixel_type を RGB 以外で開こうとすると失敗する、という問題があります。これは実際には Ut Video Codec Suite の問題ではなく、同じく VCM コーデックが基本である Huffyuv でも Lagarith でも同様に失敗します。おそらく DirectShowSource と AVI デコンプレッサフィルタとの処理のすりあわせに問題があるのだろうと思っています(特に追究はしていません)。DMO デコーダを追加することで、この問題が起きなくなります。

ただし、ffdshow をインストールしている環境では Huffyuv に関しては ffdshow が持つ DirectShow デコーダが使われるため、問題が発現しません。そのため、私のところにバグレポートが来たときは「Huffyuv は読めるけど UtVideo は読めない」となっていました。

なお、DirectShow 環境においては、DMO デコーダは AVI デコンプレッサフィルタより高い優先度を持ちます(だからこそ追加することで上の問題が解消されるわけですが)。そのため、DirectShow ベースの再生ソフトウェア、たとえば Windows Media Player でも、Ut Video Codec Suite でエンコードされた AVI ファイルを再生するときに DMO デコーダが優先的に使われます。もし 9.0.0 より前で再生に問題が無く、9.0.0 で問題が発生した場合は、DMO デコーダが悪さをしている可能性が高いです。

Trackback

21 comments untill now

  1. 梅澤 威志 @ 2011-05-03 00:36

    あれ、x64 だとダメだ…およよ

  2. 数年前の記憶で細かいところは自信がないですが、昔Lagarithで圧縮したYUY2ソースを再生するとRGBで表示されている(YUY2オーバーレイでない)のに気がついて調べてみたことがあります。

    AVI デコンプレッサフィルタからのメッセージを確認したところ、VCMコーデックには最初 ICM_DECOMPRESSEX での伸張の問い合わせがきて、失敗すると ICM_DECOMPRESS の RGB での接続となるようでした。

    DECOMPRESSEX での接続テストまではしたものの、可逆コーデックなんて中間ファイル向けで直接再生できるのは重要じゃないとしてほっておいたのですが、本件もDECOMPRESSEXをサポートすれば AVI デコンプレッサフィルタ経由での各カラースペースでの伸張ができるんじゃないかとおもいます。
    DMOでのデコードがサポートになったので激しくいまさらですが、うまく動かないときのセカンドチョイスとしてどうでしょうか?

  3. 梅澤 威志 @ 2011-05-09 12:47

    それは興味深い挙動ですね。私も ICM_DECOMPRESSEX_* が ICM_DECOMPRESS_* の前に飛んでくるところまでは調べましたが、DECOMPRESSEX でサポートされる機能(ソース/デスティネーション矩形)は不要と考えて、それ以上は追究しませんでした。

    ちょっと調べてみます。

  4. 梅澤 威志 @ 2011-05-09 19:00

    今しがたやってみたんですが、ICM_DECOMPRESSEX_* は飛んできませんね…

    昔私が見たのは見間違えなのかそれとも(当時は XP だったはずなので)挙動が変わったのか…

  5. 梅澤 威志 @ 2011-05-09 20:16

    ここの最初のコメの x64 だとダメな件ですが、単に AviSynth の x64 版をインストールしていなかったというだけの話でした。いやはや(^^;

  6. Vista 32bitで6.x→9.0.0 x86を上書きインストールしました。
    この時点では以前出力したutvideoコーデックのaviファイルをAviUtlで読み込めましたが出力コーデックに現れなくなったので、PC再起動の後utvideo-x86.regを実行しました。
    すると今度はAviutlで読み込もうとするとエラーが出てAviUtlが落ちてしまうようになりました。
    Windows Media Playerではutvideo形式のaviを再生できるのですが・・・。
    utvideoで出力したソースが多くて困りました。なんとか修復できないでしょうか。

  7. 上の続きです。私は多少環境が特殊かも知れません。
    インストール等の管理用の管理ユーザーと常用の標準ユーザーでアカウントを分けて使っているのですが、今回不具合があるのは標準ユーザーの方だけのようです。
    以前別のコーデックのインストールで同じような事があり、標準ユーザーを管理者ユーザーに昇格させてインストールし直して解決した記憶があったので同じように試したのですが、それでもダメですね・・・。

  8. 度々すいません。レジストリエディタで確認したところ、問題のあるユーザのレジストリだけに書き込まれている古いdllの位置を示す値を発見しました。

    コンピュータ\HKEY_USERS\[ユーザー]\Software\Microsoft\Windows NT\CurrentVersion\Drivers.desc
    名前「C:\PROGRA~1\utvideo\utvideo.dll」データ「deo.dll」

    コンピュータ\HKEY_USERS\[ユーザー]\Software\Microsoft\Windows NT\CurrentVersion\DRIVERS32
    名前「vidc.ulra」データ「C:\PROGRA~1\utvideo\utvideo.dll」
    名前「vidc.ulrg」データ「C:\PROGRA~1\utvideo\utvideo.dll」
    名前「vidc.uly0」データ「C:\PROGRA~1\utvideo\utvideo.dll」
    名前「vidc.uly2」データ「C:\PROGRA~1\utvideo\utvideo.dll」

    これらの値は削除したほうが良いのでしょうか?
    コメント覧を私用してしまってすいません。

  9. 梅澤 威志 @ 2011-05-12 00:48

    >>tisさん
    はい、ひとまず、そのレジストリエントリを消してみてください。

    7.0.2 より前はユーザーごとにインストールできるようにインストーラが作られてしまっていました。おそらく、「このユーザのみ」でインストール(管理者でない場合は自動的にこっちになる)した後「すべてのユーザ」で上書きインストールするとこのような状態になるのでしょう。

  10. 削除したら使えるようになりました。ありがとうございます。

  11. いつもUTVideoCodecを使わせて頂いております。

    昨日、8.5.0から9.0.0にバージョンアップして、MMDからいつもどおりUTVideoを使ってAVIファイルを出力しようとしたところ、「DirectShow」が「pVideoOutとConpressorIn接続失敗」というエラーを出して、AVIの出力が出来なくなってしまいました。

    また、Aviutlでも、過去にUTVideoを使って出力したAVIファイルが認識できなくなってしまいました。

    WindowsMediaPlayerでは、過去のUTVideoを使ったAVIファイルは問題なく再生できました。

    一度アンインストールして、以前使っていた8.5.0を再インストールしましたが、症状は変わりません。8シリーズ最終の8.5.2も試してみましたが、こちらも駄目でした。

    MMD側は他のコーデックや無圧縮だと問題なくAVI出力が出来ます。念のため複数のバージョンを試してみましたが、どのバージョンでもUTVideoによる出力のみ出来ません。

    1年以上愛用させて頂いておりますが、このような症状は今回が初めてです。

    もし何か解決の方法があれば、ご教授頂ければ幸いです。OSはWindows7 Home Premiumの32ビット版、UTVideoは、×86のみをインストールしております。

    お忙しいところ申し訳ありませんが、ご回答頂ければと思います。

  12. 梅澤 威志 @ 2011-05-21 16:02

    まとめると、8.5.0 から 9.0.0 に上書きインストールしたら、
    – MMDでエンコード (DirectShow) : ×
    – AviUtlでデコード (VCM) : ×
    – WMPでデコード (DirectShow) : ○
    – バージョンを戻してMMDでエンコード : ×
    – 8.5.2 にしてMMDでエンコード : ×
    ということでしょうか。

    見た感じ、utv_vcm.dll がうまく登録されていないように思われます。
    とりあえず、9.0.0 にした上で、 C:\Program Files\utvideo にある utvideo-x86.reg をダブルクリックして、中身をレジストリに追加してみてください。

    もしそれで解決しないようであれば、vclist (http://umezawa.dyndns.info/wordpress/?cat=45) で表示される結果を教えてください。

  13. 早速のご回答ありがとうございます。教えて頂いた方法で、無事使えるようになりました。

  14. UTVideoCode 9.0.0を使って録画したaviファイルがwmp12で再生できません。(音だけが出て画面は真っ黒です。)
    aviutlでは問題なく再生できますので、コーデックのインストールに失敗しているわけではないようです。
    インターネットを検索したのですが、同じような例は見つけられませんでした。まず何を確認すればいいでしょうか?
    OSは、windows7 home premium 64bitです。

  15. 梅澤 威志 @ 2011-06-06 19:30

    真っ黒、ですか…
    – 4つあるどのコーデック(FourCC)で撮りましたか?他のコーデックでも同様の症状になりますか?
    – 8.5.2 にバージョンダウンした場合にも症状は発生しますか?

  16. お返事ありがとうございます。

    – 4つあるどのコーデック(FourCC)で撮りましたか?他のコーデックでも同様の症状になりますか?

    ULY0で撮りました。
    ULY2で撮ったところ、wmp12で問題なく再生できました。
    なお、ULRAとULRGでは、ICCompressBeginというエラーが出て録画できませんでした。

    – 8.5.2 にバージョンダウンした場合にも症状は発生しますか?

    8.5.2にバージョンダウンしたところ、
    ULRAとULRGでは、9.0.0同様にICCompressBeginというエラーが出て録画できませんでした。
    ULY0とULY2では、wmp12で再生しようとすると音符のマークが出て画像が再生できませんでした。

  17. 8.5.2のULY0とULY2で撮ったファイルは、aviutlでは、いずれも問題なく再生できます。

  18. 梅澤 威志 @ 2011-06-07 21:00

    なるほど…だんだん読めてきました。以下は 9.0.0 でテストしてください。
    – WMPの設定でビデオアクセラレーションを無しにするとどうなりますか?(これを書いてる時点で手元にWin7が無いので正確な文言は分かりません、すみません)
    – ビデオカード(のチップの型番)とドライバのバージョンを教えてください。
    – その他のビデオ環境を教えてください。例えばデュアルディスプレイにしているとか、ディスプレイをミラーリングして片方はHDMI接続でTVに繋いでいるとか。

  19. お手数をおかけして申し訳ありません。

    – WMPの設定でビデオアクセラレーションを無しにするとどうなりますか?(これを書いてる時点で手元にWin7が無いので正確な文言は分かりません、すみません)

    wmp12のそれらしい項目は、「ビデオスムージングを使う」と「wmvファイルのDirectXビデオアクセラレータを有効にする」しかありませんでしたので、両方チェックを外してみましたが、状況は変わりませんでした。

    – ビデオカード(のチップの型番)とドライバのバージョンを教えてください。

    ディスプレイアダプタはIntel(R) HD Graphics、ドライバのバージョンは、8.15.10.2104です。チップの型番はわからないです。すみません。

    – その他のビデオ環境を教えてください。例えばデュアルディスプレイにしているとか、ディスプレイをミラーリングして片方はHDMI接続でTVに繋いでいるとか。

    ビデオ入力は、USB接続のビデオキャプチャでコンポジット入力で行っていて、出力はノートパソコンlenovo z560の液晶ディスプレイに出力しています。
    難しいことは何も行っていないのですが。

    よろしくお願いします。

  20. 梅澤 威志 @ 2011-06-08 11:32

    ううーん。

    現象としては、デコーダとレンダラ(画面表示を行うDirectShowフィルタ)との間が YUY2 で繋がってるとちゃんと表示されて、YV12 で繋がってるとダメ、(ついでに言うと RGB ではそもそも繋がらない)ということだと思います。
    # そもそもレンダラが RGB での接続をサポートしていないように見えるのがまずおかしい。

    相性問題なので手元ではデバッグできないし、さてどうしたものやら…ドライバアップデートで解決したら儲けものですけど。

  21. ネットで調べたところ、wmp12は「directshowではなく、mediafoundationという新しいフレームワークで作られているので、互換性は微妙」とか、「搭載されていないフィルターがある」などの情報がありました。このあたりが原因かもしれません。
    mediafoundationを無効にするツールなども紹介されていましたが、副作用が怖いので、試していません。
    また何かわかりましたら教えてください。ありがとうございました。

Add your comment now