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