TMMをavisynth2.6/avisynth+用に書き直しました。
ソースコード
バイナリ
※ TMM2_avx2.dllはAVX2が使えるバージョンです。Nehalemとかだと多分動きません。
※ aviisynth+ではMT_NICE_FILTERとして使えます。なお、FilterModeはスクリプト初期化時に自動的に登録されますのでSetFilterMTMode()は必要ありません。
書き始めたのは結構前なのですが、8割くらいできたところで飽きてほっぽってたら某所に催促らしきものが書かれてたのでとりあえず動くようにしてみました。
元はC++(というかほぼC)のみのコードだったので、SSE2/AVX2を追加してみたら4倍弱速くなりました。
ほんとはもうちょっと早くなると思ってたんですが、フィールド別に作られた2つのモーションマスクを一つに組み立てる最終工程で大幅にスピードダウンしてしまうので、それほどでもなかったようです。
lengthを10固定にすれば多少は改善の余地はある?
あと、最後の工程で出力がオリジナルのTMMとちょっと変わってしまっているようです。
どこで変わってるのか何度もコード見直してみたんですがよくわからないし、そもそもそれでどれくらい影響が出るのかもさっぱりわかりません(エンコとかもう数年やってないし…)。
とりあえず公開しておきますので、もし不具合見つけたら教えてください。
つーか、だれかどこで違いが出てしまうのか教えてお願い…。
0 件のコメント:
コメントを投稿