📄 zp_decim.h
字号:
// ZP_Decim.h: interface for the CZP_Decim class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ZP_DECIM_H__A2C97332_5069_4A26_9972_78E436AAE1BA__INCLUDED_)
#define AFX_ZP_DECIM_H__A2C97332_5069_4A26_9972_78E436AAE1BA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define h_length 67
#define FRM_LEN 4096//zhen长
#define FRM_LEN2 4096*8//zhen长
#define BUF_LEN 200//缓冲区长度
#define H1_Length 67//FIR_Window_fun_mathods.m wp=0.45*pi;ws=0.55*pi;
#define H2_Length 68//FIR_Window_fun_mathods.m wp=0.28*pi;ws=0.38*pi;
typedef struct
{
char Riff[4];
unsigned long sizeOfFile;//标示文件的长度。
char WAVEfmt[8];
unsigned long sizeOfFmt;
unsigned short wFormatTag;//值等于1表示没有压缩,否则表示文件有压缩。
unsigned short nChannels;//表示文件是几个声道。
unsigned long nSamplesPerSec;//每秒钟的采样率。
unsigned long navgBytesPerSec;//每秒钟播放的比特数。
unsigned short nBlockAlign;//一桢的大小。
unsigned short nBitPerSample;//表示每个采样点进行多少比特量化。
char Cdata[4];
unsigned long sizeOfData;//标示文件一共有多少个数据。
}WAVEFILEFMT;
class CZP_Decim
{
public:
FILE *fpin,*fpout;
WAVEFILEFMT input_headOfWave;
int nx,ny;
CZP_Decim();
virtual ~CZP_Decim();
BOOL Load( char *pszFilename );
BOOL Write(char *pszFilename ,int w);
void CZP_Decim_6_File(char *aInFlNm);//48k-->8k
void CZP_Decim_8_File(char *aInFlNm);// 8k-->1k
void CZP_Decim_3_File(char *aInFlNm);//24k-->8k
void Cfix_head(char *aInFlNm);
void C2to187(char *aInFlNm);
int decimation_buffer_and_frame(double x[],int,double h[],int ,int,double y[],int, int *);
int FIR(double x[],int ,double Trans[],int ,int ,double y[],int ,int *begin_dec_n);
};
#endif // !defined(AFX_ZP_DECIM_H__A2C97332_5069_4A26_9972_78E436AAE1BA__INCLUDED_)
/*
WAVE文件格式说明表
偏移地址 字节数 数据类型 内 容
文件头
00H 4 Char "RIFF"标志
04H 4 int32 文件长度
08H 4 Char "WAVE"标志
0CH 4 Char "fmt"标志
10H 4 过渡字节(不定)
14H 2 int16 格式类别
16H 2 int16 通道数
18H 2 int16 采样率(每秒样本数),表示每个通道的播放速度
1CH 4 int32 波形音频数据传送速率
20H 2 int16 数据块的调整数(按字节算的)
22H 2 每样本的数据位数
24H 4 Char 数据标记符”data”
28H 4 int32 语音数据的长度
解答:
将WAV文件格式定义为结构体WAVEFORMAT:
typedef struct tagWaveFormat
{
char cRiffFlag[4];
UIN32 SizeOfFile; SizeOfFile=44+sizeOfData-8 = 36+sizeOfData;
char cWaveFlag[4];
char cFmtFlag[4];
char cTransition[4];
UIN16 nFormatTag ;
UIN16 nChannels;
UIN16 nSamplesPerSec;
UIN32 nAvgBytesperSec;
UIN16 nBlockAlign;
UIN16 nBitNumPerSample;
char cDataFlag[4];
UIN16 sizeOfData;
} WAVEFORMAT;
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -