Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import vapoursynth as vs
- core=vs.core
- import kagefunc as kgf
- import zzfunc as zz
- import fvsfunc as fvf
- import muvsfunc as muf
- import mvsfunc as mvf
- import havsfunc as haf
- import debandshit as db
- import mvmulti as mv
- import vsTAAmbk as taa
- import dhh
- import descale
- import rgvs
- import zzfunc_beta as zzt
- import mt_lutspa
- import math
- import adjust
- def AutoDeblock(src, edgevalue=24, db1=0.2, db2=1, db3=6, deblocky=True, deblockuv=True, debug=False, redfix=False,
- fastdeblock=False, adb1=3, adb2=4, adb3=8, adb1d=2, adb2d=7, adb3d=11, planes=None):
- try:
- import havsfunc as haf
- except ImportError:
- raise ImportError('AutoDeblock: havsfunc not found. Download it here: https://github.com/HomeOfVapourSynthEvolution/havsfunc')
- def to8bit(f):
- return f * 0xFF
- def eval_deblock_strength(n, f, fastdeblock, unfiltered, fast, weakdeblock,
- mediumdeblock, strongdeblock):
- out = unfiltered
- if fastdeblock:
- if to8bit(f[0].props.OrigDiff) > adb1 and to8bit(f[1].props.YNextDiff) > adb1d:
- return fast
- else:
- return unfiltered
- if to8bit(f[0].props.OrigDiff) > adb1 and to8bit(f[1].props.YNextDiff) > adb1d:
- out = weakdeblock
- if to8bit(f[0].props.OrigDiff) > adb2 and to8bit(f[1].props.YNextDiff) > adb2d:
- out = mediumdeblock
- if to8bit(f[0].props.OrigDiff) > adb3 and to8bit(f[1].props.YNextDiff) > adb3d:
- out = strongdeblock
- return out
- def fix_red(n, f, unfiltered, autodeblock):
- if (to8bit(f[0].props.YAverage) > 50 and to8bit(f[0].props.YAverage) < 130
- and to8bit(f[1].props.UAverage) > 95 and to8bit(f[1].props.UAverage) < 130
- and to8bit(f[2].props.VAverage) > 130 and to8bit(f[2].props.YAverage) < 155):
- return unfiltered
- return autodeblock
- if redfix and fastdeblock:
- raise ValueError('AutoDeblock: You cannot set both "redfix" and "fastdeblock" to True!')
- if planes is None:
- planes = []
- if deblocky: planes.append(0)
- if deblockuv: planes.extend([1,2])
- maxvalue = (1 << src.format.bits_per_sample) - 1
- orig = core.std.Prewitt(src)
- orig = core.std.Expr(orig, "x {edgevalue} >= {maxvalue} x ?".format(edgevalue=edgevalue, maxvalue=maxvalue))
- orig_d = orig.rgvs.RemoveGrain(4).rgvs.RemoveGrain(4)
- predeblock = haf.Deblock_QED(src, uv=2).deblock.Deblock(planes=[1,2])
- fast = core.dfttest.DFTTest(predeblock, tbsize=1)
- fast = core.text.Text(fast, 'deblock') if debug else fast
- unfiltered = predeblock
- unfiltered = core.text.Text(unfiltered, 'unfiltered') if debug else unfiltered
- weakdeblock = csharp(mvf.BM3D(predeblock, sigma=1, psample=0, profile1='fast'), predeblock)
- weakdeblock = core.text.Text(weakdeblock, 'weakdeblock') if debug else weakdeblock
- mediumdeblock = csharp(mvf.BM3D(predeblock, sigma=2, psample=0, profile1='fast'), predeblock)
- mediumdeblock = core.text.Text(mediumdeblock, 'mediumdeblock') if debug else mediumdeblock
- strongdeblock = csharp(mvf.BM3D(predeblock, sigma=6, psample=0, profile1='fast'), predeblock)
- strongdeblock = core.text.Text(strongdeblock, 'strongdeblock') if debug else strongdeblock
- difforig = core.std.PlaneStats(orig, orig_d, prop='Orig')
- diffnext = core.std.PlaneStats(src, src.std.DeleteFrames([0]), prop='YNext')
- autodeblock = core.std.FrameEval(unfiltered, partial(eval_deblock_strength, fastdeblock=fastdeblock,
- unfiltered=unfiltered, fast=fast, weakdeblock=weakdeblock,
- mediumdeblock=mediumdeblock, strongdeblock=strongdeblock),
- prop_src=[difforig,diffnext])
- if redfix:
- src = core.std.PlaneStats(src, prop='Y')
- src_u = core.std.PlaneStats(src, plane=1, prop='U')
- src_v = core.std.PlaneStats(src, plane=2, prop='V')
- autodeblock = core.std.FrameEval(unfiltered, partial(fix_red, unfiltered=unfiltered,
- autodeblock=autodeblock), prop_src=[src,src_u,src_v])
- return autodeblock
- from vsutil import *
- from functools import partial
- both = dict(coordinates=[0,1,0,1,1,0,1,0])
- def fuckMPEG2(clip):
- atx = AutoDeblock(clip).resize.Spline16(1920)
- clip = atx
- mask = atx.resize.Spline36(960,540)
- mask = haf.FineDehalo(mask, showmask=1).std.Transpose().znedi3.nnedi3(0,1,0,0,1).std.Transpose().znedi3.nnedi3(0,1,0,0,1).resize.Spline36(src_left=.5,src_top=.5)
- dha = atx.std.MaskedMerge(haf.DeHalo_alpha(atx, 3, 3, darkstr=0.1, brightstr=0.6), mask, 0)
- y = zz.y(dha)
- rmask = db.rangemask(y,2,1).std.Binarize(1000).std.Maximum().std.Minimum().std.Minimum().std.Minimum().std.Minimum()
- emask = y.std.Prewitt().std.Binarize(6000).std.Maximum()
- strongmask = core.std.Expr([rmask, emask], 'y x -').std.Inflate()
- p1 = core.bilateral.Bilateral(dha, sigmaS=5 / 3, sigmaR=8 / 255, planes=0, algorithm=0)
- p2 = mvf.BM3D(dha, sigma=24, psample=0, profile1='fast')
- p0 = core.std.Expr([dha,p1,p2], ['x y z min max y z max min','z'])
- p = csharp(p0,dha,11).rgvs.Repair(dha, 23)
- p = mvf.LimitFilter(p, dha, thr=12, brighten_thr=4, elast=2, planes=0)
- p = mvf.LimitFilter(p, dha, thr=6, planes=[1,2])
- rimask = haf.HQDeringmod(p, mrad=4, msmooth=3, mthr=30, show=1)
- atx = dha.std.MaskedMerge(p, rimask, [0,1,2], True)
- atx = atx.std.MaskedMerge(csharp(p2,dha), strongmask, [0,1,2], True)
- y = zz.y(atx)
- mask = zzt.combine([y.std.Prewitt(), get_y(clip).std.Prewitt()]).std.Binarize(35<<8).std.Maximum().std.Minimum(threshold=1<<15,**both)
- mclip = mask.resize.Point(1920*2, 1080*2).fmtc.resample(3520, 1980, kernel='box', fulls=1, fulld=1)
- s1 = haf.LSFmod(y.bilateral.Bilateral(sigmaS=2, sigmaR=12 / 255, algorithm=0), strength=150)
- s2 = haf.LSFmod(y, strength=150)
- y = y.std.MaskedMerge(median(y, s1, s2), mask)
- aa = y
- aa = aa.znedi3.nnedi3(0,1,0,0,4,2,0,1).resize.Spline36(height=1980, src_top=0.5)
- aa = aa.std.Transpose()
- aa = aa.znedi3.nnedi3(0,1,0,0,4,2,0,1).resize.Spline36(height=3520, src_top=0.5)
- aa = aa.eedi3m.EEDI3(0,0,0,0.2, 0.5, 69, mclip=mclip.std.Transpose(), sclip=aa.znedi3.nnedi3(0,0,0,0,4,2,0,1)).std.Transpose()
- aa = aa.eedi3m.EEDI3(0,0,0,0.2, 0.5, 69, mclip=mclip , sclip=aa.znedi3.nnedi3(0,0,0,0,4,2,0,1)).resize.Spline36(1920,1080)
- y = y.std.MaskedMerge(aa, mask)
- atx = zz.mergechroma(y, atx)
- return atx
- def decensor(cr, atx, radius=5, min_length=3, smooth=6, thr=None, bordfix=10, alt=None, unfuck_mpeg2=fuckMPEG2, debug=False):
- from vsutil import split, fallback, iterate
- core = vs.core
- fmt = cr.format
- peak = (1 << fmt.bits_per_sample) - 1
- thr = fallback(thr, 24 << (fmt.bits_per_sample - 8))
- alt = fallback(alt, cr)
- clip = core.std.Expr([cr, atxref], 'x y - abs')
- mask = core.std.Expr(split(clip.resize.Point(format=vrv.format.replace(subsampling_w=0, subsampling_h=0).id)), 'x y z max max')
- mask1_ = mask.std.Binarize(3.5 * 256).std.Minimum().std.Minimum()
- mask1 = iterate(mask1_, core.std.Maximum, 10)
- mask2 = iterate(iterate(mask.std.Binarize(25<<8), core.std.Minimum, 5), core.std.Maximum, 25)
- mask = zzt.combine([mask1, mask2])
- mask = core.std.Expr([mask, zzt.combine([mask1_, mask2]).fmtc.bitdepth(bits=32,fulls=1).fmtc.resample(1,1,kernel='box').std.Expr(f'x 0.5 > 1 0 ?',vs.GRAY8).resize.Point(1920, 1080)], 'y 65535 x ?')
- mask = maxm(mask, sw=50)[-1]
- mask = minm(mask, sw=30)[-1]
- mask = minm(mask, sw=20, threshold=65536//21)[-1]
- clip = core.resize.Point(clip, format=fmt.replace(subsampling_w=0, subsampling_h=0).id).std.Binarize(thr)
- clip = core.std.Expr(split(clip), 'x y z max max')
- clip = iterate(clip, core.std.Minimum, radius)
- def binarize_frame(n, f, clip=clip): return core.std.BlankClip(clip, 1, 1, color=peak if f.props.PlaneStatsMax else 0)
- prop_src = clip.std.Crop(bordfix,bordfix,bordfix,bordfix).std.PlaneStats()
- clip = core.std.FrameEval(core.std.BlankClip(clip, 1, 1), binarize_frame, prop_src=prop_src)
- if min_length == 2:
- med = clip.tmedian.TemporalMedian(1) # faster than Clense
- clip = core.std.Expr([clip, med], 'x y min')
- if min_length > 2:
- avg = core.misc.AverageFrames(clip, [1] * ((min_length * 2) + 1)).std.Binarize(peak//2)
- clip = core.std.Expr([clip, avg], 'x y min')
- if smooth > 0:
- clip = zzt.shiftframes(clip, [-smooth, smooth])
- clip = zzt.combine(clip)
- clip = core.misc.AverageFrames(clip, [1] * ((smooth * 2) + 1))
- smooth //= 2
- mask = zzt.shiftframes(mask, [-smooth, smooth])
- mask = zzt.combine(mask)
- mask = core.misc.AverageFrames(mask, [1] * ((smooth * 2) + 1))
- if debug:
- alt = alt.text.Text('Family Friendly')
- atx = atxref.text.Text('SEND BOBS AND VAGENE')
- elif callable(unfuck_mpeg2):
- atx = unfuck_mpeg2(atx)
- def _merge_tits(n, f):
- weight = f.props.PlaneStatsMax
- if weight == peak:
- return alt.std.MaskedMerge(atx, mask, [0,1,2], True)
- if weight == 0:
- return alt
- return core.std.Merge(alt, alt.std.MaskedMerge(atx, mask, [0,1,2], True), weight/peak)
- return [core.std.FrameEval(alt, _merge_tits, prop_src=clip.std.PlaneStats()), clip, mask]
- def median(*clips): return core.std.Expr(clips, 'x y z min max y z max min')
- def error_mask(clip, desc, thr1=2500, thr2=None, expand1=2, expand2=3, blur=3, bwbias=1, min_length=1):
- y,u,v = split(clip)
- start = 0
- error = desc.resize.Bicubic(1920, 1080, filter_param_a=1/3, filter_param_b=1/3)
- error = core.std.Expr([y, error], 'x y - abs')
- if bwbias > 1:
- chroma = core.std.Expr([u,v], 'x 32768 - abs y 32768 - abs max').resize.Point(1920, 1080)
- bias = core.std.Expr([y, chroma], f'x {235 << 8} >= x {16 << 8} <= or y 0 = and {bwbias} 1 ?').std.Maximum().std.Maximum()
- error = core.std.Expr([error, bias], 'x y *')
- error = iterate(error, core.std.Maximum, expand1)
- for x in range(expand1):
- error = error.std.Maximum(coordinates=[[1]*8, [0,1,0,1,1,0,1,0]][min(start%3,1)])
- start += 1
- if thr2 is not None:
- error = error.std.Binarize(thr2).misc.Hysteresis(error.std.Binarize(thr1))
- else:
- error = error.std.Binarize(thr1)
- for x in range(expand2):
- error = error.std.Maximum(coordinates=[[1]*8, [0,1,0,1,1,0,1,0]][min(start%3,1)])
- start += 1
- if min_length > 1:
- avg = core.misc.AverageFrames(error, [1] * ((min_length * 2) + 1)).std.Binarize(65535//2)
- _error = core.std.Expr([error, avg], 'x y min')
- _error = zzt.combine(zzt.shiftframes(_error, [-min_length, min_length]))
- error = zzt.combine([error, _error], 'min')
- if blur:
- return error.std.BoxBlur(hradius=blur, vradius=blur)
- return error
- def ringing_mask(clip, rad=4, ethr1=30<<8, ethr2=50<<8, minthr=0.5):
- prew = clip.std.Prewitt()
- mask_lo = prew.std.Binarize(ethr1)
- mask_hi = prew.std.Binarize(ethr2)
- main = core.std.Expr([mask_lo, mask_hi.std.Maximum().std.Maximum(), mask_hi], 'x y - z max')
- main = main.std.Maximum().std.Maximum().std.Minimum().std.Minimum()
- shrink = main.std.Minimum()
- lines = core.std.Expr([clip.std.Maximum(**both).std.Maximum(**both).std.Minimum(**both).std.Minimum(**both), clip], 'x y -').std.Binarize(10<<8)
- mask = core.std.Expr([main, shrink.std.Maximum(), main.std.Merge(shrink, minthr), lines], f'x y 0 = and x z ? a max')
- imask = iterate(mask, core.std.Maximum, rad).std.Invert()
- return [core.std.Expr([mask, imask], 'x y +'), prew.std.Maximum()]
- def repair1(clip, repairclip, rad=1, alt=None, mode='ellipse'):
- if rad == 1:
- return clip.rgvs.Repair(repairclip, 1)
- rmax = repairclip if alt is None else zzt.combine([repairclip, alt])
- rmin = repairclip if alt is None else zzt.combine([repairclip, alt], 'min')
- rmax = haf.mt_expand_multi(rmax, sw=rad, sh=rad, mode=mode)
- rmin = haf.mt_inpand_multi(rmin, sw=rad, sh=rad, mode=mode)
- return core.std.Expr([clip, rmax, rmin], 'x y min z max')
- def show(*clips): return core.std.Interleave(clips, mismatch=1).resize.Spline36(format=vs.RGB24, dither_type='error_diffusion',matrix_in=1)
- def post_adjust_aa(clip): return taa.TAAmbk(clip, aatype='Eedi3', alpha=0.2, beta=0.5, nrad=2, mdis=20)
- def mt_xxpand_multi(clip, sw=1, sh=None, mode='square', planes=None, start=0, M__imum=core.std.Maximum, **params):
- sh = fallback(sh, sw)
- planes = list(range(clip.format.num_planes)) if planes is None else [planes] if isinstance(planes, int) else planes
- if mode == 'ellipse':
- coordinates = [[1]*8, [0,1,0,1,1,0,1,0], [0,1,0,1,1,0,1,0]]
- elif mode == 'losange':
- coordinates = [[0,1,0,1,1,0,1,0]] * 3
- else:
- coordinates = [[1]*8] * 3
- clips = [clip]
- end = min(sw, sh) + start
- for x in range(start, end):
- clips += [M__imum(clips[-1], coordinates=coordinates[x % 3], planes=planes, **params)]
- for x in range(end, end + sw - sh):
- clips += [M__imum(clips[-1], coordinates=[0,0,0,1,1,0,0,0], planes=planes, **params)]
- for x in range(end, end + sh - sw):
- clips += [M__imum(clips[-1], coordinates=[0,1,0,0,0,0,1,0], planes=planes, **params)]
- return clips
- maxm = partial(mt_xxpand_multi, M__imum=core.std.Maximum)
- minm = partial(mt_xxpand_multi, M__imum=core.std.Minimum)
- def csharp(flt, src, str=20):
- np = flt.format.num_planes
- blur = flt.rgvs.RemoveGrain(str)
- return core.std.Expr([flt,src,blur], ['x dup + z - x y min max x y max min','',''][:np])
- atx = core.d2v.Source(r'C:\Users\Zastin\Downloads\Kaifuku Jutsushi no Yarinaoshi - 03 (AT-X HD MPEG2).ts.d2v')
- ivtc1 = fvf.JIVTC(atx, 1, thr=15, draft=False, tff=True)
- ivtc3 = fvf.JIVTC(atx, 3, thr=15, draft=False, tff=True)
- ivtc4 = fvf.JIVTC(atx, 4, thr=15, draft=False, tff=True)
- vrv = core.ffms2.Source(r'C:\Users\Zastin\Desktop\cartoons\[SubsPlease] Kaifuku Jutsushi no Yarinaoshi - 03 (1080p) [300B9475].mkv')[192:]
- atx = core.std.Splice([ivtc4[786:4887], ivtc1[5126:16658], vrv.resize.Spline16(1440)[15633:15705], ivtc3[16658:35072]])[:34105]
- atx = join([zzt.padding(x.std.Crop(left=1, right=1).edgefixer.ContinuityFixer(2,0,2,0), left=1, right=1) for x in split(atx)])
- vrv = vrv[:34105]
- vrv = depth(vrv, 16)
- atx = depth(atx, 16)
- atxref = atx.resize.Spline16(1920)
- atxref = fvf.rfs(atxref, vrv, '[0 5802][15320 16114][31076 33716][33999 34104]')
- #core.std.StackVertical([vrv, atxref]).set_output()
- o = vrv
- clip = vrv
- ### DESCALE ###
- y = get_y(clip)
- des = depth(depth(y, 32).descale.Debicubic(1488, 837, b=1/3, c=1/3),16)
- err = error_mask(clip, des, thr1=1500, thr2=3000, expand1=1, expand2=4, blur=3, bwbias=2, min_length=2)
- rm, pw = ringing_mask(y)
- nn = des.std.Transpose().znedi3.nnedi3(0,1,0,0,4,2,0,1).std.Transpose().znedi3.nnedi3(0,1,0,0,4,2,0,1).resize.Spline36(1920,1080,src_left=.5, src_top=.5)
- rep = y.std.MaskedMerge(nn, rm)
- ar0 = nn.rgvs.Repair(rep,1)
- ar = ar0
- luma = y.std.MaskedMerge(ar, pw.std.Binarize(25<<8).rgvs.RemoveGrain(20)).std.MaskedMerge(y, err)
- clip = zz.mergechroma(luma, clip)
- ### DECENSOR ###
- clip, cen, cenmask = decensor(vrv, atx, radius=5, min_length=3, smooth=6, thr=20<<8, bordfix=10, alt=clip, unfuck_mpeg2=fuckMPEG2, debug=False)
- censor = core.std.Expr([cen.resize.Point(1920,1080), cenmask], 'x y 0 ?')
- #show(clip).set_output()
- ### DENOISE ###
- mask = clip.std.Prewitt().std.Binarize([1500,1000]).rgvs.RemoveGrain(11)
- nr0 = zz.smd(clip, 2, 100).knlm.KNLMeansCL(3,2,4,0.5,'UV')
- nr = mvf.LimitFilter(nr0, clip, thr=3/4, thrc=2/3, elast=4)
- clip = median(clip, clip.deblock.Deblock(quant=21), nr).std.MaskedMerge(clip, mask)
- ### DEBAND ###
- y,u,v = split(clip)
- stats = y.std.PlaneStats()
- agm3 = core.adg.Mask(stats, 3)
- ymax = maxm(y, sw=30, mode='ellipse')
- ymin = minm(y, sw=30, mode='ellipse')
- umax = maxm(u, sw= 2, mode='ellipse')[-1]
- umin = minm(u, sw= 2, mode='ellipse')[-1]
- vmax = maxm(v, sw= 2, mode='ellipse')[-1]
- vmin = minm(v, sw= 2, mode='ellipse')[-1]
- ### edge detection
- thr = 3.2 * 256
- ypw0 = y.std.Prewitt()
- ypw = ypw0.std.Binarize(thr).std.Inflate()
- ### range masks (neighborhood max - min)
- rad = 3
- thr = 2.5 * 256
- yrangesml0 = core.std.Expr([ymax[3], ymin[3]], 'x y - abs')
- yrangesml = yrangesml0.std.Binarize(thr).std.BoxBlur(0,2,1,2,1)
- rad = 16
- thr = 4 * 256
- yrangebig0 = core.std.Expr([ymax[rad], ymin[rad]], 'x y - abs')
- yrangebig = yrangebig0.std.Binarize(thr)
- yrangebig = minm(yrangebig, sw=4, threshold=65535, mode='ellipse')[-1]
- yrangebig = minm(yrangebig, sw=12, threshold=65536 // 13, mode='ellipse')[-1]
- ### morphological masks (shapes)
- rad = 30
- thr = 1 * 256
- ymph = core.std.Expr([y, maxm(ymin[rad], sw=rad, mode='ellipse')[rad],
- minm(ymax[rad], sw=rad, mode='ellipse')[rad]], 'x y - z x - max')
- ymph = ymph.std.Binarize(256)
- ymph = ymph.std.Minimum().std.Maximum()
- ymph = maxm(ymph, sw=5, threshold=65536//6)[-1]
- ymaskmain = zzt.combine([yrangebig, yrangesml0.std.Binarize(384).std.BoxBlur(0,2,1,2,1)])
- grad_mask = zzt.combine([ymph, yrangesml, ypw])
- grain_excl = core.std.Expr([ymax[6], ymin[6]], 'x y - abs').std.Binarize(6<<8).std.Minimum().std.Minimum(**both).std.BoxBlur(0,4,1,4,1)
- grain_mask = core.std.Expr([yrangebig, grad_mask, grain_excl], '65535 y - x min z -')
- grain_mask = core.std.Expr([grain_mask.std.Binarize(65535).misc.Hysteresis(grain_mask), grain_mask], 'x y 0 ?')
- grain_mask = grain_mask.std.BoxBlur(0,16,1,16,1)
- ydebn_src = y.dfttest.DFTTest(sigma=1, tbsize=1, sbsize=48, sosize=36)
- ydebn_src = csharp(ydebn_src, y).std.MaskedMerge(y, zzt.combine([ymph, ymaskmain]))#.std.MaskedMerge(ydebn_src, censor)
- ydebn_nomask = ydebn_src.f3kdb.Deband(16, 41, 0, 0, 0, 0, output_depth=16)
- ydebn_weak = y.f3kdb.Deband(16, 25, 0, 0, 0, 0, output_depth=16)
- ydebn = ydebn_nomask.std.MaskedMerge(csharp(ydebn_nomask, y).std.Merge(y, 2/3), ymph)
- ydebn = ydebn.std.MaskedMerge(ydebn_weak, ymaskmain)
- ydebn = ydebn.std.MaskedMerge(ydebn_nomask, censor)
- strong_grain = ydebn_nomask.std.Merge(ydebn).grain.Add(0.6, constant=True, seed=69)
- normal_grain = ydebn.std.MaskedMerge(ydebn.grain.Add(0.3, constant=True, seed=69), agm3)
- y_final = normal_grain.std.MaskedMerge(strong_grain, grain_mask).std.MaskedMerge(ydebn, grain_excl)
- usml = core.std.Expr([umax, umin], 'x y - abs').std.Binarize(384).std.BoxBlur(0,2,1,2,1)
- vsml = core.std.Expr([vmax, vmin], 'x y - abs').std.Binarize(384).std.BoxBlur(0,2,1,2,1)
- cmask = yrangesml.resize.Bilinear(960, 540, src_left=-0.5)
- cmask = cmask.std.Expr('x 2 /')
- cmask = zz.yuv(yrangesml, zzt.combine([usml, cmask]), zzt.combine([vsml, cmask]))
- clip = zz.mergechroma(y_final, clip)
- clip = clip.f3kdb.Deband(16, 0, 41, 41, 0, 0, 2, output_depth=16).std.MaskedMerge(clip, cmask, [1,2])
- depth(clip, 10).set_output()
- #vspipe "C:/Users/Zastin/Desktop/WIP/healer/03.vpy" -y - | "C:\Users\Zastin\Desktop\WIP\x264_x64.exe" --demuxer y4m -f -1 --fade-compensate 0.5 --threads 8 --preset veryslow --psy-rd 0.85 --merange 32 -b 16 --crf 14.69 --aq-mode 3 --qcomp 0.75 --output-depth 10 --colormatrix bt709 --colorprim bt709 --transfer bt709 --range tv --stitchable -o "C:\Users\Zastin\Desktop\wip\healer\03.h264" -
Add Comment
Please, Sign In to add comment