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