Moved Symphogear/XV scripts into its own folder.
2
.gitignore
vendored
@ -9,3 +9,5 @@ cudnn_data/
|
|||||||
*.webm
|
*.webm
|
||||||
ffmpeg2pass*.log
|
ffmpeg2pass*.log
|
||||||
!mask_2.png
|
!mask_2.png
|
||||||
|
*.m2ts
|
||||||
|
*.lwi
|
@ -1,50 +0,0 @@
|
|||||||
import vapoursynth as vs
|
|
||||||
import fag3kdb
|
|
||||||
import kagefunc as kgf
|
|
||||||
import fvsfunc as fvf
|
|
||||||
import vsTAAmbk as vstaa
|
|
||||||
|
|
||||||
core = vs.get_core()
|
|
||||||
core.max_cache_size = 16384
|
|
||||||
|
|
||||||
src = core.ffms2.Source("[HorribleSubs] Symphogear XV - 01 [1080p].mkv",track=0)
|
|
||||||
|
|
||||||
#resmapling to 444 and 16bit for filters
|
|
||||||
resam = src.std.AssumeFPS(fpsnum=24000, fpsden=1001)
|
|
||||||
resam = core.fmtc.bitdepth(resam, bits=16)
|
|
||||||
resam = core.fmtc.resample(resam, css="444", kernel="lanczos")
|
|
||||||
|
|
||||||
#gpu accelerated noise reduction
|
|
||||||
#i use a h paramater quite a bit under the default 1.2 to prevent killing more details but mostly for personal taste
|
|
||||||
fil = core.knlm.KNLMeansCL(resam, d=1, a=2, h=0.4, channels="YUV", device_type='gpu', device_id=0)
|
|
||||||
|
|
||||||
#episode doesnt really have any aliasing but it doesnt hurt and doesnt eat cpu time at all relatively
|
|
||||||
taa = vstaa.TAAmbk(fil,aatype='Nnedi3')
|
|
||||||
|
|
||||||
#flash3kyuu_deband
|
|
||||||
#retinex_edgemask merge is used to help preserve details on edges
|
|
||||||
band = taa.f3kdb.Deband(range=12, y=60, cb=40, cr=40, grainy=15, grainc=0, output_depth=16)
|
|
||||||
mask = kgf.retinex_edgemask(fil)
|
|
||||||
merge = core.std.MaskedMerge(band, fil, mask)
|
|
||||||
#adaptive grain helps preserve details from the encoder. this is less important for x265 but it doesnt hurt to do
|
|
||||||
merge = kgf.adaptive_grain(merge)
|
|
||||||
|
|
||||||
#debugging edgemask merge
|
|
||||||
#stack1 = core.std.StackHorizontal([resam, fil])
|
|
||||||
#blank = core.std.BlankClip(merge)
|
|
||||||
#stack2 = core.std.StackHorizontal([core.std.ShufflePlanes(clips=[mask,blank], planes=[0, 1, 2], colorfamily=vs.YUV), merge])
|
|
||||||
#merge = core.std.StackVertical([stack1, stack2])
|
|
||||||
|
|
||||||
#debugging taa
|
|
||||||
#stack1 = core.std.StackHorizontal([fil, taa])
|
|
||||||
#stack2 = core.std.StackHorizontal([core.std.BlankClip(taa), core.std.MakeDiff(fil, taa, planes=[0])])
|
|
||||||
#merge = core.std.StackVertical([stack1, stack2])
|
|
||||||
|
|
||||||
#actual final output
|
|
||||||
final = core.fmtc.resample(merge, css="420", kernel="lanczos")
|
|
||||||
final = core.fmtc.bitdepth(final, bits=10, dmode=3)
|
|
||||||
final.set_output()
|
|
||||||
|
|
||||||
#ffmpeg
|
|
||||||
#vspipe -y "x265_Icebingo.vpy" - | ffmpeg -i pipe: -c:v libx264 -tune animation -crf 16 -pix_fmt yuv420p10 -preset slow -y "test1.mp4"
|
|
||||||
#vspipe -y "x265_Icebingo.vpy" - | ffmpeg -i pipe: -c:v libx265 -tune animation -crf 17 -pix_fmt yuv420p10 -preset slow -y "xv01.mp4"
|
|
@ -1,102 +0,0 @@
|
|||||||
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"
|
|
@ -1,44 +0,0 @@
|
|||||||
import vapoursynth as vs
|
|
||||||
import kagefunc as kgf
|
|
||||||
import fvsfunc as fvf
|
|
||||||
import vsTAAmbk as vstaa
|
|
||||||
from nnedi3_rpow2 import nnedi3_rpow2
|
|
||||||
|
|
||||||
core = vs.core
|
|
||||||
core.max_cache_size = 32768
|
|
||||||
|
|
||||||
src = core.ffms2.Source("[HorribleSubs] Symphogear XV - 04 [1080p].mkv")
|
|
||||||
src = core.fmtc.bitdepth(src, bits=16)
|
|
||||||
scaled = kgf.inverse_scale(src, height=872, kernel="lanczos", taps=5, mask_detail=True)
|
|
||||||
|
|
||||||
#upscalenn = nnedi3_rpow2(scaled).resize.Spline36(1920, 1080, format=vs.YUV420P16)
|
|
||||||
#denoise = kgf.hybriddenoise(upscalenn, knl=0.5, sigma=1, radius1=0)
|
|
||||||
#taa = vstaa.TAAmbk(denoise,aatype='Nnedi3')
|
|
||||||
#db = taa.f3kdb.Deband(range=16, y=40, cb=32, cr=32, grainy=24, grainc=0, output_depth=16)
|
|
||||||
#mask = kgf.retinex_edgemask(denoise)
|
|
||||||
#finalnn = core.std.MaskedMerge(db, taa, mask)
|
|
||||||
#finalnn = kgf.adaptive_grain(finalnn)
|
|
||||||
#finalnn = core.fmtc.bitdepth(finalnn, bits=10, dmode=3)
|
|
||||||
|
|
||||||
|
|
||||||
upscalewx = core.fmtc.bitdepth(scaled, bits=32)
|
|
||||||
upscalewx = core.fmtc.resample(upscalewx, css="444", kernel="lanczos")
|
|
||||||
upscalewx = core.caffe.Waifu2x(upscalewx, noise=1, scale=1, block_w=387, block_h=387, model=3, cudnn=True, processor=0, tta=False, batch=7)
|
|
||||||
#upscalewx = core.resize.Spline16(upscalewx,width=1920,height=1080)
|
|
||||||
upscalewx = core.fmtc.bitdepth(upscalewx, bits=16, dmode=3)
|
|
||||||
upscalewx = nnedi3_rpow2(upscalewx).resize.Spline36(1920, 1080, format=vs.YUV444P16)
|
|
||||||
taa = vstaa.TAAmbk(upscalewx,aatype='Nnedi3')
|
|
||||||
db = taa.f3kdb.Deband(range=16, y=40, cb=32, cr=32, grainy=24, grainc=0, output_depth=16)
|
|
||||||
mask = kgf.retinex_edgemask(upscalewx)
|
|
||||||
finalwx = core.std.MaskedMerge(db, taa, mask)
|
|
||||||
finalwx = kgf.adaptive_grain(finalwx)
|
|
||||||
finalwx = core.fmtc.resample(finalwx, css="420", kernel="lanczos")
|
|
||||||
finalwx = core.fmtc.bitdepth(finalwx, bits=10, dmode=3)
|
|
||||||
|
|
||||||
|
|
||||||
#stack1 = core.std.StackHorizontal([finalnn, finalwx])
|
|
||||||
#final = stack1
|
|
||||||
#final = core.fmtc.bitdepth(final, bits=10, dmode=3)
|
|
||||||
finalwx.set_output()
|
|
||||||
|
|
||||||
#vspipe -y "x264.vpy" - | ffmpeg -i pipe: -c:v libx264 -tune animation -crf 16 -preset slower -pix_fmt yuv420p10le -y "x264.mp4"
|
|
@ -1,58 +0,0 @@
|
|||||||
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 = 49152
|
|
||||||
|
|
||||||
#source
|
|
||||||
src = core.ffms2.Source("[HorribleSubs] Symphogear XV - 07 [1080p].mkv")
|
|
||||||
src = src.std.Trim(first=30604, last=30704)
|
|
||||||
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)
|
|
||||||
|
|
||||||
#There is basically no difference between running taa and deband before or after w2x.
|
|
||||||
#taa
|
|
||||||
Y = core.fmtc.bitdepth(Y, bits=16)
|
|
||||||
taa = vstaa.TAAmbk(Y,aatype='Nnedi3')
|
|
||||||
|
|
||||||
#deband
|
|
||||||
db = taa.f3kdb.Deband(range=16, y=32, cb=32, cr=32, grainy=24, grainc=0, random_algo_ref=2, random_algo_grain=2, output_depth=16)
|
|
||||||
mask = kgf.retinex_edgemask(taa)
|
|
||||||
maskmerge = core.std.MaskedMerge(db, taa, mask)
|
|
||||||
|
|
||||||
#w2x
|
|
||||||
#model 3 - block size: 218/270 batch: 50, benchmark: 0.3fps
|
|
||||||
#model 5 - block size: 38 (rec), batch: 1440, benchmark: 0.0195fps
|
|
||||||
#model 6 - block size: 8, batch: 5. takes minutes to execute per frame.
|
|
||||||
yupscalewx = core.fmtc.bitdepth(maskmerge, bits=32)
|
|
||||||
yupscalewx = core.caffe.Waifu2x(yupscalewx, noise=0, scale=4, block_w=218, block_h=218, model=3, cudnn=True, processor=0, tta=False, batch=50)
|
|
||||||
yupscalewx = core.fmtc.bitdepth(yupscalewx, bits=16, dmode=3)
|
|
||||||
yupscalewx = core.resize.Spline36(yupscalewx,width=3840,height=2160)
|
|
||||||
|
|
||||||
uupscalewx = core.fmtc.bitdepth(U, bits=32)
|
|
||||||
uupscalewx = core.caffe.Waifu2x(uupscalewx, noise=0, scale=4, block_w=270, block_h=270, model=3, cudnn=True, processor=0, tta=False, batch=50)
|
|
||||||
uupscalewx = core.fmtc.bitdepth(uupscalewx, bits=16, dmode=3)
|
|
||||||
|
|
||||||
vupscalewx = core.fmtc.bitdepth(V, bits=32)
|
|
||||||
vupscalewx = core.caffe.Waifu2x(vupscalewx, noise=0, scale=4, block_w=270, block_h=270, model=3, cudnn=True, processor=0, tta=False, batch=50)
|
|
||||||
vupscalewx = core.fmtc.bitdepth(vupscalewx, bits=16, dmode=3)
|
|
||||||
|
|
||||||
scaled = core.std.ShufflePlanes([yupscalewx, uupscalewx, vupscalewx], planes=[0], colorfamily=vs.YUV)
|
|
||||||
|
|
||||||
final = kgf.adaptive_grain(scaled)
|
|
||||||
final = core.fmtc.bitdepth(final, bits=12)
|
|
||||||
|
|
||||||
final.set_output()
|
|
||||||
#vspipe -y "x265_w2x.vpy" - | ffmpeg -i pipe: -c:v libx265 -tune animation -crf 17 -preset slower -x265-params aq-mode=3 -pix_fmt yuv444p12le -y "x265_w2x.mp4"
|
|
||||||
#vspipe -y "x265_w2x.vpy" --y4m - | x265 --demuxer y4m -o Sympho5_07p.264 - --preset slower --tune animation --crf 17 --aq-mode 3 --output-depth 12 --output-csp i444
|
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
33
Symphogear/XV/Shinai1/shinai.vpy
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
import vapoursynth as vs
|
||||||
|
import kagefunc as kgf
|
||||||
|
import fvsfunc as fvf
|
||||||
|
import vsTAAmbk as vstaa
|
||||||
|
import vsutil
|
||||||
|
from nnedi3_rpow2 import nnedi3_rpow2
|
||||||
|
|
||||||
|
from ytttfunc import adaptivegrain
|
||||||
|
|
||||||
|
|
||||||
|
core = vs.core
|
||||||
|
core.max_cache_size = 8192
|
||||||
|
|
||||||
|
src = core.lsmas.LWLibavSource("bdmv/KIXA_90890/BDMV/STREAM/00007.m2ts")[24:-24]
|
||||||
|
src = core.fmtc.bitdepth(src, bits=16)
|
||||||
|
|
||||||
|
Y = vsutil.get_y(src)
|
||||||
|
|
||||||
|
Y800 = kgf.inverse_scale(Y, height=800, kernel="bicubic", b=1/3, c=1/3, mask_detail=True)
|
||||||
|
Y800 = nnedi3_rpow2(Y800).resize.Spline36(1920, 1080, format=vs.GRAY16)
|
||||||
|
|
||||||
|
Y872 = kgf.inverse_scale(Y, height=872, kernel="bicubic", b=1/3, c=1/3, mask_detail=True)
|
||||||
|
Y872 = nnedi3_rpow2(Y872).resize.Spline36(1920, 1080, format=vs.GRAY16)
|
||||||
|
|
||||||
|
Yd = fvf.rfs(Y872, Y800, "[8952 9695]")
|
||||||
|
scaled = core.std.ShufflePlanes([Yd, src], planes=[0, 1, 2], colorfamily=vs.YUV)
|
||||||
|
|
||||||
|
final = src
|
||||||
|
final = adaptivegrain.adaptive_grain(final)
|
||||||
|
final = core.fmtc.bitdepth(final, bits=10, dmode=3)
|
||||||
|
final.set_output()
|
12
Symphogear/XV/Shinai1/shinai_ac.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import acsuite
|
||||||
|
import os
|
||||||
|
import vapoursynth as vs
|
||||||
|
|
||||||
|
core = vs.core
|
||||||
|
|
||||||
|
ac = acsuite.AC()
|
||||||
|
path = r"bdmv/KIXA_90890/BDMV/STREAM/00007.m2ts"
|
||||||
|
src = core.lsmas.LWLibavSource(path)
|
||||||
|
ac.eztrim(src, [(24, -24)], os.path.splitext(path)[0] + ".wav", "shinai.wav")
|