import math
import unittest
import vapoursynth as vs
def get_pixel_value(clip):
frame = clip.get_frame(0)
arr = frame[0]
return arr[0,0]
class CoreTestSequence(unittest.TestCase):
def setUp(self):
self.core = vs.core
self.core.num_threads = 1
def test_expr_op1(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 2 *")
self.assertEqual(get_pixel_value(clip), 116)
def test_expr_op2(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=57)
clip = self.core.std.Expr(clip, "x 2 /")
self.assertEqual(get_pixel_value(clip), 28)
def test_expr_op3(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 2 / 0.1 +")
self.assertEqual(get_pixel_value(clip), 29)
def test_expr_op4(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 10 +")
self.assertEqual(get_pixel_value(clip), 68)
def test_expr_op5(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 28 -")
self.assertEqual(get_pixel_value(clip), 30)
def test_expr_op6(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x -1 * abs")
self.assertEqual(get_pixel_value(clip), 58)
def test_expr_op7(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x sqrt")
self.assertEqual(get_pixel_value(clip), 8)
def test_expr_op8(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x dup -")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op9(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x dup +")
self.assertEqual(get_pixel_value(clip), 116)
def test_expr_op10(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "2 x swap /")
self.assertEqual(get_pixel_value(clip), 29)
def test_expr_op11(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 60 max")
self.assertEqual(get_pixel_value(clip), 60)
def test_expr_op12(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "40 x min")
self.assertEqual(get_pixel_value(clip), 40)
def test_expr_op13(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=2)
clip = self.core.std.Expr(clip, "x exp")
self.assertEqual(get_pixel_value(clip), 7)
def test_expr_op14(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=3)
clip = self.core.std.Expr(clip, "x exp")
self.assertEqual(get_pixel_value(clip), 20)
def test_expr_op15(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip = self.core.std.Expr(clip, "x exp")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op16(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x log")
self.assertEqual(get_pixel_value(clip), 4)
def test_expr_op17(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x log exp")
self.assertEqual(get_pixel_value(clip), 58)
def test_expr_op18(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 10 <")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op19(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "10 x <")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op20(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "58 x <")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op21(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 58 <")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op22(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "10 x >")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op23(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 10 >")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op24(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "58 x >")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op25(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 58 >")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op26(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 10 <=")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op27(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "10 x <=")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op28(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "58 x <=")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op29(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 58 <=")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op30(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "10 x >=")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op31(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 10 >=")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op32(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "58 x >=")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op33(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 58 >=")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op34(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr((clip1, clip2), "x y =")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op35(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=4)
clip = self.core.std.Expr(clip, "x x 1 - =")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op36(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr((clip1, clip2), "x y and")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op37(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr((clip1, clip2), "x y or")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op38(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr((clip1, clip2), "x y xor")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op39(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=1)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip = self.core.std.Expr((clip1, clip2), "x y and")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op40(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=1)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip = self.core.std.Expr((clip1, clip2), "x y or")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op41(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=1)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip = self.core.std.Expr((clip1, clip2), "x y xor")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op42(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip = self.core.std.Expr((clip1, clip2), "x y and")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op43(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip = self.core.std.Expr((clip1, clip2), "x y or")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op44(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip = self.core.std.Expr((clip1, clip2), "x y xor")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op45(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=8)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=7)
clip = self.core.std.Expr((clip1, clip2), "x y and")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op46(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=8)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=7)
clip = self.core.std.Expr((clip1, clip2), "x y or")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op47(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=8)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=7)
clip = self.core.std.Expr((clip1, clip2), "x y xor")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op48(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=100)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=200)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip = self.core.std.Expr((clip1, clip2, clip3), "z x y ?")
self.assertEqual(get_pixel_value(clip), 200)
def test_expr_op49(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=100)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=200)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=1)
clip = self.core.std.Expr((clip1, clip2, clip3), "z x y ?")
self.assertEqual(get_pixel_value(clip), 100)
def test_expr_op50(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=100)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=200)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=0)
clip = self.core.std.Expr((clip1, clip2, clip3), "z not x y ?")
self.assertEqual(get_pixel_value(clip), 100)
def test_expr_op51(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=100)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=200)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=100)
clip = self.core.std.Expr((clip1, clip2, clip3), "z not x y ?")
self.assertEqual(get_pixel_value(clip), 200)
def test_expr_op52(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x not")
self.assertEqual(get_pixel_value(clip), 0)
def test_expr_op53(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x not not")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op54(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=58)
clip = self.core.std.Expr(clip, "x 58 =")
self.assertEqual(get_pixel_value(clip), 1)
def test_expr_op55(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=3)
clip = self.core.std.Expr(clip, "x 2 pow")
self.assertEqual(get_pixel_value(clip), 9)
def test_expr_op56(self):
clip = self.core.std.BlankClip(format=vs.GRAY8, color=6)
clip = self.core.std.Expr(clip, "2 x pow")
self.assertEqual(get_pixel_value(clip), 64)
def test_expr_op57(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=10)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=2)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=3)
clip = self.core.std.Expr((clip1, clip2, clip3), "x y z swap2 * +")
self.assertEqual(get_pixel_value(clip), 23)
def test_expr_op58(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=10)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=2)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=3)
clip = self.core.std.Expr((clip1, clip2, clip3), "10 2 3 swap2 * +")
self.assertEqual(get_pixel_value(clip), 23)
def test_expr_op59(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=10)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=2)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=3)
clip = self.core.std.Expr((clip1, clip2, clip3), "x y z swap1 * +")
self.assertEqual(get_pixel_value(clip), 16)
def test_expr_op60(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=10)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=2)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=3)
clip = self.core.std.Expr((clip1, clip2, clip3), "10 2 3 swap1 * +")
self.assertEqual(get_pixel_value(clip), 16)
def test_expr_op61(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=10)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=2)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=3)
clip = self.core.std.Expr((clip1, clip2, clip3), "x dup0 dup1 dup2 y swap3 z * + + swap / +")
self.assertEqual(get_pixel_value(clip), 35)
def test_expr_op62(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=10)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=2)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=3)
clip = self.core.std.Expr((clip1, clip2, clip3), "10 dup0 dup1 dup2 2 swap3 3 * + + swap / +")
self.assertEqual(get_pixel_value(clip), 35)
def test_expr_op63(self):
clip1 = self.core.std.BlankClip(format=vs.GRAY8, color=10)
clip2 = self.core.std.BlankClip(format=vs.GRAY8, color=2)
clip3 = self.core.std.BlankClip(format=vs.GRAY8, color=3)
clip = self.core.std.Expr((clip1, clip2, clip3), "x dup0 10 dup2 y swap3 3 * + + swap / +")
self.assertEqual(get_pixel_value(clip), 35)
def helper_sincos(self, op='sin', f=lambda x: math.sin(x)):
clip = self.core.std.BlankClip(format=vs.GRAYS, color=10, width=1025, height=1024, length=2)
def init_frame(n, f):
fout = f.copy()
arr = fout[0]
M, N = arr.shape
for i in range(M):
for j in range(N):
arr[i, j] = (n != 0 or -1) * (i*N + j) * 1e-3
return fout
clip = self.core.std.ModifyFrame(clip, clip, init_frame)
clip2 = self.core.std.Expr(clip, "x %s" % op)
for n in range(clip2.num_frames):
f1, f2 = map(lambda c: c.get_frame(n), [clip, clip2])
arr1, arr2 = f1[0], f2[0]
for i in range(clip.height):
for j in range(clip.width):
self.assertTrue(abs(arr2[i,j] - f(arr1[i,j])) < 1e-6)
def test_expr_sin64(self):
self.helper_sincos('sin', lambda x: math.sin(x))
def test_expr_cos65(self):
self.helper_sincos('cos', lambda x: math.cos(x))
if __name__ == '__main__':
unittest.main()