00001 #ifndef _DF_MP3_SRC_
00002 struct mpstr;
00003 struct VBRTAGDATA;
00004 #endif
00005
00006 class MP3Decoder : public SystemCode {
00007 private:
00008 uint32 m_pos;
00009 struct mpstr *mp;
00010 char buf[16384];
00011 char m_pbRestBuf[8192];
00012 char out[8192];
00013 int m_outsize;
00014 File *f;
00015 BOOL freeFile;
00016 uint32 m_dwBufSize;
00017 uint32 m_dwRestBufSize;
00018 const static uint32 BUFFER_SIZE = 16384;
00019 VBRTAGDATA *vbrtag;
00020 int m_length;
00021 uint32 m_nInFileSize;
00022 int m_nbytes;
00023 int m_hasVbrtag;
00024 BOOL m_seeked;
00025 BOOL m_bfeof;
00026 public:
00027 MP3Decoder();
00028 ~MP3Decoder();
00029 BOOL Valid;
00030 BOOL Open(File *,int *isample,int *ichannel,int *ibyte,void *ptSettings, int *bufsizebyte);
00031 BOOL Open(char *fname,int *isample,int *ichannel,int *ibyte,void *ptSettings, int *bufsizebyte);
00032 int Decode(uint8* pbout);
00033 BOOL Close();
00034 uint32 GetPos(void);
00035 BOOL SetPos(uint32 aiPosMS);
00036 uint32 GetTotalTime();
00037
00038 static uint32 GetTotalTime(File *);
00039 static uint32 GetTotalTime(char *fname);
00040 };
00041