use libxmp instead
This commit is contained in:
parent
4c570131c3
commit
6f8ee4c7ae
26 changed files with 333 additions and 4039 deletions
|
|
@ -1,10 +1,35 @@
|
|||
#ifndef __FISHBONE_SOUND_H__
|
||||
#define __FISHBONE_SOUND_H__
|
||||
|
||||
#define FB_SOUND_DECL(prefix) \
|
||||
class prefix##SoundLoader; \
|
||||
class prefix##Sound
|
||||
|
||||
#define FB_SOUND_DEF(prefix) \
|
||||
class prefix##SoundLoader : public SoundLoader { \
|
||||
public: \
|
||||
Sound* open(Mixer* mixer, void* buffer, size_t size); \
|
||||
int read(Sound* sound, short* buffer, size_t frames); \
|
||||
void seek(Sound* sound, size_t pos); \
|
||||
}; \
|
||||
\
|
||||
class prefix##Sound : public Sound { \
|
||||
public: \
|
||||
prefix##Sound(Mixer* mixer, prefix##SoundLoader* loader, struct Sound::Impl* impl) \
|
||||
: Sound(mixer, loader, impl){}; \
|
||||
~prefix##Sound(); \
|
||||
}
|
||||
|
||||
#define FB_SOUND_LOADERS LOADER(XMP)
|
||||
|
||||
namespace fishbone {
|
||||
class SoundDriver;
|
||||
class SoundLoader;
|
||||
class Sound;
|
||||
|
||||
#define LOADER(X) FB_SOUND_DECL(X);
|
||||
FB_SOUND_LOADERS
|
||||
#undef LOADER
|
||||
}; // namespace fishbone
|
||||
|
||||
#include <fishbone/machdep.h>
|
||||
|
|
@ -27,21 +52,43 @@ namespace fishbone {
|
|||
SoundLoader();
|
||||
~SoundLoader();
|
||||
|
||||
virtual Sound* open(void* buffer, size_t size);
|
||||
virtual Sound* open(Mixer* mixer, void* buffer, size_t size);
|
||||
virtual int read(Sound* sound, short* buffer, size_t frames);
|
||||
virtual void seek(Sound* sound, size_t pos);
|
||||
};
|
||||
|
||||
class Sound {
|
||||
public:
|
||||
struct Impl;
|
||||
Impl* impl;
|
||||
|
||||
private:
|
||||
SoundLoader* loader;
|
||||
Mixer* mixer;
|
||||
|
||||
protected:
|
||||
bool loop;
|
||||
bool paused;
|
||||
|
||||
public:
|
||||
Sound(SoundLoader* loader);
|
||||
Sound(Mixer* mixer, SoundLoader* loader, struct Impl* impl);
|
||||
|
||||
int read(short* buffer, size_t frames);
|
||||
int read(short* buffer, size_t frames);
|
||||
void seek(size_t pos);
|
||||
void resume();
|
||||
void pause();
|
||||
void pauseNoLock(); /* do NOT use this! */
|
||||
bool isPaused();
|
||||
void setLoop(bool v);
|
||||
bool isLoop();
|
||||
|
||||
int rate;
|
||||
int channels;
|
||||
};
|
||||
|
||||
#define LOADER(X) FB_SOUND_DEF(X);
|
||||
FB_SOUND_LOADERS
|
||||
#undef LOADER
|
||||
}; // namespace fishbone
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue