00001 #ifndef _WAVEFILE_H_
00002 #define _WAVEFILE_H_
00003
00004 #include <stdio.h>
00005
00010 class TWaveFile
00011 {
00012 private:
00013 int sampleRate, bitRate;
00014
00015 void Skip(FILE *, int);
00016 int FindChunk(FILE *, char *);
00017 bool ReadChunk(FILE *, void *, int, int &);
00018 void MuLawToPcm(void);
00019 protected:
00020 int bytesPerSample;
00021
00022 void Resample(int);
00023 public:
00024 void WaveCopy(char *, int *, int);
00025 void WaveCopy(int *, char *, int);
00026 int WaveCopy(char *, int, int);
00027 void WaveCopy(int *, char *, int, int);
00028
00030 int *wave;
00032 int waveSize;
00033 char *userData;
00034
00036 TWaveFile();
00038 ~TWaveFile();
00044 virtual bool Load(char *name);
00045
00050 virtual bool Save(char *name);
00051
00055 virtual int GetSampleRate(void);
00056
00060 virtual int GetBitRate(void);
00061
00068 virtual void SetFormat(int newSampleRate, int newBitRate);
00073
00074 virtual int GetDuration(void);
00075
00080 virtual void SetWave(int *w, int size);
00082 virtual void Clear(void);
00083
00088 virtual void Trim(int from, int to);
00089 };
00090
00091 #endif
00092