102 lines
2.9 KiB
Python
102 lines
2.9 KiB
Python
import vapoursynth as vs
|
|
import kagefunc as kgf
|
|
import fvsfunc as fvf
|
|
import vsTAAmbk as vstaa
|
|
import adjust
|
|
from nnedi3_rpow2 import nnedi3_rpow2
|
|
|
|
core = vs.core
|
|
core.max_cache_size = 32768
|
|
|
|
#source
|
|
src = core.ffms2.Source("[HorribleSubs] Symphogear XV - 03 [1080p].mkv")
|
|
src = src.std.Trim(first=8730, last=9815)
|
|
src = src.std.AssumeFPS(fpsnum=24000, fpsden=1001)
|
|
|
|
#deblock
|
|
src = core.fmtc.bitdepth(src, bits=16)
|
|
deblock = core.deblock.Deblock(src, quant=16)
|
|
|
|
#rescale
|
|
#Y, U, V = kgf.split(deblock)
|
|
#Y = kgf.inverse_scale(Y, height=872, kernel="bicubic", b=1/3, c=1/3, mask_detail=True)
|
|
#Y = nnedi3_rpow2(Y).resize.Spline36(1920, 1080, format=vs.GRAY16)
|
|
#scaled = core.std.ShufflePlanes([Y, U, V], planes=[0], colorfamily=vs.YUV)
|
|
scaled = kgf.inverse_scale(deblock, height=872, kernel="bicubic", b=1/3, c=1/3, mask_detail=True)
|
|
scaled = core.fmtc.resample(scaled, css="420", kernel="lanczos")
|
|
scaled = core.fmtc.bitdepth(scaled, bits=16)
|
|
|
|
#denoise, let w2x do this?
|
|
#denoisechroma = core.knlm.KNLMeansCL(scaled, d=1, a=2, h=0.45, channels="UV", device_type='gpu', device_id=0)
|
|
#denoiseluma = core.knlm.KNLMeansCL(scaled, d=3, a=2, h=0.4, channels="Y", device_type='gpu', device_id=0)
|
|
#denoise = core.std.ShufflePlanes([denoiseluma, denoisechroma], planes=[0, 1, 2], colorfamily=vs.YUV)
|
|
|
|
#taa
|
|
taa = vstaa.TAAmbk(scaled,aatype='Nnedi3')
|
|
|
|
#deband
|
|
db = taa.f3kdb.Deband(range=16, y=40, cb=32, cr=32, grainy=24, grainc=0, output_depth=16)
|
|
mask = kgf.retinex_edgemask(taa)
|
|
maskmerge = core.std.MaskedMerge(db, taa, mask)
|
|
|
|
#w2x
|
|
upscalewx = core.fmtc.bitdepth(maskmerge, bits=32)
|
|
upscalewx = core.fmtc.resample(upscalewx, css="444", kernel="lanczos")
|
|
upscalewx = core.caffe.Waifu2x(upscalewx, noise=0, scale=4, block_w=218, block_h=218, model=3, cudnn=True, processor=0, tta=False, batch=9)
|
|
upscalewx = core.fmtc.bitdepth(upscalewx, bits=16, dmode=3)
|
|
upscalewx = core.resize.Spline36(upscalewx,width=3840,height=2160)
|
|
upscalewx = core.fmtc.resample(upscalewx, css="420", kernel="lanczos")
|
|
|
|
#svp
|
|
svp = core.fmtc.bitdepth(upscalewx, bits=8, dmode=3)
|
|
svp1superparams = """{
|
|
pel:4,
|
|
gpu:1
|
|
}"""
|
|
svp1vectorsparams = """{
|
|
block: {
|
|
w: 16,
|
|
h: 16,
|
|
overlap: 3
|
|
},
|
|
main: {
|
|
coarse: {
|
|
width: 3840,
|
|
satd: true,
|
|
trymany: true
|
|
}
|
|
},
|
|
penalty: {
|
|
lambda: 40.0,
|
|
plevel: 4.0
|
|
},
|
|
refine: [{
|
|
thsad:400
|
|
}]
|
|
}"""
|
|
svp2smoothparams = """{
|
|
rate: {
|
|
num: 48,
|
|
den: 1,
|
|
abs: true
|
|
},
|
|
algo: 13,
|
|
mask: {
|
|
cover: 150,
|
|
area: 100
|
|
},
|
|
scene: {
|
|
mode: 3
|
|
}
|
|
}"""
|
|
|
|
super = core.svp1.Super(svp, svp1superparams)
|
|
vectors= core.svp1.Analyse(super["clip"], super["data"], svp, svp1vectorsparams)
|
|
smooth = core.svp2.SmoothFps(svp, super["clip"], super["data"], vectors["clip"], vectors["data"], svp2smoothparams)
|
|
svp = core.std.AssumeFPS(smooth, fpsnum=smooth.fps_num, fpsden=smooth.fps_den)
|
|
|
|
final = kgf.adaptive_grain(svp)
|
|
final = core.fmtc.bitdepth(final, bits=10)
|
|
|
|
final.set_output()
|
|
#vspipe -y "x265_w2x_svp.vpy" - | ffmpeg -i pipe: -c:v libx265 -tune animation -crf 17 -preset slower -x265-params aq-mode=3 -pix_fmt yuv420p10le -y "x265_w2x_svp_2.mp4" |