aboutsummaryrefslogtreecommitdiff
path: root/engines/sword25/fmv
diff options
context:
space:
mode:
authorFilippos Karapetis2010-10-13 13:07:16 +0000
committerFilippos Karapetis2010-10-13 13:07:16 +0000
commit681ec592927b8d9a81eed7b1038743bf8e378de2 (patch)
treee78b164f2539b46927207757fae6148f776a25bd /engines/sword25/fmv
parent30ed39e381648154ab18bd5d80f196a77a50eb7c (diff)
downloadscummvm-rg350-681ec592927b8d9a81eed7b1038743bf8e378de2.tar.gz
scummvm-rg350-681ec592927b8d9a81eed7b1038743bf8e378de2.tar.bz2
scummvm-rg350-681ec592927b8d9a81eed7b1038743bf8e378de2.zip
SWORD25: Added a ENABLE_THEORA define inside fmv/theora_decoder.h
This define can be used to disable building of the Theora decoder, and thus makes libtheora optional (therefore resolving an item in the Sword25 TODO). Disabling the Theora decoder will effectively disable the game's videos Note that running the game with the Theora decoder disabled is still untested svn-id: r53416
Diffstat (limited to 'engines/sword25/fmv')
-rw-r--r--engines/sword25/fmv/movieplayer.cpp7
-rw-r--r--engines/sword25/fmv/movieplayer.h4
-rw-r--r--engines/sword25/fmv/movieplayer_script.cpp38
-rw-r--r--engines/sword25/fmv/theora_decoder.cpp4
-rw-r--r--engines/sword25/fmv/theora_decoder.h6
-rw-r--r--engines/sword25/fmv/yuvtorgba.cpp4
-rw-r--r--engines/sword25/fmv/yuvtorgba.h5
7 files changed, 68 insertions, 0 deletions
diff --git a/engines/sword25/fmv/movieplayer.cpp b/engines/sword25/fmv/movieplayer.cpp
index f6757b9a8e..81a39b385d 100644
--- a/engines/sword25/fmv/movieplayer.cpp
+++ b/engines/sword25/fmv/movieplayer.cpp
@@ -46,9 +46,14 @@ namespace Sword25 {
#define FLT_EPSILON 1.192092896e-07F /* smallest such that 1.0+FLT_EPSILON != 1.0 */
Service *OggTheora_CreateObject(Kernel *pKernel) {
+#ifdef ENABLE_THEORA
return new MoviePlayer(pKernel);
+#else
+ return NULL;
+#endif
}
+#ifdef ENABLE_THEORA
MoviePlayer::MoviePlayer(Kernel *pKernel) : Service(pKernel), _decoder(g_system->getMixer()) {
if (!registerScriptBindings())
BS_LOG_ERRORLN("Script bindings could not be registered.");
@@ -151,4 +156,6 @@ double MoviePlayer::getTime() {
return _decoder.getElapsedTime() / 1000.0;
}
+#endif
+
} // End of namespace Sword25
diff --git a/engines/sword25/fmv/movieplayer.h b/engines/sword25/fmv/movieplayer.h
index 96beb648c0..d661b4cb79 100644
--- a/engines/sword25/fmv/movieplayer.h
+++ b/engines/sword25/fmv/movieplayer.h
@@ -40,6 +40,8 @@
#include "sword25/fmv/theora_decoder.h"
#include "sword25/gfx/bitmap.h"
+#ifdef ENABLE_THEORA
+
namespace Sword25 {
class MoviePlayer : public Service {
@@ -143,3 +145,5 @@ private:
} // End of namespace Sword25
#endif
+
+#endif
diff --git a/engines/sword25/fmv/movieplayer_script.cpp b/engines/sword25/fmv/movieplayer_script.cpp
index 13bb149672..7825911525 100644
--- a/engines/sword25/fmv/movieplayer_script.cpp
+++ b/engines/sword25/fmv/movieplayer_script.cpp
@@ -42,91 +42,127 @@
namespace Sword25 {
int loadMovie(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
lua_pushbooleancpp(L, FMVPtr->loadMovie(luaL_checkstring(L, 1), lua_gettop(L) == 2 ? static_cast<uint>(luaL_checknumber(L, 2)) : 10));
+#else
+ lua_pushbooleancpp(L, true);
+#endif
return 1;
}
int unloadMovie(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
lua_pushbooleancpp(L, FMVPtr->unloadMovie());
+#else
+ lua_pushbooleancpp(L, true);
+#endif
return 1;
}
int play(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
lua_pushbooleancpp(L, FMVPtr->play());
+#else
+ lua_pushbooleancpp(L, true);
+#endif
return 1;
}
int pause(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
lua_pushbooleancpp(L, FMVPtr->pause());
+#else
+ lua_pushbooleancpp(L, true);
+#endif
return 1;
}
int update(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
FMVPtr->update();
+#endif
return 0;
}
int isMovieLoaded(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
lua_pushbooleancpp(L, FMVPtr->isMovieLoaded());
+#else
+ lua_pushbooleancpp(L, true);
+#endif
return 1;
}
int isPaused(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
lua_pushbooleancpp(L, FMVPtr->isPaused());
+#else
+ lua_pushbooleancpp(L, false);
+#endif
return 1;
}
int getScaleFactor(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
lua_pushnumber(L, FMVPtr->getScaleFactor());
+#else
+ lua_pushnumber(L, 1);
+#endif
return 1;
}
int setScaleFactor(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
FMVPtr->setScaleFactor(static_cast<float>(luaL_checknumber(L, 1)));
+#endif
return 0;
}
int getTime(lua_State *L) {
+#ifdef ENABLE_THEORA
MoviePlayer *FMVPtr = Kernel::GetInstance()->GetFMV();
BS_ASSERT(FMVPtr);
lua_pushnumber(L, FMVPtr->getTime());
+#else
+ lua_pushnumber(L, 0);
+#endif
return 1;
}
@@ -147,6 +183,7 @@ const luaL_reg LIBRARY_FUNCTIONS[] = {
{ 0, 0 }
};
+#ifdef ENABLE_THEORA
bool MoviePlayer::registerScriptBindings() {
Kernel *pKernel = Kernel::GetInstance();
BS_ASSERT(pKernel);
@@ -159,5 +196,6 @@ bool MoviePlayer::registerScriptBindings() {
return true;
}
+#endif
} // End of namespace Sword25
diff --git a/engines/sword25/fmv/theora_decoder.cpp b/engines/sword25/fmv/theora_decoder.cpp
index 9b1951828e..af69730dea 100644
--- a/engines/sword25/fmv/theora_decoder.cpp
+++ b/engines/sword25/fmv/theora_decoder.cpp
@@ -37,6 +37,8 @@
*/
#include "sword25/fmv/theora_decoder.h"
+
+#ifdef ENABLE_THEORA
#include "sword25/fmv/yuvtorgba.h"
#include "common/system.h"
#include "sound/decoders/raw.h"
@@ -490,3 +492,5 @@ Audio::QueuingAudioStream *TheoraDecoder::createAudioStream() {
}
} // End of namespace Sword25
+
+#endif
diff --git a/engines/sword25/fmv/theora_decoder.h b/engines/sword25/fmv/theora_decoder.h
index 12d8035c0a..e63f395e6f 100644
--- a/engines/sword25/fmv/theora_decoder.h
+++ b/engines/sword25/fmv/theora_decoder.h
@@ -26,6 +26,10 @@
#ifndef SWORD25_THEORADECODER_H
#define SWORD25_THEORADECODER_H
+#define ENABLE_THEORA // comment out to disable the Theora decoder, which effectively disables the game's videos
+
+#ifdef ENABLE_THEORA
+
#include "graphics/video/video_decoder.h"
#include "sound/audiostream.h"
#include "sound/mixer.h"
@@ -150,3 +154,5 @@ private:
} // End of namespace Sword25
#endif
+
+#endif
diff --git a/engines/sword25/fmv/yuvtorgba.cpp b/engines/sword25/fmv/yuvtorgba.cpp
index 12d11b6784..1796388ab8 100644
--- a/engines/sword25/fmv/yuvtorgba.cpp
+++ b/engines/sword25/fmv/yuvtorgba.cpp
@@ -34,6 +34,8 @@
#include "sword25/fmv/yuvtorgba.h"
+#ifdef ENABLE_THEORA
+
namespace Sword25 {
static const int PRECISION = 32768;
@@ -241,3 +243,5 @@ void YUVtoBGRA::translate(th_ycbcr_buffer &YUVBuffer, const th_info &theoraInfo,
}
} // End of namespace Sword25
+
+#endif
diff --git a/engines/sword25/fmv/yuvtorgba.h b/engines/sword25/fmv/yuvtorgba.h
index 15fa85b7e4..16a403acdd 100644
--- a/engines/sword25/fmv/yuvtorgba.h
+++ b/engines/sword25/fmv/yuvtorgba.h
@@ -36,6 +36,9 @@
#define SWORD25_YUVTORGBA_H
#include "sword25/kernel/common.h"
+#include "sword25/fmv/theora_decoder.h" // for ENABLE_THEORA
+
+#ifdef ENABLE_THEORA
#include <theora/theora.h>
#include <theora/codec.h>
@@ -49,3 +52,5 @@ public:
} // End of namespace Sword25
#endif
+
+#endif