2011/08/05

MTが安定しない

tritical's Avisynth Filters
FFTW Installation on Windows

いままで2D+3DのNRにdfttestを使っていたのですが、周波数領域で畳み込まれる行列を見たりしていて、時間がかかる割に、時間軸に周波数フィルタを使う効果って低いのではないかと思い始めました。
そもそもDFTの時間軸方向って、空間周波数を重みづけ平均しているだけでは?とか、平面空間だけ周波数表現でやって、時間軸は別のフィルタでやってもあまり変わらなさそうな・・・という結論に。

そんなことを考えつつ、SetMTModeを使って時間軸にマルチスレッド化したスクリプト↓をi7-2600K@4.5Gでエンコードするとリアルタイムエンコードができてしまうことが判明。

vsource="__vid__"
SetMTMode(5,0)
DGDecode_MPEG2Source(vsource,idct=4)
TFM(mode=1,order=-1,PP=1,slow=2).TDecimate(mode=1)
FluxSmoothT(temporal_threshold=3)
SetMTMode(2)
block=32
dfttest(ftype=0,f0beta=1,sigma=9,sbsize=block,sosize=block/2,smode=1,swin=0,tbsize=1,tmode=0,twin=7,dither=1,threads=4)
unsharpHQ(STR=0.5)
Spline144Resize(1280,720)
return last

が、何故かしばらくすると(30minぐらい?不定期)エンコード速度が半分程度になってしまうという現象が。そして最終的にはメモリアクセス違反?っぽいので落ちるという。謎です。

Jeremy DuncanさんのやSEtさんの2.5.8/2.6なavisynth-MTも試してみたのですが症状的には変わらず。
これをシングルスレッドで動作させると13fps程度しか出ないため、悩むところですが・・・。
MTで平面軸に分割すると22fps程度?までは行けるのですが、そちらもそのうち速度が遅くなるという・・・。
まぁ、良くわからんので無難にsinglethreadで動かしますかね。

0 件のコメント:

コメントを投稿