「lua for AviUtl」を修正しました。バージョンは 0.0.10b です。
AviUtl プラグイン フィルタ by うえぽん
最近はGPUを使ったAviUtlのプラグインが多いですが、それと一緒にlua for AviUtlを使うとなぜか誤動作していました(GPU使用プラグインを無効にしていても誤動作する)。
色々調べたところ luaconf.h のこの部分がクラッシュの原因だったようです。注釈にもDirectXと一緒に使うとたまにクラッシュすると書いてあります。
double型からint型へのキャストを高速に行うトリックのようです。
このトリックを使わずに普通にキャストするようにしたらクラッシュしなくなりました。
平方根を高速に求めるものでもこの手のトリックが使われることがありますが、そういうのは誤動作を避けるためにもあまり使わない方が良いかもしれません。
AviUtl プラグイン フィルタ by うえぽん
最近はGPUを使ったAviUtlのプラグインが多いですが、それと一緒にlua for AviUtlを使うとなぜか誤動作していました(GPU使用プラグインを無効にしていても誤動作する)。
色々調べたところ luaconf.h のこの部分がクラッシュの原因だったようです。注釈にもDirectXと一緒に使うとたまにクラッシュすると書いてあります。
/* the next trick should work on any Pentium, but sometimes clashes with a DirectX idiosyncrasy */ #else union luai_Cast { double l_d; long l_l; }; #define lua_number2int(i,d) \ { volatile union luai_Cast u; u.l_d = (d) + 6755399441055744.0; (i) = u.l_l; } #define lua_number2integer(i,n) lua_number2int(i, n) #endif
double型からint型へのキャストを高速に行うトリックのようです。
このトリックを使わずに普通にキャストするようにしたらクラッシュしなくなりました。
平方根を高速に求めるものでもこの手のトリックが使われることがありますが、そういうのは誤動作を避けるためにもあまり使わない方が良いかもしれません。
コメント