以下のような流れです。
複数ファイル(BMP) → ソフト → PCのメインメモリ → グラボ(DirectX対応) → モニタ
モニタは、以下のモニタを使用し、120fpsで出力しようとしてます。
http://www.viewsonic.com/products/desktop-monitors/lcd/x-series/vx2265wm-fuhzion-lcd.htm#tabbox_specs
ちなみに、ある会社ががわざわざ外注さんを使って作らせていることを知ったのですが、「そんなソフト、世の中にあるだろう」ということで、質問している次第です。
尚、PCのOSは、WidowsXPかLinuxです。
BMPファイルを1枚1枚読み込んで動画として表示するのでは、HDDのスペック的に無理があります。
SD画像(720×480ピクセル、フルカラー)は、1枚あたり約1Mバイトです。したがって秒間120枚(ノンインターレスとする)のBMPファイルを読み込むためには、120Mバイト/秒以上の転送速度が必要です。
SATA-2の理論上の転送速度は300Mバイト/秒ですが、実際にこれほどの速度を出せる記憶装置はありません。普及しているATA100では、ランダムアクセス速度は、せいぜい5Mバイト/秒です。
しかし、秒間5枚では、コマ落としみたいな映像になってしまいます。せめて15Mバイト/秒のランダムアクセス速度を出せるHDDが必要です。
よって、BMPファイルを1枚1枚読み込んで動画として表示するのでは、いくらGPUの性能がよくても、HDD(SSDを含め)のスペック的に無理があります。
そこで、1のツールの存在可能性を検討します。
上記と同様の計算で、1分間(7200フレーム)の動画を表示するためには7Gバイト以上の容量が必要となります。20fpsに落としたとしても1Gバイトを超えます。
メモリの中で画像圧縮しておけば何とかなるかもしれませんが、そこまで特化されたツールが存在しているとは思えません。
したがって、実現可能性があるとすれば2のツールでしょう。いくつかのコマンドラインツールをバッチで組み合わせることによって、実現できないことは無さそうです。
ただ、このようなツールがご質問の主旨に合うかどうか分かりません。
「1.メインメモリに読み込んで‥‥」という仕組みではないようですが、Windows 2000/XP/Vista 用のフリーソフト「SnapViewer」はどうでしょう。
更新周期を 8 msec にして、マシンが追いついてくれればいいのですが‥‥。
お試し下さい。
pahooさん回答ありがとうございます。試してみます。
>HDD/SSDの読み出し速度
この点で回答させていただきます。ご存知でしたらごめんなさい。
メモリーをハードディスクとして使う方法がありますよ。
http://www.watch.impress.co.jp/akiba/hotline/20081108/sp_acard.h...
画像の容量が少なければこっちは無料でいけますね。画像が2G以上だとマシンとしてはメモリを4G以上積めたほうがいいですね。
http://pc.watch.impress.co.jp/docs/2008/0512/ramdisk.htm
ついでですが、上記のようなものを使い、ハードディスクへのアクセスを下げることで表示速度は上がります。
OPEN→読み込み・・・・・・→表示 が
OPEN→読み込み・→表示 ぐらいにはなるかと。
ソフト自体がHDDに読み込み(DLLだとかを)に行ってしまうとHDD待ちになっちゃうので、できればソフト自体をメモリに入れておきたいところです。
ネットゲームなどのロードがすこぶる早くなりました。
pahooさんの回答2のように動画にしちゃったほうがスムーズだとは思いました。
面白そうなのでSnapViewerを試してみました。職場なのでRAMDISKは試せませんが、HDDのままだと周期8では時々止まりました。
構成
CPU:core2Duo2.66GHz
メモリ:4G 内約3.5G認識
HDD:SATA300 7200rpm キャッシュ16M
kia_44さん、回答ありがとうございます。
「メモリーをハードディスクとして使う」なるほどです。検討します。
どうも、ありがとうございました。
pahooさん回答ありがとうございます。
すいません、私の質問が悪かったです。
出力する画像は、VGA(640x480)、YCbCr(4:2:2)10bitです。
120fpsは必須なんですが、再生時間は、30秒もあれば御の字です。
ただ、pahooさんご指摘のように、HDD/SSDの読み出し速度を考慮してませんでした。
なので、可能性があるのは、pahooさんおっしゃるところの1のツールになります。
640 x 480 x 20bpp x 120fps x 30s / 8 = 2.7684GB
と、こんな感じですが、何か心当たりのツールなり情報あれば、教えて頂けると助かります。