以前の記事のコメント欄で、x64 の GraphEdit でもUt Video Codec Suite を選択できるのが期待される動作である、と書きましたが、調べていったらそうではないように思えてきました。あ、もちろん「そう動いていてほしい」という願望の意味では「期待される」のですが。

まず、手元の Windows 7 x64 (もちろん Ut Video Codec Suite 7.1.1 がインストールされている)で x64 な GraphEdit を起動してみてみると、確かに指摘されたとおり、「Video Compressors」カテゴリには Ut Video Codec Suite は一切表示されません。なのですが、一緒に入れているはずの Lagarith の x64 版も表示されませんし、それどころか Windows に最初から付いてくる「Microsoft Video 1」や「Intel IYUY コーデック」すら表示されません。つまり、DirectShow ネイティブな「MJPEG Compressor」や DMO として実装されている「MSVideo8 Encoder DMO」といったフィルタだけが表示されます。

他の Windows のバージョンではどうかと思って、Vista x64 や XP x64 で同様に x64 な GraphEdit を起動してみても、Windows 7 の場合と同様で、DirectShow ネイティブなものや DMO 実装のものだけが表示されます。万が一、ということも考えて、映像コンプレッサカテゴリのフィルタを System Device Enumerator を使って全て列挙するプログラムを書いて(x64 のプログラムとしてコンパイルして)調べてみましたが、まあ結果は同じです。

というわけで、挙動を観測した限りにおいては、x64 プロセスでは AVI コンプレッサフィルタ(VCM コーデックをラップして DirectShow で映像エンコーダフィルタとしてふるまうフィルタ)はサポートされない、という結論になります。ただし、この結論を裏付けるドキュメントも一応探しはしたのですが、見つけられませんでした。System Device Enumerator を経由しないで DirectShow フィルタとして使う方法がもしかしたらあるかもしれませんが、そんなものがあっても嬉しくないです、たぶん。

ちなみにデコーダの方はどうかというと、AVI デコンプレッサフィルタはちゃんと使えるらしく、x64 な GraphEdit 上で Ut Video Codec Suite で圧縮された AVI ファイルを再生させることができました。使えないのはエンコーダだけのようです。

VCM エンコーダがが使用できないとなると、DirectShow ネイティブか DMO 実装のものを作る必要があります。DirectShow ネイティブのフィルタは書くのがとっても大変&面倒なので、やはり DMO ですかね。ちなみに、同じコードベースで x86 なものもリリースすることになるので、x86 環境では VCM 実装のエンコーダと DMO 実装のエンコーダの両方が DirectShow から見えることになりますが、デコーダの場合と違ってエンコーダはユーザが明示的にどれを使うか選ぶものなので、意図しないものが使われて挙動がおかしくなる、ということは起こらないはずです。

ところで、今まで DirectShow ベースで x64 なキャプチャソフトって見かけなかった気がするんですが、もしかしてこれのせいでしょうか。いや、それは発想が飛躍しすぎか…?

Trackback

2 comments untill now

  1. れいど @ 2010-04-14 16:58

    はじめまして、作者様のUt Video Codec Suiteをキャプチャーと編集時の中間ファイルとして使用させていただいております。

    当方で使用していた際の状況で気がついた点がありましたのでご報告いたします。

    どのトピックで書き込めば良いのかわかりませんでしたので此方で失礼致します。

    キャプチャー時に使用する際、yuv,RGBとも通常だと粗ドロップフレームが発生しないのですが、RGBで録画を行う際に、画面に黒ベタが多い状態ですととたんに当方の環境ではドロップフレームが頻発するのを確認しました。
    例えば、ゲームのダンス等をブラックバックにすると録画中はドロップフレームが発生します。
    yuv側では発生しませんでした。

    当方の環境は以下の状態です。
    PC構成
    CPU   Core2Duo E8500 3.16Ghz
    MEMORY  DDR2 4GB(OS制限で認識は3.25GB程度です)
    M/B   GYGABYTE EP35-DS4
    GPU   GYGABYTE 9800GTX
    SOUND  On-Bord
    HDD   SYSTEM 80GB
         CAPTURE 500GB*2(On Bord RAID0)
         (sequantial read 125.8 write 107.7)
    CAPTURE Monsterx-i

    OS   WindowsXP HomeEdition SP3適用済み
    キャプチャーソフト MxCapture(マルチプレクサ Hunuaaa)
    使用Codec ut Video Codec Suite Ver7.0.4

  2. 梅澤 威志 @ 2010-04-14 22:01

    普通はベタが多いと情報が減ってるので圧縮効きやすいはずなんですけどねぇ。YUVだとドロップしないのは、色差を削っているRGBよりデータが少なく、圧縮率が下がっていてもHDDへの書き込みが追いついてるのではないかと思います。
    それ以上は分かんないです。

Add your comment now