Skip to content

Instantly share code, notes, and snippets.

@noizuy
Last active September 12, 2024 09:29
Show Gist options
  • Save noizuy/379b10a2f9cac64a9139f7d0eae60699 to your computer and use it in GitHub Desktop.
Save noizuy/379b10a2f9cac64a9139f7d0eae60699 to your computer and use it in GitHub Desktop.
>prot_val
import vapoursynth as vs
from vstools import depth, scale_value
core = vs.core
def fade_clipped(src: vs.VideoNode,
flt: vs.VideoNode,
lower: float = scale_value(16, 8, 32, scale_offsets=True),
upper: float = scale_value(235, 8, 32, scale_offsets=True),
amount: float = scale_value(10, 8, 32, scale_offsets=True)) -> vs.VideoNode:
diff_upper = f"{upper} x -"
diff_lower = f"x {lower} -"
greater_upper = f"{diff_upper} {amount} >"
greater_lower = f"{diff_lower} {amount} >"
strength_lower = f"{amount} {diff_lower} - {amount} /"
strength_upper = f"{amount} {diff_upper} - {amount} /"
fade_lower = f"{strength_lower} x * 1 {strength_lower} - y * +"
fade_upper = f"{strength_upper} x * 1 {strength_upper} - y * +"
expr = f"{diff_upper} 0 <= {diff_lower} 0 <= or x {greater_upper} {greater_lower} y {fade_lower} ? {fade_upper} ? ?"
return depth(core.std.Expr([depth(src, 32), depth(flt, 32)], expr), flt.format.bits_per_sample)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment