📄 wavfile.h
字号:
/*File Name: WavFile.h
*
* WAVE-form> ->
* RIFF( 'WAVE'
* <ver_ck> // Version
* <desc_ck> // User defined
* <fmt-ck> // Format
* <fact-ck> // Fact chunk
* <wave-data> ) // Wave data
*
*/
#ifndef __WAVFILE_H
#define __WAVFILE_H 1
#include "SoundDesc.h"
/************************************/
#define ID_SIZE 4
//RIFF Header
#define RIFF_ID "RIFF"
typedef struct{
char id[4]; // always "RIFF"
int len; // remaining length after this header
}Riff_Header;
#define WAV_ID "WAVE"
//Format chunk
#define FMT_ID "fmt "
typedef struct{
Riff_Header riff; // id="fmt " len =0x14
short format_tag; // 0x0011 for IMA-ADPCM
short channels; // 1
unsigned long sample_rate; // 8000
/*
framesperblock(505) = 2 * (blockalign - 4 * channels) / channels + 1
bytespersec(4055) = (samplerate * blockalign) / framesperblock ;
*/
unsigned long wav_byte_per_sec;
/*
ret = sample_rate * channels
if (ret < 12000) block_align = 256 ;
if (ret < 23000) block_align = 512 ;
if (ret < 44000) block_align = 1024 ;
else block_align = 2048 ;
*/
short block_align;
short bits_per_sample; // 4
/*
framesperblock=2 * (block_align - 4*channels)/channels + 1
*/
char extra_data[4]; // 0x02, 0x00, 0xf9, 0x01
}S_FormatChunk;
//Fact chunk is necessary if compression sample
#define FACT_ID "fact"
typedef struct{
Riff_Header riff;
/*
sample_number = S_FormatChunk.sample_rate * sample_time
*/
unsigned long sample_number;
}S_FactChunk;
//Data chunk
#define DATA_ID "data"
typedef struct{
/*
id = "data"
len = S_FactChunk.sample_number / 2
len += S_FormatChunk.block_align - len % 256
*/
Riff_Header riff;
}S_DataChunk;
//Version chunk
#define VERSION_ID "ver "
typedef struct{
Riff_Header riff; // id is always "ver " and len is always 4
char ver[4]; // 0,1 is the major version and 2,3 is the minor version
}S_VersionChunk;
//User defined chunk
#define USER_ID "desc"
typedef struct{
Riff_Header riff; // id is always "desc" and
S_SndDesc desc;
}S_DescChunk;
/*
* 1. 同一个wav文件所要包含的ADPCM录音在一个目录下面
* 2. 录音文件命名从00001到99999,按照录音时间顺序递增
*/
int wavf_convert(const char *pSndName, const char *pWavName);
/******************************/
#endif /*{__WAVFILE_H}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -