Guest User

Untitled

a guest
Sep 9th, 2018
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Sets up race grid
  2. function RaceGrid(clip c1, clip c2, clip c3, clip c4, int start)
  3. {
  4.     border = 15
  5.     StackVertical(StackHorizontal(c1.AddBorders(0, 0, border, border), c2.AddBorders(0, 0, 0, border)), StackHorizontal(c3.AddBorders(0, 0, border, 0), c4))
  6.     ShowTime(offset_f=-start, x=Width(last)/2, y=Height(last)/2+13, size=18.0, text_color=$00FFFFFF, font="Arial")
  7. }
  8.  
  9. # Standardized subtitle
  10. function HeaderText(clip c, string text, int align, int x, int y, int "start", int "end")
  11. {
  12.     start = Default(start, 0)
  13.     end = Default(end, FrameCount(c)-1)
  14.     Subtitle(c, text, align=align, size=20.0, text_color=$00FFFFFF, font="Upheaval TT (BRK)", x=x, y=y, first_frame=start, last_frame=end)
  15. }
  16.  
  17. # Prepare race video
  18. function Race(clip video, string name, bool detect, bool top)
  19. {
  20.     # Normalize video format
  21.     height = 640.0 / Width(video) * Height(video)
  22.     video = video.ChangeFPS(30).BilinearResize(640, Int(height))
  23.     trim = (360 - Height(video)) / 2
  24.     video = (trim > 0) ? video.Crop(0, trim, 0, -trim) : video.AddBorders(0, trim, 0, trim)
  25.    
  26.     # Add header
  27.     header = ImageSource("..\header.png", 0, FrameCount(video)-1, 30).ConvertToYV12()
  28.     video = top ? StackVertical(header, video) : StackVertical(video, header)
  29.  
  30.     global levelX = 32
  31.     global deathX = Width(video)-38
  32.     global headerY = top ? 0 : Height(video)-24
  33.     video = video.HeaderText(name, 8, -1, headerY)
  34.    
  35.     # Detect death and level transitions
  36.     global dDiffThreshold = 15.5
  37.     global dAvgThreshold = 21.0
  38.     global lDiffThreshold = 1.0
  39.     global lAvgThreshold = 19.0
  40.     global sColThreshold = 110.0
  41.  
  42.     global lString = "2-%.0fX"
  43.     global dString = "%.0f"
  44.    
  45.     global start = true
  46.     global sFade = false
  47.     global deaths = 0
  48.     global dFade = false
  49.     global level = 1
  50.     global lFade = false
  51.    
  52.     detect ?\
  53.     ScriptClip(video,"""diff = YDifferenceFromPrevious()
  54.                         avg = AverageLuma()
  55.                         col = AverageChromaU()
  56.                         #lString = (lString != "DONE" && dFade && !start) ? "2-BOSS" : (avg > 200.0) ? "DONE" : lString
  57.                         lString = (dFade && !start) ? "DONE" : lString
  58.                         #start = (lString == "DONE") ? false : ((col < sColThreshold && !sFade) || (dFade && !start)) ? !start : start
  59.                         sFade = (col < sColThreshold)
  60.                         level = (diff < lDiffThreshold && avg < lAvgThreshold && !lFade && !dFade && start) ? level + 1 : level
  61.                         lFade = (diff < lDiffThreshold && avg < lAvgThresHold)
  62.                         deaths = (diff > dDiffThreshold && avg < dAvgThreshold && !dFade && start) ? deaths + 1 : deaths
  63.                         dFade = (diff > dDiffThreshold && avg < dAvgThreshold)
  64.                         HeaderText(String(level, lString), 7, levelX, headerY)
  65.                         HeaderText(String(deaths, dString), 7, deathX, headerY)"""):\
  66.     video.HeaderText("-", 7, levelX, headerY).HeaderText("-", 7, deathX, headerY)
  67.     ScriptClip(video, """Subtitle("diff:"+String(AverageChromaU)+" avg:"+String(AverageLuma), y=30)""")
  68. }
Add Comment
Please, Sign In to add comment