📄 testsound.c
字号:
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <iostream.h>#include "ADPCMCodec.h"typedef unsigned long DWORD;int main(){FILE* testinfile;FILE* testzonefile;FILE* testoutfile;char *infilename;char *zonename;char *outfilename;infilename="sound.wav";zonename="zonefile";outfilename="outsud.wav";testinfile = fopen(infilename,"rb");testzonefile = fopen(zonename,"wb");testoutfile = fopen(outfilename,"wb");adpcm_state encod_state;adpcm_state decod_state;short *inBuff;short *lpinBuff;unsigned char *zoneBuff;unsigned char * lpQuerryBuffer;unsigned char * zoneinBuff; inBuff = (short*)malloc(sizeof(short)*40000); zoneBuff = (unsigned char*)malloc(sizeof(char)*100); zoneinBuff = (unsigned char*)malloc(sizeof(char)*100);lpQuerryBuffer = (unsigned char*)malloc(sizeof(char)*100); lpinBuff = (short*)malloc(sizeof(short)*200); fread(inBuff,sizeof(short),(77474/2),testinfile);unsigned int outnum;unsigned int sampnum = 160; int i;for(i=0;i<=77474/(sampnum*2);i++){ memcpy(lpinBuff,(inBuff+i*sampnum),sampnum*2); outnum=EncoderFrame(lpinBuff, zoneBuff, sampnum, &encod_state); // *(DWORD*)lpQuerryBuffer = outnum; // fwrite( &outnum,sizeof(DWORD),1,testzonefile); // fwrite(&encod_state,sizeof(encod_state),1,testzonefile); // fwrite(zoneBuff,sizeof(char),outnum,testzonefile); *(DWORD*)lpQuerryBuffer = outnum+ sizeof(adpcm_state); //write adpcm_state memcpy(lpQuerryBuffer+sizeof(DWORD), &encod_state, sizeof(encod_state));//sizeof(adpcm_state)); // memcpy(lpQuerryBuffer, zoneBuff, 10);//sizeof(adpcm_state)); //Write audio data memcpy(lpQuerryBuffer+ sizeof(DWORD)+sizeof(adpcm_state), zoneBuff, outnum); fwrite(lpQuerryBuffer,sizeof(char),outnum+sizeof(adpcm_state)+sizeof(DWORD),testzonefile); // fwrite(zoneBuff,sizeof(char),outnum,testzonefile); printf("%d,%d,%d,%d,%d, %d\n",i,lpinBuff[10],zoneBuff[10],outnum,encod_state.index,encod_state.valprev);} fclose(testzonefile ); testzonefile= fopen(zonename,"rb"); int samplen = outnum+sizeof(DWORD)+sizeof(encod_state); zoneBuff = (unsigned char *)malloc(samplen*i); fread(zoneBuff,sizeof(char),i*samplen, testzonefile); int y=i; sampnum = outnum; for(i=1;i<=y;i++){ memcpy(zoneinBuff,(zoneBuff+(i-1)* samplen+ sizeof(DWORD)+sizeof(decod_state) ),sampnum); //拷贝数据 // memcpy(zoneinBuff,zoneBuff+i* samplen,samplen); memcpy (&decod_state,(zoneBuff+i*samplen+ sizeof(DWORD)),sizeof(decod_state)); //拷贝结构体 outnum= DecoderFrame(zoneinBuff, lpinBuff, samplen,&decod_state); //, &decod_state); fwrite(lpinBuff,sizeof(short),outnum,testoutfile); } printf("Decoder out samp is %d\n",outnum);fclose(testinfile);fclose(testzonefile);fclose(testoutfile);free(zoneinBuff);free(lpinBuff);free(inBuff);free(zoneBuff);free(lpQuerryBuffer); return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -