Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Sets up race grid
- function RaceGrid(clip c1, clip c2, clip c3, clip c4, int start)
- {
- border = 15
- StackVertical(StackHorizontal(c1.AddBorders(0, 0, border, border), c2.AddBorders(0, 0, 0, border)), StackHorizontal(c3.AddBorders(0, 0, border, 0), c4))
- ShowTime(offset_f=-start, x=Width(last)/2, y=Height(last)/2+13, size=18.0, text_color=$00FFFFFF, font="Arial")
- }
- # Standardized subtitle
- function HeaderText(clip c, string text, int align, int x, int y, int "start", int "end")
- {
- start = Default(start, 0)
- end = Default(end, FrameCount(c)-1)
- 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)
- }
- # Prepare race video
- function Race(clip video, string name, bool detect, bool top)
- {
- # Normalize video format
- height = 640.0 / Width(video) * Height(video)
- video = video.ChangeFPS(30).BilinearResize(640, Int(height))
- trim = (360 - Height(video)) / 2
- video = (trim > 0) ? video.Crop(0, trim, 0, -trim) : video.AddBorders(0, trim, 0, trim)
- # Add header
- header = ImageSource("..\header.png", 0, FrameCount(video)-1, 30).ConvertToYV12()
- video = top ? StackVertical(header, video) : StackVertical(video, header)
- global levelX = 32
- global deathX = Width(video)-38
- global headerY = top ? 0 : Height(video)-24
- video = video.HeaderText(name, 8, -1, headerY)
- # Detect death and level transitions
- global dDiffThreshold = 15.5
- global dAvgThreshold = 21.0
- global lDiffThreshold = 1.0
- global lAvgThreshold = 19.0
- global sColThreshold = 110.0
- global lString = "2-%.0fX"
- global dString = "%.0f"
- global start = true
- global sFade = false
- global deaths = 0
- global dFade = false
- global level = 1
- global lFade = false
- detect ?\
- ScriptClip(video,"""diff = YDifferenceFromPrevious()
- avg = AverageLuma()
- col = AverageChromaU()
- #lString = (lString != "DONE" && dFade && !start) ? "2-BOSS" : (avg > 200.0) ? "DONE" : lString
- lString = (dFade && !start) ? "DONE" : lString
- #start = (lString == "DONE") ? false : ((col < sColThreshold && !sFade) || (dFade && !start)) ? !start : start
- sFade = (col < sColThreshold)
- level = (diff < lDiffThreshold && avg < lAvgThreshold && !lFade && !dFade && start) ? level + 1 : level
- lFade = (diff < lDiffThreshold && avg < lAvgThresHold)
- deaths = (diff > dDiffThreshold && avg < dAvgThreshold && !dFade && start) ? deaths + 1 : deaths
- dFade = (diff > dDiffThreshold && avg < dAvgThreshold)
- HeaderText(String(level, lString), 7, levelX, headerY)
- HeaderText(String(deaths, dString), 7, deathX, headerY)"""):\
- video.HeaderText("-", 7, levelX, headerY).HeaderText("-", 7, deathX, headerY)
- ScriptClip(video, """Subtitle("diff:"+String(AverageChromaU)+" avg:"+String(AverageLuma), y=30)""")
- }
Add Comment
Please, Sign In to add comment