المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : Got a 512 error on calling acmStreamOpen() in c#



C# Programming
11-21-2010, 05:17 PM
Hi all,
I got a problem on calling acmStreamOpen() in C#.When I 'm calling acmStreamOpen(), on WAVEFORMATEXsrc and WAVEFORMATEXdest are both with the wFormatTag of WAVE_FORMAT_PCM,it returns 0(Successful).but if I changed any of them (or both )to be WAVE_FORMAT_ALAW, I got a 512 error. Did I miss something on defining the ALAW WAVAFORMATEX?Thanks.
CWavConvertor.WAVEFORMATEX WAVEFORMATEXsrc = new CWavConvertor.WAVEFORMATEX();
WAVEFORMATEXsrc.wFormatTag = CWavConvertor.WAVE_FORMAT_PCM;
WAVEFORMATEXsrc.nChannels = 1;
WAVEFORMATEXsrc.nSamplesPerSec = 22050;
WAVEFORMATEXsrc.wBitsPerSample = 16;
WAVEFORMATEXsrc.nBlockAlign = Convert.ToUInt16(WAVEFORMATEXsrc.nChannels * WAVEFORMATEXsrc.wBitsPerSample / 8);
WAVEFORMATEXsrc.nAvgBytesPerSec = WAVEFORMATEXsrc.nSamplesPerSec * WAVEFORMATEXsrc.nBlockAlign;

CWavConvertor.WAVEFORMATEX WAVEFORMATEXdest = new CWavConvertor.WAVEFORMATEX();
WAVEFORMATEXdest.wFormatTag = CWavConvertor.WAVE_FORMAT_ALAW;
WAVEFORMATEXdest.nChannels = 1;
WAVEFORMATEXdest.nSamplesPerSec = 8000;
WAVEFORMATEXdest.wBitsPerSample = 8;
WAVEFORMATEXdest.nBlockAlign = Convert.ToUInt16(WAVEFORMATEXdest.nChannels * WAVEFORMATEXdest.wBitsPerSample / 8);
WAVEFORMATEXdest.nAvgBytesPerSec = WAVEFORMATEXdest.nSamplesPerSec * WAVEFORMATEXdest.nBlockAlign;
WAVEFORMATEXdest.cbSize = 0;
CWavConvertor.WAVEFILTER wfltr = new CWavConvertor.WAVEFILTER();
IntPtr mystreamptr = IntPtr.Zero;
int a = CWavConvertor.acmStreamOpen(out mystreamptr, IntPtr.Zero, ref WAVEFORMATEXsrc, ref WAVEFORMATEXdest, wfltr, 0, 0, CWavConvertor.ACM_STREAMOPENF_NONREALTIME); // returns 512(ACMERR_NOTPOSSIBLE )