44 DEFINE_GUID(
KSDATAFORMAT_SUBTYPE_PCM, 0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
45 DEFINE_GUID(
KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, 0x00000003, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
52 HWAVEOUT handle1, handle2;
67 skip(
"Could not do the duplicate waveopen test\n");
79 "second waveOutOpen returns: %x\n",
ret);
97 #define PI 3.14159265358979323846 109 for (
i=0;
i<nb_samples;
i++) {
112 unsigned char sample=(
unsigned char)(127.5*(
y+1.0));
116 signed short sample=(
signed short)(32767.5*
y-0.5);
123 signed int sample=(
signed int)(((
double)0x7fffff+0.5)*
y-0.5);
126 b[1]=(sample >> 8) & 0xff;
127 b[2]=(sample >> 16) & 0xff;
133 signed int sample=(
signed int)(((
double)0x7fffffff+0.5)*
y-0.5);
136 b[1]=(sample >> 8) & 0xff;
137 b[2]=(sample >> 16) & 0xff;
138 b[3]=(sample >> 24) & 0xff;
143 union {
float f;
char c[4]; } sample;
168 for (
i=0;
i<nb_samples;
i++) {
197 union {
float f;
char c[4]; } sample;
213 static char name[16];
215 return "WAVE_MAPPER";
222 #define ERR_TO_STR(dev) case dev: return #dev 272 static char msg[1024];
273 static char long_msg[1100];
278 sprintf(long_msg,
"waveOutGetErrorTextA(%x) failed with error %x",
error, rc);
286 static char msg[1024];
337 #define WHDR_MASK (WHDR_BEGINLOOP|WHDR_DONE|WHDR_ENDLOOP|WHDR_INQUEUE|WHDR_PREPARED) 338 static char msg[1024];
376 #define ADD_FLAG(f) if (dwSupport & f) strcat(msg, " " #f) 377 static char msg[256];
387 return msg[0] ?
msg + 1 :
"";
394 #define TIME_FORMAT(f) case f: return #f 411 #define WAVE_FORMAT(f) case f: return #f 480 return ((mmtime->
u.
smpte.hour * 60 * 60) +
481 (mmtime->
u.
smpte.min * 60) +
485 trace(
"FIXME: time_to_bytes() type not supported\n");
506 trace(
"waveOutGetPosition(%s): TIME_BYTES not supported, returned %s\n",
509 ok(returned ==
bytes,
"waveOutGetPosition(%s): returned %d bytes, " 517 trace(
"waveOutGetPosition(%s): TIME_SAMPLES not supported, " 520 ok(returned ==
bytes,
"waveOutGetPosition(%s): returned %d samples " 530 trace(
"waveOutGetPosition(%s): TIME_MS not supported, returned %s\n",
533 ok(returned ==
bytes,
"waveOutGetPosition(%s): returned %d ms, " 543 trace(
"waveOutGetPosition(%s): TIME_SMPTE not supported, returned %s\n",
546 ok(returned ==
bytes,
"waveOutGetPosition(%s): SMPTE test failed\n",
554 trace(
"waveOutGetPosition(%s): TIME_MIDI not supported, returned %s\n",
557 ok(returned ==
bytes,
"waveOutGetPosition(%s): MIDI test failed\n",
565 trace(
"waveOutGetPosition(%s): TIME_TICKS not supported, returned %s\n",
568 ok(returned ==
bytes,
"waveOutGetPosition(%s): TICKS test failed\n",
593 "GetMessageA returned unexpected message: %u\n",
message);
630 callback_instance = 0;
640 callback_instance = 0;
642 trace(
"CreateThread() failed\n");
647 trace(
"CALLBACK_THREAD not implemented\n");
651 trace(
"Undefined callback type!\n");
655 trace(
"CALLBACK_NULL not implemented\n");
673 "waveOutOpen(%s): format=%dx%2dx%d flags=%x(%s) rc=%s\n",
678 trace(
" Reason: The device lists this format as supported in its " 679 "capabilities but opening it failed.\n");
682 trace(
"waveOutOpen(%s): format=%dx%2dx%d %s rc=%s failed but format " 696 "got the wrong format: %dx%2dx%d instead of %dx%2dx%d\n",
721 frags[
i].dwBufferLength=frag_length;
734 trace(
"Playing %g second %s at %5dx%2dx%d %2d header%s %d loop%s %d bytes %s %s\n",duration,
737 loops, loops == 1 ?
" " :
"s",
length * (loops + 1),
740 if (sine && has_volume &&
volume == 0)
741 trace(
"*** Warning the sound is muted, you will not hear the test\n");
759 "WHDR_INQUEUE WHDR_PREPARED expected, got= %s\n",
764 "waveOutWrite(%s): WAVE_STILLPLAYING expected, got %s\n",
768 "WHDR_INQUEUE WHDR_PREPARED expected, got %s\n",
771 if (
headers == 1 && loops == 0 && pause) {
772 paused = duration / 2;
773 Sleep(paused * 1000);
777 trace(
"pausing for %g seconds\n", paused);
778 Sleep(paused * 1000);
784 for (
j = 0;
j <= loops;
j++) {
787 if (!((
j == loops) && (
i == (
headers - 1)))) {
803 "(%02d) WHDR_DONE WHDR_PREPARED expected, got %s\n",
860 wout = (HWAVEOUT)0xdeadf00d;
864 ok(wout==(HWAVEOUT)0xdeadf00d,
"WAVE_FORMAT_QUERY handle %p\n", wout);
905 "waveOutGetDevCapsA(%s): failed to get capabilities: rc=%s\n",
912 "waveOutGetDevCapsW(%s): MMSYSERR_NOERROR or MMSYSERR_NOTSUPPORTED " 917 "waveOutGetDevCapsA(%s): MMSYSERR_INVALPARAM expected, " 922 "waveOutGetDevCapsW(%s): MMSYSERR_INVALPARAM or MMSYSERR_NOTSUPPORTED " 930 "waveOutGetDevCapsA(%s): MMSYSERR_INVALPARAM expected, got %s\n",
935 "waveOutGetDevCapsW(%s): MMSYSERR_INVALPARAM or MMSYSERR_NOTSUPPORTED " 941 "waveOutGetDevCapsA(%s): MMSYSERR_NOERROR or MMSYSERR_INVALPARAM " 947 "waveOutGetDevCapsW(%s): unexpected return value %s\n",
952 "DRV_QUERYMAPPABLE(%s): unexpected return value %s\n",
960 "waveOutMessage(%s): failed to get interface size, rc=%s\n",
978 strcpy(nameA,
"not supported");
983 "waveOutGetDevCapsA(%s): MMSYSERR_NOERROR expected, got %s\n",
994 trace(
" channels=%d formats=%05x support=%04x\n",
1001 trace(
"Playing a 5 seconds reference tone.\n");
1002 trace(
"All subsequent tones should be identical to this one.\n");
1003 trace(
"Listen for stutter, changes in pitch, volume, etc.\n");
1007 format.nSamplesPerSec=22050;
1027 format.nSamplesPerSec=22050;
1127 ok(twoPages!=
NULL,
"Failed to allocate 2 pages of memory\n");
1131 ok(
res,
"Failed to set memory access on second page\n");
1179 format.nSamplesPerSec=8000;
1198 trace(
"waveOutOpen(%s): WAVE_FORMAT_MULAW not supported\n",
1235 trace(
"waveOutOpen(%s): WAVE_FORMAT_IMA_ADPCM not supported\n",
1267 trace(
"waveOutOpen(%s): WAVE_FORMAT_EXTENSIBLE not supported\n",
1296 trace(
"waveOutOpen(%s): 4 channels not supported\n",
1328 trace(
"waveOutOpen(%s): 6 channels not supported\n",
1357 trace(
"waveOutOpen(%s): 24 bit samples not supported\n",
1390 trace(
"waveOutOpen(%s): 32 bit samples not supported\n",
1422 trace(
"waveOutOpen(%s): 32 bit float samples not supported\n",
1429 format.nSamplesPerSec = 11025;
1431 format.nAvgBytesPerSec = 11025 * 1;
1432 format.wBitsPerSample = 8;
1435 format.nAvgBytesPerSec = 0;
1440 format.nAvgBytesPerSec = 11025 * 1;
1442 format.nSamplesPerSec = 0;
1459 trace(
"found %d WaveOut devices\n",ndev);
1465 rc ==
MMSYSERR_NOERROR,
"waveOutMessage(DRVM_MAPPER_PREFERRED_GET) failed: %u\n", rc);
1468 ok((ndev == 0 && (preferred == -1 ||
broken(preferred != -1))) ||
1469 preferred < ndev,
"Got invalid preferred device: 0x%x\n", preferred);
1474 "waveOutMessage(DRVM_MAPPER_PREFERRED_GET) failed: %u\n", rc);
1479 "waveOutMessage(DRVM_MAPPER_PREFERRED_GET) failed: %u\n", rc);
1483 "waveOutGetDevCapsA(%s): MMSYSERR_BADDEVICEID expected, got %s\n",
1488 "waveOutGetDevCapsW(%s): MMSYSERR_BADDEVICEID or MMSYSERR_NOTSUPPORTED " 1494 "waveOutGetDevCapsA(%s): MMSYSERR_NOERROR expected, got %s\n",
1498 "waveOutGetDevCapsA(%s): MMSYSERR_BADDEVICEID or MMSYSERR_NODRIVER " 1504 "waveOutGetDevCapsW(%s): MMSYSERR_NOERROR or MMSYSERR_NOTSUPPORTED " 1509 "waveOutGetDevCapsW(%s): MMSYSERR_BADDEVICEID or MMSYSERR_NODRIVER " 1510 " or MMSYSERR_NOTSUPPORTED expected, got %s\n",
1515 format.wBitsPerSample=16;
1516 format.nSamplesPerSec=44100;
1522 "waveOutOpen(%s): MMSYSERR_BADDEVICEID expected, got %s\n",
1526 for (
d=0;
d<ndev;
d++)
1537 static const WCHAR not_existW[] = {
'C',
':',
'\\',
'n',
'o',
't',
'_',
'e',
'x',
'i',
's',
't',
'.',
'w',
'a',
'v',0};
1538 static const WCHAR SystemAsteriskW[] = {
'S',
'y',
's',
't',
'e',
'm',
'A',
's',
't',
'e',
'r',
'i',
's',
'k',0};
1541 ok(br ==
TRUE || br ==
FALSE,
"sndPlaySound gave strange return: %u\n", br);
1544 ok(br ==
TRUE || br ==
FALSE,
"sndPlaySound gave strange return: %u\n", br);
1547 ok(br ==
TRUE || br ==
FALSE,
"sndPlaySound gave strange return: %u\n", br);
1550 ok(br ==
TRUE || br ==
FALSE,
"sndPlaySound gave strange return: %u\n", br);
1553 ok(br ==
TRUE || br ==
FALSE,
"sndPlaySound gave strange return: %u\n", br);
1556 ok(br ==
TRUE || br ==
FALSE,
"sndPlaySound gave strange return: %u\n", br);
1559 ok(br ==
TRUE || br ==
FALSE,
"sndPlaySound gave strange return: %u\n", br);
1562 ok(br ==
TRUE || br ==
FALSE,
"sndPlaySound gave strange return: %u\n", br);
1580 fmt.nSamplesPerSec = 44100;
1581 fmt.wBitsPerSample = 16;
1582 fmt.nBlockAlign =
fmt.nChannels *
fmt.wBitsPerSample / 8;
1583 fmt.nAvgBytesPerSec =
fmt.nBlockAlign *
fmt.nSamplesPerSec;
1603 hdr[0].dwBufferLength = (
fmt.nSamplesPerSec *
fmt.nBlockAlign / 4) + 1;
1604 hdr[1].dwBufferLength =
hdr[0].dwBufferLength - 2;
1605 hdr[1].lpData =
hdr[0].lpData =
1614 trace(
"writing %u bytes then %u bytes\n",
hdr[0].dwBufferLength,
hdr[1].dwBufferLength);
1627 memset(&mmtime, 0,
sizeof(mmtime));
1634 ok(mmtime.
u.
cb == 88200 ||
1635 mmtime.
u.
cb == 88196,
"after position: %u\n", mmtime.
u.
cb);
1658 format.nSamplesPerSec=8000;
1663 ok(
h !=
NULL,
"Can't open temp_file\n");
1675 ok(written ==
sizeof(
format),
"mmioWrite failed, got %d\n", written);
1684 ok(written ==
length,
"mmioWrite failed, got %d\n", written);
1700 void *psound_ordinal, *psound_name;
1705 ok(psound_name == psound_ordinal,
"Expected ordinal 2 to be PlaySound function\n");
1708 skip(
"No output devices available\n");
1717 ok(br,
"PlaySound failed, got %d\n", br);
1721 ok(br,
"PlaySound failed, got %d\n", br);
1729 ok(br,
"PlaySound failed, got %d\n", br);
1734 ok(!br ||
broken(br),
"PlaySound succeeded, got %d\n", br);
UINT WINAPI waveOutGetPosition(HWAVEOUT hWaveOut, LPMMTIME lpTime, UINT uSize)
#define WAVE_FORMAT_IBM_CVSD
#define MMIOERR_CANNOTSEEK
#define WAVE_FORMAT_SIERRA_ADPCM
#define WAVE_FORMAT_QUERY
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
#define MMIOERR_CANNOTCLOSE
#define MMIOERR_CANNOTEXPAND
const char * wave_out_error(MMRESULT error)
#define WideCharToMultiByte
#define DRVM_MAPPER_PREFERRED_GET
#define WAVE_FORMAT_DSPGROUP_TRUESPEECH
char * strcat(char *DstString, const char *SrcString)
UINT WINAPI waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
static void test_fragmentsize(void)
static IBackgroundCopyFile * test_file
#define WAVE_FORMAT_DIGISTD
#define MMIOERR_CANNOTWRITE
#define MIDIERR_STILLPLAYING
MMRESULT WINAPI mmioAscend(HMMIO hmmio, LPMMCKINFO lpck, UINT uFlags)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define WAVE_FORMAT_AUDIOFILE_AF36
union mmtime_tag::@2992 u
static const unsigned int win_formats[][4]
static void wave_out_test_deviceOut(int device, double duration, int headers, int loops, WAVEFORMATEX *pwfx, DWORD format, DWORD flags, WAVEOUTCAPSA *pcaps, BOOL interactive, BOOL sine, BOOL pause)
#define WAVE_FORMAT_SONARC
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
BOOL WINAPI sndPlaySoundW(LPCWSTR pszSound, UINT uFlags)
#define WAVE_FORMAT_CONTROL_RES_CR10
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
const char * dev_name(int device)
#define WAVE_FORMAT_OLICELP
MMRESULT WINAPI mmioClose(HMMIO hmmio, UINT uFlags)
static void test_multiple_waveopens(void)
#define DRV_QUERYDEVICEINTERFACESIZE
vector< Header * > headers
struct tWAVEFORMATEX WAVEFORMATEX
#define MIXERR_INVALCONTROL
#define SND_ALIAS_SYSTEMASTERISK
#define MMSYSERR_INVALHANDLE
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
#define MMIOERR_FILENOTFOUND
BOOL WINAPI PlaySoundA(LPCSTR pszSoundA, HMODULE hmod, DWORD fdwSound)
#define CALLBACK_TYPEMASK
static void test_sndPlaySound(void)
GUID KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
HMMIO WINAPI mmioOpenA(LPSTR szFileName, MMIOINFO *lpmmioinfo, DWORD dwOpenFlags)
#define WAVE_FORMAT_OKI_ADPCM
static const char * wave_header_flags(DWORD flags)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
UINT WINAPI waveOutPrepareHeader(HWAVEOUT hWaveOut, WAVEHDR *lpWaveOutHdr, UINT uSize)
struct mmtime_tag::@2992::@2993 smpte
GLfloat GLfloat GLfloat GLfloat h
#define WAVE_FORMAT_MEDIASPACE_ADPCM
#define WAVE_FORMAT_DIRECT
#define WAVE_FORMAT_CREATIVE_ADPCM
#define sprintf(buf, format,...)
const char * get_format_str(WORD format)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define WAVECAPS_SAMPLEACCURATE
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
UINT WINAPI waveOutGetVolume(HWAVEOUT hWaveOut, LPDWORD lpdw)
#define WAVE_FORMAT_DIGIFIX
#define MIDIERR_UNPREPARED
LPVOID NTAPI VirtualAlloc(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flAllocationType, IN DWORD flProtect)
#define MMSYSERR_NODRIVER
DWORD bytes_to_samples(DWORD bytes, LPWAVEFORMATEX pwfx)
static unsigned char bytes[4]
UINT WINAPI waveOutGetDevCapsW(UINT_PTR uDeviceID, LPWAVEOUTCAPSW lpCaps, UINT uSize)
const GUID KSDATAFORMAT_SUBTYPE_PCM
#define WAVERR_STILLPLAYING
VOID CALLBACK_FUNCTION(__in PVOID CallbackContext, __in_opt PVOID Argument1, __in_opt PVOID Argument2)
#define WAVECAPS_LRVOLUME
#define WAVE_FORMAT_AUDIOFILE_AF10
#define WAVE_FORMAT_MULAW
static char * wave_generate_silence(WAVEFORMATEX *wfx, double duration, DWORD *size)
GLenum GLuint GLenum GLsizei length
struct _WAVEFORMATEX * LPWAVEFORMATEX
LONG WINAPI mmioWrite(HMMIO hmmio, HPCSTR pch, LONG cch)
const char * wave_open_flags(DWORD flags)
#define WAVE_FORMAT_G723_ADPCM
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
#define MMIOERR_UNBUFFERED
#define WAVE_FORMAT_CREATIVE_FASTSPEECH10
UINT WINAPI waveOutSetVolume(HWAVEOUT hWaveOut, DWORD dw)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
UINT WINAPI waveOutGetNumDevs(void)
static void check_position(int device, HWAVEOUT wout, DWORD bytes, LPWAVEFORMATEX pwfx)
DWORD WINAPI GetCurrentThreadId(VOID)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static const WCHAR nameW[]
static void wave_out_test_device(UINT_PTR device)
#define WAVE_FORMAT_DIGIREAL
GLboolean GLboolean GLboolean b
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define WAVE_FORMAT_NMS_VBXADPCM
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
DWORD bytes_to_ms(DWORD bytes, LPWAVEFORMATEX pwfx)
#define WAVE_FORMAT_IMA_ADPCM
#define MIXERR_INVALVALUE
UINT WINAPI waveOutPause(HWAVEOUT hWaveOut)
union WAVEFORMATEXTENSIBLE::@2979 Samples
#define WAVE_FORMAT_CONTROL_RES_VQLPC
#define MMSYSERR_ALLOCATED
#define MMIOERR_OUTOFMEMORY
#define WAVE_FORMAT_OLIADPCM
BOOL NTAPI VirtualProtect(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flNewProtect, OUT PDWORD lpflOldProtect)
#define MMSYSERR_INVALFLAG
unsigned __int3264 UINT_PTR
#define MMSYSERR_NOTSUPPORTED
#define MMSYSERR_NOTENABLED
BOOL WINAPI sndPlaySoundA(LPCSTR pszSoundA, UINT uFlags)
#define WAVECAPS_PLAYBACKRATE
UINT WINAPI waveOutWrite(HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr, UINT uSize)
#define MIDIERR_INVALIDSETUP
#define MMIOERR_CANNOTREAD
#define WAVE_FORMAT_OLISBC
#define WAVE_FORMAT_DEVELOPMENT
#define WAVE_FORMAT_YAMAHA_ADPCM
MMRESULT WINAPI mmioCreateChunk(HMMIO hmmio, MMCKINFO *lpck, UINT uFlags)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define WAVE_FORMAT_MPEGLAYER3
#define mmioFOURCC(c0, c1, c2, c3)
#define MMSYSERR_BADERRNUM
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
#define MMSYSERR_BADDEVICEID
#define DRV_QUERYMAPPABLE
static void CALLBACK callback_func(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, DWORD dwParam1, DWORD dwParam2)
UINT WINAPI waveOutUnprepareHeader(HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr, UINT uSize)
#define WAVE_FORMAT_ADPCM
static const struct encodedExtensions exts[]
UINT WINAPI waveOutGetErrorTextA(UINT uError, LPSTR lpText, UINT uSize)
#define WAVE_FORMAT_FM_TOWNS_SND
static const char * wave_out_caps(DWORD dwSupport)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
MMRESULT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID, LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
#define WAVE_FORMAT_OLIOPR
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
static float(__cdecl *square_half_float)(float x
#define MMSYSERR_INVALPARAM
#define MMIOERR_CHUNKNOTFOUND
static void test_PlaySound(void)
static DWORD WINAPI callback_thread(LPVOID lpParameter)
#define WAVE_FORMAT_DIALOGIC_OKI_ADPCM
const char * wave_time_format(UINT type)
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
UINT WINAPI waveOutClose(HWAVEOUT hWaveOut)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
GLint GLint GLint GLint GLint GLint y
static void create_wav_file(char *temp_file)
UINT WINAPI waveOutGetDevCapsA(UINT_PTR uDeviceID, LPWAVEOUTCAPSA lpCaps, UINT uSize)
UINT WINAPI waveOutRestart(HWAVEOUT hWaveOut)
#define WAVERR_UNPREPARED
#define MMIOERR_CANNOTOPEN
char * strcpy(char *DstString, const char *SrcString)
#define WAVE_FORMAT_DIGIADPCM
#define WAVE_FORMAT_DOLBY_AC2
#define GetProcAddress(x, y)
#define WAVE_FORMAT_GSM610
#define WAVE_FORMAT_ECHOSC1
BOOL NTAPI VirtualFree(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD dwFreeType)
_STLP_DECLSPEC complex< float > _STLP_CALL sin(const complex< float > &)
GLuint GLuint GLsizei GLenum type
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
CHAR szPname[MAXPNAMELEN]
static IPrintDialogCallback callback
#define WAVE_FORMAT_CREATIVE_FASTSPEECH8
static void wave_out_tests(void)
static SERVICE_STATUS status
#define DRV_QUERYDEVICEINTERFACE
BOOL WINAPI PostThreadMessageW(_In_ DWORD, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WAVE_FORMAT_OLIGSM
UINT WINAPI waveOutReset(HWAVEOUT hWaveOut)
#define HeapFree(x, y, z)
DWORD time_to_bytes(LPMMTIME mmtime, LPWAVEFORMATEX pwfx)
static char * wave_generate_la(WAVEFORMATEX *wfx, double duration, DWORD *size)
#define WAVE_FORMAT_G721_ADPCM
#define WAVE_FORMAT_ANTEX_ADPCME
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
const char * mmsys_error(MMRESULT error)
GLuint const GLchar * name