import vapoursynth as vs

from pripri_common import PriPriConfig, edgefix, denoise, descale, deband, antialias, regrain, finalize

from yt_common.automation import SelfRunner
from yt_common.source import FileTrim, SimpleSource

import os

core = vs.core

DESC: str = os.path.basename(os.path.splitext(__file__)[0])
CONFIG: PriPriConfig = PriPriConfig(DESC)
SOURCE: SimpleSource = SimpleSource(
    FileTrim("../bdmv/[180223][BDMV] プリンセス・プリンシパル VI/PRINCESS_PRINCIPAL_6/BDMV/STREAM/00012.m2ts", (24, -24))
)


def filter() -> vs.VideoNode:
    src = SOURCE.source()
    ef = edgefix(src)
    den = denoise(ef)
    rescale = descale(den)
    deb = deband(rescale)
    aa = antialias(deb)
    grain = regrain(aa)
    final = finalize(grain)
    src.set_output(1)
    final.set_output(0)
    return final


if __name__ == "__main__":
    SelfRunner(CONFIG, SOURCE, filter, audio_codec=["-c:a", "libopus", "-b:a", "192k", "-sample_fmt", "s16"])
else:
    filter()