53 &ptr1,&len1,&ptr2,&len2,0);
54 ok(rc==
DS_OK,
"IDirectSoundBuffer_Lock() failed: %08x\n", rc);
66 ok(rc==
DS_OK,
"IDirectSoundBuffer_Unlock() failed: %08x\n", rc);
80 &ptr1,&len1,&ptr2,&len2,0);
81 ok(rc==
DS_OK,
"IDirectSoundBuffer_Lock() failed: %08x\n", rc);
85 s=(
state->wfx->wBitsPerSample==8?0x80:0);
92 ok(rc==
DS_OK,
"IDirectSoundBuffer_Unlock() failed: %08x\n", rc);
100 DWORD last_play_pos,play_pos,buf_free;
104 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetCurrentPosition() failed: %08x\n", rc);
110 last_play_pos=
state->played %
state->buffer_size;
111 if (play_pos<last_play_pos)
112 state->played+=
state->buffer_size-last_play_pos+play_pos;
114 state->played+=play_pos-last_play_pos;
117 trace(
"buf size=%d last_play_pos=%d play_pos=%d played=%d / %d\n",
118 state->buffer_size,last_play_pos,play_pos,
state->played,
128 if (
state->offset<=play_pos)
129 buf_free=play_pos-
state->offset;
131 buf_free=
state->buffer_size-
state->offset+play_pos;
134 trace(
"offset=%d free=%d written=%d / %d\n",
146 trace(
"last sound byte at %d\n",
153 trace(
"writing %d bytes of silence\n",buf_free);
161 trace(
"stopping playback\n");
163 ok(rc==
DS_OK,
"IDirectSoundBuffer_Stop() failed: %08x\n", rc);
171 BOOL move_listener,
BOOL move_sound)
183 "returned DSERR_INVALIDPARAM, returned: %08x\n",rc);
190 "returned DSERR_INVALIDPARAM, returned: %08x\n",rc);
192 dsbcaps.
dwSize=
sizeof(dsbcaps);
194 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetCaps() failed: %08x\n", rc);
203 ok(rc==
DS_OK &&
size!=0,
"IDirectSoundBuffer_GetFormat() should have "
204 "returned the needed size: rc=%08x size=%d\n",rc,
size);
207 "Expected a correct structure size, got %d\n",
size);
220 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetFormat() failed: %08x\n", rc);
222 trace(
" Format: %s tag=0x%04x %dx%dx%d avg.B/s=%d align=%d\n",
223 is_primary ?
"Primary" :
"Secondary",
231 "returned DSERR_INVALIDPARAM, returned: %08x\n",rc);
237 "IDirectSoundBuffer_GetFrequency() failed: %08x\n",rc);
246 "returned DSERR_INVALIDPARAM, returned: %08x\n",rc);
249 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetStatus() failed: %08x\n", rc);
257 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_PRIORITY) "
258 "failed: %08x\n",rc);
265 "returned DSERR_INVALIDPARAM, returned: %08x\n",rc);
269 ok(rc==
DS_OK,
"IDirectSoundBuffer_SetFormat(%s) failed: %08x\n",
277 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetFormat() failed: %08x\n", rc);
283 trace(
"Requested format tag=0x%04x %dx%dx%d avg.B/s=%d align=%d\n",
286 trace(
"Got tag=0x%04x %dx%dx%d avg.B/s=%d align=%d\n",
291 ZeroMemory(&new_dsbcaps,
sizeof(new_dsbcaps));
292 new_dsbcaps.
dwSize =
sizeof(new_dsbcaps);
294 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetCaps() failed: %08x\n", rc);
296 trace(
" new Caps: flags=0x%08x size=%d\n",new_dsbcaps.
dwFlags,
302 " buffer size changed after SetFormat() - "
303 "previous size was %u, current size is %u\n",
309 " flags changed after SetFormat() - "
310 "previous flags were %08x, current flags are %08x\n",
316 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_NORMAL) "
317 "failed: %08x\n",rc);
330 trace(
" Playing %g second 440Hz tone at %dx%dx%d\n", duration,
341 "IDirectSound8_SetCooperativeLevel(DSSCL_WRITEPRIMARY) failed: %08x\n",rc);
350 ok(rc==
DS_OK,
"IDirectSoundBuffer_QueryInterface() failed: %08x\n", rc);
358 "IDirectSoundBuffer_QueryInterface() failed: %08x\n", rc);
359 ok(temp_buffer==*dsbo,
"COM interface broken: %p != %p\n",
362 ok(
ref==1,
"IDirectSoundBuffer_Release() has %d references, "
363 "should have 1\n",
ref);
369 "IDirectSound3DBuffer_QueryInterface() failed: %08x\n", rc);
370 ok(temp_buffer==*dsbo,
"COM interface broken: %p != %p\n",
373 ok(
ref==1,
"IDirectSoundBuffer_Release() has %d references, "
374 "should have 1\n",
ref);
377 ok(
ref==0,
"IDirectSoundBuffer_Release() has %d references, "
378 "should have 0\n",
ref);
381 &IID_IDirectSoundBuffer,
383 ok(rc==
DS_OK && *dsbo!=
NULL,
"IDirectSound3DBuffer_QueryInterface() "
384 "failed: %08x\n",rc);
389 "failed: %08x\n",rc);
391 ZeroMemory(&buffer_param,
sizeof(buffer_param));
396 "failed: %08x\n",rc);
398 buffer_param.
dwSize=
sizeof(buffer_param);
400 ok(rc==
DS_OK,
"IDirectSound3DBuffer_GetAllParameters() failed: %08x\n", rc);
406 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetVolume() failed: %08x\n", rc);
409 ok(rc==
DS_OK,
"IDirectSoundBuffer_SetVolume() failed: %08x\n", rc);
414 "should have returned DSERR_CONTROLUNAVAIL, returned: %08x\n", rc);
422 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetPan() failed: %08x\n", rc);
425 ok(rc==
DS_OK,
"IDirectSoundBuffer_SetPan() failed: %08x\n", rc);
430 "should have returned DSERR_CONTROLUNAVAIL, returned: %08x\n", rc);
439 "returned DSERR_INVALIDPARAM, returned %08x\n", rc);
446 "returned DSERR_INVALIDPARAM, returned %08x\n", rc);
457 ok(rc==
DS_OK,
"IDirectSoundBuffer_Play() failed: %08x\n", rc);
460 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetStatus() failed: %08x\n", rc);
462 "GetStatus: bad status: %x\n",
status);
465 ZeroMemory(&listener_param,
sizeof(listener_param));
466 listener_param.
dwSize=
sizeof(listener_param);
468 ok(rc==
DS_OK,
"IDirectSound3dListener_GetAllParameters() "
469 "failed: %08x\n",rc);
477 ok(rc==
DS_OK,
"IDirectSound3dListener_SetPosition() failed: %08x\n", rc);
487 ok(rc==
DS_OK,
"IDirectSound3dBuffer_SetPosition() failed: %08x\n", rc);
494 if (listener && move_listener) {
501 ok(rc==
DS_OK,
"IDirectSound3dListener_SetPosition() failed: %08x\n",rc);
503 if (buffer3d && move_sound) {
510 ok(rc==
DS_OK,
"IDirectSound3dBuffer_SetPosition() failed: %08x\n", rc);
515 ok(
fabs(1000*duration-
now+start_time)<=100*duration,
516 "The sound played for %d ms instead of %g ms\n",
517 now-start_time,1000*duration);
524 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_NORMAL) "
525 "failed: %08x\n",rc);
529 ok(
ref==0,
"IDirectSound3DBuffer_Release() has %d references, "
530 "should have 0\n",
ref);
536 int has_3d,
int has_3dbuffer,
538 int move_listener,
int move_sound)
549 rc=pDirectSoundCreate8(lpGuid,&dso,
NULL);
557 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_PRIORITY) failed: %08x\n",rc);
562 bufdesc.
dwSize=
sizeof(bufdesc);
570 "IDirectSound8_CreateSoundBuffer() failed to create a %sprimary buffer: %08x\n",has_3d?
"3D ":
"", rc);
572 trace(
" No Primary\n");
575 ok(rc==
DS_OK,
"IDirectSoundBuffer8_Getformat() failed: %08x\n", rc);
581 &IID_IDirectSound3DListener,
584 "IDirectSoundBuffer_QueryInterface() failed to get a 3D "
585 "listener %08x\n",rc);
587 ok(
ref==0,
"IDirectSoundBuffer_Release() primary has %d references, "
588 "should have 0\n",
ref);
591 ZeroMemory(&listener_param,
sizeof(listener_param));
595 "IDirectSound3dListener_GetAllParameters() should have "
596 "returned DSERR_INVALIDPARAM, returned: %08x\n", rc);
602 "IDirectSound3dListener_GetAllParameters() should have "
603 "returned DSERR_INVALIDPARAM, returned: %08x\n", rc);
605 listener_param.
dwSize=
sizeof(listener_param);
608 ok(rc==
DS_OK,
"IDirectSound3dListener_GetAllParameters() "
609 "failed: %08x\n",rc);
611 ok(listener==
NULL,
"IDirectSoundBuffer_QueryInterface() "
612 "failed but returned a listener anyway\n");
613 ok(rc!=
DS_OK,
"IDirectSoundBuffer_QueryInterface() succeeded "
614 "but returned a NULL listener\n");
617 ok(
ref==0,
"IDirectSound3dListener_Release() listener has "
618 "%d references, should have 0\n",
ref);
627 bufdesc.
dwSize=
sizeof(bufdesc);
641 "IDirectSound8_CreateSoundBuffer(secondary) should have "
642 "returned DSERR_INVALIDPARAM, returned %08x\n", rc);
646 ok(
ref==0,
"IDirectSoundBuffer_Release() primary has %d references, should have 0\n",
ref);
652 trace(
" Testing a %s%ssecondary buffer %s%s%s%sat %dx%dx%d "
653 "with a primary buffer at %dx%dx%d\n",
654 has_3dbuffer?
"3D ":
"",
656 listener!=
NULL||move_sound?
"with ":
"",
657 move_listener?
"moving ":
"",
658 listener!=
NULL?
"listener ":
"",
659 listener&&move_sound?
"and moving sound ":move_sound?
665 ok(rc==
DS_OK && secondary!=
NULL,
"IDirectSound8_CreateSoundBuffer() "
666 "failed to create a %s%ssecondary buffer %s%s%s%sat %dx%dx%d (%s): %08x\n",
668 listener!=
NULL||move_sound?
"with ":
"", move_listener?
"moving ":
"",
669 listener!=
NULL?
"listener ":
"",
670 listener&&move_sound?
"and moving sound ":move_sound?
676 LONG refvol,vol,refpan,pan;
680 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetVolume(secondary) failed: %08x\n",rc);
681 ok(vol==0,
"wrong volume for a new secondary buffer: %d\n",vol);
683 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetPan(secondary) failed: %08x\n",rc);
684 ok(pan==0,
"wrong pan for a new secondary buffer: %d\n",pan);
690 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetVolume(primary) failed: %08x\n",rc);
692 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetPan(primary) failed: %08x\n",rc);
695 ok(rc==
DS_OK,
"IDirectSoundBuffer_SetVolume(secondary) failed: %08x\n",rc);
697 ok(rc==
DS_OK,
"IDirectSoundBuffer_SetVolume(secondary) failed: %08x\n",rc);
698 ok(vol==-1000,
"secondary: wrong volume %d instead of -1000\n",
701 ok(rc==
DS_OK,
"IDirectSoundBuffer_SetPan(secondary) failed: %08x\n",rc);
703 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetPan(secondary) failed: %08x\n",rc);
704 ok(pan==-1000,
"secondary: wrong pan %d instead of -1000\n",
708 ok(rc==
DS_OK,
"IDirectSoundBuffer_`GetVolume(primary) failed: i%08x\n",rc);
709 ok(vol==refvol,
"The primary volume changed from %d to %d\n",
712 ok(rc==
DS_OK,
"IDirectSoundBuffer_GetPan(primary) failed: %08x\n",rc);
713 ok(pan==refpan,
"The primary pan changed from %d to %d\n",
717 ok(rc==
DS_OK,
"IDirectSoundBuffer_SetVolume(secondary) failed: %08x\n",rc);
719 ok(rc==
DS_OK,
"IDirectSoundBuffer_SetPan(secondary) failed: %08x\n",rc);
727 "IDirectSound8_DuplicateSoundBuffer() should have returned "
728 "DSERR_INVALIDPARAM, returned: %08x\n",rc);
733 "IDirectSound8_DuplicateSoundBuffer() should have returned "
734 "DSERR_INVALIDPARAM, returned: %08x\n",rc);
739 "IDirectSound8_DuplicateSoundBuffer() should have returned "
740 "DSERR_INVALIDPARAM, returned: %08x\n",rc);
746 "IDirectSound8_DuplicateSoundBuffer() failed to duplicate "
747 "a secondary buffer: %08x\n",rc);
751 ok(
ref==0,
"IDirectSoundBuffer_Release() secondary has %d "
752 "references, should have 0\n",
ref);
753 secondary=duplicated;
759 duration=(move_listener || move_sound?4.0:1.0);
762 listener,move_listener,move_sound);
764 ok(
ref==0,
"IDirectSoundBuffer_Release() %s has %d references, "
773 ok(
ref==0,
"IDirectSound3dListener_Release() listener has %d "
774 "references, should have 0\n",
ref);
778 ok(
ref==0,
"IDirectSoundBuffer_Release() primary has %d references, "
779 "should have 0\n",
ref);
782 ok(primary==
NULL,
"IDirectSound8_CreateSoundBuffer(primary) failed "
783 "but primary created anyway\n");
784 ok(rc!=
DS_OK,
"IDirectSound8_CreateSoundBuffer(primary) succeeded "
785 "but primary not created\n");
788 ok(
ref==0,
"IDirectSoundBuffer_Release() primary has %d references, "
789 "should have 0\n",
ref);
796 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_NORMAL) failed: %08x\n",rc);
800 ok(
ref==0,
"IDirectSound8_Release() has %d references, should have 0\n",
ref);
814 rc=pDirectSoundCreate8(lpGuid,&dso,
NULL);
816 "DirectSoundCreate8() failed: %08x\n",rc);
821 ok(
ref==0,
"IDirectSound8_Release() has %d references, should have 0\n",
ref);
838 rc=pDirectSoundCreate8(lpGuid,&dso,
NULL);
845 dscaps.
dwSize=
sizeof(dscaps);
847 ok(rc==
DS_OK,
"IDirectSound8_GetCaps() failed: %08x\n",rc);
854 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_PRIORITY) failed: %08x\n",rc);
861 bufdesc.
dwSize=
sizeof(bufdesc);
865 "IDirectSound8_CreateSoundBuffer() failed to create a primary buffer: %08x\n",rc);
867 trace(
" No Primary\n");
875 for (
i = 0;
i < 6;
i++) {
884 for (
i = 0;
i < 7;
i++) {
892 ok(
ref==0,
"IDirectSoundBuffer_Release() primary has %d references, "
893 "should have 0\n",
ref);
899 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_NORMAL) failed: %08x\n",rc);
903 ok(
ref==0,
"IDirectSound8_Release() has %d references, should have 0\n",
ref);
920 rc=pDirectSoundCreate8(lpGuid,&dso,
NULL);
927 dscaps.
dwSize=
sizeof(dscaps);
929 ok(rc==
DS_OK,
"IDirectSound8_GetCaps failed: %08x\n",rc);
936 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_PRIORITY) failed: %08x\n",rc);
942 bufdesc.
dwSize=
sizeof(bufdesc);
945 ok(rc==
DS_OK && primary!=
NULL,
"IDirectSound8_CreateSoundBuffer() failed "
946 "to create a primary buffer: %08x\n",rc);
949 ok(
ref==0,
"IDirectSoundBuffer_Release() primary has %d references, "
950 "should have 0\n",
ref);
953 bufdesc.
dwSize=
sizeof(bufdesc);
956 ok(rc==
DS_OK && primary!=
NULL,
"IDirectSound8_CreateSoundBuffer() "
957 "failed to create a 3D primary buffer: %08x\n",rc);
963 ok(
ref==0,
"IDirectSoundBuffer_Release() primary has %d references, "
964 "should have 0\n",
ref);
970 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_NORMAL) failed: %08x\n",rc);
974 ok(
ref==0,
"IDirectSound8_Release() has %d references, should have 0\n",
ref);
991 rc=pDirectSoundCreate8(lpGuid,&dso,
NULL);
998 dscaps.
dwSize=
sizeof(dscaps);
1000 ok(rc==
DS_OK,
"IDirectSound8_GetCaps() failed: %08x\n",rc);
1007 ok(rc==
DS_OK,
"IDirectSound8_SetCooperativeLevel(DSSCL_PRIORITY) failed: %08x\n",rc);
1012 bufdesc.
dwSize=
sizeof(bufdesc);
1015 ok(rc==
DS_OK && primary!=
NULL,
"IDirectSound8_CreateSoundBuffer() failed "
1016 "to create a 3D primary buffer %08x\n",rc);
1020 &IID_IDirectSound3DListener,
1021 (
void **)&listener);
1022 ok(rc==
DS_OK && listener!=
NULL,
"IDirectSoundBuffer_QueryInterface() "
1023 "failed to get a 3D listener: %08x\n",rc);
1029 &IID_IDirectSoundBuffer,
1032 "IDirectSoundBuffer_QueryInterface() failed: %08x\n", rc);
1033 ok(temp_buffer==primary,
"COM interface broken: %p != %p\n",temp_buffer,primary);
1036 ok(
ref==1,
"IDirectSoundBuffer_Release() has %d references, "
1037 "should have 1\n",
ref);
1041 &IID_IDirectSoundBuffer,(
LPVOID *)&temp_buffer);
1043 "IDirectSoundBuffer_QueryInterface() failed: %08x\n", rc);
1044 ok(temp_buffer==primary,
"COM interface broken: %p != %p\n",temp_buffer,primary);
1046 ok(
ref==1,
"IDirectSoundBuffer_Release() has %d references, "
1047 "should have 1\n",
ref);
1053 1.0,0,listener,0,0);
1058 ok(
ref==0,
"IDirectSound3DListener_Release() listener has %d "
1059 "references, should have 0\n",
ref);
1064 ok(
ref==0,
"IDirectSoundBuffer_Release() primary has %d references, "
1065 "should have 0\n",
ref);
1070 ok(
ref==0,
"IDirectSound8_Release() has %d references, should have 0\n",
ref);
1083 trace(
"*** Testing %s - %s ***\n",lpcstrDescription,lpcstrModule);
1088 trace(
" No Driver\n");
1091 trace(
" Already In Use\n");
1093 }
else if (rc ==
E_FAIL) {
1094 trace(
" No Device\n");
1098 trace(
" Testing the primary buffer\n");
1101 trace(
" Testing 3D primary buffer\n");
1104 trace(
" Testing 3D primary buffer with listener\n");
1130 ok(rc==
DS_OK,
"DirectSoundEnumerateA() failed: %08x\n",rc);
1145 "DirectSoundEnumerateA");
1147 "DirectSoundCreate8");
1148 if (pDirectSoundCreate8)
1151 skip(
"DirectSoundCreate8 missing - skipping all tests\n");
1156 skip(
"dsound.dll not found - skipping all tests\n");
#define GetProcAddress(x, y)
#define GetCurrentProcess()
#define HeapFree(x, y, z)
DWORD WINAPI GetTickCount(VOID)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
static HRESULT test_primary_3d_with_listener8(LPGUID lpGuid)
static int buffer_refill8(play_state_t *state, DWORD size)
static int buffer_service8(play_state_t *state)
static void ds3d8_tests(void)
static HRESULT test_primary_3d8(LPGUID lpGuid)
static HRESULT test_primary8(LPGUID lpGuid)
static HRESULT test_secondary8(LPGUID lpGuid, int play, int has_3d, int has_3dbuffer, int has_listener, int has_duplicate, int move_listener, int move_sound)
static unsigned driver_count
static HRESULT test_for_driver8(LPGUID lpGuid)
static int buffer_silence8(play_state_t *state, DWORD size)
static BOOL WINAPI dsenum_callback(LPGUID lpGuid, LPCSTR lpcstrDescription, LPCSTR lpcstrModule, LPVOID lpContext)
static LPDIRECTSOUND8 LPUNKNOWN
void test_buffer8(LPDIRECTSOUND8 dso, LPDIRECTSOUNDBUFFER *dsbo, BOOL is_primary, BOOL set_volume, LONG volume, BOOL set_pan, LONG pan, BOOL play, double duration, BOOL buffer3d, LPDIRECTSOUND3DLISTENER listener, BOOL move_listener, BOOL move_sound)
char * wave_generate_la(WAVEFORMATEX *wfx, double duration, DWORD *size, BOOL ieee)
void init_format(WAVEFORMATEX *wfx, int format, int rate, int depth, int channels)
const char * getDSBCAPS(DWORD xmask)
int align(int length, int align)
#define IDirectSound8_CreateSoundBuffer(p, a, b, c)
#define IDirectSoundBuffer_Unlock(p, a, b, c, d)
#define DSBCAPS_CTRLVOLUME
struct IDirectSoundBuffer * LPDIRECTSOUNDBUFFER
#define IDirectSound3DListener_SetAllParameters(p, a, b)
#define DSERR_CONTROLUNAVAIL
#define IDirectSoundBuffer_GetCurrentPosition(p, a, b)
#define DSBCAPS_GETCURRENTPOSITION2
struct IDirectSound3DBuffer * LPDIRECTSOUND3DBUFFER
#define IDirectSoundBuffer_GetFormat(p, a, b, c)
#define IDirectSoundBuffer_GetVolume(p, a)
#define IDirectSoundBuffer_GetStatus(p, a)
#define IDirectSound8_GetCaps(p, a)
#define DSBLOCK_ENTIREBUFFER
#define IDirectSound3DListener_QueryInterface(p, a, b)
#define IDirectSoundBuffer_Stop(p)
#define DSBLOCK_FROMWRITECURSOR
#define DSBSTATUS_LOOPING
struct IDirectSound3DListener * LPDIRECTSOUND3DLISTENER
#define IDirectSoundBuffer_GetPan(p, a)
#define DSSCL_WRITEPRIMARY
#define IDirectSoundBuffer_SetFormat(p, a)
#define DSBSTATUS_PLAYING
#define IDirectSound3DBuffer_QueryInterface(p, a, b)
#define IDirectSoundBuffer_SetPan(p, a)
#define DSERR_INVALIDPARAM
#define DSBCAPS_CTRLFREQUENCY
struct IDirectSound8 * LPDIRECTSOUND8
#define IDirectSoundBuffer_GetFrequency(p, a)
#define DSCAPS_EMULDRIVER
#define IDirectSound8_Release(p)
BOOL(CALLBACK * LPDSENUMCALLBACKA)(LPGUID, LPCSTR, LPCSTR, LPVOID)
#define IDirectSound3DBuffer_GetAllParameters(p, a)
#define IDirectSoundBuffer_Play(p, a, b, c)
#define IDirectSoundBuffer_GetCaps(p, a)
#define IDirectSound3DBuffer_SetAllParameters(p, a, b)
#define IDirectSound3DListener_GetAllParameters(p, a)
#define IDirectSound3DBuffer_Release(p)
#define IDirectSoundBuffer_SetVolume(p, a)
#define IDirectSound3DListener_SetPosition(p, a, b, c, d)
#define IDirectSoundBuffer_Lock(p, a, b, c, d, e, f, g)
#define IDirectSound3DBuffer_SetPosition(p, a, b, c, d)
#define IDirectSound8_DuplicateSoundBuffer(p, a, b)
#define IDirectSoundBuffer_QueryInterface(p, a, b)
#define IDirectSound3DListener_Release(p)
#define IDirectSoundBuffer_Release(p)
#define DSBCAPS_PRIMARYBUFFER
#define IDirectSound8_SetCooperativeLevel(p, a, b)
GLubyte GLubyte GLubyte GLubyte w
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
_Check_return_ _CRT_JIT_INTRINSIC double __cdecl fabs(_In_ double x)
#define memcpy(s1, s2, n)
#define WAVE_FORMAT_IEEE_FLOAT
const char * format_string(const WAVEFORMATEX *wfx)
static float(__cdecl *square_half_float)(float x
#define IsEqualGUID(rguid1, rguid2)
LPWAVEFORMATEX lpwfxFormat
static void buffer_size(GLcontext *ctx, GLuint *width, GLuint *height)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)