⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testsound.c

📁 adpcm编码 C语言源程序 可供学习和参考
💻 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 + -