Mercurial > audlegacy
diff Plugins/Input/modplug/modplugbmp.h @ 278:37316876ef6e trunk
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
author | chainsaw |
---|---|
date | Sat, 10 Dec 2005 14:31:13 -0800 |
parents | |
children | 9466f03c92f8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/Input/modplug/modplugbmp.h Sat Dec 10 14:31:13 2005 -0800 @@ -0,0 +1,112 @@ +/* Modplug XMMS Plugin + * Authors: Kenton Varda <temporal@gauge3d.org> + * + * This source code is public domain. + */ + +#ifndef __MODPLUGXMMS_CMODPLUGXMMS_H_INCLUDED__ +#define __MODPLUGXMMS_CMODPLUGXMMS_H_INCLUDED__ + +#include <string> + +#ifndef __MODPLUGXMMS_STDDEFS_H__INCLUDED__ +#include "stddefs.h" +#endif + +#include "plugin.h" + +using namespace std; + +class CSoundFile; +class Archive; + +class ModplugXMMS +{ +public: + struct Settings + { + bool mSurround; + bool mOversamp; + bool mMegabass; + bool mNoiseReduction; + bool mVolumeRamp; + bool mReverb; + bool mFastinfo; + bool mUseFilename; + bool mPreamp; + + uint8 mChannels; + uint8 mBits; + uint32 mFrequency; + uint32 mResamplingMode; + + uint32 mReverbDepth; + uint32 mReverbDelay; + uint32 mBassAmount; + uint32 mBassRange; + uint32 mSurroundDepth; + uint32 mSurroundDelay; + float mPreampLevel; + int32 mLoopCount; + + Settings(); + }; + + ModplugXMMS(); + ~ModplugXMMS(); + + void Init(); // Called when the plugin is loaded + bool CanPlayFile(const string& aFilename);// Return true if the plugin can handle the file + + void CloseConfigureBox(); + + void PlayFile(const string& aFilename);// Play the file. + void Stop(); // Stop playing. + void Pause(bool aPaused); // Pause or unpause. + + void Seek(float32 aTime); // Seek to the specified time. + float32 GetTime(); // Get the current play time. + + void GetSongInfo(const string& aFilename, char*& aTitle, int32& aLength); // Function to grab the title string + + void SetInputPlugin(InputPlugin& aInPlugin); + void SetOutputPlugin(OutputPlugin& aOutPlugin); + + const Settings& GetModProps(); + void SetModProps(const Settings& aModProps); + +private: + InputPlugin* mInPlug; + OutputPlugin* mOutPlug; + + uchar* mBuffer; + uint32 mBufSize; + + bool mPaused; + volatile bool mStopped; + + Settings mModProps; + + AFormat mFormat; + + uint32 mBufTime; //milliseconds + + CSoundFile* mSoundFile; + Archive* mArchive; + + uint32 mPlayed; + + GThread* mDecodeThread; + + char mModName[100]; + + float mPreampFactor; + + void PlayLoop(); + static void* PlayThread(void* arg); + const char* Bool2OnOff(bool aValue); +}; + +extern ModplugXMMS gModplugXMMS; + +#endif //included