src/sound/win32_s.cpp
branchcpp_gui
changeset 6253 23983700e3d7
parent 5860 7fdc9b423ba1
child 6298 c30fe89622df
equal deleted inserted replaced
6252:ca57ad0b45ea 6253:23983700e3d7
    40 static void CALLBACK waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance,
    40 static void CALLBACK waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance,
    41 	DWORD dwParam1, DWORD dwParam2)
    41 	DWORD dwParam1, DWORD dwParam2)
    42 {
    42 {
    43 	switch (uMsg) {
    43 	switch (uMsg) {
    44 		case WOM_DONE:
    44 		case WOM_DONE:
    45 			if (_waveout) FillHeaders();
    45 			if (_waveout != NULL) FillHeaders();
    46 			break;
    46 			break;
    47 
    47 		default: break;
    48 		default:
       
    49 			break;
       
    50 	}
    48 	}
    51 }
    49 }
    52 
    50 
    53 static const char *Win32SoundStart(const char* const* parm)
    51 static const char *Win32SoundStart(const char* const* parm)
    54 {
    52 {
    55 	WAVEFORMATEX wfex;
    53 	WAVEFORMATEX wfex;
    56 	int hz;
    54 	wfex.wFormatTag = WAVE_FORMAT_PCM;
       
    55 	wfex.nChannels = 2;
       
    56 	wfex.wBitsPerSample = 16;
       
    57 	wfex.nSamplesPerSec = GetDriverParamInt(parm, "hz", 11025);
       
    58 	wfex.nBlockAlign = (wfex.nChannels * wfex.wBitsPerSample) / 8;
       
    59 	wfex.nAvgBytesPerSec = wfex.nSamplesPerSec * wfex.nBlockAlign;
    57 
    60 
    58 	_bufsize = GetDriverParamInt(parm, "bufsize", 1024);
    61 	_bufsize = GetDriverParamInt(parm, "bufsize", 1024);
    59 	hz = GetDriverParamInt(parm, "hz", 11025);
    62 
    60 	wfex.wFormatTag = WAVE_FORMAT_PCM;
       
    61 	wfex.nChannels = 2;
       
    62 	wfex.nSamplesPerSec = hz;
       
    63 	wfex.nAvgBytesPerSec = hz * 2 * 2;
       
    64 	wfex.nBlockAlign = 4;
       
    65 	wfex.wBitsPerSample = 16;
       
    66 	if (waveOutOpen(&_waveout, WAVE_MAPPER, &wfex, (DWORD_PTR)&waveOutProc, 0, CALLBACK_FUNCTION) != MMSYSERR_NOERROR)
    63 	if (waveOutOpen(&_waveout, WAVE_MAPPER, &wfex, (DWORD_PTR)&waveOutProc, 0, CALLBACK_FUNCTION) != MMSYSERR_NOERROR)
    67 		return "waveOutOpen failed";
    64 		return "waveOutOpen failed";
       
    65 
    68 	PrepareHeader(&_wave_hdr[0]);
    66 	PrepareHeader(&_wave_hdr[0]);
    69 	PrepareHeader(&_wave_hdr[1]);
    67 	PrepareHeader(&_wave_hdr[1]);
    70 	FillHeaders();
    68 	FillHeaders();
    71 	return NULL;
    69 	return NULL;
    72 }
    70 }