function GuessParity(clip input){ input = AssumeFrameBased(input) global guessparitytff = AssumeTFF(input).SeparateFields().Bob() global guessparitybff = AssumeBFF(input).SeparateFields().Bob() istff = input.AssumeTFF().Subtitle("Guessed TopFirst", x=20, y=20) isbff = input.AssumeBFF().Subtitle("Guessed BottomFirst", x=20, y=20) ConditionalFilter(guessparitytff, istff, isbff, "YDifferenceFromPrevious(guessparitytff) + YDifferenceToNext(guessparitytff)", "<", "YDifferenceFromPrevious(guessparitybff) + YDifferenceToNext(guessparitybff)", false) } ## ShowParity by Wilbert function ShowParity(clip clip) { clip.subtitle(String(clip.GetParity?"TopFirst":"BottomFirst"), font="MS UI Gothic") } function GuessBob(clip input, string "expressiontff", "expressionbff"){ input = AssumeFrameBased(input) expressiontff = Default(expressiontff, "Bob()") expressionbff = Default(expressionbff, "Bob()") global guessbobtff = AssumeTFF(input).SeparateFields().Bob() global guessbobbff = AssumeBFF(input).SeparateFields().Bob() input.AssumeTFF() Eval(expressiontff) istffa = last istffb = istffa.SelectEven() istffc = istffa.SelectOdd() input.AssumeBFF() Eval(expressionbff) isbffa = last isbffb = isbffa.SelectEven() isbffc = isbffa.SelectOdd() outputa = ConditionalFilter(guessbobtff, istffb, isbffb, "YDifferenceFromPrevious(guessbobtff) + YDifferenceToNext(guessbobtff)", "<", "YDifferenceFromPrevious(guessbobbff) + YDifferenceToNext(guessbobbff)", false) outputb = ConditionalFilter(guessbobtff, istffc, isbffc, "YDifferenceFromPrevious(guessbobtff) + YDifferenceToNext(guessbobtff)", "<", "YDifferenceFromPrevious(guessbobbff) + YDifferenceToNext(guessbobbff)", false) Interleave(outputa, outputb) }