def testShadowFX(self): def setParams(offset, radius, opacity, color): effect.offset = offset effect.radius = radius effect.opacity = opacity effect.color = color if player.isUsingGLES(): self.skip("Not supported under GLES") return root = self.loadEmptyScene() rect = avg.RectNode(parent=root, pos=(9.5,9.5), color="0000FF") node = avg.ImageNode(parent=root, pos=(10,10), href="shadow.png") rect.size = node.size + (1, 1) effect = avg.ShadowFXNode((0,0), 1, 1, "FFFFFF") node.setEffect(effect) self.start(False, (lambda: self.compareImage("testShadowFX1"), lambda: setParams((0,0), 3, 2, "00FFFF"), lambda: self.compareImage("testShadowFX2"), lambda: setParams((2,2), 0.1, 1, "FFFFFF"), lambda: self.compareImage("testShadowFX3"), lambda: setParams((-2,-2), 0.1, 1, "FFFFFF"), lambda: self.compareImage("testShadowFX4"), lambda: setParams((-2,-2), 3, 1, "FFFFFF"), lambda: self.compareImage("testShadowFX5"), lambda: setParams((0,0), 0, 1, "FFFFFF"), lambda: self.compareImage("testShadowFX6"), ))
def destroy(self): #self._debug('destroy') self.__alive = False self.__aircraftVid.active = False self.__aircraftVid.pause() self.__destroyVid.active = True playVideo(self.__destroyVid) self.__destroyVid.seekToFrame(0) self.__shadowImg.active = False if player.isUsingGLES(): self._hide()
def destroy(self): #self._debug('destroy') self.__alive = False self.__aircraftVid.active = False self.__aircraftVid.pause() self.__destroyVid.active = True playVideo(self.__destroyVid) self.__destroyVid.seekToFrame(0) self.__shadowImg.active = False if player.isUsingGLES(): self._hide()
def multiWindowTestSuite(tests): if not player.isUsingGLES(): availableTests = ("testMultiWindowBase", "testMultiWindowApp", "testMultiWindowCanvas", "testMultiWindowManualCanvas", "testMultiWindowFX", "testMultiWindowFXWords") return createAVGTestSuite(availableTests, MultiWindowTestCase, tests) else: sys.stderr.write( "Skipping multi-window tests - not supported for GLES.\n") return unittest.TestSuite()
def testFXUpdate(self): # This tests if the FX render-on-demand functionality doesn't forget updates. def changeTexture(): node.href = "colorramp.png" def addMaskTex(): node.maskhref = "mask.png" def changeMaskTex(): node.maskhref = "mask2.png" def changeMaskPos(): node.maskpos = (10, 10) def changeFX(): effect.radius = 2 def addVideo(): node.unlink(True) videoNode = avg.VideoNode(parent=root, threaded=False, size=(96,96), href="mpeg1-48x48.mpg") effect = avg.BlurFXNode() effect.radius = 0 videoNode.setEffect(effect) videoNode.play() if player.isUsingGLES(): self.skip("Not supported under GLES") return root = self.loadEmptyScene() node = avg.ImageNode(parent=root, href="rgb24alpha-64x64.png") effect = avg.BlurFXNode() effect.radius = 0 node.setEffect(effect) player.setFakeFPS(25) self.start(False, (changeTexture, lambda: self.compareImage("testFXUpdateTex"), addMaskTex, lambda: self.compareImage("testFXUpdateMaskTex1"), changeMaskTex, lambda: self.compareImage("testFXUpdateMaskTex2"), changeMaskPos, lambda: self.compareImage("testFXUpdateMaskPos"), changeFX, lambda: self.compareImage("testFXUpdateFX"), addVideo, None, lambda: self.compareImage("testFXUpdateVideo"), ))
def multiWindowTestSuite(tests): if not player.isUsingGLES(): availableTests = ( "testMultiWindowBase", "testMultiWindowApp", "testMultiWindowCanvas", "testMultiWindowManualCanvas", "testMultiWindowFX", "testMultiWindowFXWords" ) return createAVGTestSuite(availableTests, MultiWindowTestCase, tests) else: sys.stderr.write("Skipping multi-window tests - not supported for GLES.\n") return unittest.TestSuite()
def __init__(self, mediabase, shadowdiv, parent=None, **kwargs): super(_Aircraft, self).__init__(**kwargs) self.registerInstance(self, parent) self.__alive = False self.__aircraftVid = avg.VideoNode(href=mediabase+'.mov', loop=True, parent=self) self.__aircraftVid.pause() self.__destroyVid = avg.VideoNode(href='explosion.mov', active=False, threaded=False, parent=self) self.__destroyVid.pause() self.__destroyVid.subscribe(avg.VideoNode.END_OF_FILE, self._hide) self.__shadowImg = avg.ImageNode(href=mediabase+'.gif', opacity=0.5, pos=self.pos + _Aircraft.__SHADOW_OFFSET, parent=shadowdiv) self.__shadowImg.size *= _Aircraft.__SHADOW_SCALE if not player.isUsingGLES(): self.__shadowImg.setEffect(avg.BlurFXNode(6.0)) self.size = self.__aircraftVid.size
def __init__(self, mediabase, shadowdiv, parent=None, **kwargs): super(_Aircraft, self).__init__(**kwargs) self.registerInstance(self, parent) self.__alive = False self.__aircraftVid = avg.VideoNode(href=mediabase+'.mov', loop=True, parent=self) self.__aircraftVid.pause() self.__destroyVid = avg.VideoNode(href='explosion.mov', active=False, threaded=False, parent=self) self.__destroyVid.pause() self.__destroyVid.subscribe(avg.VideoNode.END_OF_FILE, self._hide) self.__shadowImg = avg.ImageNode(href=mediabase+'.gif', opacity=0.5, pos=self.pos + _Aircraft.__SHADOW_OFFSET, parent=shadowdiv) self.__shadowImg.size *= _Aircraft.__SHADOW_SCALE if not player.isUsingGLES(): self.__shadowImg.setEffect(avg.BlurFXNode(6.0)) self.size = self.__aircraftVid.size
def multiWindowTestSuite(tests): if sys.platform.startswith("linux"): if not player.isUsingGLES(): availableTests = ( "testMultiWindowBase", "testMultiWindowApp", "testMultiWindowCanvas", "testMultiWindowManualCanvas", "testMultiWindowFX" ) return createAVGTestSuite(availableTests, MultiWindowTestCase, tests) else: sys.stderr.write("Skipping multi-window tests - only supported under Linux w/GLX") return unittest.TestSuite() else: sys.stderr.write("Skipping multi-window tests - only supported under Linux.") return unittest.TestSuite()
def multiWindowTestSuite(tests): if sys.platform.startswith("linux"): if not player.isUsingGLES(): availableTests = ( "testMultiWindowBase", "testMultiWindowApp", "testMultiWindowCanvas", "testMultiWindowManualCanvas", "testMultiWindowFX", "testMultiWindowFXWords" ) return createAVGTestSuite(availableTests, MultiWindowTestCase, tests) else: sys.stderr.write("Skipping multi-window tests - only supported under Linux w/GLX") return unittest.TestSuite() else: sys.stderr.write("Skipping multi-window tests - only supported under Linux.") return unittest.TestSuite()
def testWordsShadowFX(self): def setParams(offset, radius, opacity, color): effect.offset = offset effect.radius = radius effect.opacity = opacity effect.color = color if player.isUsingGLES(): self.skip("Not supported under GLES") return root = self.loadEmptyScene() node = avg.WordsNode(parent=root, pos=(10,10), text="testtext", font="Bitstream Vera Sans") effect = avg.ShadowFXNode() setParams((0,0), 1.5, 1.5, "FF0000") node.setEffect(effect) self.start(True, (lambda: self.compareImage("testWordsShadowFX1"), lambda: setParams((2,2), 2, 2, "00FFFF"), lambda: self.compareImage("testWordsShadowFX2"), ))
def testChromaKeyFX(self): def setParams(htol, ltol, stol): effect.htolerance = htol effect.ltolerance = ltol effect.stolerance = stol if player.isUsingGLES(): self.skip("Not supported under GLES") return root = self.loadEmptyScene() node = avg.ImageNode(parent=root, href="rgb24-64x64.png") effect = avg.ChromaKeyFXNode() setParams(0.01, 0.01, 0.01) node.setEffect(effect) self.start(False, (lambda: self.compareImage("testChromaKeyFX1"), lambda: setParams(0.2, 0.2, 0.2), lambda: self.compareImage("testChromaKeyFX2"), lambda: effect.__setattr__("color", "FF0000"), lambda: self.compareImage("testChromaKeyFX3"), lambda: effect.__setattr__("spillthreshold", 1), lambda: self.compareImage("testChromaKeyFX4"), ))
def testBlurFX(self): def setRadius(radius): self.effect.radius = radius def removeFX(): self.node.setEffect(None) def reAddFX(): self.node.setEffect(self.effect) def addNewFX(): effect = avg.BlurFXNode(8) self.node.setEffect(effect) if player.isUsingGLES(): self.skip("Not supported under GLES") return root = self.loadEmptyScene() self.node = avg.ImageNode(parent=root, pos=(10,10), href="rgb24-64x64.png") self.effect = avg.BlurFXNode() self.node.setEffect(self.effect) self.start(False, (lambda: self.compareImage("testBlurFX1"), lambda: setRadius(8), lambda: self.compareImage("testBlurFX2"), removeFX, lambda: self.compareImage("testBlurFX3"), reAddFX, lambda: self.compareImage("testBlurFX2"), removeFX, addNewFX, lambda: self.compareImage("testBlurFX2"), lambda: setRadius(300), ))
def playVideo(video): if not player.isUsingGLES(): video.play()
def testVideoWriter(self): def startWriter(fps, syncToPlayback): self.videoWriter = avg.VideoWriter(canvas, "test.mov", fps, 3, 5, syncToPlayback) self.assertEqual(self.videoWriter.filename, "test.mov") self.assertEqual(self.videoWriter.framerate, fps) self.assertEqual(self.videoWriter.qmin, 3) self.assertEqual(self.videoWriter.qmax, 5) self.assertEqual(self.videoWriter.synctoplayback, syncToPlayback) def stopWriter(): self.videoWriter.stop() def killWriter(): self.videoWriter = None def pauseWriter(): self.videoWriter.pause() def playWriter(): self.videoWriter.play() def hideVideo(): videoNode.opacity = 0 def showVideo(): videoNode.opacity = 1 def checkVideo(numFrames): savedVideoNode = avg.VideoNode(href="../test.mov", pos=(48,0), threaded=False, parent=root) savedVideoNode.pause() self.assertEqual(savedVideoNode.getVideoCodec(), "mjpeg") self.assertEqual(savedVideoNode.getNumFrames(), numFrames) self.assertEqual(savedVideoNode.getStreamPixelFormat(), "yuvj420p") def testCreateException(): self.assertRaises(avg.Exception, lambda: avg.VideoWriter(player.getMainCanvas(), "nonexistentdir/test.mov", 30)) if not(self._isCurrentDirWriteable()): self.skip("Current dir not writeable.") return if player.isUsingGLES(): self.skip("VideoWriter not supported under GLES.") return self.assertRaises(avg.Exception, lambda: avg.VideoWriter(player.getMainCanvas(), "test.mov", 30, 3, 5, False)) for useCanvas in (False, True): player.setFakeFPS(30) root = self.loadEmptyScene() videoNode = avg.VideoNode(href="mpeg1-48x48.mov", threaded=False) if useCanvas: canvas = player.createCanvas(id="canvas", size=(48,48), mediadir="media") canvas.getRootNode().appendChild(videoNode) avg.ImageNode(parent=root, href="canvas:canvas") testImageName = "testVideoWriterCanvas" else: root.appendChild(videoNode) canvas = player.getMainCanvas() testImageName = "testVideoWriter" self.start(False, (videoNode.play, lambda: startWriter(30, True), lambda: self.delay(100), stopWriter, killWriter, lambda: checkVideo(4), hideVideo, lambda: self.compareImage(testImageName+"1"), showVideo, testCreateException, lambda: startWriter(15, False), lambda: self.delay(150), stopWriter, killWriter, lambda: checkVideo(2), lambda: startWriter(30, False), pauseWriter, lambda: self.delay(200), playWriter, stopWriter, killWriter, lambda: checkVideo(1), lambda: startWriter(30, False), killWriter, lambda: checkVideo(1), )) os.remove("test.mov")
def testVideoWriter(self): def startWriter(fps, syncToPlayback): self.videoWriter = avg.VideoWriter(canvas, "test.mov", fps, 3, 5, syncToPlayback) def stopWriter(): self.videoWriter.stop() def killWriter(): self.videoWriter = None def pauseWriter(): self.videoWriter.pause() def playWriter(): self.videoWriter.play() def hideVideo(): videoNode.opacity = 0 def showVideo(): videoNode.opacity = 1 def checkVideo(numFrames): savedVideoNode = avg.VideoNode(href="../test.mov", pos=(48,0), threaded=False, parent=root) savedVideoNode.pause() self.assertEqual(savedVideoNode.getVideoCodec(), "mjpeg") self.assertEqual(savedVideoNode.getNumFrames(), numFrames) self.assertEqual(savedVideoNode.getStreamPixelFormat(), "yuvj420p") def testCreateException(): self.assertRaises(avg.Exception, lambda: avg.VideoWriter(player.getMainCanvas(), "nonexistentdir/test.mov", 30)) if not(self._isCurrentDirWriteable()): self.skip("Current dir not writeable.") return if player.isUsingGLES(): self.skip("VideoWriter not supported under GLES.") return self.assertRaises(avg.Exception, lambda: avg.VideoWriter(player.getMainCanvas(), "test.mov", 30, 3, 5, False)) for useCanvas in (False, True): player.setFakeFPS(30) root = self.loadEmptyScene() videoNode = avg.VideoNode(href="mpeg1-48x48.mov", threaded=False) if useCanvas: canvas = player.createCanvas(id="canvas", size=(48,48), mediadir="media") canvas.getRootNode().appendChild(videoNode) avg.ImageNode(parent=root, href="canvas:canvas") testImageName = "testVideoWriterCanvas" else: root.appendChild(videoNode) canvas = player.getMainCanvas() testImageName = "testVideoWriter" self.start(False, (videoNode.play, lambda: startWriter(30, True), lambda: self.delay(100), stopWriter, killWriter, lambda: checkVideo(4), hideVideo, lambda: self.compareImage(testImageName+"1"), showVideo, testCreateException, lambda: startWriter(15, False), lambda: self.delay(150), stopWriter, killWriter, lambda: checkVideo(2), lambda: startWriter(30, False), pauseWriter, lambda: self.delay(200), playWriter, stopWriter, killWriter, lambda: checkVideo(1), lambda: startWriter(30, False), killWriter, lambda: checkVideo(1), )) os.remove("test.mov")
def playVideo(video): if not player.isUsingGLES(): video.play()