00001 #ifndef INPUT_MOD_H
00002 #define INPUT_MOD_H
00003
00004
00005 #include <dumb.h>
00006 #include "audiere.h"
00007 #include "basic_source.h"
00008 #include "types.h"
00009
00010
00011 namespace audiere {
00012
00013 class MODInputStream : public BasicSource {
00014 public:
00015 MODInputStream();
00016 ~MODInputStream();
00017
00018 bool initialize(FilePtr file);
00019
00020 void ADR_CALL getFormat(
00021 int& channel_count,
00022 int& sample_rate,
00023 SampleFormat& sample_format);
00024 void ADR_CALL reset();
00025
00026 int doRead(int frame_count, void* buffer);
00027
00028 private:
00029 DUH* openDUH();
00030
00031 static void* dfs_open(const char* filename);
00032 static int dfs_skip(void* f, long n);
00033 static int dfs_getc(void* f);
00034 static long dfs_getnc(char* ptr, long n, void* f);
00035 static void dfs_close(void* f);
00036
00037 static int loopCallback(void* ptr);
00038
00039 private:
00040 FilePtr m_file;
00041 DUH* m_duh;
00042 DUH_SIGRENDERER* m_renderer;
00043 };
00044
00045 }
00046
00047
00048 #endif