Example #1
0
    def testVideoSeek(self):
        def seek(frame):
            videoNode.seekToFrame(frame)
            self.assert_(videoNode.isSeeking())

        def checkCurFrame():
            self.assertEqual(videoNode.getCurFrame(), 26)
            self.assert_(not(videoNode.isSeeking())),

        player.setFakeFPS(25)
        for useCustomFPS in [False, True]:
            root = self.loadEmptyScene()
            if useCustomFPS:
                videoNode = avg.VideoNode(parent=root, loop=True, size=(96,96), fps=25,
                        threaded=False, href="mjpeg-48x48.avi")
            else:
                videoNode = avg.VideoNode(parent=root, loop=True, size=(96,96), 
                        threaded=False, href="mjpeg-48x48.avi")

            videoNode.play()
            videoNode.seekToFrame(26)
            self.start(False,
                    (checkCurFrame,
                     lambda: self.compareImage("testVideoSeek0"),
                     lambda: seek(100),
                     lambda: self.compareImage("testVideoSeek1"),
                     lambda: videoNode.pause(),
                     lambda: seek(26),
                     None,
                     lambda: self.compareImage("testVideoSeek2"),
                     lambda: videoNode.play(),
                     None,
                     lambda: self.compareImage("testVideoSeek3")
                    ))
Example #2
0
    def testVideoInfo(self):
        def checkInfo():
            node.pause()
            self.assertEqual(node.getContainerFormat(), "avi")
            self.assertEqual(node.getCurFrame(), 0)
            self.assertEqual(node.getCurTime(), 0)
            self.assertEqual(node.getDuration(), 1000)
            self.assertEqual(node.getBitrate(), 224064)
            self.assertEqual(node.getVideoCodec(), "mpeg4")
            self.assertEqual(node.getStreamPixelFormat(), "yuv420p")
            self.assertEqual(node.getVideoDuration(), 1000)
            if isThreaded:
                self.assertEqual(node.getAudioCodec(), "mp2")
                self.assertEqual(node.getAudioSampleRate(), 44100)
                self.assertEqual(node.getNumAudioChannels(), 2)
                self.assert_(node.getVideoDuration() >= 1000)

        def checkEnableSound():
            node = avg.VideoNode(href="mpeg1-48x48-sound.avi", threaded=isThreaded,
                    enablesound=False, parent=root)
            node.pause()
            self.assertEqual(node.getVideoCodec(), "mpeg4")
            self.assertException(node.getAudioCodec)

        def checkExceptions():
            node = avg.VideoNode(href="mpeg1-48x48.mov", threaded=isThreaded)
            self.assertException(node.getDuration)
            self.assertException(node.getBitrate)
            self.assertException(node.getVideoCodec)
            self.assertException(node.getStreamPixelFormat)
            node.pause()
            self.assertException(node.getAudioCodec)
            self.assertException(node.getAudioSampleRate)
            self.assertException(node.getNumAudioChannels)
            root.appendChild(node)

        def checkAudioFile():
            node = avg.VideoNode(href="44.1kHz_16bit_stereo.wav", threaded=isThreaded,
                    parent=root)
            self.assertException(node.pause)

        sys.stderr.write("\n")
        for isThreaded in (False, True):
            sys.stderr.write("  Threaded: " + str(isThreaded) + "\n")
            root = self.loadEmptyScene()
            node = avg.VideoNode(href="mpeg1-48x48-sound.avi", threaded=isThreaded,
                    parent=root)
            checkInfo()
            checkEnableSound()
            checkExceptions()
            self.start(False,
                    (checkInfo,
                     checkExceptions,
                     checkAudioFile,
                    ))
        sys.stderr.write("  Nonstandard queue length\n")
        root = self.loadEmptyScene()
        node = avg.VideoNode(href="mpeg1-48x48-sound.avi", queuelength=23, parent=root)
        self.assertEqual(node.queuelength, 23)
Example #3
0
 def testVideoAccel(self):
     accelConfig = avg.VideoNode.getVideoAccelConfig()
     video = avg.VideoNode(accelerated=False, href="media/mpeg1-48x48.mov")
     video.play()
     self.assertEqual(video.accelerated, False)
     video = avg.VideoNode(accelerated=True, href="media/mpeg1-48x48.mov")
     video.play()
     self.assertEqual(video.accelerated, (accelConfig != avg.NO_ACCELERATION))
Example #4
0
 def testException(self):
     class TestException(Exception):
         pass
     
     def throwException():
         raise TestException
     
     player.setFakeFPS(0.1)
     videoNode = avg.VideoNode(threaded = False)
     videoNode.href = "../testmediadir/mjpeg-48x48.avi"
     videoNode.subscribe(avg.Node.END_OF_FILE, throwException)
     
     root = self.loadEmptyScene()
     root.appendChild(videoNode)
     
     self.__exceptionThrown = False
     try:
         self.start(False,
                 (videoNode.pause,
                  lambda: videoNode.seekToFrame(videoNode.getNumFrames()),
                  videoNode.play,
                  lambda: None
                 ))
     except TestException:
         self.__exceptionThrown = True
         
     self.assert_(self.__exceptionThrown)
Example #5
0
    def testWarp(self):
        def moveVertex():
            grid = image.getWarpedVertexCoords()
            grid[1][1] = (grid[1][1][0]+0.06, grid[1][1][1]+0.06)
            image.setWarpedVertexCoords(grid)
            grid = video.getWarpedVertexCoords()
            grid[0][0] = (grid[0][0][0]+0.06, grid[0][0][1]+0.06)
            grid[1][1] = (grid[1][1][0]-0.06, grid[1][1][1]-0.06)
            video.setWarpedVertexCoords(grid)
        
        def flip():
            grid = image.getOrigVertexCoords()
            grid = [ [ (1-pos[0], pos[1]) for pos in line ] for line in grid]
            image.setWarpedVertexCoords(grid)
       
        root = self.loadEmptyScene()
        image = avg.ImageNode(href="rgb24-64x64.png",
                maxtilewidth=32, maxtileheight=16, parent=root)
        video = avg.VideoNode(pos=(40,0), size=(80,80), opacity=0.5, loop=True,
                href="mpeg1-48x48.mov", threaded=False, fps=30, parent=root)

        self.assertException(image.getOrigVertexCoords)
        self.assertException(image.getWarpedVertexCoords)
        player.setFakeFPS(30)
        self.start(False,
                (lambda: video.play(),
                 lambda: self.compareImage("testWarp1"),
                 moveVertex,
                 lambda: self.compareImage("testWarp2"),
                 flip,
                 lambda: self.compareImage("testWarp3")
                ))
Example #6
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
Example #7
0
        def testVideoFile(filename, isThreaded):
            def setVolume(volume):
                node.volume = volume

            def testGetVolume(volume):
                self.assertAlmostEqual(node.volume, volume)

            def checkImage(filename):
                if not (isThreaded):
                    self.compareImage("testVideo-" + filename + "1")

            def testInfo():
                if filename == "mpeg1-48x48-sound.avi" and isThreaded:
                    self.assert_(node.hasAudio())
                else:
                    self.assert_(not (node.hasAudio()))
                self.assert_(
                    (filename == "rgba-48x48.mov"
                     or filename == "vp6a-yuva-48x48.flv") == node.hasAlpha())

            root = self.loadEmptyScene()
            node = avg.VideoNode(href=filename,
                                 volume=0.8,
                                 size=(96, 96),
                                 threaded=isThreaded)
            self.assertEqual(node.threaded, isThreaded)
            setVolume(0.6)
            root.appendChild(node)
            self.assertRaises(RuntimeError, node.hasAudio)
            self.start(False,
                       (lambda: setVolume(0.5), lambda: testGetVolume(0.5),
                        lambda: node.play(), lambda: checkImage(filename),
                        lambda: setVolume(0.3), lambda: testGetVolume(0.3),
                        testInfo, lambda: node.stop()))
Example #8
0
        def testWithFile(filename, testImgName):
            def setMask(href):
                video.maskhref = href
                video.masksize = (32,32)

            def setOpacity():
                video.opacity = 0.5

            def setMaskBitmap():
                video.setMaskBitmap(avg.Bitmap("media/mask4.png"))

            print "  ", filename
            player.setFakeFPS(25)
            root = self.loadEmptyScene()
            video = avg.VideoNode(href=filename, threaded=False,
                    parent=root)
            video.play()
            self.start(False,
                    (lambda: setMask("mask4.png"),
                     lambda: self.compareImage(testImgName+"1"),
                     lambda: video.seekToFrame(10),
                     lambda: setMask(""),
                     lambda: self.compareImage(testImgName+"2"),
                     lambda: setMask("mask2.png"),
                     lambda: self.compareImage(testImgName+"3"),
                     setOpacity,
                     lambda: self.compareImage(testImgName+"4"),
                     setMaskBitmap,
                     lambda: self.compareImage(testImgName+"5"),
                    ))
    def onInit(self):
        player.showCursor(True)

        self.videoListNode = avg.DivNode(parent=self)
        self.videoNodes = []
        fileNames = os.listdir(self.__folder)
        i = 0
        for fileName in fileNames:
            try:
                videoNode = avg.VideoNode(pos=(i * (self.__thumbWidth + 20),
                                               0),
                                          href=self.__folder + '/' + fileName,
                                          loop=True,
                                          mipmap=True,
                                          enablesound=False,
                                          parent=self.videoListNode)
                videoNode.play()
                self.videoNodes.append(videoNode)

                size = videoNode.getMediaSize()
                height = (self.__thumbWidth * size.y) / size.x
                videoNode.size = (self.__thumbWidth, height)
                videoNode.subscribe(videoNode.CURSOR_DOWN,
                                    lambda event, videoNode=videoNode: self.
                                    chooseVideo(event, videoNode))
                i += 1
            except RuntimeError:
                pass

        self.subscribe(self.CURSOR_MOTION, self.onMouseMove)
        self.bigVideoNode = None
Example #10
0
    def testLoop(self):
        def onEOF():
            self.eof = True

        def onFrame():
            if self.eof:
                if not threaded:
                    self.compareImage("testVideoLoop")
                player.stop()

        for audio, threaded in [(False, False), (False, True), (True, True)]:
            self.eof = False
            if audio:
                player.setFakeFPS(-1)
            else:
                player.setFakeFPS(25)
            root = self.loadEmptyScene()
            if audio:
                node = avg.SoundNode(parent=root, loop=True,
                        href="48kHz_16bit_mono.wav")
            else:
                node = avg.VideoNode(parent=root, loop=True, fps=25, size=(96,96),
                    threaded=threaded, href="mpeg1-48x48.mov")
            node.subscribe(avg.Node.END_OF_FILE, onEOF)
            node.play()
            player.subscribe(player.ON_FRAME, onFrame)
            player.play()
Example #11
0
    def testInvalidVideoFilename(self):
        def tryplay():
            assertRaises(SystemError, lambda: video.play())

        root = self.loadEmptyScene()
        video = avg.VideoNode(href="filedoesntexist.avi", parent=root)
        self.start(False, (lambda: tryplay, lambda: video.stop()))
Example #12
0
    def testVideoHRef(self):
        def testGetMediaSize():
            self.assertEqual(node.getMediaSize(), (48, 48))

        def setHRefLoaded():
            node.href = "h264-48x48.h264"

        def setHRefUnloaded():
            node = avg.VideoNode()
            node.href = "h264-48x48.h264"
            node.play()

        def testVideoNotFound():
            # Missing file, but no play() or pause(): Should just work.
            node = avg.VideoNode(href="MissingFile.mov")
            node.href = "SecondMissingFile.mov"
            # Now libavg notices the missing file.
            self.assertRaises(RuntimeError, node.play)

        def testVideoBroken():
            node = avg.VideoNode(href="rgb24-64x64.png")
            self.assertRaises(RuntimeError, node.play)

        root = self.loadEmptyScene()
        node = avg.VideoNode(href="mpeg1-48x48.mov",
                             threaded=False,
                             parent=root)
        player.setFakeFPS(25)
        testVideoNotFound()
        testVideoBroken()
        setHRefUnloaded()
        self.start(False,
                   (lambda: node.play(), testGetMediaSize, setHRefLoaded,
                    lambda: self.compareImage("testVideoHRef1"),
                    testGetMediaSize, testVideoNotFound, testVideoBroken))
Example #13
0
 def testVideoState(self):
     for accelerated in [True, False]:
         root = self.loadEmptyScene()
         node = avg.VideoNode(href="mpeg1-48x48.mov",
                              size=(96, 96),
                              threaded=False,
                              accelerated=accelerated,
                              parent=root)
         player.setFakeFPS(25)
         self.start(False, (
             lambda: node.play(),
             lambda: self.compareImage("testVideoState1"),
             lambda: node.pause(),
             lambda: self.compareImage("testVideoState2"),
             lambda: self.compareImage("testVideoState2"),
             lambda: node.play(),
             lambda: self.compareImage("testVideoState3"),
             lambda: node.stop(),
             lambda: self.compareImage("testVideoState4"),
             lambda: node.pause(),
             lambda: self.compareImage("testVideoState5"),
             lambda: self.compareImage("testVideoState5"),
             lambda: node.stop(),
             lambda: self.compareImage("testVideoState4"),
         ))
Example #14
0
    def __getFileNames(self, args):
        self._fileNameList = []
        filePaths = []
        for arg in args:
            if arg == ".":
                filePaths.extend(os.listdir(os.curdir))
                if options.recursion:
                    for folder in filePaths:
                        if os.path.isdir(folder):
                            filePaths.extend(self.__getFilesInFolder(folder))
            elif arg == ".." or os.path.isdir(arg):
                filePaths.extend(self.__getFilesInFolder(arg))
            else:
                if os.path.isfile(arg):
                    filePaths.append(arg)

        for fileName in filePaths:
            try:
                if os.path.isfile(fileName):
                    self._node.href = str(fileName)
                    self._node.play()
                    self._fileNameList.append(self._node.href)   
            except RuntimeError, err:
                sys.stderr.write(str(err) + "\n")
                self._node = avg.VideoNode()
Example #15
0
 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")
Example #16
0
 def addVideo():
     node.unlink(True)
     videoNode = avg.VideoNode(parent=root, threaded=False, size=(96,96),
             href="mpeg1-48x48.mov")
     effect = avg.BlurFXNode()
     effect.radius = 0
     videoNode.setEffect(effect)
     videoNode.play()
Example #17
0
 def testVideoNullFX(self):
     root = self.loadEmptyScene()
     player.setFakeFPS(25)
     node = avg.VideoNode(parent=root, href="mjpeg-48x48.avi",
             threaded=False)
     node.setEffect(avg.NullFXNode())
     node.play()
     self.start(False, (lambda: self.compareImage("testVideoNullFX"),))
Example #18
0
 def checkEnableSound():
     node = avg.VideoNode(href="mpeg1-48x48-sound.avi",
                          threaded=isThreaded,
                          enablesound=False,
                          parent=root)
     node.pause()
     self.assertEqual(node.getVideoCodec(), "mpeg4")
     self.assertRaises(RuntimeError, node.getAudioCodec)
Example #19
0
 def startVideo():
     node.unlink(True)
     self.videoNode = avg.VideoNode(href="mpeg1-48x48.mov",
                                    size=(96, 96),
                                    threaded=False,
                                    parent=root)
     self.videoNode.setEffect(avg.NullFXNode())
     self.videoNode.play()
Example #20
0
 def showVideo():
     node.unlink(True)
     videoNode = avg.VideoNode(parent=root,
                               size=(96, 96),
                               threaded=False,
                               href="mpeg1-48x48.mov",
                               contrast=(0.5, 0.5, 0.5))
     videoNode.play()
Example #21
0
 def showVideo():
     node.unlink(True)
     self.videoNode = avg.VideoNode(parent=root,
                                    size=(96, 96),
                                    threaded=False,
                                    href="mpeg1-48x48.mov",
                                    intensity=(0.5, 0.5, 0.5))
     self.videoNode.play()
Example #22
0
 def test2VideosAtOnce(self):
     player.setFakeFPS(25)
     self.loadEmptyScene()
     root = player.getRootNode()
     for pos in ((0,0), (80,0)):
         video = avg.VideoNode(pos=pos, threaded=False, href="mpeg1-48x48.mov",
                 parent=root)
         video.play()
     self.start(False,
             [lambda: self.compareImage("test2VideosAtOnce1"),])
Example #23
0
    def testVideoSizeChanged(self):
        def onResize(newSize):
            self.messageReceived = True

        self.messageReceived = False
        root = self.loadEmptyScene()
        self.video = avg.VideoNode(href="mpeg1-48x48.mov", parent=root)
        self.video.subscribe(self.video.SIZE_CHANGED, onResize)
        self.video.play()
        self.assert_(self.messageReceived)
Example #24
0
 def checkExceptions():
     node = avg.VideoNode(href="mpeg1-48x48.mov", threaded=isThreaded)
     self.assertRaises(avg.Exception, node.getBitrate)
     self.assertRaises(avg.Exception, node.getVideoCodec)
     self.assertRaises(avg.Exception, node.getStreamPixelFormat)
     node.pause()
     self.assertRaises(avg.Exception, node.getAudioCodec)
     self.assertRaises(avg.Exception, node.getAudioSampleRate)
     self.assertRaises(avg.Exception, node.getNumAudioChannels)
     root.appendChild(node)
Example #25
0
 def testPlayBeforeConnect(self):
     node = avg.VideoNode(href="media/mpeg1-48x48.mov", threaded=False)
     node.play()
     player.createMainCanvas(size=(160,120))
     root = player.getRootNode()
     root.insertChild(node, 0)
     player.setFakeFPS(25)
     self.start(False,
             (lambda: self.assertEqual(node.size, (48, 48)),
              lambda: self.compareImage("testPlayBeforeConnect"),
             )) 
Example #26
0
 def testVideoFPS(self):
     player.setFakeFPS(25)
     root = self.loadEmptyScene()
     root = root
     videoNode = avg.VideoNode(size=(80,80), loop=True, threaded=False,
             href="mjpeg-48x48.avi", fps=250, parent=root)
     self.start(False,
             (lambda: videoNode.play(),
              None,
              lambda: self.compareImage("testVideoFPS")
             ))
Example #27
0
    def testVideoEOF(self):
        player.setFakeFPS(25)
        for filename in ["mpeg1-48x48.mov", "mpeg1-48x48-sound.avi"]:
            node = avg.VideoNode(href=filename)
            self.testEOF(node)
        node = avg.VideoNode(href="mpeg1-48x48.mov", opacity=0)
        self.testEOF(node)

        root = self.loadEmptyScene()
        video = avg.VideoNode(href="mpeg1-48x48.mov", threaded=False,
                parent=root)
        player.setFakeFPS(0.1)
       
        # Should never be called
        eofID = video.subscribe(avg.Node.END_OF_FILE, lambda: self.assert_(False))   
        self.start(False,
                (lambda: video.unsubscribe(avg.Node.END_OF_FILE, eofID), 
                 video.play,
                 None
                ))
Example #28
0
    def testWarp(self):
        def moveVertex():
            grid = image.getWarpedVertexCoords()
            grid[1][1] = (grid[1][1][0] + 0.06, grid[1][1][1] + 0.06)
            image.setWarpedVertexCoords(grid)
            grid = video.getWarpedVertexCoords()
            grid[0][0] = (grid[0][0][0] + 0.06, grid[0][0][1] + 0.06)
            grid[1][1] = (grid[1][1][0] - 0.06, grid[1][1][1] - 0.06)
            video.setWarpedVertexCoords(grid)

        def flip():
            grid = image.getOrigVertexCoords()
            grid = [[(1 - pos[0], pos[1]) for pos in line] for line in grid]
            image.setWarpedVertexCoords(grid)

        def changeHref():
            image.href = "rgb24-65x65.png"
            grid = image.getWarpedVertexCoords()
            self.assert_(len(grid) == 6)
            self.assert_(len(grid[0]) == 4)

        root = self.loadEmptyScene()
        image = avg.ImageNode(href="rgb24-64x64.png",
                              maxtilewidth=32,
                              maxtileheight=16,
                              parent=root)
        video = avg.VideoNode(pos=(40, 0),
                              size=(80, 80),
                              opacity=0.5,
                              loop=True,
                              href="mpeg1-48x48.mov",
                              threaded=False,
                              fps=30,
                              parent=root)

        self.assertRaises(avg.Exception, image.getOrigVertexCoords)
        self.assertRaises(avg.Exception, image.getWarpedVertexCoords)
        player.setFakeFPS(30)
        self.start(False, (
            lambda: video.play(),
            lambda: self.compareImage("testWarp1"),
            moveVertex,
            lambda: self.compareImage("testWarp2"),
            flip,
            lambda: self.compareImage("testWarp3"),
            changeHref,
            lambda: self.compareImage("testWarp4"),
            lambda: image.setMirror(avg.RasterNode.HORIZONTAL),
            lambda: self.compareImage("testWarp5"),
            lambda: image.setMirror(avg.RasterNode.VERTICAL),
            lambda: self.compareImage("testWarp6"),
        ))
Example #29
0
    def onArgvParsed(self, options, args, parser):
        if len(args) != 1:
            parser.print_help()
            sys.exit(1)

        self.node = avg.VideoNode(href=args[0],
                                  accelerated=not (options.disableAccel))
        self.node.pause()

        mediaSize = self.node.getMediaSize()
        size = avg.Point2D(max(mediaSize.x, 320), max(mediaSize.y, 120))
        screenSize = player.getScreenResolution()
        size = avg.Point2D(min(size.x, screenSize.x),
                           min(size.y, screenSize.y - 80))
        self.settings.set("app_resolution", "%dx%d" % (size.x, size.y))
 def chooseVideo(self, event, videoNode):
     if self.bigVideoNode:
         self.removeBigVideo()
     destSize = videoNode.size * 2
     destPos = Point2D(720, 550) - destSize / 2
     absPos = videoNode.getAbsPos(Point2D(0, 0))
     frame = videoNode.getCurFrame()
     self.bigVideoNode = avg.VideoNode(href=videoNode.href,
                                       loop=True,
                                       sensitive=False,
                                       parent=self)
     self.bigVideoNode.play()
     self.bigVideoNode.seekToFrame(frame)
     avg.EaseInOutAnim(self.bigVideoNode, "pos", 1000, absPos, destPos,
                       False, 300, 300).start()
     avg.EaseInOutAnim(self.bigVideoNode, "size", 1000, videoNode.size,
                       destSize, False, 300, 300).start()