vivy: tv: 10
This commit is contained in:
parent
d7baa7e9fe
commit
5ca5bf799d
81
Vivy/10/10.vpy
Normal file
81
Vivy/10/10.vpy
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
import vapoursynth as vs
|
||||||
|
|
||||||
|
from vivy_common import (VivyConfig, VivySource, antialias, deband, denoise,
|
||||||
|
finalize, fsrcnnx_rescale, letterbox_edgefix, letterbox_refix, regrain)
|
||||||
|
|
||||||
|
from yt_common.automation import SelfRunner
|
||||||
|
from yt_common.source import waka_replace
|
||||||
|
|
||||||
|
from lvsfunc.types import Range
|
||||||
|
from lvsfunc.dehardsub import HardsubLine, HardsubSignFade, HardsubMask, bounded_dehardsub
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
core = vs.core
|
||||||
|
|
||||||
|
|
||||||
|
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
|
||||||
|
CONFIG: VivyConfig = VivyConfig(EPNUM)
|
||||||
|
SOURCE: VivySource = VivySource(CONFIG)
|
||||||
|
|
||||||
|
WAKA_REPLACE: List[List[Range]] = [
|
||||||
|
[(30354, 31683)],
|
||||||
|
[],
|
||||||
|
]
|
||||||
|
SIGNS_RU: List[HardsubMask] = [
|
||||||
|
HardsubLine([
|
||||||
|
(98, 189),
|
||||||
|
(2931, 5045),
|
||||||
|
], ((283, 844), (1349, 204))),
|
||||||
|
HardsubSignFade([
|
||||||
|
(30347, 30353),
|
||||||
|
], refframe=1),
|
||||||
|
HardsubSignFade([
|
||||||
|
(5094, 5214),
|
||||||
|
(33950, 34046),
|
||||||
|
]),
|
||||||
|
]
|
||||||
|
NOSCALE: List[Range] = [
|
||||||
|
]
|
||||||
|
AA_NONE: List[Range] = [
|
||||||
|
]
|
||||||
|
AA_STRONGER: List[Range] = [
|
||||||
|
]
|
||||||
|
LETTERBOX: List[Range] = [
|
||||||
|
(11509, 13149),
|
||||||
|
(25136, 25244),
|
||||||
|
]
|
||||||
|
LETTERBOX_FADES: List[Range] = [
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def filter_basic() -> vs.VideoNode:
|
||||||
|
wakas, ref = SOURCE.dhs_source()
|
||||||
|
wakas = [w[:33687] + w[33696:] for w in wakas]
|
||||||
|
waka = wakas[0]
|
||||||
|
waka, wakas = waka_replace(waka, wakas[1:], WAKA_REPLACE)
|
||||||
|
src = bounded_dehardsub(waka, ref, SIGNS_RU, wakas)
|
||||||
|
src.set_output(1)
|
||||||
|
return src
|
||||||
|
|
||||||
|
|
||||||
|
def filter() -> vs.VideoNode:
|
||||||
|
src = filter_basic()
|
||||||
|
den = denoise(src)
|
||||||
|
rescale = fsrcnnx_rescale(den, NOSCALE)
|
||||||
|
edgefix = letterbox_edgefix(rescale, crops=LETTERBOX, fades=LETTERBOX_FADES)
|
||||||
|
deb = deband(edgefix)
|
||||||
|
aa = antialias(deb, stronger=AA_STRONGER, noaa=AA_NONE)
|
||||||
|
refix = letterbox_refix(aa, deb, LETTERBOX)
|
||||||
|
grain = regrain(refix)
|
||||||
|
final = finalize(grain)
|
||||||
|
final.set_output()
|
||||||
|
return final
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
SelfRunner(CONFIG, SOURCE, filter, filter_basic)
|
||||||
|
else:
|
||||||
|
filter()
|
@ -5,10 +5,10 @@ import vardefunc as vdf
|
|||||||
|
|
||||||
from awsmfunc import bbmod
|
from awsmfunc import bbmod
|
||||||
from debandshit import f3kbilateral
|
from debandshit import f3kbilateral
|
||||||
|
from functools import partial
|
||||||
from lvsfunc.aa import upscaled_sraa
|
from lvsfunc.aa import upscaled_sraa
|
||||||
from lvsfunc.denoise import bm3d
|
from lvsfunc.denoise import bm3d
|
||||||
from lvsfunc.kernels import Bicubic
|
from lvsfunc.misc import replace_ranges, scale_thresh
|
||||||
from lvsfunc.misc import replace_ranges
|
|
||||||
from lvsfunc.types import Range
|
from lvsfunc.types import Range
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
|
|
||||||
@ -43,11 +43,31 @@ def _fixplane(clip: vs.VideoNode, top: int, bottom: int,
|
|||||||
bbmod(clip.std.Crop(top=clip.height-bottom), top=1 if not chroma else 0)])
|
bbmod(clip.std.Crop(top=clip.height-bottom), top=1 if not chroma else 0)])
|
||||||
|
|
||||||
|
|
||||||
def letterbox_edgefix(clip: vs.VideoNode, ranges: List[Range]) -> vs.VideoNode:
|
def letterbox_edgefix(clip: vs.VideoNode, crops: Optional[List[Range]] = None,
|
||||||
fy = _fixplane(clip.std.ShufflePlanes(planes=0, colorfamily=vs.GRAY), top=132, bottom=131, bbt=3, bbb=3)
|
fades: Optional[List[Range]] = None) -> vs.VideoNode:
|
||||||
fu = _fixplane(clip.std.ShufflePlanes(planes=1, colorfamily=vs.GRAY), top=66, bottom=65, bbt=2, bbb=2, chroma=True)
|
assert clip.format is not None
|
||||||
fv = _fixplane(clip.std.ShufflePlanes(planes=2, colorfamily=vs.GRAY), top=66, bottom=65, bbt=2, bbb=2, chroma=True)
|
fixed = clip
|
||||||
return replace_ranges(clip, core.std.ShufflePlanes([fy, fu, fv], planes=[0, 0, 0], colorfamily=vs.YUV), ranges)
|
if fades:
|
||||||
|
fy = _fixplane(clip.std.ShufflePlanes(planes=0, colorfamily=vs.GRAY),
|
||||||
|
top=132, bottom=131, bbt=2, bbb=2)
|
||||||
|
fu = _fixplane(clip.std.ShufflePlanes(planes=1, colorfamily=vs.GRAY),
|
||||||
|
top=66, bottom=65, bbt=1, bbb=2, chroma=True)
|
||||||
|
fv = _fixplane(clip.std.ShufflePlanes(planes=2, colorfamily=vs.GRAY),
|
||||||
|
top=66, bottom=66, bbt=1, bbb=2, chroma=True)
|
||||||
|
f = core.std.ShufflePlanes([fy, fu, fv], planes=[0, 0, 0], colorfamily=vs.YUV)
|
||||||
|
fixed = replace_ranges(fixed, f, fades)
|
||||||
|
if crops:
|
||||||
|
black = [
|
||||||
|
vsutil.scale_value(0, 8, clip.format.bits_per_sample, range_in=vsutil.Range.FULL,
|
||||||
|
range=vsutil.Range.LIMITED, scale_offsets=True),
|
||||||
|
scale_thresh(0.5, clip),
|
||||||
|
scale_thresh(0.5, clip),
|
||||||
|
]
|
||||||
|
crop = clip.std.Crop(top=132, bottom=132)
|
||||||
|
bb = bbmod(crop, top=2, bottom=2, blur=500)
|
||||||
|
f = bb.std.AddBorders(top=132, bottom=132, color=black)
|
||||||
|
fixed = replace_ranges(fixed, f, crops)
|
||||||
|
return fixed
|
||||||
|
|
||||||
|
|
||||||
def letterbox_refix(aa: vs.VideoNode, noaa: vs.VideoNode, ranges: List[Range]) -> vs.VideoNode:
|
def letterbox_refix(aa: vs.VideoNode, noaa: vs.VideoNode, ranges: List[Range]) -> vs.VideoNode:
|
||||||
@ -84,10 +104,12 @@ def deband(clip: vs.VideoNode) -> vs.VideoNode:
|
|||||||
|
|
||||||
def antialias(clip: vs.VideoNode, weak: Optional[List[Range]] = None, strong: Optional[List[Range]] = None,
|
def antialias(clip: vs.VideoNode, weak: Optional[List[Range]] = None, strong: Optional[List[Range]] = None,
|
||||||
stronger: Optional[List[Range]] = None, noaa: Optional[List[Range]] = None) -> vs.VideoNode:
|
stronger: Optional[List[Range]] = None, noaa: Optional[List[Range]] = None) -> vs.VideoNode:
|
||||||
mask = antialiasing.combine_mask(clip, weak or [])
|
mask = partial(antialiasing.combine_mask, weak=weak or [])
|
||||||
clamp = antialiasing.sraa_clamp(clip, mask=mask)
|
clamp = antialiasing.sraa_clamp(clip, mask=mask)
|
||||||
sraa = core.std.MaskedMerge(clip, upscaled_sraa(clip, rfactor=2, downscaler=Bicubic(b=0, c=1/2).scale), mask)
|
sraa = upscaled_sraa(clip, rfactor=2)
|
||||||
sraa_13 = core.std.MaskedMerge(clip, upscaled_sraa(clip, rfactor=1.3, downscaler=Bicubic(b=0, c=1/2).scale), mask)
|
sraa = core.std.MaskedMerge(clip, sraa, mask(sraa))
|
||||||
|
sraa_13 = upscaled_sraa(clip, rfactor=1.3)
|
||||||
|
sraa_13 = core.std.MaskedMerge(clip, sraa_13, mask(sraa_13))
|
||||||
return replace_ranges(replace_ranges(replace_ranges(clamp, clip, noaa or []), sraa, strong or []), sraa_13,
|
return replace_ranges(replace_ranges(replace_ranges(clamp, clip, noaa or []), sraa, strong or []), sraa_13,
|
||||||
stronger or [])
|
stronger or [])
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user