📄 main.cpp
字号:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
short rtrShort(int x){
if(x>32767)
x=32767;
else if(x<-32767)
x=-32767;
return (short)x;
}
long main(int argc, char **argv)
{
FILE *fwav;
long i,size,numofsample;
short s, *Whead,*cwav;
double inputScale;
if(argc!=4){
fprintf(stderr,"Usage:WaveAmp input_wav output_wav Scale\n"); //number
return -1;
}
inputScale = atof(argv[3]);
if (inputScale > 10.0 || inputScale < 0.1 ) {
fprintf(stderr,"UnReasonable Range\n");
return -1;
}
if((fwav=fopen(argv[1],"rb"))==NULL){
fprintf(stderr,"can not open %s\n",argv[1]);
return -1;
}
fseek(fwav,0,SEEK_END);
size= ftell (fwav);
numofsample = (size -100) /2;
fseek(fwav,0, SEEK_SET);
Whead = (short *)malloc(sizeof(short) * 50);
cwav=(short *)malloc(sizeof(short) * numofsample);
if (cwav==NULL || Whead == NULL) {
fprintf(stderr,"cannot allocate mem for cwav\n");
return -1;
}
if(fread(Whead,sizeof(short),50,fwav)!= 50){
fprintf(stderr,"read wave %s head error\n",argv[1]);
return -1;
}
if(fread(cwav,sizeof(short),numofsample,fwav)!=(unsigned )numofsample){
fprintf(stderr,"read wave %s error\n",argv[1]);
return -1;
}
fclose(fwav);
if((fwav=fopen(argv[2],"wb"))==NULL){
fprintf(stderr,"can not open %s\n",argv[2]);
return -1;
}
//removeDCoffset(cwav,numofsample);
//short baver, cmax =0, cmin=0;
/*short bmax =0, bmin=0;
for (i = 0; i <numofsample; i++) {
if (bmax < cwav[i]) bmax = cwav[i];
if (bmin > cwav[i]) bmin = cwav[i];
}
baver = (bmax-bmin)/2;
scale = float(inputScale/baver);
*/
short cmax =0, cmin=0;
for (i = 0; i <numofsample; i++) {
s = cwav[i];
s = short(s*inputScale);
//if (fabs(s) > 32767.) printf("Warning SAT %f %s at %d index\n", s, argv[1],i);
cwav[i]= rtrShort(s);
if (cmax < cwav[i]) cmax = cwav[i];
if (cmin > cwav[i]) cmin = cwav[i];
}
fwrite((short *)Whead, sizeof(short), 50,fwav);
fwrite((short *)cwav, sizeof(short), numofsample,fwav);
printf("%s max %d min %d \n",argv[1],cmax,cmin);
fclose (fwav);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -