text: import vapoursynth as vs
  core = vs.get_core()
  core.std.LoadPlugin("/Users/Julian/.mpv/vs-plugins/ffms2/libffms2.dylib")
  
  clip = core.ffms2.Source(source='/Users/Julian/Documents/DLs/Test-Videos/test-pulldown.mkv')
  display_fps = 60
  container_fps = 24000/1001
  
  
  
  # skip motion interpolation completely for content exceeding the limits below
  max_width  = 1920
  max_height = 1200
  max_fps    = 60
  # use BlockFPS instead of FlowFPS for content exceeding the limits below
  max_flow_width  = 1280
  max_flow_height = 720
  # a block is considered as changed when 8*8*x > th_block|flow_diff with 8*8
  # being the size of a block (scaled internally) and x the difference of each
  # pixel within this block, default 400
  th_block_diff = 8*8*7
  th_flow_diff  = 8*8*7
  # (threshold/255)% blocks have to change to consider this a scene change
  # (= no motion compensation), default 130
  th_block_changed = 14
  th_flow_changed  = 14
  # size of blocks the analyse step is performed on
  blocksize  = 2**4
  
  
  
  # assume display_fps to be bogus when not in a certain range
  target_num = 60 if display_fps < 23.9 or display_fps > 300 else display_fps
  while (target_num > max_fps):
      target_num /= 2
  target_num = int(target_num * 1e6)
  target_den = int(1e6)
  source_num = int(container_fps * 1e6)
  source_den = int(1e6)
  
  #clip = video_in
  
  if not (clip.width > max_width or clip.height > max_height or container_fps > max_fps):
      clip = core.std.AssumeFPS(clip, fpsnum=source_num, fpsden=source_den)
      sup  = core.mv.Super(clip, pel=2, hpad=blocksize, vpad=blocksize)
      bv   = core.mv.Analyse(sup, blksize=blocksize, isb=True , chroma=True, search=3, searchparam=2)
      fv   = core.mv.Analyse(sup, blksize=blocksize, isb=False, chroma=True, search=3, searchparam=2)
  
      use_block = clip.width > max_flow_width or clip.height > max_flow_height
      if use_block:
          clip = core.mv.BlockFPS(clip, sup, bv, fv, num=target_num, den=target_den,
                                  mode=3, thscd1=th_block_diff, thscd2=th_block_changed)
      else:
          clip = core.mv.FlowFPS(clip, sup, bv, fv, num=target_num, den=target_den,
                                 mask=0, thscd1=th_flow_diff, thscd2=th_flow_changed)
      print('motion-interpolation: {0} -> {1} FPS | {3} | {2} Hz'
            .format(source_num / source_den, target_num / target_den,
                    display_fps, use_block and "block" or "flow"))
  else:
      print('motion-interpolation: skipping {0}x{1} {2} FPS video'
            .format(clip.width, clip.height, container_fps))
  
  clip.set_output()
  