aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Hoops2010-05-18 17:36:34 +0000
committerMatthew Hoops2010-05-18 17:36:34 +0000
commit759e4923d07d2ac3eb23422aaa2a05671db4ce1c (patch)
treedd10fb528cea3f0480d2459e2c16b938f1516d3e
parent83f31e4e44596c865132f9d92b54b166484ea89d (diff)
downloadscummvm-rg350-759e4923d07d2ac3eb23422aaa2a05671db4ce1c.tar.gz
scummvm-rg350-759e4923d07d2ac3eb23422aaa2a05671db4ce1c.tar.bz2
scummvm-rg350-759e4923d07d2ac3eb23422aaa2a05671db4ce1c.zip
Add a new class 'RewindableVideoDecoder' that allows a video to be rewound and have QTPlayer inherit from that.
svn-id: r49084
-rw-r--r--engines/mohawk/video/qt_player.h4
-rw-r--r--engines/sci/console.cpp5
-rw-r--r--graphics/video/video_decoder.h16
3 files changed, 17 insertions, 8 deletions
diff --git a/engines/mohawk/video/qt_player.h b/engines/mohawk/video/qt_player.h
index 5234f7cc59..205b18f99c 100644
--- a/engines/mohawk/video/qt_player.h
+++ b/engines/mohawk/video/qt_player.h
@@ -55,7 +55,7 @@ enum ScaleMode {
kScaleQuarter = 4
};
-class QTPlayer : public Graphics::VideoDecoder {
+class QTPlayer : public Graphics::RewindableVideoDecoder {
public:
QTPlayer();
virtual ~QTPlayer();
@@ -112,7 +112,7 @@ public:
uint32 getTimeToNextFrame() const;
Graphics::PixelFormat getPixelFormat() const;
- void rewind(); // For a future RewindableVideoDecoder class
+ void rewind();
// TODO: These audio functions need to be removed from the public and/or added to
// the VideoDecoder API directly.
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp
index f2e5601c9e..7cf3958257 100644
--- a/engines/sci/console.cpp
+++ b/engines/sci/console.cpp
@@ -225,8 +225,9 @@ void Console::postEnter() {
Graphics::VideoDecoder *videoDecoder = 0;
if (_videoFile.hasSuffix(".seq")) {
- videoDecoder = new SeqDecoder();
- ((SeqDecoder *)videoDecoder)->setFrameDelay(_videoFrameDelay);
+ SeqDecoder *seqDecoder = new SeqDecoder();
+ seqDecoder->setFrameDelay(_videoFrameDelay);
+ videoDecoder = seqDecoder;
#ifdef ENABLE_SCI32
} else if (_videoFile.hasSuffix(".vmd")) {
videoDecoder = new VMDDecoder(g_system->getMixer());
diff --git a/graphics/video/video_decoder.h b/graphics/video/video_decoder.h
index 62aa496148..2ab8306d76 100644
--- a/graphics/video/video_decoder.h
+++ b/graphics/video/video_decoder.h
@@ -160,11 +160,8 @@ protected:
/**
* A VideoDecoder wrapper that implements getTimeToNextFrame() based on getFrameRate().
*/
-class FixedRateVideoDecoder : public VideoDecoder {
+class FixedRateVideoDecoder : public virtual VideoDecoder {
public:
- FixedRateVideoDecoder() {}
- virtual ~FixedRateVideoDecoder() {}
-
uint32 getTimeToNextFrame() const;
protected:
@@ -179,6 +176,17 @@ private:
uint32 getFrameBeginTime(uint32 frame) const;
};
+/**
+ * A VideoDecoder that can rewind back to the beginning.
+ */
+class RewindableVideoDecoder : public virtual VideoDecoder {
+public:
+ /**
+ * Rewind to the beginning of the video.
+ */
+ virtual void rewind() = 0;
+};
+
} // End of namespace Graphics
#endif