動画作成ツール「Crystel Engine」ブログ

動画作成ツール「Crystel Engine」の開発日誌です。良かったら「CE」と略して下さい。現在はMAD動画を作るためのツールとして稼動中。MADデビューしたい方は、ぜひどうぞ!ロマンはどこだ!?を胸に日々開発中

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

AVI出力に関する高速化処理

たまには、開発ネタを書かねば。

0.5.2アルファ版からAVI作成が高速化されています。
但し、動画を用いたデータだと気付きません。(動画の場合、違う場所にボトルネックがあるため)

さて、どんな風に高速化したかというと

[今まで]
・AVIを作成するための前処理を行う。
・BMPを作成する(DirectX標準のライブラリ)
・BMPをメモリ上に読み込む。
・AVIにメモリ上のBMPを足す

[現在]
・AVIを作成するための前処理を行う。
・VRAM部分の値を直接?アクセスして値を取り出す。
・AVIに足すためのメモリ上に上記の値をコピーする。

という感じにしたら、かなり早くなりました。
BMPを作成、BMPをメモリ上に読み込むの2点がなくなったので
早い・・という事でしょう。
VRAM部分に直接アクセスする細工をしたので、少しだけ標準の使用メモリも増えているはずです。

ここからは次の段階ですが、AVIに書き込む時に毎フレームずつ書き込んでいるのですが
この書き込みを減らす事により、もっと高速化ができそうです。

10フレーム分メモリに書き込み、10フレーム後にAVIに10フレーム分のデータを書き込む!

とやれば、1フレーム置きに発生していた書き込みが10フレームに1回になります。
よって、9フレーム分早くなる・・・・はずです。

AVIStreamWrite(m_lpasTmp, m_Idx, 10, m_lpBits, m_bih.biSizeImage, AVIIF_KEYFRAME, NULL, NULL);

上記の関数で「10」となっているところが一挙に書き込む事ができるはずですが、
これを1以外にすると上手く動いてくれなくて難航中だったりしています。


PageTop

コメント


管理者にだけ表示を許可する
 

進化中?

開発が行き詰ってたかと思いましたが、次期モデルはそういう仕様になるんですねw
プログラム関係は、全く分りませんが一個人として楽しみにしてます。

ではでは

アナログマ♂ | URL | 2009年09月21日(Mon)19:25 [EDIT]


1歩進んで1歩下がり中です。

アナログマ♂様

書き込みありがとうございます。
定期的にどこが高速化できるかとか、よくなる部分を探して模索中です。
勿論、行き詰る事も多々ありますがw

crysteltools | URL | 2009年09月21日(Mon)23:11 [EDIT]


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。