From 2ba0fcda37c73cb69890accd9af3ebf5f2d32451 Mon Sep 17 00:00:00 2001 From: John Stumpo Date: Thu, 25 Nov 2010 21:24:18 -0500 Subject: [PATCH] Convert the song background video code to the new module. --- src/GuitarScene.py | 37 ++++++++++++++++--------------------- src/Stage.py | 32 +++++++++++--------------------- 2 files changed, 27 insertions(+), 42 deletions(-) diff --git a/src/GuitarScene.py b/src/GuitarScene.py index 07e15f79d..a634dddea 100644 --- a/src/GuitarScene.py +++ b/src/GuitarScene.py @@ -1309,22 +1309,17 @@ def __init__(self, engine, libraryName, songName): # evilynux - Load stage background(s) if self.stage.mode == 3: - if Stage.videoAvailable: - songVideo = None - if self.song.info.video is not None: - songVideo = self.song.info.video - songVideoStartTime = self.song.info.video_start_time - songVideoEndTime = self.song.info.video_end_time - if songVideoEndTime == -1: - songVideoEndTime = None - self.stage.loadVideo(self.libraryName, self.songName, - songVideo = songVideo, - songVideoStartTime = songVideoStartTime, - songVideoEndTime = songVideoEndTime) - else: - Log.warn("Video playback is not supported. GStreamer or its python bindings can't be found") - self.engine.config.set("game", "stage_mode", 1) - self.stage.mode = 1 + songVideo = None + if self.song.info.video is not None: + songVideo = self.song.info.video + songVideoStartTime = self.song.info.video_start_time + songVideoEndTime = self.song.info.video_end_time + if songVideoEndTime == -1: + songVideoEndTime = None + self.stage.loadVideo(self.libraryName, self.songName, + songVideo = songVideo, + songVideoStartTime = songVideoStartTime, + songVideoEndTime = songVideoEndTime) self.stage.load(self.libraryName, self.songName, self.playerList[0].practiceMode) @@ -1757,7 +1752,7 @@ def freeResources(self): if self.coOpType: self.coOpScoreCard.lastNoteEvent = None - if self.stage.mode == 3 and Stage.videoAvailable: + if self.stage.mode == 3: self.engine.view.popLayer(self.stage.vidPlayer) def getHandicap(self): @@ -3895,14 +3890,14 @@ def endPick(self, num): self.scoring[num].addScore(scoreTemp) def render3D(self): - if self.stage.mode == 3 and Stage.videoAvailable: + if self.stage.mode == 3: if self.countdown <= 0: if self.pause == True or self.failed == True: - self.stage.vidPlayer.paused = True + self.stage.vidPlayer.pause() else: - self.stage.vidPlayer.paused = False + self.stage.vidPlayer.play() else: - self.stage.vidPlayer.paused = True + self.stage.vidPlayer.pause() self.stage.render(self.visibility) diff --git a/src/Stage.py b/src/Stage.py index 7f45768f8..144972792 100644 --- a/src/Stage.py +++ b/src/Stage.py @@ -34,12 +34,8 @@ from Language import _ import math -try: - from VideoPlayer import VideoPlayer - videoAvailable = True -except: - videoAvailable = False - +from VideoPlayer import VideoLayer, VideoPlayerError + import Rockmeter #blazingamer - new 4.0 code for rendering rockmeters through stage.ini @@ -356,8 +352,6 @@ def get(value, type = str, default = None): def loadVideo(self, libraryName, songName, songVideo = None, songVideoStartTime = None, songVideoEndTime = None): - if not videoAvailable: - raise NameError('Video (gstreamer) is not available!') self.vidSource = None if self.songStage == 1: songAbsPath = os.path.join(libraryName, songName) @@ -383,26 +377,22 @@ def loadVideo(self, libraryName, songName, songVideo = None, self.mode = 1 # Fallback self.vidSource = None return - - winWidth, winHeight = (self.engine.view.geometry[2], - self.engine.view.geometry[3]) - Log.debug("Attempting to load video: %s" % self.vidSource) + try: # Catches invalid video files or unsupported formats Log.debug("Attempting to load video: %s" % self.vidSource) - self.vidPlayer = VideoPlayer(-1, self.vidSource, (winWidth, winHeight), - mute = True, loop = True, - startTime = songVideoStartTime, - endTime = songVideoEndTime) + self.vidPlayer = VideoLayer(self.engine, self.vidSource, + mute = True, loop = True, + startTime = songVideoStartTime, + endTime = songVideoEndTime) self.engine.view.pushLayer(self.vidPlayer) - self.vidPlayer.paused = True - except: + except (IOError, VideoPlayerError): self.mode = 1 - Log.warn("Failed to load video, fallback to default stage mode.") + Log.error("Failed to load song video (falling back to default stage mode):") def restartVideo(self): - if not videoAvailable or not self.mode == 3: + if not self.mode == 3: return - self.vidPlayer.loadVideo(self.vidSource) + self.vidPlayer.restart() def load(self, libraryName, songName, practiceMode = False): rm = os.path.join("themes", self.themename, "rockmeter.ini")