From 10037e79e70ff5a4822f73e7da792c7ba6178e54 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 16 Mar 2012 23:18:15 -0700 Subject: [PATCH] Add a skeleton decoder class using mpg123 and libsndfile --- apps/openmw/CMakeLists.txt | 2 +- apps/openmw/mwsound/mpgsnd_decoder.cpp | 29 ++++++++++++++++++++++++++ apps/openmw/mwsound/mpgsnd_decoder.hpp | 29 ++++++++++++++++++++++++++ apps/openmw/mwsound/sound_decoder.hpp | 19 +++++++++++++++++ apps/openmw/mwsound/soundmanager.cpp | 2 ++ apps/openmw/mwsound/soundmanager.hpp | 2 +- 6 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 apps/openmw/mwsound/mpgsnd_decoder.cpp create mode 100644 apps/openmw/mwsound/mpgsnd_decoder.hpp create mode 100644 apps/openmw/mwsound/sound_decoder.hpp diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index e9002f111..bb7655a3c 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -38,7 +38,7 @@ add_openmw_dir (mwscript ) add_openmw_dir (mwsound - soundmanager openal_output + soundmanager openal_output mpgsnd_decoder ) add_openmw_dir (mwworld diff --git a/apps/openmw/mwsound/mpgsnd_decoder.cpp b/apps/openmw/mwsound/mpgsnd_decoder.cpp new file mode 100644 index 000000000..cdc392e70 --- /dev/null +++ b/apps/openmw/mwsound/mpgsnd_decoder.cpp @@ -0,0 +1,29 @@ +#include "mpgsnd_decoder.hpp" + + +namespace MWSound +{ + +bool MpgSnd_Decoder::Open(const std::string &fname) +{ + return false; +} + +void MpgSnd_Decoder::Close() +{ +} + + +MpgSnd_Decoder::MpgSnd_Decoder() +{ + static bool initdone = false; + if(!initdone) + mpg123_init(); + initdone = true; +} + +MpgSnd_Decoder::~MpgSnd_Decoder() +{ +} + +} diff --git a/apps/openmw/mwsound/mpgsnd_decoder.hpp b/apps/openmw/mwsound/mpgsnd_decoder.hpp new file mode 100644 index 000000000..ffa9037a7 --- /dev/null +++ b/apps/openmw/mwsound/mpgsnd_decoder.hpp @@ -0,0 +1,29 @@ +#ifndef GAME_SOUND_MPGSND_DECODER_H +#define GAME_SOUND_MPGSND_DECODER_H + +#include + +#include "mpg123.h" +#include "sndfile.h" + +#include "sound_decoder.hpp" + + +namespace MWSound +{ + class MpgSnd_Decoder : public Sound_Decoder + { + virtual bool Open(const std::string &fname); + virtual void Close(); + + MpgSnd_Decoder(); + virtual ~MpgSnd_Decoder(); + + friend class SoundManager; + }; +#ifndef DEFAULT_DECODER +#define DEFAULT_DECODER (::MWSound::MpgSnd_Decoder) +#endif +}; + +#endif diff --git a/apps/openmw/mwsound/sound_decoder.hpp b/apps/openmw/mwsound/sound_decoder.hpp new file mode 100644 index 000000000..0d7e3d9f8 --- /dev/null +++ b/apps/openmw/mwsound/sound_decoder.hpp @@ -0,0 +1,19 @@ +#ifndef GAME_SOUND_SOUND_DECODER_H +#define GAME_SOUND_SOUND_DECODER_H + +namespace MWSound +{ + class Sound_Decoder + { + public: + virtual bool Open(const std::string &fname) = 0; + virtual void Close() = 0; + + virtual ~Sound_Decoder() { } + + friend class OpenAL_Output; + friend class SoundManager; + }; +} + +#endif diff --git a/apps/openmw/mwsound/soundmanager.cpp b/apps/openmw/mwsound/soundmanager.cpp index 8b852a746..c22550a2a 100644 --- a/apps/openmw/mwsound/soundmanager.cpp +++ b/apps/openmw/mwsound/soundmanager.cpp @@ -12,6 +12,7 @@ #include "../mwworld/world.hpp" #include "../mwworld/player.hpp" +#include "sound_decoder.hpp" #include "openal_output.hpp" #define SOUND_OUT "OpenAL" @@ -28,6 +29,7 @@ #endif #ifdef OPENMW_USE_MPG123 +#include "mpgsnd_decoder.hpp" #define SOUND_IN "mpg123,sndfile" #endif diff --git a/apps/openmw/mwsound/soundmanager.hpp b/apps/openmw/mwsound/soundmanager.hpp index f77222cb4..8d2184c54 100644 --- a/apps/openmw/mwsound/soundmanager.hpp +++ b/apps/openmw/mwsound/soundmanager.hpp @@ -22,6 +22,7 @@ namespace MWWorld namespace MWSound { class Sound_Output; + class Sound_Decoder; class SoundManager { @@ -131,7 +132,6 @@ namespace MWSound virtual void Deinitialize() = 0; Sound_Output(SoundManager &mgr) : mgr(mgr) { } - public: virtual ~Sound_Output() { }