Advertisement
Zastin

dumb matrix thing

Jun 16th, 2020 (edited)
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.72 KB | None | 0 0
  1. def GetMatrix(clip, matrix=None, name='getmatrix'):
  2.    
  3.     if matrix is 2:
  4.         matrix = None
  5.    
  6.     if matrix is not None:
  7.         if isinstance(matrix, int):
  8.             return matrix
  9.         matrix = matrix.lower()
  10.         if matrix == 'chromacl':  # Chromaticity derived non-constant luminance system
  11.             return 12
  12.         if matrix == 'chromancl': # Chromaticity derived constant luminance system
  13.             return 13
  14.         if 'u' in matrix:  # Unspecified
  15.             return GetMatrix(clip, matrix=None)
  16.         if 'y' in matrix:  # YCgCo
  17.             return 8
  18.         #if 'o' in matrix:  # opponent color space
  19.             #return 100
  20.         if 'r' in matrix:  # RGB
  21.             return 0
  22.         if 'i' in matrix:  # iCtCb
  23.             return 14
  24.         if 'f' in matrix:  # fcc
  25.             return 4
  26.         if '24' in matrix: # smpte240m
  27.             return 7
  28.         if '4' in matrix:  # bt470bg
  29.             return 5
  30.         if '6' in matrix or '1' in matrix: # 601/smpte170m
  31.             return 6
  32.         if '7' in matrix:  # bt709
  33.             return 1
  34.         if 'n' in matrix or matrix in ('2', '2020'): # 2020/bt2020nc/2020ncl
  35.             return 9
  36.         #if '8' in matrix or '5' in matrix: # smpte2085
  37.             #return 11
  38.         if '2' in matrix:  # 2020cl/bt2020c/bt2020c
  39.             return 10
  40.         raise ValueError(f'zzfunc.{name}: "matrix" string provided was outlandishly wrong')
  41.    
  42.     frame = clip.get_frame(0)
  43.     _Matrix = frame.props.get('_Matrix', 0)
  44.    
  45.     if _Matrix is not 0:
  46.         return _Matrix
  47.    
  48.     w, h = frame.width, frame.height
  49.    
  50.     if w <= 1024 and h <= 576:
  51.         return 5
  52.     if w <= 2048 and h <= 1536:
  53.         return 1
  54.     return 9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement