www.pudn.com > pcm2wav.zip > PCM2WAV.CPP
// pcm2wav.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "pcmtowav.h" #include#include int main(int argc, char* argv[]) { WaveFileHeader wavh; WIN32_FIND_DATA finddata; HANDLE findhnd,PcmfileHnd; unsigned short wchannels; unsigned long dwsamples; unsigned short wbitspersample; char Currdir[_MAX_DIR]; char Moduledir[_MAX_DIR]; char pcmfilename[_MAX_PATH]; char pcmdir[_MAX_PATH]; char dir[_MAX_DIR]; char drive[_MAX_DRIVE]; char fname[_MAX_FNAME]; char ext[_MAX_EXT]; char filebuf[_MAX_PATH]; GetCurrentDirectory(_MAX_DIR,Currdir); HMODULE module = GetModuleHandle(NULL); GetModuleFileName(module , Moduledir , _MAX_DIR); _splitpath(Moduledir,drive,dir,fname,ext); _makepath(Moduledir,drive,dir,NULL,NULL); if(argc<5 || strcmp(argv[1],"/?")==0) { printf("pcm2wav.exe \n"); // printf("-b means batch mode,you can list your pcm files name in your list file"); return 1; } wchannels=atoi(argv[4]); dwsamples=atoi(argv[2]); wbitspersample=atoi(argv[3]); /* --- Removed by Maxem He on 2003-4-15--- if(argc==3 && strcmp(argv[2],"-b")!=0) { printf("pcm2wav.exe \n"); printf("pcm2wav.exe -b\n"); printf("-b means batch mode,you can list your pcm files name in your list file"); return 1; } ---------------------------------------*/ strupr(argv[1]); _splitpath( argv[1],drive,dir,fname,ext); if(strcmp(ext,".PCM")!=0) { printf("input is not pcm file\n"); printf("pcm2wav.exe \n"); return 1; } _makepath(filebuf,NULL,Moduledir,argv[1],NULL); SetCurrentDirectory(Moduledir); _splitpath(filebuf,drive,dir,fname,ext); _makepath(filebuf,drive,dir,NULL,NULL); BOOL tb=SetCurrentDirectory(filebuf); GetCurrentDirectory(_MAX_PATH,pcmdir); _makepath(pcmfilename,NULL,pcmdir,fname,ext); _splitpath(pcmfilename,drive,dir,fname,ext); /* --- Removed by Maxem He on 2003-4-15--- else if(argc==3) { _makepath(filebuf,NULL,Moduledir,argv[1],NULL); SetCurrentDirectory(Moduledir); if((filelist=fopen(filebuf,"rb"))==NULL) { printf("Error read list file\n"); SetCurrentDirectory(Currdir); return 1; } fgets(pcmfilename,_MAX_FNAME+10,filelist); pcmfilename[strlen(pcmfilename)-2]=0; _splitpath(filebuf,drive,dir,fname,ext); _makepath(filebuf,drive,dir,NULL,NULL); BOOL tb=SetCurrentDirectory(filebuf); GetCurrentDirectory(_MAX_PATH,pcmdir); _makepath(filebuf,NULL,pcmdir,pcmfilename,NULL); strcpy(pcmfilename,filebuf); _splitpath(pcmfilename,drive,dir,fname,ext); } ---------------------------------------*/ memset(&wavh,0,sizeof(WaveFileHeader)); memcpy(&wavh,&FixedData,sizeof(WaveFileHeader)); findhnd=FindFirstFile(pcmfilename,&finddata); while(findhnd!=INVALID_HANDLE_VALUE) { _makepath(pcmfilename,NULL,NULL,finddata.cFileName,NULL); PcmfileHnd=CreateFile(pcmfilename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(PcmfileHnd==INVALID_HANDLE_VALUE) { printf("Error open bmp file %s\n",finddata.cFileName); } else { int slen=strlen(strupr(finddata.cFileName)); int i=0; DWORD size=0; memset(fname,0,_MAX_FNAME); for(i=0;i