Ejemplo n.º 1
0
class QtPlayer:
    def __init__(self):
        Initialize()
        self._movie = None
        self._videomedia = None
        self._videotrack = None
        self._audiomedia = None
        self._audiotrack = None
        self._ddobj = None
        self._dds = None
        self._rect = None
        global QtPlayerInstances
        QtPlayerInstances = QtPlayerInstances + 1

    def __del__(self):
        self._videomedia = None
        self._videotrack = None
        self._audiomedia = None
        self._audiotrack = None
        self._audiodescr = None
        self._movie = None
        self._movie = None
        self._dds = None
        self._ddobj = None
        self._rect = None
        Terminate()
        global QtPlayerInstances
        QtPlayerInstances = QtPlayerInstances - 1

    def __repr__(self):
        s = '<%s instance' % self.__class__.__name__
        s = s + '>'
        return s

    def open(self, url, exporter=None, asaudio=0):
        try:
            movieResRef = Qt.OpenMovieFileWin(url, 1)
        except Exception, arg:
            print arg
            return 0
        try:
            self._movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, 0)
        except Exception, arg:
            print arg
            Qt.CloseMovieFile(movieResRef)
            return 0
Ejemplo n.º 2
0
        self.audiotimescale = None
        self.audiodescr = {}

        self.videocurtime = None
        self.audiocurtime = None

        winqt.Initialize()

        path = MMurl.urlretrieve(url)[0]
        try:
            movieResRef = Qt.OpenMovieFileWin(path, 1)
        except Qt.Error, arg:
            print arg
        else:
            try:
                self.movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, 0)
            except Qt.Error, arg:
                print arg
                self.movie = None
            Qt.CloseMovieFile(movieResRef)

        if not self.movie:
            raise IOError, "Cannot open: %s" % url

        self.movietimescale = self.movie.GetMovieTimeScale()

        try:
            self.audiotrack = self.movie.GetMovieIndTrackType(1,
                    winqtcon.AudioMediaCharacteristic, winqtcon.movieTrackCharacteristic)
            self.audiomedia = self.audiotrack.GetTrackMedia()
        except Qt.Error, arg:
Ejemplo n.º 3
0
class QTWnd(MfcOsWnd):
    TIMER_TICK = 20

    def __init__(self, bgcolor=(255, 0, 255)):
        MfcOsWnd.__init__(self, )
        self._clstyle = win32con.CS_DBLCLKS
        self._style = win32con.WS_CHILD | win32con.WS_CLIPSIBLINGS
        self.port = None
        self.movie = None
        self.ctrl = None
        self.__timer_id = 0

        self.__ddraw = None
        self.__frontBuffer = None
        self.__backBuffer = None
        self.__clipper = None
        self.__bgcolor = bgcolor

        self.__movieBuffer = None

        # movie position and size
        self._movieRect = 80, 60, 240, 180

    def OnCreate(self, params):
        # back buffer size
        w, h = self.GetClientRect()[2:]

        self.__ddraw = ddraw.CreateDirectDraw()

        self.__ddraw.SetCooperativeLevel(self.GetSafeHwnd(),
                                         ddraw.DDSCL_NORMAL)

        ddsd = ddraw.CreateDDSURFACEDESC()
        ddsd.SetFlags(ddraw.DDSD_CAPS)
        ddsd.SetCaps(ddraw.DDSCAPS_PRIMARYSURFACE)
        self.__frontBuffer = self.__ddraw.CreateSurface(ddsd)

        ddsd = ddraw.CreateDDSURFACEDESC()
        ddsd.SetFlags(ddraw.DDSD_WIDTH | ddraw.DDSD_HEIGHT | ddraw.DDSD_CAPS)
        ddsd.SetCaps(ddraw.DDSCAPS_OFFSCREENPLAIN)
        ddsd.SetSize(w, h)
        self.__backBuffer = self.__ddraw.CreateSurface(ddsd)

        self.__clipper = self.__ddraw.CreateClipper(self.GetSafeHwnd())
        self.__frontBuffer.SetClipper(self.__clipper)
        self._pxlfmt = self.__frontBuffer.GetPixelFormat()

        # clear back buffer
        ddcolor = self.__backBuffer.GetColorMatch(self.__bgcolor
                                                  or (255, 255, 255))
        self.__backBuffer.BltFill((0, 0, w, h), ddcolor)

        self.createDirectDrawQt(self.__ddraw, self._movieRect[2:])

        self.HookMessage(self.OnTimer, win32con.WM_TIMER)
        self.__timer_id = self.SetTimer(1, self.TIMER_TICK)

    def createDirectDrawQt(self, ddobj, size):
        w, h = size
        ddsd = ddraw.CreateDDSURFACEDESC()
        ddsd.SetFlags(ddraw.DDSD_WIDTH | ddraw.DDSD_HEIGHT | ddraw.DDSD_CAPS)
        ddsd.SetCaps(ddraw.DDSCAPS_OFFSCREENPLAIN)
        ddsd.SetSize(w, h)
        self.__movieBuffer = ddobj.CreateSurface(ddsd)

        Qt.InitializeQTML()
        Qt.EnterMovies()
        Qt.SetDDObject(ddobj)
        Qt.SetDDPrimarySurface(self.__movieBuffer)

        fn = 'D:\\ufs\\mm\\cmif\\win32\\Qt\\media\\fashion.mov'
        try:
            movieResRef = Qt.OpenMovieFileWin(fn, 1)
        except Exception, arg:
            print arg
            return

        try:
            self.movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, 0)
        except Exception, arg:
            print arg