Avisynthを絶讃ιょぅょ Part32 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
「AviSynthを絶賛」というのは、聞いたら答えたり報告したりなどギブアンドテイクな作業を指す。
厨と呼ばれて当然の事を、調べもしないで訊くバカが住み着くスレではないので、
avisynth.infoぐらいは読んでおくように。
【前スレ】
Avisynthを絶讃ιょぅょ Part31
http://echo.2ch.net/test/read.cgi/avi/1383985211/
【日本語による解説】
avisynth.info
http://www.avisynth.info/
【実家】
AviSynth
http://avisynth.org/mediawiki/Main_Page KTGMCやKNNEDI3はビルドしないで普通にreleaseされてるのを使えば問題なかったです・・・ >>506
用意した覚え無かったけど、なんかあるねw
多分中身はnnedi3_rpow2と同じだわ
>>507
KTGMCはKTGMC.avsiにある
KTGMC.dllにあるKTGMC〜は内部で使ってる関数 >>509
ありがとうございます
仕組みがわかりました
AvsPModでKTGMC使ってもすごい速さでシークできるので
可能性を感じます・・・が結構落ちます・・・
グラボのメモリとかが足りないのか、故障してるのか
イベントビューアに WHEA-Logger 17 いっぱい出てるし >>510
GPUのメモリ使用量はGPU-Zとかで見れるよ。Win10ならタスクマネージャーでも見れるかな
そのエラーはHWかドライバあたりっぽいね Avisynth+ CUDA 安定してきました。
KTGMC、KNNEDI3は全然CPUパワー食わないので
CPUパワーを他のことに使えますね
高画質化とか高速化とか? GPUガンガン回して時間当たりの消費電力が増えても全体で見れば凄い省電力ってのは精神衛生上大変よろしい そういう意味じゃ、D3DVPは圧倒的な消費電力低減につながるな CUDAは無理だが、D3DVPはRadeonでも使えるだろw MDegrainのGPU化物凄く助かる
マジ感謝
ラップは作れないですけど・・・ D3DVPはRadeon買ってみたくなるな
でもインタレ解除は、30fpsになっちゃうけど、
K(Q)TGMC(slower)でBOBってSelectEvenしてる
圧縮してもたいして容量変わらないし、なんか綺麗だから
誤爆とかそういう概念もなくなるし
変? ぶっちゃけradeonは大したことないよ
D3DVP側からオプション変えられないし使いにくい
KTGMC(QTGMC)でslowerが高速に動くなら
それに越したことはない ttp://linino.dip.jp/quintrokk/?p=1768
にも書かれてるんだけど
>なぜかD3DVPフィルタを適用すると、 先頭フレームが2フレーム重複して表示→以降1フレーム遅れ→最終フレーム欠落 となってしまいました。GPUが悪いのか、ドライバが悪いのか…
って感じで1フレームずれるんだけど、仕様ですか? >>521
いや、うちはNVIDIAでやってるからね KTGMCでBOBしてselectevenして、
間引きとかはもうしてないなー
誤爆とは縁が切れた
今は30fps固定のインタレ解除だけしたCFR
似たフレームなら圧縮されるだろうし
出来上がりサイズはたいしてかわらんし >>520
DGdecNVに、読み込み時と単体のHWデインタレースフィルタの3種類が用意されていたので試してみた
CUDA経由のDGBob(mode=0)とPureVideo経由のPVBob(mode=0)はズレないが
古いDGSource(〜deinterlace=1,use_D3D=true)でD3D経由インタレ解除してスキップしたりフレームを戻すと1フレずれる
Win7+GTX660環境なんでD3DVPが使えず同じ現象かは分からんが、D3Dの仕様に何か罠があったりするんかな? そういやnvidia専用のDGdecodeもあったね
懐かし 1フレームずれる分、音ズレに気をつけないといけないんだろうか EDCBスレで話題になってるVS2017のコンパイルしたものの動作不良を引き起こすバグ(仕様)が気になる
3月の頭にnnedi3とか自ビルドした間の悪さよ・・ 昨年末くらいにAvisynth+スレでもVS2017おかしくね?って話が出てたよ。
https://forum.doom9.org/showthread.php?t=168856&page=192
書き込みにもあるけど、x265のバイナリを配布してる海外の人が
VS2017 15.5はクソだなっつってV2015に戻したりもしてる。
http://msystem.waw.pl/x265/
今のpinterf氏のAvisynth+ってVS2017ビルドだよね?
ランタイム入れるのめんどいって思って最近全然更新してないや・・・。 ああ、あれってそういう話だったのか
開発も自ビルドしないからコンパイラなんて関係ないやってスルーしてたは KFMの32bit版でKFMSwitchが動かない
引数のthswitchやthpatchを設定するも引数エラーが出る
64bit版はOK >>530
CUDAが32bit版サポートしなくなってビルドできなくなってた
紛らわしいから32bit版は消しておいたわ >>531
サポート終了とは残念だが回答ありがとう
更新頂いたバージョンのリンクが0.3.1になってるので最新のお願いね
aviutlから乗り換えで別の編集用ソフト探すかな まぁ、実際のところ、作者様は
色々なバージョンを作成管理する義務はないし、
自分の時間だって欲しいはず プラグイン作者は、著作者を名乗ったりHPのリンクとか貼らなければいいんだよ。
ビルドが終わったら斧にでもアップして、一切のサポートをシカトすれば気も楽だろ。
どうせavsのプラグイン開発なんて1円も儲からない分野だしな >>520
先頭フレームの解除漏れとフレームのずれに対処するオプション追加した
border="blank",adjust=1 ってすればどっちも解決できるはず
1フレームずれるのが仕様なのかどうかは知らん
Radeon環境や、NVIDIAでもmode=0だとずれてなかった >>536
環境や、もしかしたらドライバによっても違うってことですかねえ
ちゃんと確認してからやらねばいけないね AviSynth+CUDAいじってるけどおもろいね
電気代と1080ti欲しくなるなぁ・・・ >>536
元絵とかと比較して自動アジャストとか出来ないかなー conditionalfilterフィルタがCUDAを使うと動かなくなるようで
再現性あったのでサンプルスクリプト書いてみました
SetMemoryMax(2048, type=DEV_TYPE_CUDA)
BlankClip(length=100, width=1920, height=1080, pixel_type = "YV12", fps=30000, fps_denominator=1001).KillAudio()
AssumeFrameBased()
conditionalfilter(last, last, last, "10","<", "128" )
ConvertBits(14).OnCPU(2).KDeband().OnCUDA(2).ConvertBits(10, dither=0)
return last 普通のPlusでもMT有効でconditionalfilterを使うとエラー出るし
もっと根本的なところに原因がありそう ConvertBits(14).KDeband().ConvertBits(10, dither=0)で動いたから修正できたら嬉しいのだけど
別の原因かもしれないのか。。
DecombUCFが動かなくて、conditionalfilterまで行きついた。
DecombUCF自体はconditionalfilter無しで動かすように改造して回避して
内部呼び出しのTDeintをKTGMCに変えてさらに高画質化できたよ Avisynth+CUDA専用でないならどこかにアップしてくれない?>conditionalfilter無しのdecombUCF 自信無いがこんな感じ、decombUCF v3.13が元
conditionalfilter(c
から
\, "CFieldDiff(nt=0,chroma=true)*100.0/"+String(Width(c)*Height(c)),"<", String(fd_thresh) )
まで削除
変わりに
c
追加
第一次判定をスキップするので重くなる可能性あり
以下利用サンプルではTFMでインターレース判定があった場合のみ実行することで負荷低減
#pp=0とpp=4は変えないほうが良い、インターレース判定のcthresh, MIはお好みで
Deinted = TFM(mode=6, order=-1, pp=0, slow=2, mChroma=true, MI=40, display=false)
Deinted = Deinted.DecombUCF()
TFM(mode=6, order=-1, pp=4, slow=2, mChroma=true, clip2=Deinted, cthresh=7, MI=40, display=false)
TDecimate(mode=1) スマソ、一次判定の結果が間違ってたので修正だわ。decombUCF v3.13が元
conditionalfilter(c
から
\, "CFieldDiff(nt=0,chroma=true)*100.0/"+String(Width(c)*Height(c)),"<", String(fd_thresh) )
まで削除
変わりに
c.ScriptClip(string1+string2+string3)
追加 ちょうど今日やろうとしてたところで
情報更新thx Plane Difference: This filter can only be used within run-time filters
([ScriptClip], line 4)
がMT有効だと常に表示されるは
conditionalfilterだけが問題ではないみたい@plus r2636 確認どうも
再現したのでScriptClipも回避できるか見てみるかの DecombUCFはLumaDifference系のフィルタが必要でこれもMTと合わせて利用ができないよう
リクエスト修正出てるからいずれは修正されるのかな
https://github.com/pinterf/AviSynthPlus/pull/10
CUDAの方はimportスクリプト内含め全てをOnCPU(0).OnCUDA(0)とすればMT無効と同条件でDecombUCFが動作することがわかったわ >>552
調査ありがとう
それ、去年の4月からの放置なのか・・
Avisynth+はSE't氏のMTより高度なMT処理を実装してるんだろうけど
ちょっとちょっと未成熟なのよね
プラグイン側は精力的なアップデートでかなり良くなってるんだけども あぁ、Avisynth+はScriptClip系をマルチスレッドで使うとデッドロック不可避だった
ソース見ると直そうとした形跡はあるけど、
最近のバージョンではエラーにしてるとこ見ると、もう諦めてるのかな
CUDAはOnCUDAが1つだけなら大丈夫っぽいけど、複数あるとデッドロックしそう UtVideoで吐きだしたaviファイルをフィールドピクチャ対応のL-SMASHで読み込んでいるのですが、
その最終フレームをFreezeFrameで1つ前のフレームで置き換え、
AvsPmodで表示しようとすると
Error requesting frame 34524
WindowsError: exeption: access violation reading 0x00000068
というエラーが表示されます。
以下、例。
LWLibavVideoSource("hoge.avi")
FreezeFrame(34524, 34524, 34523)
return last
この例だとAvsPmodで34524フレーム目をピンポイントでプレビューに表示(更新)させると上記のエラーが表示されます。
ただ、他のフレームをプレビューに表示してから最終フレームまでシークしていくとエラーは出ません。 AVISource()で読み込んだほうが早くね?
UTVideoの本家のデコーダーが使えるしL-SMASH Worksが内部で利用しているffmpegのデコーダーは本家の更新にすぐに追従してアップデートするわけじゃないからな 以前、AVISource()を使ってみたら
緑一色のフレームが混じることがあったのでL-SMASHを使うことにしています。
フィールドピクチャ対応のL-SMASHに変えるまでは
最終フレームの置き換えでエラーが出なかったので報告してみました。 >>557、>>559
ありがとうございます。
AVISource("hoge.avi", pixel_type = "YV12" )でやってみます。 >>558
ffmpegは動いてたのがバージョンアップで動かなくなるとかざらにあるからね・・・ AVISourceで緑のフレームが混じるって報告は前にもどこかであったけど、
野良ビルドを使ってたり、
pixel_typeを指定してるかわからなかったりだったかな
どうしてもL-SMASHが使いたいなら、
aviファイルの読み込みだけ前に使ってたやつを使えばいいんじゃない? >>561
ありがとうございます
凄いや。OnCUDA(2)やPrefetch(4)のMT環境でDecombUCFが動くのを確認できた
一度だけエラー出ましたが繰り返しすぐ起動したのが影響あったのかも。。
OnCUDA(2)で継続して使用しますね CUDA無しでも動くようでMT対応として使ってみるとか >>565
OnCUDA()が使えない環境なのに、KAnalyzeとKMergeStatic+QTGMCを使いたいが為にSynth+cudaを使ってる俺も居る
今までMask使って試行錯誤してたのがアホらしくなるくらい結果が良くてちょっと悔しい
ただ、KFM-0.3.1では問題なかったKRemoveCombeが、0.3.3でエラー吐くようになってしまって
その内切り捨てられるのではないかと内心ビクビクしてるわw うちはGTX750のCUDA環境なのにQTGMCもKTGMCも使えないから使ってない
ERROR: Assert: assertion failed だから理由もわからないし
PLUSは普通に使えるから移行しようがないんだよね ScriptClipでの異常に対応したんだ
Pluginレベルでアカンのかと思ってたけど、Avisynth自体の問題だったんだな DecombUCF、SmoothCustomやめてmt_lutにすると少し速くなる
str_y = mt_polish("(x==128)? 128 : ((x<128)? ( (((127-"+String(range_y)+")<x)&(x<(128-"+String(nmin_y)+")))? 0 : 56 ) : ( (((128+"+
String(nmin_y)+")<x)&(x<(129+"+String(range_y)+"))) ? 255 : 199 ))")
str_uv = mt_polish("(x==128)? 128 : ((x<128)? ( (((127-"+String(range_uv)+")<x)&(x<(128-"+String(nmin_uv)+")))? 0 : 56 ) : ( (((128+
"+String(nmin_uv)+")<x)&(x<(129+"+String(range_uv)+"))) ? 255 : 199))")
eval_y = Select(chroma, 3, 2, 3)
eval_u = Select(chroma, 2, 3, 3)
eval_v = Select(chroma, 2, 3, 3)
return c.mt_lut(yExpr=str_y,expr=str_uv,Y=eval_y,U=eval_u,V=eval_v) ts開発かどっかで聞いたけどスルーされたのでここでも質問
join_logo_scpで作ったカット編集ずみavsは5の倍数だとかテレシネパターンを一切考慮に入れてないみたいだんだけど
autoVFR(Fastではない全検索)による SelectEvery形式でのテレシネ解除の影響はないと考えていいの?
昔、テレシネ解除にTIVTC24P2関数を使ってた時はテレシネパターンをまたいだカット編集で誤爆った記憶があるから
手動カット編集するときは注意してたんだけど、どうなの? ScriptClipで複数のクリップを使いたいときって、どうやるんだ?
function MyFunction(clip c1, clip c2) {
return c1.ScriptClip("c2.subtitle(string(current_frame))")
}
src = LWLibavVideoSource(...)
MyFunction(src, src)
これだと動かない
DecombUCF見ると変数をglobalにしてるけど、グローバル変数使うしかない?
複数回呼び出されたときに動かなくなるから使いたくないんだが・・・ StackVerticalなどで一つのクリップにするという方法もある https://github.com/pinterf/AviSynthPlus/releases
最近のAviSynth+はインストーラからMT仕様ですか?
※現在はまだr1576(x86)を入れて動作確認しただけです(一度同時にx64も入れましたが優先がx86みたいなのでx86で様子見) >>576
なんか分かってないようだけど 64bit の方は呼び出すアプリも 64bit じゃないと使われないぞ。 >>577
MTっていうことですよね?
ありがとうございます
>>578
AvsPmodはx86もx64もあるので編集は出来ます(x64は未確認)
バッチファイルは作り直さないといけませんが(今までx264(x64)はパイプで読み出していたので) _GPU25のx64版DLLが無いからAvsPModはx86版しか使わなくなった >>580
使ってるフィルター次第だろうけど俺も同じような状態から
他のフィルターに乗り換えて _GPU25 はもうつかわんくなった。 Dup.dllのx64ってないですか?
Clean_SC(シーンチェンジフレーム置換).avsi
で必要なのですが・・・ >>583
Dup.dllのソースコードは何処かにあったはずなんだけど、そのソースコードはinline asmと呼ばれる書式で記述されている
そのinline asmはMSVCではx64でビルドすることができないのでx64に移植するのは少々規模の大きな手直しが必要になる
以上の理由で今の所x64版が無いのかもしれない というか前にも似たような話題が出て答えた気がする >>586
ソースがあるのは知ってるけど
x64ように書き換えないとダメ
誰かがやってくれるのを待つか自分でやるか・・・ >>586
他の方も言ってるけどソースをちょっと大きな手直しが必要なんだ
asm言語をintrinsic SIMD命令に書き換えるかasmをソースから切り離すかしないといけない
はっきり言うと、諦めるか自分でやるしかない それか親切な方が現れるのを待つか・・・
あんまりしつこいとクレクレ君って言われるよ 数年前までそういうやつがいてスレが少しばかり荒れてたことがあった >>588
あったらラッキー程度に聞いてみた話です
だから>>586 時点で無いと答えをもらったので「了解です」と答えてます x64でインラインasmを使いたいならインテルコンパイラを使えば?って婆ちゃんが言ってた >>589
それはすまねぇ・・・
過去にソースの入手先を張って作れだの言いまくってたやつ思い出して過度に反応してしまった
>>590
AviSynth2.58の64bit版を開発してたJoshyD氏が公開してた64bitプラグインはICLでビルドされてたはずだな ただ高いんだよな・・・
ソース見る限りC++なコード自体が残ってなさそうなのが移植の難易度上げてる気がするな いや、それ、232aだと大部分はコメントアウトされてるし、
唯一使われてるのはblend(デフォルトオフ)で使われてるだけだから
全部消しちゃってOK
それよりDupとDup1はどっちがいいんだ?
Clean_SCはDupを使ってるみたいだけどDup1だとダメなのかなぁ そういうものなのか
ビルドした記憶はあるけど、Clean_SCの調整(誤爆なくゴミ消せる)の追い込みが難しくてお蔵入りしたは >>592
現在使用しているのはDup 2.30です
Dup1は所持していませんので自分はわかりません >>592
その話聞いてオリジナル版と232aのソース見比べたら確かに大部分が呼び出されてないね
blendの部分も無視しちゃえば移植できるかも ただオリジナル版と比べて速度的な違いはどれほどなんだろ
DupとDup1の違いが分からないけどオリジナルのDupと衝突しないように名前分けてるだけなら使えると思う
Clean_SCもblend=trueは使ってないようだし限定的ながらx64化できるかもしれない 後日ちょっと見てみるわ 後日と言いつつ即日
AviSynth Dup1 x64
ttps://www.axfc.net/u/3901359
これで動くかなぁ?
Clean_SCのDup関数をDup1にしてね
MT有効化したときとかそういうの一切チェックしてないけどどうかな?
ICLでビルドしたものが出てくるまでか代替品ができるまでの繋ぎになってくれればいいけど >>595
AvsPmod(x64)で見ることはできました(DupをDup1にファンクションを変更)
r1576なのでMTは未確認(r2664他どれを入れてもフリーズなのはメモリー不足?)です
※メモリは8GBと今時としては少ない? 私8GBだけどMT使えてる
なんかの命令セットが古すぎるとかでは
>>596
thx >>597
>>555
Avisynth+でMT有効にしてScriptClip,ConditionalFilter使うとデッドロックするのは既知の問題 メーカー品じゃないからねぇ
常識ってどっかにまとまってるのかな?
くらい無意味な質問だ DecombUCFの注意点見つけました
複数clipからDecombUCFをコールするとclipが混ざることがあるようです
DecombUCF中のglobal変数を変えて、DecombUCF2とか別関数を定義して回避できた
>>571
DecombUCFの改良使わせていただいてます >>602
だれか>571で置き換える箇所をもう少し詳しく書いてくれる人いませんか? >>571の置換えはこんな感じで使ってる
function Limitter(内の以下箇所
str_y = "(Y==128)? 128 : (Y<128)? ( ((127-"+String(range_y)+"<Y)(Y<128-"+String(nmin_y)+"))? 0 : 56 ) : ( ((128+"+String(nmin_y)+"<Y)(Y<129+"+String(range_y)+")) ? 255 : 199 )"
から
return c.SmoothCustom(eval_y, eval_u, eval_v, false, 0, 0, -1)
まで7行かな 以前、UtVideoで吐きだしたaviファイルを読み込ませるのは
LWLibavVideoSource) よりも AVISource() のほうがいいと助言を頂いた者です。
あれからAVISource()を使っているのですが、速度が安定しません。
AvsPmod上の解析パスを走らせるときは最初から最後まで安定しているのですが、
batファイルで、avs2pipemodのbenchmarkを使ってログをとるときや
ノイズ除去などの補正処理を施したaviファイルをUtVideoで出力するときに、
速度の最高値を100とすると、60あたりから始まって非常にゆっくりと100まで上昇していくという状況です。
ですが、10秒ほどAvsPmod上の解析パスを走らせた後で
batファイルを実行すると最初から100の速度で安定して処理を行えています。
何が原因なのでしょうか? ショボスクリプトのスレ無くなったんで、ここ借ります。
縞なし24(5フレーム中2フレームが重複)の周期判定に使うスクリプト
# 例
# S1 : 1 1 2 3 4 | 1 1 2 3 4 | ... SelectEvery(5, 1, 2, 3, 4)
# S2 : 1 2 2 3 4 | 1 2 2 3 4 | ... SelectEvery(5, 0, 2, 3, 4)
# S3 : 1 2 3 3 4 | 1 2 3 3 4 | ... SelectEvery(5, 0, 1, 3, 4)
# S4 : 1 2 3 4 4 | 1 2 3 4 4 | ... SelectEvery(5, 0, 1, 2, 4)
# DoubleWeave後、10フレーム毎に特定部分を抽出した時に縞が出ない周期を見つける
# DoubleWeave().SelectEvery(10, 1) #S1
# DoubleWeave().SelectEvery(10, 3) #S2
# DoubleWeave().SelectEvery(10, 5) #S3
# DoubleWeave().SelectEvery(10, 7) #S4
DoubleWeave().SelectEvery(10, 1) #S1
この状態で周期変化すればその部分だけ縞になるから、後はその縞を検出するスクリプトなりプラグインなりで判定 ■ このスレッドは過去ログ倉庫に格納されています