18 #define MAX_WAVE_BUFFER_SIZE 65536 26 DPRINT(
"Queueing wave buffer\n");
33 if ( ! wave_header->
lpData )
41 DPRINT(
"I was given a header which hasn't been prepared yet!\n");
48 DPRINT(
"I was given a header for a buffer which is already playing\n");
68 previous_node = queue_node;
69 queue_node = queue_node->
lpNext;
73 queue_node = previous_node;
76 queue_node->
lpNext = wave_header;
81 if ( ! session_info->next_buffer )
84 session_info->next_buffer = wave_header;
116 DPRINT(
"Notifying client that buffer 0x%p is done\n",
header);
226 DPRINT(
"Thread was asked if OK to close device\n");
238 DPRINT(
"Terminating thread...\n");
245 DPRINT(
"INVALID FUNCTION\n");
275 DPRINT(
"Wave processing thread setting ready state\n");
290 DPRINT(
"Wave processing thread woken up\n");
296 DPRINT(
"Processing thread request\n");
303 DPRINT(
"Performing wave I/O\n");
307 DPRINT(
"Wave processing thread sleeping\n");
353 DWORD bytes_returned;
358 DPRINT(
"SetWaveFormat\n");
375 DWORD wave_header_size)
DWORD WINAPI WaitForSingleObjectEx(IN HANDLE hHandle, IN DWORD dwMilliseconds, IN BOOL bAlertable)
MMRESULT QueueWaveBuffer(SessionInfo *session_info, LPWAVEHDR wave_header)
BOOL GetDeviceData(LPD3D9_DEVICEDATA pDeviceData)
#define WODM_GETPLAYBACKRATE
GLenum GLuint GLenum GLsizei const GLchar * message
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
struct tWAVEFORMATEX WAVEFORMATEX
#define IOCTL_WAVE_SET_PITCH
struct pcmwaveformat_tag PCMWAVEFORMAT
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
BOOL SetWaveFormat(HANDLE device_handle, PWAVEFORMATEX format)
BOOL NotifyClient(SessionInfo *session_info, DWORD message, DWORD_PTR parameter1, DWORD_PTR parameter2)
HANDLE WINAPI GetCurrentThread(VOID)
#define WAVERR_STILLPLAYING
VOID PerformWaveIO(SessionInfo *session_info)
#define WAIT_IO_COMPLETION
BOOL WINAPI SetThreadPriority(IN HANDLE hThread, IN int nPriority)
VOID ReturnCompletedBuffers(SessionInfo *session_info)
void MSVCRT() terminate()
#define IOCTL_WAVE_SET_FORMAT
#define IOCTL_WAVE_GET_VOLUME
#define THREAD_PRIORITY_TIME_CRITICAL
DWORD ProcessSessionThreadRequest(SessionInfo *session_info)
HANDLE kernel_device_handle
struct wavehdr_tag * lpNext
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define MMSYSERR_INVALPARAM
DWORD WaveThread(LPVOID parameter)
#define IOCTL_WAVE_SET_PLAYBACK_RATE
#define IOCTL_WAVE_GET_PLAYBACK_RATE
#define IOCTL_WAVE_GET_PITCH
MMRESULT SetDeviceData(HANDLE device_handle, DWORD ioctl, PBYTE input_buffer, DWORD buffer_size)
#define WAVERR_UNPREPARED
#define WODM_SETPLAYBACKRATE
DWORD GetWaveFormatExSize(PWAVEFORMATEX format)
MMRESULT CallSessionThread(SessionInfo *session_info, ThreadFunction function, PVOID thread_parameter)
DWORD WriteWaveBuffer(DWORD_PTR private_handle, PWAVEHDR wave_header, DWORD wave_header_size)
DWORD QueryWaveFormat(DeviceType device_type, PVOID lpFormat)