/*************************************************************************/ /* Speicher, Laden und Erzeugen von WAV und PCM Dateien /* /* Datum : 27.03.2002 /* Autor : Jens Ahrensfeld /* Datei : wav.h /* /*************************************************************************/ #ifndef AVWAV_H #define AVWAV_H #include #define INT8 char #define INT16 short #define INT32 long #define UINT8 unsigned char #define UINT16 unsigned short #define UINT32 unsigned long #define bs 18 #define WAVE_FORMAT_PCM 1 #define FILETYPE_RAW 0 #define FILETYPE_WAV 1 /******************************************************************************/ typedef struct _sWAVEHEADER { UINT16 wFormatTag; UINT16 nChannels; UINT32 nSamplesPerSec; UINT32 nAvgBytesPerSec; UINT16 nBlockAlign; UINT16 wBitsPerSample; UINT16 cbSize; } WAVEHEADER; /******************************************************************************/ typedef struct _sWAV { char m_Name[257]; WAVEHEADER m_Format; UINT32 m_DataSize, m_FileSize, m_HeaderSize, m_FileType, m_numSamples; FILE *pHndWavFile; UINT32 WREAD; UINT16 m_nChannels; UINT32 m_SampleRate; UINT16 m_nBits; } WAV; /******************************************************************************/ /* Global Functions /******************************************************************************/ #ifdef __cplusplus extern "C" { #endif void WavInit(struct _sWAV*, UINT32 nSamplesPerSec, UINT16 nBits, UINT16 nChannels, UINT16 format); UINT32 WavSetFormat(struct _sWAV*, UINT32, UINT16, UINT16, UINT16 format); UINT32 WavOpen (struct _sWAV*, char*); UINT32 WavCreate(struct _sWAV*, char*, UINT32); UINT32 WavClose(struct _sWAV*); UINT32 WavRead(struct _sWAV*, void*, UINT32); UINT32 WavWrite(struct _sWAV*, void*, UINT32); UINT32 ReadHeader(struct _sWAV*); UINT32 WriteHeader(struct _sWAV*); UINT16 WavGetnBits(struct _sWAV *pObj); UINT32 WavGetRate(struct _sWAV *pObj); UINT16 WavGetnChannels(struct _sWAV *pObj); char* WavGetFileName(struct _sWAV *pObj); void WavDeIlvd(struct _sWAV *pObj, INT16 *pIn, INT16 **ppOut, UINT32 len); void WavDeIlvdDouble(struct _sWAV *pObj, INT16 *pIn, double **ppOut, UINT32 len); void WavDeIlvdFloat(struct _sWAV *pObj, INT16 *pIn, float **ppOut, UINT32 len); void WavIlvd(struct _sWAV *pObj, INT16 **ppIn, INT16 *pOut, UINT32 len); void WavIlvdDouble(struct _sWAV *pObj, double **ppIn, INT16 *pOut, UINT32 len); void WavIlvdFloat(struct _sWAV *pObj, float **ppIn, INT16 *pOut, UINT32 len); #ifdef __cplusplus } #endif #endif /* AVWAV_H */