(ACM 聲音壓縮 PCM轉GSM) acmStreamOpen 錯誤? |
尚未結案
|
scott777
一般會員 發表:10 回覆:15 積分:5 註冊:2002-08-26 發送簡訊給我 |
請問各位先進,當小弟執行下列程式碼時
acmStreamOpen總是傳回ACMERR_NOTPOSSIBLE的錯誤
請問要如何解決呢? ps.如果是PCM 8bits轉PCM 16bits程式又沒問題.
int main(int argc, char* argv[]) { MMRESULT mmr; WORD wFormatTag = WAVE_FORMAT_GSM610; HACMDRIVERID hadid = find_driver(wFormatTag); if (hadid == NULL) { printf("No driver found\n"); exit(1); } printf("Driver found (hadid: %4.4lXH)\n", hadid); HACMDRIVER had = NULL; mmr = acmDriverOpen(&had, hadid, 0); if (mmr) { printf("Failed to open driver\n"); exit(1); } memset(&wfPCM, 0, sizeof(wfPCM)); // PCM wfPCM.cbSize = 0; wfPCM.wFormatTag = WAVE_FORMAT_PCM; wfPCM.nChannels = 1; wfPCM.nSamplesPerSec = 11025; wfPCM.wBitsPerSample = 16; wfPCM.nBlockAlign = wfPCM.nChannels * wfPCM.wBitsPerSample / 8; wfPCM.nAvgBytesPerSec = wfPCM.nSamplesPerSec * wfPCM.nBlockAlign; // GSM wfDrv.cbSize = 2; wfDrv.wFormatTag = WAVE_FORMAT_GSM610; wfDrv.nAvgBytesPerSec = 1625; wfDrv.nBlockAlign = 65; wfDrv.nChannels = 1; wfDrv.nSamplesPerSec = 8000; wfDrv.wBitsPerSample = 0; printf("--------------------------------------------------------\n"); HACMSTREAM hstr = NULL; mmr = acmStreamOpen(&hstr, had, &wfPCM, &wfDrv, NULL, NULL, 0, ACM_STREAMOPENF_NONREALTIME); if (mmr) { printf("Failed to open a stream to do PCM to GSM conversion\n"); switch(mmr) { case ACMERR_NOTPOSSIBLE: printf("The requested operation cannot be performed.\n"); break; case MMSYSERR_INVALFLAG: printf("At least one flag is invalid. \n"); break; case MMSYSERR_INVALHANDLE: printf("The specified handle is invalid. \n"); break; case MMSYSERR_INVALPARAM: printf("At least one parameter is invalid. \n"); break; case MMSYSERR_NOMEM: printf("The system is unable to allocate resources.\n"); break; } exit(1); } return 0; }~~~~~~~~~~~~~~~~~~~~~~~ 程式錯誤千萬行, 改來改去費思量, 哀~客戶吵吵又嚷嚷, 真想把他抓來去撞牆。 發表人 - scott777 於 2004/10/21 15:10:38 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |