Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TEST_FRAMES = 10
- MIDDLE_FRAME = 4
- # original framerate
- FPS_NUM = 30
- FPS_DEN = 1
- # source clip
- FFmpegSource2("f:\avsoptim\12-600.mkv" ) #short 12 frame excerpt to speed up seeking on every iteration
- AssumeFPS(FPS_NUM, FPS_DEN)
- orig = last
- mt=true
- super_pad = 24 # optimize super_pad = _n_ | 0,4,6,8,12,16,18,24,32,48 | super_pad
- super_pel = 1 # optimize super_pel = _n_ | 1,2,4 | super_pel
- super_sharp = 0 # optimize super_sharp = _n_ | 0..2 ; max:super_pel 1 == 0 2 ? | super_sharp
- super_rfilter = 2 # optimize super_rfilter = _n_ | 0..4 | super_rfilter
- super_render = MSuper(pel=super_pel, sharp=super_sharp, rfilter=super_rfilter, orig, mt=mt, hpad=super_pad, vpad=super_pad )
- blockSize = 64 # optimize blockSize = _n_ | 4,6,8,12,16,24,32,48,64 ; min:divide 0 > 8 2 ? ; filter:overlap 2 * x <= | blockSize
- searchAlgo = 3 # optimize searchAlgo = _n_ | 0..5 D | searchAlgo
- searchRange = 23 # optimize searchRange = _n_ | 1..30 | searchRange
- searchRangeFinest = 9 # optimize searchRangeFinest = _n_ | 1..40 | searchRangeFinest
- overlap=4 # optimize overlap=_n_ | 0,4,8,12,16,20,24,28,32 ; max:blockSize 2 / | overlap
- divide=0 # optimize divide=_n_ | 0..2 D ; max:blockSize 8 >= 2 0 ? overlap 4 % 0 == 2 0 ? min | divide
- badSAD = 5641 # optimize badSAD = _n_ | 4..10000 | badSAD
- badRange = 42 # optimize badRange = _n_ | 2..50 | badRange
- negBadRange = true # optimize negBadRange = _n_ | false,true | negBadRange
- meander = true # optimize meander = _n_ | false,true | meander
- temporal = false # optimize temporal = _n_ | false,true | temporal
- trymany = false # optimize trymany = _n_ | false,true | trymany
- dct = 4 # optimize dct = _n_ | 0,1,2,3,4,5,6,7,8,9,10 D | dct
- scaleCSAD = 0 # optimize scaleCSAD = _n_ | 0..4 | scaleCSAD
- delta = 1
- useChroma = true
- resultBadRange = (negBadRange ? -1 : 1)*badRange
- bv = MAnalyse(super_render, isb = true, blksize=blockSize, search=searchAlgo, searchparam=searchRange, pelsearch=searchRangeFinest,
- \ chroma=useChroma, delta=delta, truemotion=false, overlap=overlap , scaleCSAD=scaleCSAD-2,
- \ divide=divide, badSAD=badSAD, badrange=resultBadRange , meander=meander, temporal=temporal, trymany=trymany, dct=dct, mt=mt)
- fv = MAnalyse(super_render, isb = false, blksize=blockSize, search=searchAlgo, searchparam=searchRange, pelsearch=searchRangeFinest,
- \ chroma=useChroma, delta=delta, truemotion=false, overlap=overlap , scaleCSAD=scaleCSAD-2,
- \ divide=divide, badSAD=badSAD, badrange=resultBadRange , meander=meander, temporal=temporal, trymany=trymany, dct=dct, mt=mt)
- threshold = 20000
- maskScale = 84 # optimize maskScale = _n_ | 1..300 | maskScale
- inter = orig.MFlowFPS(super_render, bv, fv, num=FPS_NUM*2, den=FPS_DEN, mask=2, ml=maskScale, thSCD1=threshold )
- # return this to look at the clip with doubled framerate
- #return inter
- fps_only = inter.SelectOdd()
- # second pass
- super_render2 = MSuper(pel=super_pel, sharp=super_sharp, rfilter=super_rfilter, fps_only, hpad=super_pad, vpad=super_pad)
- bv2 = MAnalyse(super_render2, isb = true, blksize=blockSize, search=searchAlgo, searchparam=searchRange, pelsearch=searchRangeFinest,
- \ chroma=useChroma, delta=delta, truemotion=false, overlap=overlap, scaleCSAD=scaleCSAD-2,
- \ divide=divide, badSAD=badSAD, badrange=resultBadRange , meander=meander, temporal=temporal, trymany=trymany, mt=mt)
- fv2 = MAnalyse(super_render2, isb = false, blksize=blockSize, search=searchAlgo, searchparam=searchRange, pelsearch=searchRangeFinest,
- \ chroma=useChroma, delta=delta, truemotion=false, overlap=overlap, scaleCSAD=scaleCSAD-2,
- \ divide=divide, badSAD=badSAD, badrange=resultBadRange , meander=meander, temporal=temporal, trymany=trymany, mt=mt)
- inter2 = fps_only.MFlowFPS(super_render2, bv2, fv2, num=FPS_NUM*2, den=FPS_DEN, mask=2, ml=maskScale, thSCD1=threshold )
- fps_only2 = inter2.SelectOdd()
- delimiter = "; "
- inter_yv12 = fps_only2#.ConvertToYV12()
- orig_yv12 = orig#.ConvertToYV12()
- # for comparison original must be forwarded one frame
- orig_yv12 = trim(orig_yv12,1,0)
- inter_yv12 = inter_yv12.Trim(MIDDLE_FRAME - TEST_FRAMES/2 + (TEST_FRAMES%2==0?1:0), MIDDLE_FRAME + TEST_FRAMES/2)
- orig_yv12 = orig_yv12.Trim(MIDDLE_FRAME - TEST_FRAMES/2 + (TEST_FRAMES%2==0?1:0), MIDDLE_FRAME + TEST_FRAMES/2)
- last = inter_yv12
- global total = 0.0
- global ssim_total = 0.0
- global avstimer = 0.0
- frame_count = FrameCount()
- gloval divisor = 3
- FrameEvaluate(last, """
- 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 ))
- global ssim_total = ssim_total + (ssim == 1.0 ? 0.0 : ssim)
- """)
- # NOTE: AvsTimer call should be before the WriteFile call
- AvsTimer(frames=1, type=0, total=false, name="Optimizer")
- # per frame logging (ssim, time)
- resultFile = "F:\avsoptim\work\result_1540500649066_1540500649190.txt" # output out1="ssim: MAX(float)" out2="time: MIN(time) ms" file="F:\avsoptim\work
- \result_1540500649066_1540500649190.txt"
- WriteFile(resultFile, "current_frame", "delimiter", "ssim", "delimiter", "avstimer")
- WriteFileIf(resultFile, "current_frame == frame_count-1", """ "stop " """, "ssim_total", append=true)
- return last
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement