여러분들의 말씀 처럼 오류메세지를 보고서는 메모리쪽 문제가 있을 것이다만 짐작 갈 따름이지
알 수가 없어서.. 메모리를 자꾸 잡아 먹는 부분을 찾았습니다.
문제의 부분입니다.
waveOutWrite 함수를 수행하고 나면 발생하는 이벤트 WOM_DONE 처리 하는 부분입니다.
void __stdcall chatPhone::wave_outproc(HWAVEOUT hwo, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
{
int errorCode, i = 0;
char tmp[50];
switch(uMsg){
case WOM_DONE:
errorCode = waveOutUnprepareHeader( hWaveOut, (LPWAVEHDR)dwParam1, sizeof(WAVEHDR) );
if(errorCode != MMSYSERR_NOERROR) {
switch(errorCode) {
case MMSYSERR_INVALHANDLE:
Memo1->Lines->Add("Specified device handle is invalid.");
break;
case MMSYSERR_NODRIVER:
Memo1->Lines->Add("No device driver is present.");
break;
case MMSYSERR_NOMEM:
Memo1->Lines->Add("Unable to allocate or lock memory.");
break;
case WAVERR_STILLPLAYING:
Memo1->Lines->Add("WAVERR_STILLPLAYING");
waveOutReset(hWaveOut);
break;
}
}
break;
}
}
무슨 문제 였나면여.. 2시간 정도 돌리면 WAVERR_STILLPLAYING 에러가 자꾸 나더라구여.
그래서 그부분에 waveOutReset(hWaveOut); 을 해 줬습니다.
그러니깐 죽지도 않고 딜레이가 생기다가 waveOutReset(hWaveOut) 이 불려지면 딜레이가 다시 안생기고 또 생기다가 안생기고 합니다.
60ms 음성 데이타 처리만 해도 안나타났는데 30ms로 처리해서 나타난 문제이구요.
이렇게 해결했습니다.
모두 즐프 하세여.
김회현 님이 쓰신 글 :
:
: 1:1 음성채팅 프로그램을 만들고 있는데요.
:
: 한 2시간 정도 돌리면
:
: "프로그램에서 오류가 발생했습니다.... 닫기 무시"
: 이런 메세지박스가 뜹니다.
:
: 닫기를 누르면 또
: "04!:00002bfb의 모듈 ES197X.DRV 에서 chatPhone 잘못된 페이지 오류 발생"
: 이란 메세지 박스가 또 뜹니다.
: chatPhone 가 프로그램명 입니다.
:
: 대체 무슨 문제 때문인지 모르겠습니다.
:
: 짐작 가는 부분이라도 있으신 분은 답글 주세요.
:
:
:
:
:
|