Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def LevelsM(clip, points, levels, xpass=[0, 'peak'], return_expr=False):
- qm = len(points)
- peak = [(1 << clip.format.bits_per_sample) - 1, 1][clip.format.sample_type]
- if len(set(xpass)) == 1:
- expr = f'x {points[0]} < x {points[-1]} > or {xpass[0]} '
- qm -= 1
- else:
- expr = f'x {points[0]} < {xpass[0]} x {points[-1]} > {xpass[-1]} '
- for x in range(len(points) - 1):
- if points[x+1] < points[-1]:
- expr += f' x {points[x+1]} <= '
- if levels[x] == levels[x+1]:
- expr += f' {peak * levels[x]} '
- else:
- expr += f' x {points[x]} - {peak * (levels[x+1] - levels[x])/(points[x+1] - points[x])} * {peak * levels[x]} + '
- for _ in range(qm):
- expr += ' ? '
- expr = expr.replace(' ', ' ').replace('peak', f'{peak}')
- if return_expr:
- return expr
- return clip.std.Expr(expr)
Add Comment
Please, Sign In to add comment