Пример #1
0
    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"),
                ))
Пример #2
0
 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()
Пример #3
0
 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()
Пример #4
0
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()
Пример #5
0
    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"),
                ))
Пример #6
0
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()
Пример #7
0
 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
Пример #8
0
 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
Пример #9
0
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()
Пример #10
0
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()
Пример #11
0
    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"),
                ))
Пример #12
0
    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"),
                ))
Пример #13
0
    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),
                ))
Пример #14
0
def playVideo(video):
    if not player.isUsingGLES():
        video.play()
Пример #15
0
    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")    
Пример #16
0
    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")    
Пример #17
0
def playVideo(video):
    if not player.isUsingGLES():
        video.play()