44DEFINE_GUID(
KSDATAFORMAT_SUBTYPE_PCM, 0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
45DEFINE_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);
_STLP_DECLSPEC complex< float > _STLP_CALL sin(const complex< float > &)
char * strcat(char *DstString, const char *SrcString)
char * strcpy(char *DstString, const char *SrcString)
static unsigned char bytes[4]
static const WCHAR nameW[]
#define WAVE_FORMAT_MULAW
#define WAVE_FORMAT_ADPCM
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define GetProcAddress(x, y)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
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 DRV_QUERYDEVICEINTERFACESIZE
#define DRV_QUERYMAPPABLE
#define DRV_QUERYDEVICEINTERFACE
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
MMRESULT WINAPI mmioAscend(HMMIO hmmio, LPMMCKINFO lpck, UINT uFlags)
HMMIO WINAPI mmioOpenA(LPSTR szFileName, MMIOINFO *lpmmioinfo, DWORD dwOpenFlags)
MMRESULT WINAPI mmioClose(HMMIO hmmio, UINT uFlags)
LONG WINAPI mmioWrite(HMMIO hmmio, HPCSTR pch, LONG cch)
MMRESULT WINAPI mmioCreateChunk(HMMIO hmmio, MMCKINFO *lpck, UINT uFlags)
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLfloat GLfloat GLfloat GLfloat h
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
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
#define WAVE_FORMAT_YAMAHA_ADPCM
#define WAVE_FORMAT_DSPGROUP_TRUESPEECH
#define WAVE_FORMAT_MEDIASPACE_ADPCM
#define WAVE_FORMAT_OLIGSM
#define WAVE_FORMAT_IBM_CVSD
#define WAVE_FORMAT_CREATIVE_FASTSPEECH10
#define WAVE_FORMAT_IMA_ADPCM
#define WAVE_FORMAT_OLISBC
#define WAVE_FORMAT_ECHOSC1
#define WAVE_FORMAT_G721_ADPCM
#define WAVE_FORMAT_DIALOGIC_OKI_ADPCM
#define WAVE_FORMAT_OLIADPCM
#define WAVE_FORMAT_CONTROL_RES_CR10
#define WAVE_FORMAT_GSM610
#define WAVE_FORMAT_FM_TOWNS_SND
#define WAVE_FORMAT_AUDIOFILE_AF10
#define WAVE_FORMAT_OLIOPR
#define WAVE_FORMAT_DEVELOPMENT
struct _WAVEFORMATEX * LPWAVEFORMATEX
#define WAVE_FORMAT_DIGISTD
#define WAVE_FORMAT_AUDIOFILE_AF36
#define WAVE_FORMAT_SIERRA_ADPCM
#define WAVE_FORMAT_DIGIFIX
#define WAVE_FORMAT_MPEGLAYER3
#define WAVE_FORMAT_DIGIADPCM
#define WAVE_FORMAT_NMS_VBXADPCM
#define WAVE_FORMAT_ANTEX_ADPCME
#define WAVE_FORMAT_OLICELP
#define WAVE_FORMAT_CREATIVE_ADPCM
#define WAVE_FORMAT_SONARC
#define WAVE_FORMAT_OKI_ADPCM
#define WAVE_FORMAT_CREATIVE_FASTSPEECH8
#define WAVE_FORMAT_DOLBY_AC2
#define WAVE_FORMAT_G723_ADPCM
#define WAVE_FORMAT_CONTROL_RES_VQLPC
#define WAVE_FORMAT_DIGIREAL
#define DRVM_MAPPER_PREFERRED_GET
#define WAVERR_STILLPLAYING
#define MMIOERR_CHUNKNOTFOUND
#define MMIOERR_CANNOTEXPAND
#define CALLBACK_TYPEMASK
#define MMIOERR_FILENOTFOUND
#define MMSYSERR_NOTSUPPORTED
#define WAVE_FORMAT_QUERY
#define MIDIERR_INVALIDSETUP
#define MMIOERR_OUTOFMEMORY
#define MMSYSERR_NODRIVER
#define MMIOERR_CANNOTREAD
#define MIDIERR_UNPREPARED
#define MMIOERR_CANNOTSEEK
#define MIXERR_INVALVALUE
#define MMSYSERR_INVALHANDLE
#define MMSYSERR_INVALPARAM
#define MMIOERR_CANNOTOPEN
#define WAVECAPS_LRVOLUME
#define MMSYSERR_ALLOCATED
#define WAVECAPS_SAMPLEACCURATE
#define MIDIERR_STILLPLAYING
#define mmioFOURCC(c0, c1, c2, c3)
#define MMSYSERR_INVALFLAG
#define CALLBACK_FUNCTION
#define WAVECAPS_PLAYBACKRATE
#define MMIOERR_UNBUFFERED
#define MMSYSERR_BADDEVICEID
#define WAVERR_UNPREPARED
#define MMIOERR_CANNOTCLOSE
#define MMIOERR_CANNOTWRITE
#define MIXERR_INVALCONTROL
#define WAVE_FORMAT_DIRECT
#define MMSYSERR_NOTENABLED
#define SND_ALIAS_SYSTEMASTERISK
#define MMSYSERR_BADERRNUM
#define sprintf(buf, format,...)
static IPrintDialogCallback callback
static const struct encodedExtensions exts[]
static const unsigned int win_formats[][4]
static IBackgroundCopyFile * test_file
static float(__cdecl *square_half_float)(float x
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)
static void wave_out_test_device(UINT_PTR device)
static char * wave_generate_la(WAVEFORMATEX *wfx, double duration, DWORD *size)
static void test_fragmentsize(void)
static const char * wave_out_caps(DWORD dwSupport)
static void test_sndPlaySound(void)
static void test_multiple_waveopens(void)
const char * get_format_str(WORD format)
static DWORD WINAPI callback_thread(LPVOID lpParameter)
static void create_wav_file(char *temp_file)
const char * dev_name(int device)
const char * wave_time_format(UINT type)
static void wave_out_tests(void)
static char * wave_generate_silence(WAVEFORMATEX *wfx, double duration, DWORD *size)
static const char * wave_header_flags(DWORD flags)
static void check_position(int device, HWAVEOUT wout, DWORD bytes, LPWAVEFORMATEX pwfx)
static void test_PlaySound(void)
const char * mmsys_error(MMRESULT error)
static void CALLBACK callback_func(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, DWORD dwParam1, DWORD dwParam2)
const char * wave_out_error(MMRESULT error)
DWORD time_to_bytes(LPMMTIME mmtime, LPWAVEFORMATEX pwfx)
const char * wave_open_flags(DWORD flags)
DWORD bytes_to_ms(DWORD bytes, LPWAVEFORMATEX pwfx)
unsigned __int3264 UINT_PTR
BOOL WINAPI sndPlaySoundW(LPCWSTR pszSound, UINT uFlags)
BOOL WINAPI sndPlaySoundA(LPCSTR pszSoundA, UINT uFlags)
BOOL WINAPI PlaySoundA(LPCSTR pszSoundA, HMODULE hmod, DWORD fdwSound)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
_CRT_RESTORE_GCC_WARNINGS _CRT_DISABLE_GCC_WARNINGS _Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
vector< Header * > headers
union WAVEFORMATEXTENSIBLE::@3024 Samples
struct mmtime_tag::@3037::@3038 smpte
union mmtime_tag::@3037 u
CHAR szPname[MAXPNAMELEN]
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
LPVOID NTAPI VirtualAlloc(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flAllocationType, IN DWORD flProtect)
BOOL NTAPI VirtualProtect(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flNewProtect, OUT PDWORD lpflOldProtect)
BOOL NTAPI VirtualFree(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD dwFreeType)
DWORD WINAPI GetCurrentThreadId(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
UINT WINAPI waveOutGetDevCapsA(UINT_PTR uDeviceID, LPWAVEOUTCAPSA lpCaps, UINT uSize)
UINT WINAPI waveOutReset(HWAVEOUT hWaveOut)
UINT WINAPI waveOutGetErrorTextA(UINT uError, LPSTR lpText, UINT uSize)
UINT WINAPI waveOutSetVolume(HWAVEOUT hWaveOut, DWORD dw)
UINT WINAPI waveOutGetNumDevs(void)
UINT WINAPI waveOutGetPosition(HWAVEOUT hWaveOut, LPMMTIME lpTime, UINT uSize)
UINT WINAPI waveOutWrite(HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr, UINT uSize)
UINT WINAPI waveOutUnprepareHeader(HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr, UINT uSize)
MMRESULT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID, LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
UINT WINAPI waveOutRestart(HWAVEOUT hWaveOut)
UINT WINAPI waveOutGetDevCapsW(UINT_PTR uDeviceID, LPWAVEOUTCAPSW lpCaps, UINT uSize)
UINT WINAPI waveOutPrepareHeader(HWAVEOUT hWaveOut, WAVEHDR *lpWaveOutHdr, UINT uSize)
UINT WINAPI waveOutPause(HWAVEOUT hWaveOut)
UINT WINAPI waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
UINT WINAPI waveOutGetVolume(HWAVEOUT hWaveOut, LPDWORD lpdw)
UINT WINAPI waveOutClose(HWAVEOUT hWaveOut)
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI PostThreadMessageW(_In_ DWORD, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)