83 TRACE(
"(%p %u %Id %Ix %Ix);\n",
hWave, uMsg, dwInstance, dwParam1, dwParam2);
91 ERR(
"Shouldn't happen (%p %p)\n",
hWave, wom->
u.
out.hInnerWave);
110 ERR(
"Unknown msg %u\n", uMsg);
168 WARN(
"invalid parameter: dwFlags WAVE_MAPPED\n");
182 wom->
u.
out.hOuterWave = (HWAVEOUT)lpDesc->
hWave;
186 for (
i = ndlo;
i < ndhi;
i++) {
205#define TRY(sps,bps) wfx.nSamplesPerSec = (sps); wfx.wBitsPerSample = (bps); \
206 switch (res=wodOpenHelper(wom, i, lpDesc, &wfx, dwFlags | WAVE_FORMAT_DIRECT)) { \
207 case MMSYSERR_NOERROR: wom->avgSpeedInner = wfx.nAvgBytesPerSec; wom->nSamplesPerSecInner = wfx.nSamplesPerSec; goto found; \
208 case WAVERR_BADFORMAT: break; \
209 default: goto error; \
216 for (
i = ndlo;
i < ndhi;
i++) {
226 for (
i = ndlo;
i < ndhi;
i++) {
236 for (
i = ndlo;
i < ndhi;
i++) {
274 WARN(
"ret = WAVERR_BADFORMAT\n");
288 WARN(
"ret = WAVERR_BADFORMAT\n");
299 TRACE(
"(%p)\n", wom);
318 TRACE(
"(%p %p %08lx)\n", wom, lpWaveHdrSrc, dwParam2);
329 WARN(
"acmStreamConvert failed\n");
335 FIXME(
"Not all src buffer has been written, expect bogus sound\n");
337 ERR(
"Codec has read more data than it is allowed to\n");
341 FIXME(
"Got 0 length\n");
345 return waveOutWrite(wom->
u.
out.hInnerWave, lpWaveHdrDst,
sizeof(*lpWaveHdrDst));
355 TRACE(
"(%p %p %08lx)\n", wom, lpWaveHdrSrc, dwParam2);
361 WARN(
"acmStreamSize failed\n");
384 WARN(
"acmStreamPrepareHeader failed\n");
395 WARN(
"waveOutPrepareHeader failed\n");
404 TRACE(
"=> (%ld)\n", dwRet);
413 DWORD dwRet1, dwRet2;
415 TRACE(
"(%p %p %08lx)\n", wom, lpWaveHdrSrc, dwParam2);
428 lpWaveHdrSrc->
dwFlags &= ~WHDR_PREPARED;
436 TRACE(
"(%p %p %08lx)\n", wom, lpTime, dwParam2);
450 if (dwInnerSamplesPerOuter > 0)
453 DWORD dwInnerBytesPerOuterSample = dwInnerBytesPerSample * dwInnerSamplesPerOuter;
473 timepos.
u.
cb += dwInnerBytesPerOuterSample;
489 lpTime->
u = timepos.
u;
496 TRACE(
"(%04x %p %p %08lx)\n",wDevID, wom, lpWaveCaps, dwParam2);
503 WARN(
"bad device id\n");
507 if (wDevID == (
UINT)-1 || wDevID == (
UINT16)-1) {
522 memcpy(lpWaveCaps, &woc,
min(dwParam2,
sizeof(woc)));
526 ERR(
"This shouldn't happen\n");
532 TRACE(
"(%04x %p %p)\n",wDevID, wom, lpVol);
541 TRACE(
"(%04x %p %08lx)\n",wDevID, wom, vol);
607 FIXME(
"(%p %08lx %08lx) stub!\n", wom, dwParam1, dwParam2);
618 TRACE(
"(%u, %04X, %08IX, %08IX, %08IX);\n",
619 wDevID, wMsg, dwUser, dwParam1, dwParam2);
653 FIXME(
"unknown message %d!\n", wMsg);
667 TRACE(
"(%p %u %Ix %Ix %Ix);\n",
hWave, uMsg, dwInstance, dwParam1, dwParam2);
675 ERR(
"Shouldn't happen (%p %p)\n",
hWave, wim->
u.
in.hInnerWave);
690 ERR(
"ACM conversion failed\n");
696 lpWaveHdrDst->
dwFlags &= ~WHDR_INQUEUE;
703 ERR(
"Unknown msg %u\n", uMsg);
757 wim->
u.
in.hOuterWave = (HWAVEIN)lpDesc->
hWave;
772 for (
i = ndlo;
i < ndhi;
i++) {
789#define TRY(sps,bps) wfx.nSamplesPerSec = (sps); wfx.wBitsPerSample = (bps); \
790 switch (res=widOpenHelper(wim, i, lpDesc, &wfx, dwFlags | WAVE_FORMAT_DIRECT)) { \
791 case MMSYSERR_NOERROR: wim->avgSpeedInner = wfx.nAvgBytesPerSec; wim->nSamplesPerSecInner = wfx.nSamplesPerSec; goto found; \
792 case WAVERR_BADFORMAT: break; \
793 default: goto error; \
796 for (
i = ndlo;
i < ndhi;
i++) {
807 for (
i = ndlo;
i < ndhi;
i++) {
845 WARN(
"ret = WAVERR_BADFORMAT\n");
859 WARN(
"ret = WAVERR_BADFORMAT\n");
870 TRACE(
"(%p)\n", wim);
889 TRACE(
"(%p %p %08lx)\n", wim, lpWaveHdrDst, dwParam2);
909 TRACE(
"(%p %p %08lx)\n", wim, lpWaveHdrDst, dwParam2);
916 WARN(
"acmStreamSize failed\n");
939 WARN(
"acmStreamPrepareHeader failed\n");
950 WARN(
"waveInPrepareHeader failed\n");
959 TRACE(
"=> (%ld)\n", dwRet);
968 DWORD dwRet1, dwRet2;
970 TRACE(
"(%p %p %08lx)\n", wim, lpWaveHdrDst, dwParam2);
983 lpWaveHdrDst->
dwFlags &= ~WHDR_PREPARED;
991 TRACE(
"(%p %p %08lx)\n", wim, lpTime, dwParam2);
1005 if (dwInnerSamplesPerOuter > 0)
1008 DWORD dwInnerBytesPerOuterSample = dwInnerBytesPerSample * dwInnerSamplesPerOuter;
1028 timepos.
u.
cb += dwInnerBytesPerOuterSample;
1044 lpTime->
u = timepos.
u;
1051 TRACE(
"(%04x, %p %p %08lx)\n", wDevID, wim, lpWaveCaps, dwParam2);
1058 WARN(
"bad device id\n");
1062 if (wDevID == (
UINT)-1 || wDevID == (
UINT16)-1) {
1076 memcpy(lpWaveCaps, &wic,
min(dwParam2,
sizeof(wic)));
1080 ERR(
"This shouldn't happen\n");
1086 TRACE(
"(%p)\n", wim);
1093 TRACE(
"(%p)\n", wim);
1100 TRACE(
"(%p)\n", wim);
1136 FIXME(
"(%p %08lx %08lx) stub!\n", wim, dwParam1, dwParam2);
1147 TRACE(
"(%u, %04X, %08IX, %08IX, %08IX);\n",
1148 wDevID, wMsg, dwUser, dwParam1, dwParam2);
1177 FIXME(
"unknown message %u!\n", wMsg);
1199 oss = (
struct WINE_WAVEMAP*)1;
1208 TRACE(
"(%08Ix)\n", dwDevID);
1223 TRACE(
"(%08IX, %p, %08X, %08IX, %08IX)\n",
1224 dwDevID, hDriv, wMsg, dwParam1, dwParam2);
1238 return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define HeapFree(x, y, z)
BOOL WINAPI IsBadReadPtr(IN LPCVOID lp, IN UINT_PTR ucb)
#define WAVEIN_MAPPER_STATUS_MAPPED
#define WODM_MAPPER_STATUS
#define DRV_QUERYDEVICEINTERFACESIZE
#define WAVEIN_MAPPER_STATUS_FORMAT
#define WIDM_MAPPER_STATUS
#define WAVEOUT_MAPPER_STATUS_FORMAT
#define WODM_SETPLAYBACKRATE
#define WODM_GETPLAYBACKRATE
#define DRVM_MAPPER_RECONFIGURE
BOOL WINAPI DriverCallback(DWORD dwCallBack, UINT uFlags, HDRVR hDev, UINT wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)
#define WAVEOUT_MAPPER_STATUS_MAPPED
#define WAVEIN_MAPPER_STATUS_DEVICE
#define DRV_QUERYDEVICEINTERFACE
#define WAVEOUT_MAPPER_STATUS_DEVICE
MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose)
MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare)
MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert)
MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput, LPDWORD pdwOutputBytes, DWORD fdwSize)
MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare)
MMRESULT WINAPI acmStreamOpen(PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
_ACRTIMP double __cdecl remainder(double, double)
LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hDrv, UINT Msg, LPARAM lParam1, LPARAM lParam2)
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
#define memcpy(s1, s2, n)
struct wavehdr_tag WAVEHDR
struct wavehdr_tag * LPWAVEHDR
#define CALLBACK_TYPEMASK
#define DRV_QUERYCONFIGURE
#define MMSYSERR_NOTSUPPORTED
#define WAVE_FORMAT_QUERY
#define MMSYSERR_INVALPARAM
#define WAVECAPS_LRVOLUME
#define CALLBACK_FUNCTION
#define MMSYSERR_BADDEVICEID
#define WAVE_FORMAT_DIRECT
#define ACM_STREAMOPENF_QUERY
struct _ACMSTREAMHEADER ACMSTREAMHEADER
#define ACMERR_NOTPOSSIBLE
#define ACM_STREAMSIZEF_SOURCE
#define ACM_STREAMSIZEF_DESTINATION
struct _ACMSTREAMHEADER * PACMSTREAMHEADER
unsigned __int3264 UINT_PTR
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
int WINAPI MessageBoxA(_In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpCaption, _In_ UINT uType)
for(i=0;i< sizeof(testsuite)/sizeof(testsuite[0]);++i) ok(call_test(testsuite[i].func)
union mmtime_tag::@3760 u
WCHAR szPname[MAXPNAMELEN]
DWORD nSamplesPerSecOuter
DWORD_PTR dwClientInstance
struct tagWAVEMAPDATA::@596::@598 in
DWORD nSamplesPerSecInner
struct tagWAVEMAPDATA * self
union tagWAVEMAPDATA::@596 u
struct tagWAVEMAPDATA::@596::@597 out
WCHAR szPname[MAXPNAMELEN]
static DWORD wodClose(WAVEMAPDATA *wom)
static DWORD wodOpenHelper(WAVEMAPDATA *wom, UINT idx, LPWAVEOPENDESC lpDesc, LPWAVEFORMATEX lpwfx, DWORD dwFlags)
static void CALLBACK widCallback(HWAVEIN hWave, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
static DWORD wodRestart(WAVEMAPDATA *wom)
static DWORD widOpen(DWORD_PTR *lpdwUser, LPWAVEOPENDESC lpDesc, DWORD dwFlags)
static DWORD wodMapperReconfigure(WAVEMAPDATA *wom, DWORD dwParam1, DWORD dwParam2)
LRESULT CALLBACK WAVEMAP_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg, LPARAM dwParam1, LPARAM dwParam2)
static DWORD widStop(WAVEMAPDATA *wim)
static DWORD wodBreakLoop(WAVEMAPDATA *wom)
static DWORD wodUnprepare(WAVEMAPDATA *wom, LPWAVEHDR lpWaveHdrSrc, DWORD dwParam2)
static DWORD wodGetVolume(UINT wDevID, WAVEMAPDATA *wom, LPDWORD lpVol)
static DWORD widOpenHelper(WAVEMAPDATA *wim, UINT idx, LPWAVEOPENDESC lpDesc, LPWAVEFORMATEX lpwfx, DWORD dwFlags)
static DWORD widReset(WAVEMAPDATA *wim)
static DWORD widMapperStatus(WAVEMAPDATA *wim, DWORD flags, LPVOID ptr)
static DWORD wodGetDevCaps(UINT wDevID, WAVEMAPDATA *wom, LPWAVEOUTCAPSW lpWaveCaps, DWORD dwParam2)
static DWORD wodPause(WAVEMAPDATA *wom)
static DWORD widClose(WAVEMAPDATA *wim)
static LRESULT WAVEMAP_drvClose(DWORD_PTR dwDevID)
static void CALLBACK wodCallback(HWAVEOUT hWave, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
static BOOL WAVEMAP_IsData(const WAVEMAPDATA *wm)
static DWORD widStart(WAVEMAPDATA *wim)
static DWORD widMapperReconfigure(WAVEMAPDATA *wim, DWORD dwParam1, DWORD dwParam2)
static DWORD wodSetVolume(UINT wDevID, WAVEMAPDATA *wom, DWORD vol)
static DWORD widAddBuffer(WAVEMAPDATA *wim, LPWAVEHDR lpWaveHdrDst, DWORD dwParam2)
static DWORD widPrepare(WAVEMAPDATA *wim, LPWAVEHDR lpWaveHdrDst, DWORD dwParam2)
static DWORD wodReset(WAVEMAPDATA *wom)
static DWORD widGetDevCaps(UINT wDevID, WAVEMAPDATA *wim, LPWAVEINCAPSW lpWaveCaps, DWORD dwParam2)
static DWORD widGetPosition(WAVEMAPDATA *wim, LPMMTIME lpTime, DWORD dwParam2)
DWORD WINAPI WAVEMAP_wodMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
static DWORD widUnprepare(WAVEMAPDATA *wim, LPWAVEHDR lpWaveHdrDst, DWORD dwParam2)
DWORD WINAPI WAVEMAP_widMessage(WORD wDevID, WORD wMsg, DWORD_PTR dwUser, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
static DWORD wodPrepare(WAVEMAPDATA *wom, LPWAVEHDR lpWaveHdrSrc, DWORD dwParam2)
static DWORD wodOpen(DWORD_PTR *lpdwUser, LPWAVEOPENDESC lpDesc, DWORD dwFlags)
struct tagWAVEMAPDATA WAVEMAPDATA
static DWORD wodMapperStatus(WAVEMAPDATA *wom, DWORD flags, LPVOID ptr)
static struct WINE_WAVEMAP * oss
static DWORD wodWrite(WAVEMAPDATA *wom, LPWAVEHDR lpWaveHdrSrc, DWORD dwParam2)
static DWORD wodGetPosition(WAVEMAPDATA *wom, LPMMTIME lpTime, DWORD dwParam2)
static LRESULT WAVEMAP_drvOpen(LPSTR str)
UINT WINAPI waveInGetPosition(HWAVEIN hWaveIn, LPMMTIME lpTime, UINT uSize)
UINT WINAPI waveOutReset(HWAVEOUT hWaveOut)
UINT WINAPI waveInAddBuffer(HWAVEIN hWaveIn, WAVEHDR *lpWaveInHdr, UINT uSize)
UINT WINAPI waveInPrepareHeader(HWAVEIN hWaveIn, WAVEHDR *lpWaveInHdr, UINT uSize)
UINT WINAPI waveInStop(HWAVEIN hWaveIn)
UINT WINAPI waveOutSetVolume(HWAVEOUT hWaveOut, DWORD dw)
UINT WINAPI waveInUnprepareHeader(HWAVEIN hWaveIn, WAVEHDR *lpWaveInHdr, UINT uSize)
UINT WINAPI waveOutGetNumDevs(void)
UINT WINAPI waveOutGetPosition(HWAVEOUT hWaveOut, LPMMTIME lpTime, UINT uSize)
UINT WINAPI waveInGetID(HWAVEIN hWaveIn, UINT *lpuDeviceID)
UINT WINAPI waveInReset(HWAVEIN hWaveIn)
UINT WINAPI waveOutBreakLoop(HWAVEOUT hWaveOut)
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)
MMRESULT WINAPI waveInOpen(HWAVEIN *lphWaveIn, UINT uDeviceID, LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
UINT WINAPI waveOutGetID(HWAVEOUT hWaveOut, UINT *lpuDeviceID)
UINT WINAPI waveInGetNumDevs(void)
UINT WINAPI waveInClose(HWAVEIN hWaveIn)
UINT WINAPI waveOutPrepareHeader(HWAVEOUT hWaveOut, WAVEHDR *lpWaveOutHdr, UINT uSize)
UINT WINAPI waveInStart(HWAVEIN hWaveIn)
UINT WINAPI waveOutPause(HWAVEOUT hWaveOut)
UINT WINAPI waveOutGetVolume(HWAVEOUT hWaveOut, LPDWORD lpdw)
UINT WINAPI waveOutClose(HWAVEOUT hWaveOut)
UINT WINAPI waveInGetDevCapsW(UINT_PTR uDeviceID, LPWAVEINCAPSW lpCaps, UINT uSize)
#define WAVE_FORMAT_48S16
#define WAVE_FORMAT_48M16
#define WAVE_FORMAT_96S08
#define WAVE_FORMAT_96M16
#define WAVE_FORMAT_96S16
#define WAVE_FORMAT_48M08
#define WAVE_FORMAT_48S08
#define WAVE_FORMAT_96M08