Advertisement
Seedmanc

Untitled

Oct 31st, 2018
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. TEST_FRAMES = 10
  2. MIDDLE_FRAME = 4
  3.  
  4. # original framerate
  5. FPS_NUM = 30
  6. FPS_DEN = 1
  7.  
  8. # source clip
  9. FFmpegSource2("f:\avsoptim\12-600.mkv"  )  #short 12 frame excerpt to speed up seeking on every iteration
  10. AssumeFPS(FPS_NUM, FPS_DEN)
  11.  
  12. orig = last
  13.  
  14. mt=true  
  15.  
  16. super_pad = 24                           # optimize super_pad = _n_ | 0,4,6,8,12,16,18,24,32,48 | super_pad
  17. super_pel = 1               # optimize super_pel = _n_ | 1,2,4 | super_pel
  18. super_sharp = 0             # optimize super_sharp = _n_ | 0..2 ; max:super_pel 1 == 0 2 ? | super_sharp
  19. super_rfilter = 2               # optimize super_rfilter = _n_ | 0..4 | super_rfilter  
  20. super_render = MSuper(pel=super_pel, sharp=super_sharp, rfilter=super_rfilter, orig, mt=mt, hpad=super_pad, vpad=super_pad )   
  21.  
  22. blockSize = 64              # optimize blockSize = _n_ | 4,6,8,12,16,24,32,48,64 ; min:divide 0 > 8 2 ? ; filter:overlap 2 * x <= | blockSize
  23. searchAlgo = 3              # optimize searchAlgo = _n_ | 0..5 D | searchAlgo
  24. searchRange = 23                # optimize searchRange = _n_ | 1..30 | searchRange
  25. searchRangeFinest = 9           # optimize searchRangeFinest = _n_ | 1..40 | searchRangeFinest
  26. overlap=4                   # optimize overlap=_n_ | 0,4,8,12,16,20,24,28,32 ; max:blockSize 2 / | overlap
  27. divide=0                    # optimize divide=_n_ | 0..2 D ; max:blockSize 8 >= 2 0 ? overlap 4 % 0 == 2 0 ? min | divide
  28. badSAD = 5641               # optimize badSAD = _n_ | 4..10000 | badSAD
  29. badRange = 42               # optimize badRange = _n_ | 2..50 | badRange
  30. negBadRange = true              # optimize negBadRange = _n_ | false,true | negBadRange
  31. meander = true              # optimize meander = _n_ | false,true | meander
  32. temporal = false                # optimize temporal = _n_ | false,true | temporal
  33. trymany = false             # optimize trymany = _n_ | false,true | trymany
  34. dct = 4                 # optimize dct = _n_ | 0,1,2,3,4,5,6,7,8,9,10 D | dct
  35. scaleCSAD = 0               # optimize scaleCSAD = _n_ | 0..4 | scaleCSAD
  36.  
  37. delta = 1
  38. useChroma = true
  39.  
  40. resultBadRange = (negBadRange ? -1 : 1)*badRange
  41. bv = MAnalyse(super_render, isb = true, blksize=blockSize, search=searchAlgo, searchparam=searchRange, pelsearch=searchRangeFinest,
  42. \ chroma=useChroma, delta=delta, truemotion=false, overlap=overlap , scaleCSAD=scaleCSAD-2,
  43. \ divide=divide, badSAD=badSAD, badrange=resultBadRange , meander=meander, temporal=temporal, trymany=trymany, dct=dct, mt=mt)
  44. fv = MAnalyse(super_render, isb = false, blksize=blockSize, search=searchAlgo, searchparam=searchRange, pelsearch=searchRangeFinest,
  45. \ chroma=useChroma, delta=delta,  truemotion=false, overlap=overlap , scaleCSAD=scaleCSAD-2,
  46. \ divide=divide, badSAD=badSAD, badrange=resultBadRange , meander=meander, temporal=temporal, trymany=trymany, dct=dct, mt=mt)
  47.  
  48.  
  49.  
  50. threshold = 20000
  51. maskScale = 84              # optimize maskScale = _n_ | 1..300 | maskScale
  52. inter = orig.MFlowFPS(super_render, bv, fv, num=FPS_NUM*2, den=FPS_DEN, mask=2, ml=maskScale, thSCD1=threshold )
  53.  
  54. # return this to look at the clip with doubled framerate
  55. #return inter
  56.  
  57. fps_only = inter.SelectOdd()
  58.  
  59. # second pass  
  60. super_render2 = MSuper(pel=super_pel, sharp=super_sharp, rfilter=super_rfilter, fps_only, hpad=super_pad, vpad=super_pad)  
  61. bv2 = MAnalyse(super_render2, isb = true, blksize=blockSize, search=searchAlgo, searchparam=searchRange, pelsearch=searchRangeFinest,
  62. \ chroma=useChroma, delta=delta,  truemotion=false, overlap=overlap, scaleCSAD=scaleCSAD-2,
  63. \ divide=divide, badSAD=badSAD, badrange=resultBadRange , meander=meander, temporal=temporal, trymany=trymany, mt=mt)
  64. fv2 = MAnalyse(super_render2, isb = false, blksize=blockSize, search=searchAlgo, searchparam=searchRange, pelsearch=searchRangeFinest,
  65. \ chroma=useChroma, delta=delta, truemotion=false, overlap=overlap, scaleCSAD=scaleCSAD-2,
  66. \ divide=divide, badSAD=badSAD, badrange=resultBadRange , meander=meander, temporal=temporal, trymany=trymany, mt=mt)
  67. inter2 = fps_only.MFlowFPS(super_render2, bv2, fv2, num=FPS_NUM*2, den=FPS_DEN, mask=2, ml=maskScale, thSCD1=threshold  )
  68. fps_only2 = inter2.SelectOdd()
  69.  
  70.  
  71. delimiter = "; "
  72.  
  73. inter_yv12 = fps_only2#.ConvertToYV12()
  74. orig_yv12 = orig#.ConvertToYV12()
  75.  
  76. # for comparison original must be forwarded one frame
  77. orig_yv12 = trim(orig_yv12,1,0)
  78.  
  79. inter_yv12 = inter_yv12.Trim(MIDDLE_FRAME - TEST_FRAMES/2 + (TEST_FRAMES%2==0?1:0), MIDDLE_FRAME + TEST_FRAMES/2)
  80. orig_yv12 = orig_yv12.Trim(MIDDLE_FRAME - TEST_FRAMES/2 + (TEST_FRAMES%2==0?1:0), MIDDLE_FRAME + TEST_FRAMES/2)
  81. last = inter_yv12
  82.  
  83. global total = 0.0
  84. global ssim_total = 0.0
  85. global avstimer = 0.0
  86. frame_count = FrameCount()
  87.  
  88. gloval divisor = 3
  89. FrameEvaluate(last, """
  90.     global ssim = SSIM_FRAME(orig_yv12.bilinearresize(orig_yv12.width/divisor ,orig_yv12.height/divisor ), inter_yv12.bilinearresize( inter_yv12.width/divisor , inter_yv12.height/divisor ))
  91.     global ssim_total = ssim_total + (ssim == 1.0 ? 0.0 : ssim)
  92. """)    
  93.  
  94. # NOTE: AvsTimer call should be before the WriteFile call
  95. AvsTimer(frames=1, type=0, total=false, name="Optimizer")
  96.  
  97. # per frame logging (ssim, time)
  98. resultFile = "F:\avsoptim\work\result_1540500649066_1540500649190.txt"  # output out1="ssim: MAX(float)" out2="time: MIN(time) ms" file="F:\avsoptim\work
  99.  
  100. \result_1540500649066_1540500649190.txt"
  101. WriteFile(resultFile, "current_frame", "delimiter", "ssim", "delimiter", "avstimer")
  102. WriteFileIf(resultFile, "current_frame == frame_count-1", """ "stop " """, "ssim_total", append=true)
  103.  
  104. return last
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement