由于录音程序要生成wav文件,所有要自己定义wav 头文件和接口。
wav.h
#ifndef _WAV_OUT_H
#define _WAV_OUT_H
#include <sys/types.h>
typedef struct
{
char FileChunkID[4]; // "RIFF"
u_int32_t dwFileChunkLen;
char RIFFType[4]; // "WAVE"
char FmtChunkID[4]; // "fmt "
u_int32_t dwFmtChunkLen;
u_int16_t wCompression;
u_int16_t wChannels;
u_int32_t dwSamplesPerSec;
u_int32_t dwAvgBytesPerSec;
u_int16_t wBlockAlign;
u_int16_t wBitsPerSample;
char DataChunkID[4]; // "data"
u_int32_t dwDataLen;
} __attribute__((packed)) WAV_HEAD;
ssize_t WaveInitHeader(FILE* fp, int sample_rate, int bite_per_sample, int channels);
ssize_t WaveWriteData(FILE* fp, void* buff, size_t);
int WaveSync(FILE* fp);
#endif //#def _WAV_OUT_H
wav.h
#ifndef _WAV_OUT_H
#define _WAV_OUT_H
#include <sys/types.h>
typedef struct
{
char FileChunkID[4]; // "RIFF"
u_int32_t dwFileChunkLen;
char RIFFType[4]; // "WAVE"
char FmtChunkID[4]; // "fmt "
u_int32_t dwFmtChunkLen;
u_int16_t wCompression;
u_int16_t wChannels;
u_int32_t dwSamplesPerSec;
u_int32_t dwAvgBytesPerSec;
u_int16_t wBlockAlign;
u_int16_t wBitsPerSample;
char DataChunkID[4]; // "data"
u_int32_t dwDataLen;
} __attribute__((packed)) WAV_HEAD;
ssize_t WaveInitHeader(FILE* fp, int sample_rate, int bite_per_sample, int channels);
ssize_t WaveWriteData(FILE* fp, void* buff, size_t);
int WaveSync(FILE* fp);
#endif //#def _WAV_OUT_H