Neo r2824+AviSynthCUDAFilters 0.5.0の組み合わせで、
OnCPU(2)
KMergeStatic(KTGMC(Preset="Slower", TR2=2, SourceMatch=3, Lossless=2), last, KAnalyzeStatic(last))
OnCUDA(2)
とやると、AvsPmodでプレビューしようとするとフリーズする。
ので、r2822+0.4.6の組み合わせに戻した。
Amatsukazeだと、r2822+0.5.0っぽいんだけどね
>>927
> K(Q)TGMCは単品で使うと結構情報が欠落しちゃう
どういう情報が欠落するの?
単品で使ってたので気になる amatsukazeのdelogoフィルタとかデブロックが試した感じかなりいいけど
普通のavisynth版がないのが残念だなぁ
amaのロゴデータでそのままdelogo出来るプラグイン欲しい
既存のに比べて凄く精度良い気がする
0939名無しさん@編集中 (スプッッ Sd1f-cBvm)2019/07/04(木) 08:41:05.00ID:PBrRgnvFd
>>938
同感
これができればaviutlと卒業できるのに いや取得の楽さの話をしてるんじゃなくて
ログ除去の適用性能が高いって言ってるんだよ
今のAvisynthにあるdelogoだと一律にかけることしかできないけど
Amatsukazeのdelogoは状況によって強弱かけてるでしょ
ああ、"ama"って"amatsukaze"のことだったのね
amaっていうロゴ配布サイトでもあるのかと思ってたわ
Ryzen Zen2がエンコ方面も爆速になってるのを見ていよいよ買い替えの機運が高まってきたけど、どのモデル買うか迷う。
エンコーダーはスレッド数に応じてほぼリニアに速度あがるけど、どう考えても先にネックになるのは
常用してるシングルスレッドしか対応してないAvisynthフィルタのどれかなんだよな。
フィルタがボトルネックになる分、エンコ設定重くできるよ!
0947名無しさん@編集中 (スッップ Sd1f-KpCZ)2019/07/08(月) 21:21:24.64ID:MJNZ0kibd
cuda対応のvapoursynth neoなんて出ないかな?
neoとCUDAフィルタ入れてみた
PV4ファイルエンコにKFM使えるなんて胸熱
KFMDeint(mode=2, cuda=true)とSelectField()併用すると、画が壊れる事がある。よくわからん。
ちょっとだけわかってきた。SelectField()使うとフィールドオーダーがKFMDeintに渡らなくなるのか
全編で動くシーンの画が壊れるけど、SelectField()の後に再度フィールドオーダー明示してやると
ちゃんとインタレ解除してくれる。
オリジナルのQTGMCでも若干画が壊れるけどKFMDeintの方が圧倒的に顕著。他のデインタレフィルタだと
こうした症状は無いっぽいです。
>>952
初めて聞きました。ソース情報もらえますか? SelectField()ってこれ?
function SelectField(clip clip, int num, string "order") {
fc=clip.framecount-1
order=Default(order,"bottom")
T1=clip.Trim(0,num-1)
T2=clip.Trim(num,-1).SeparateFields()
T2=order=="top"?T2.SelectEven().nnedi3(dh=true):T2.SelectOdd().nnedi3(dh=true)
T3=clip.Trim(num+1,0)
return (num>=fc)?T1++T2:(num>0)?T1++T2++T3:T2++T3
}
当然この関数自体フィールドフラグがなくなると思うが
すいません、SelectField()がユーザー定義関数なことすっかり失念してました(Avisynth内部関数だとばかり…)。
SelectField()を使う場合デインタレの直前にフィールド指定するか、SelectField()自体をフィールドオーダー
引き継げるよう改造するしか無さそうですね。
DoubleWeave()にまつわる話かと思ったら違った・・
多分SeparateFields()とnnedi3のdh使わないようにするだけで望みの挙動になると思う
function SelectField(clip clip, int num, int "order”) {
fc=clip.framecount-1
order=Default(order,clip.GetParity() ? 1 : 0)
T1=clip.Trim(0,num-1)
T2=clip.Trim(num,-1)
T2=T2.nnedi3(field=order)
T3=clip.Trim(num+1,0)
return (num>=fc)?T1++T2:(num>0)?T1++T2++T3:T2++T3
}
これで問題おきなくなるんじゃないかな。orderは1でtop、0でbottom、省略でクリップのTFF、BFFの設定引き継ぎ
おぉ自分で改悪したの添削してもらおうと思ったら、先に優れたものを作ってくださったお方が。かたじけないです orz
供養
function SelectField(clip clip, int num, string "order") {
fc=clip.framecount-1
orgorder=clip.GetParity()
order=Default(order,"bottom")
T1=clip.Trim(0,num-1)
T2=clip.Trim(num,-1).SeparateFields()
T2=order=="top"?T2.SelectEven().nnedi3(dh=true):T2.SelectOdd().nnedi3(dh=true)
T3=clip.Trim(num+1,0)
joinclip=(num>=fc)?T1++T2:(num>0)?T1++T2++T3:T2++T3
return (orgorder==true)?joinclip.AssumeTFF():joinclip.AssumeBFF()
}
俺のテストしてないんで供養せずにそっち使ってください
なんか出過ぎた真似してしまって申し訳なす
>>956
多分理屈は同じじゃないかな エンコード時にD&Dするbatで
echo Import("前処理avs.avs") >>本エンコavs.avs
みたいにして本エンコavsファイル作れば?
>>962
「前処理avsファイル」で使用した書式のうちいくつかは「本エンコavsファイル」では使用してはいけないので、
共通部分だけまとめたavsファイルを別途作成してImport(しかも複数箇所)しないと実現できなそうです。 どんなavsか分からないから何に困ってるのかよくわからないけど、前処理+共通の全部書いたテンプレのavs作って
状況に応じて行頭コメントアウトしたり文字置換等をバッチ若しくは手動でするのは無理なの?
>>963
その本エンコavsに不要な書式は固定なんか? >>963
前処理用にリネームしたavs2pipemodを用意して、
スクリプト内ではGetProgramName()で分岐させるのが良いと思う フラグになる変数定義して if 文でどうのとかはだめなん?
俺は AvsPmod でトリミングするときは処理を軽くするためにフィルタを解除したり、
編集おわったらフィルタ全適用したりってやるのに変数適当に定義して if 文でまわしてる。
どういう処理されてるかさっぱり分からないからみんな「それならこうした方が良い」ってのが
言い出せないかと思う
いろいろコメントありがとうございます>各位
GetProgramName()で分岐とか環境変数で制御とか思いつかなかったなぁ。
無理に呼び出し元バッチで何とかしようとせず、avsファイルを一つに
まとめて、スクリプト内で制御した方が賢いかもしれない。
ちなみに現在使用している環境のイメージとしては以下のような感じです。
(作業が発生する度共通部分をpre→mainに転記している)
前処理用フィルタは固定ですが、共通部分とかメイン用フィルタは
都度内容や使用件数が変わるものとお考え下さい。
# pre avs
MPEG2Source("source.d2v", upConv=1)
AssumeTFF()
UserDef1() #共通部分1
UserDef2() #共通部分2
UserDef3() #共通部分3
PFilterA() #前処理用フィルタ
return last
# main avs
MPEG2Source("source.d2v", upConv=1)
AssumeTFF()
UserDef1() #共通部分1
MFilterA() #メイン用重いフィルタ
UserDef2() #共通部分2
UserDef3() #共通部分3
MFilterB() #メイン用スゴク重いフィルタ
return last
>>964>>966
ホンマそれ。だけどメンドイし、手動によるミスも多いです… >>970
そういうスクリプトだとしたら俺ならこうするかなー
変数切り替えて使うww
HOGE = 1 # 1 = Pre, 2 = Main
MPEG2Source("source.d2v", upConv=1)
AssumeTFF()
UserDef1() #共通部分1
if ( HOGE == 2 ) {
MFilterA() #メイン用重いフィルタ
}
UserDef2() #共通部分2
UserDef3() #共通部分3
if ( HOGE == 2 ) {
MFilterB() #メイン用スゴク重いフィルタ
} else if ( HOGE == 1 ) {
PFilterA() #前処理用フィルタ
}
return last 同時編集する必要性が分からないんだけど・・
普通にメイン部分を無効で登録しておき編集して「前処理フィルタ」実行
処理が終わったら「前処理フィルタ」を無効にして「メイン用重いフィルタ」の調整としたほうが
流れるように作業できラクなはず
自分は高度なこと分からない人だから
type pre.avs | find /v "PFilterA" >pre2.avs
type pre2.avs | find /v "return" >pre3.avs
みたいに転がして後は文字列の置き換えてメインフィルター追記して
main.avsで出力みたいなのしか発想できない
Anime4kはリアルタイムでアップスケールして再生するためのものだから
Avisynthにかませる理由があまりないでしょ
nnedi3_rpow2でも使えばよい
nnedi3_rpow2より速そうだし出来も良さそうだなって思ったんだけど
やっぱないかあ
早いだろうけど出来は及ばないでしょ
あくまでもリアルタイムにしてはすごいってだけで
avisynthのプラグインは「調整が決まれば」という但し書きが付くけどね
それはAnime4Kはもっとそうで
得意な映像なら、なんだよ
不得意なパターンも報告されてるわけでね
リアルタイムだからどうしようもない部分はある