annotate Plugins/Input/modplug/modplugbmp.h @ 316:950f104f2e11 trunk

[svn] Fix spacing in --help output, patch by Mikachu.
author chainsaw
date Sun, 18 Dec 2005 06:41:22 -0800
parents 37316876ef6e
children 9466f03c92f8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
278
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
1 /* Modplug XMMS Plugin
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
2 * Authors: Kenton Varda <temporal@gauge3d.org>
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
3 *
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
4 * This source code is public domain.
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
5 */
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
6
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
7 #ifndef __MODPLUGXMMS_CMODPLUGXMMS_H_INCLUDED__
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
8 #define __MODPLUGXMMS_CMODPLUGXMMS_H_INCLUDED__
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
9
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
10 #include <string>
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
11
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
12 #ifndef __MODPLUGXMMS_STDDEFS_H__INCLUDED__
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
13 #include "stddefs.h"
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
14 #endif
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
15
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
16 #include "plugin.h"
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
17
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
18 using namespace std;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
19
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
20 class CSoundFile;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
21 class Archive;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
22
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
23 class ModplugXMMS
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
24 {
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
25 public:
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
26 struct Settings
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
27 {
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
28 bool mSurround;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
29 bool mOversamp;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
30 bool mMegabass;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
31 bool mNoiseReduction;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
32 bool mVolumeRamp;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
33 bool mReverb;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
34 bool mFastinfo;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
35 bool mUseFilename;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
36 bool mPreamp;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
37
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
38 uint8 mChannels;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
39 uint8 mBits;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
40 uint32 mFrequency;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
41 uint32 mResamplingMode;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
42
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
43 uint32 mReverbDepth;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
44 uint32 mReverbDelay;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
45 uint32 mBassAmount;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
46 uint32 mBassRange;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
47 uint32 mSurroundDepth;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
48 uint32 mSurroundDelay;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
49 float mPreampLevel;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
50 int32 mLoopCount;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
51
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
52 Settings();
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
53 };
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
54
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
55 ModplugXMMS();
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
56 ~ModplugXMMS();
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
57
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
58 void Init(); // Called when the plugin is loaded
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
59 bool CanPlayFile(const string& aFilename);// Return true if the plugin can handle the file
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
60
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
61 void CloseConfigureBox();
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
62
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
63 void PlayFile(const string& aFilename);// Play the file.
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
64 void Stop(); // Stop playing.
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
65 void Pause(bool aPaused); // Pause or unpause.
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
66
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
67 void Seek(float32 aTime); // Seek to the specified time.
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
68 float32 GetTime(); // Get the current play time.
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
69
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
70 void GetSongInfo(const string& aFilename, char*& aTitle, int32& aLength); // Function to grab the title string
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
71
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
72 void SetInputPlugin(InputPlugin& aInPlugin);
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
73 void SetOutputPlugin(OutputPlugin& aOutPlugin);
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
74
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
75 const Settings& GetModProps();
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
76 void SetModProps(const Settings& aModProps);
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
77
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
78 private:
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
79 InputPlugin* mInPlug;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
80 OutputPlugin* mOutPlug;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
81
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
82 uchar* mBuffer;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
83 uint32 mBufSize;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
84
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
85 bool mPaused;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
86 volatile bool mStopped;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
87
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
88 Settings mModProps;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
89
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
90 AFormat mFormat;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
91
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
92 uint32 mBufTime; //milliseconds
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
93
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
94 CSoundFile* mSoundFile;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
95 Archive* mArchive;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
96
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
97 uint32 mPlayed;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
98
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
99 GThread* mDecodeThread;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
100
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
101 char mModName[100];
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
102
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
103 float mPreampFactor;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
104
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
105 void PlayLoop();
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
106 static void* PlayThread(void* arg);
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
107 const char* Bool2OnOff(bool aValue);
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
108 };
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
109
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
110 extern ModplugXMMS gModplugXMMS;
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
111
37316876ef6e [svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff changeset
112 #endif //included