raze-gles/polymer/jfaud/inc/waveformfile.hpp

47 lines
1.2 KiB
C++
Raw Normal View History

#ifndef __waveformfile_hpp__
#define __waveformfile_hpp__
#include "soundfile.hpp"
#include "pcmbuffer.hpp"
class WaveformFile : public SoundFile {
public:
typedef enum {
FORMAT_UNKNOWN = -1,
FORMAT_FIRST = 0,
FORMAT_RAW = 0,
FORMAT_RIFFWAV,
FORMAT_AIFF,
FORMAT_VOC,
FORMAT_AU,
FORMAT_OGGVORBIS,
FORMAT_FLAC,
FORMAT_MPEG,
FORMAT_MOD,
FORMAT_LAST = FORMAT_MOD
} Format;
WaveformFile() { }
virtual ~WaveformFile() { }
virtual Type GetType() const { return TYPE_WAVEFORM; }
virtual const char *GetTypeName() const { return "waveform"; }
virtual Format GetFormat() const = 0;
virtual const char *GetFormatName() const = 0;
// Sub-classes should implement these
//static InitState Init() { return InitDisabled; }
//static bool Uninit() { return false; }
virtual PcmBuffer *ReadSamples(unsigned int nsamps = 0, bool loop = false) = 0;
virtual float GetPlayTime(void) const = 0;
virtual unsigned int GetPCMLength(void) const = 0;
// return 0x7fffffff if length is unknown, which will force streaming
};
bool InitialiseWaveformReaders(void);
void UninitialiseWaveformReaders(void);
WaveformFile *IdentifyWaveformFile(JFAudFile *);
#endif