www.pudn.com > TrueSpeech > main.cpp
# include "iostream.h"
# include "conio.h"
# include "stdio.h"
# include "windows.h"
# include "mmsystem.h"
# include "mmreg.h" // Multimedia registration
# include "msacm.h" // Audio Compression Manager
WAVEFORMATEX waveFormat;
PTRUESPEECHWAVEFORMAT mp3format = NULL;
void convert();
BOOL CALLBACK FormatEnumProc
(
HACMDRIVERID hadid,
LPACMFORMATDETAILSA pafd,
DWORD dwInstance,
DWORD fdwSupport
)
{
WORD wFormatTag; /* format type */
WORD nChannels; /* number of channels (i.e. mono, stereo...) */
DWORD nSamplesPerSec; /* sample rate */
DWORD nAvgBytesPerSec; /* for buffer estimation */
WORD nBlockAlign; /* block size of data */
WORD wBitsPerSample; /* number of bits per sample of mono data */
WORD cbSize;
if(pafd->pwfx->wFormatTag == WAVE_FORMAT_DSPGROUP_TRUESPEECH) // WAVE_FORMAT_MPEGLAYER3
{
if(mp3format == NULL)
mp3format = (PTRUESPEECHWAVEFORMAT)pafd->pwfx;
/*
cout<<"Channel:"<pwfx->nChannels<<" Sample Rate:"<pwfx->nSamplesPerSec<< \
" AvgBytes:"<pwfx->nAvgBytesPerSec << \
" Block Align:"<pwfx->nBlockAlign<< \
" Bit sample:"<pwfx->wBitsPerSample<< \
" cbSize:"<pwfx->cbSize<< \
pafd->endl;
*/
}
return true;
}
BOOL CALLBACK fnCallback(
HACMDRIVERID hadid,
DWORD dwInstance,
DWORD fdwSupport
)
{
MMRESULT mmRet = 0;
DWORD dwSize = 0;
ACMDRIVERDETAILS add;
ACMFORMATDETAILS fd;
HACMDRIVER had;
if(fdwSupport & ACMDRIVERDETAILS_SUPPORTF_CODEC)
{
add.cbStruct = sizeof(add);
mmRet = acmDriverDetails(hadid,&add,0);
/*
cout<<"Full Name:"<cbSize = LOWORD(dwSize) - sizeof(WAVEFORMATEX);
pwf->wFormatTag = WAVE_FORMAT_UNKNOWN;
memset(&fd,0,sizeof(fd));
fd.cbStruct = sizeof(fd);
fd.pwfx = pwf;
fd.cbwfx = dwSize;
fd.dwFormatTag = WAVE_FORMAT_UNKNOWN;
mmRet = acmFormatEnum((HACMDRIVER)had,&fd,FormatEnumProc,(DWORD)hadid,0);
acmDriverClose(had,0);
}
return true;
}
void main()
{
DWORD dwCode = 0;
acmDriverEnum((ACMDRIVERENUMCB)fnCallback,dwCode,ACM_DRIVERENUMF_DISABLED);
convert();
}
void convert()
{
HACMSTREAM hstr = NULL;
MMRESULT mmRet = 0;
DWORD NumberofRead,NumberofWrite;
ACMSTREAMHEADER shdr;
HANDLE hsrcFile,hdesFile;
char *srcBuf,*desBuf;
waveFormat.wFormatTag = WAVE_FORMAT_PCM;
waveFormat.nChannels = 1;//2; // stereo
waveFormat.nSamplesPerSec = 8000; // 44.1kHz
waveFormat.wBitsPerSample = 16; // 16 bits
waveFormat.nBlockAlign = 2;//4; // 4 bytes of data at a time are useful (1 sample)
waveFormat.nAvgBytesPerSec = 2*8000;//4 * 44100; // byte-rate
waveFormat.cbSize = 0; // no more data to follow
hsrcFile = CreateFile("111.tsp",GENERIC_READ,FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
hdesFile = CreateFile("demo5.pcm",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
DWORD nSize = GetFileSize(hsrcFile,0);
DWORD nDesSize = 0;
mmRet = acmStreamOpen(&hstr,0,(WAVEFORMATEX *)mp3format,&waveFormat,NULL,NULL,0,ACM_STREAMOPENF_NONREALTIME);
cout<<"Open Code:"<