Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
eccfe6e8
Commit
eccfe6e8
authored
Dec 28, 2006
by
Ken Thomases
Committed by
Alexandre Julliard
Dec 29, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winecoreaudio: Initial stub implementation of audio input support.
parent
b66a5285
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
253 additions
and
1 deletion
+253
-1
audio.c
dlls/winmm/winecoreaudio/audio.c
+252
-1
winecoreaudio.drv.spec
dlls/winmm/winecoreaudio/winecoreaudio.drv.spec
+1
-0
No files found.
dlls/winmm/winecoreaudio/audio.c
View file @
eccfe6e8
...
...
@@ -1259,7 +1259,7 @@ static DWORD wodDevInterface(UINT wDevID, PWCHAR dwParam1, DWORD dwParam2)
}
/**************************************************************************
* wodMessage (WINE
JACK
.7)
* wodMessage (WINE
COREAUDIO
.7)
*/
DWORD
WINAPI
CoreAudio_wodMessage
(
UINT
wDevID
,
UINT
wMsg
,
DWORD
dwUser
,
DWORD
dwParam1
,
DWORD
dwParam2
)
...
...
@@ -1406,9 +1406,260 @@ OSStatus CoreAudio_woAudioUnitIOProc(void *inRefCon,
if
(
needNotify
)
wodSendNotifyCompletionsMessage
(
wwo
);
return
noErr
;
}
/*======================================================================*
* Low level WAVE IN implementation *
*======================================================================*/
/**************************************************************************
* widNotifyClient [internal]
*/
static
DWORD
widNotifyClient
(
WINE_WAVEIN
*
wwi
,
WORD
wMsg
,
DWORD
dwParam1
,
DWORD
dwParam2
)
{
TRACE
(
"wMsg = 0x%04x dwParm1 = %04X dwParam2 = %04X
\n
"
,
wMsg
,
dwParam1
,
dwParam2
);
switch
(
wMsg
)
{
case
WIM_OPEN
:
case
WIM_CLOSE
:
case
WIM_DATA
:
if
(
wwi
->
wFlags
!=
DCB_NULL
&&
!
DriverCallback
(
wwi
->
waveDesc
.
dwCallback
,
wwi
->
wFlags
,
(
HDRVR
)
wwi
->
waveDesc
.
hWave
,
wMsg
,
wwi
->
waveDesc
.
dwInstance
,
dwParam1
,
dwParam2
))
{
WARN
(
"can't notify client !
\n
"
);
return
MMSYSERR_ERROR
;
}
break
;
default:
FIXME
(
"Unknown callback message %u
\n
"
,
wMsg
);
return
MMSYSERR_INVALPARAM
;
}
return
MMSYSERR_NOERROR
;
}
/**************************************************************************
* widGetDevCaps [internal]
*/
static
DWORD
widGetDevCaps
(
WORD
wDevID
,
LPWAVEINCAPSW
lpCaps
,
DWORD
dwSize
)
{
TRACE
(
"(%u, %p, %u);
\n
"
,
wDevID
,
lpCaps
,
dwSize
);
if
(
lpCaps
==
NULL
)
return
MMSYSERR_NOTENABLED
;
if
(
wDevID
>=
MAX_WAVEINDRV
)
{
TRACE
(
"MAX_WAVEINDRV reached !
\n
"
);
return
MMSYSERR_BADDEVICEID
;
}
FIXME
(
"unimplemented
\n
"
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* widOpen [internal]
*/
static
DWORD
widOpen
(
WORD
wDevID
,
LPWAVEOPENDESC
lpDesc
,
DWORD
dwFlags
)
{
TRACE
(
"(%u, %p, %08X);
\n
"
,
wDevID
,
lpDesc
,
dwFlags
);
if
(
lpDesc
==
NULL
)
{
WARN
(
"Invalid Parameter !
\n
"
);
return
MMSYSERR_INVALPARAM
;
}
if
(
wDevID
>=
MAX_WAVEINDRV
)
{
TRACE
(
"MAX_WAVEINDRV reached !
\n
"
);
return
MMSYSERR_BADDEVICEID
;
}
FIXME
(
"unimplemented
\n
"
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* widClose [internal]
*/
static
DWORD
widClose
(
WORD
wDevID
)
{
TRACE
(
"(%u);
\n
"
,
wDevID
);
if
(
wDevID
>=
MAX_WAVEINDRV
)
{
WARN
(
"bad device ID !
\n
"
);
return
MMSYSERR_BADDEVICEID
;
}
FIXME
(
"unimplemented
\n
"
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* widAddBuffer [internal]
*/
static
DWORD
widAddBuffer
(
WORD
wDevID
,
LPWAVEHDR
lpWaveHdr
,
DWORD
dwSize
)
{
TRACE
(
"(%u, %p, %08X);
\n
"
,
wDevID
,
lpWaveHdr
,
dwSize
);
if
(
wDevID
>=
MAX_WAVEINDRV
)
{
WARN
(
"invalid device ID
\n
"
);
return
MMSYSERR_INVALHANDLE
;
}
if
(
!
(
lpWaveHdr
->
dwFlags
&
WHDR_PREPARED
))
{
TRACE
(
"never been prepared !
\n
"
);
return
WAVERR_UNPREPARED
;
}
if
(
lpWaveHdr
->
dwFlags
&
WHDR_INQUEUE
)
{
TRACE
(
"header already in use !
\n
"
);
return
WAVERR_STILLPLAYING
;
}
FIXME
(
"unimplemented
\n
"
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* widStart [internal]
*/
static
DWORD
widStart
(
WORD
wDevID
)
{
TRACE
(
"(%u);
\n
"
,
wDevID
);
if
(
wDevID
>=
MAX_WAVEINDRV
)
{
WARN
(
"invalid device ID
\n
"
);
return
MMSYSERR_INVALHANDLE
;
}
FIXME
(
"unimplemented
\n
"
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* widStop [internal]
*/
static
DWORD
widStop
(
WORD
wDevID
)
{
TRACE
(
"(%u);
\n
"
,
wDevID
);
if
(
wDevID
>=
MAX_WAVEINDRV
)
{
WARN
(
"invalid device ID
\n
"
);
return
MMSYSERR_INVALHANDLE
;
}
FIXME
(
"unimplemented
\n
"
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* widReset [internal]
*/
static
DWORD
widReset
(
WORD
wDevID
)
{
TRACE
(
"(%u);
\n
"
,
wDevID
);
if
(
wDevID
>=
MAX_WAVEINDRV
)
{
WARN
(
"invalid device ID
\n
"
);
return
MMSYSERR_INVALHANDLE
;
}
FIXME
(
"unimplemented
\n
"
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* widGetNumDevs [internal]
*/
static
DWORD
widGetNumDevs
(
void
)
{
return
MAX_WAVEINDRV
;
}
/**************************************************************************
* widDevInterfaceSize [internal]
*/
static
DWORD
widDevInterfaceSize
(
UINT
wDevID
,
LPDWORD
dwParam1
)
{
TRACE
(
"(%u, %p)
\n
"
,
wDevID
,
dwParam1
);
FIXME
(
"unimplemented
\n
"
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* widDevInterface [internal]
*/
static
DWORD
widDevInterface
(
UINT
wDevID
,
PWCHAR
dwParam1
,
DWORD
dwParam2
)
{
FIXME
(
"unimplemented
\n
"
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* widMessage (WINECOREAUDIO.6)
*/
DWORD
WINAPI
CoreAudio_widMessage
(
WORD
wDevID
,
WORD
wMsg
,
DWORD
dwUser
,
DWORD
dwParam1
,
DWORD
dwParam2
)
{
TRACE
(
"(%u, %04X, %08X, %08X, %08X);
\n
"
,
wDevID
,
wMsg
,
dwUser
,
dwParam1
,
dwParam2
);
switch
(
wMsg
)
{
case
DRVM_INIT
:
case
DRVM_EXIT
:
case
DRVM_ENABLE
:
case
DRVM_DISABLE
:
/* FIXME: Pretend this is supported */
return
0
;
case
WIDM_OPEN
:
return
widOpen
(
wDevID
,
(
LPWAVEOPENDESC
)
dwParam1
,
dwParam2
);
case
WIDM_CLOSE
:
return
widClose
(
wDevID
);
case
WIDM_ADDBUFFER
:
return
widAddBuffer
(
wDevID
,
(
LPWAVEHDR
)
dwParam1
,
dwParam2
);
case
WIDM_PREPARE
:
return
MMSYSERR_NOTSUPPORTED
;
case
WIDM_UNPREPARE
:
return
MMSYSERR_NOTSUPPORTED
;
case
WIDM_GETDEVCAPS
:
return
widGetDevCaps
(
wDevID
,
(
LPWAVEINCAPSW
)
dwParam1
,
dwParam2
);
case
WIDM_GETNUMDEVS
:
return
widGetNumDevs
();
case
WIDM_RESET
:
return
widReset
(
wDevID
);
case
WIDM_START
:
return
widStart
(
wDevID
);
case
WIDM_STOP
:
return
widStop
(
wDevID
);
case
DRV_QUERYDEVICEINTERFACESIZE
:
return
widDevInterfaceSize
(
wDevID
,
(
LPDWORD
)
dwParam1
);
case
DRV_QUERYDEVICEINTERFACE
:
return
widDevInterface
(
wDevID
,
(
PWCHAR
)
dwParam1
,
dwParam2
);
default:
FIXME
(
"unknown message %d!
\n
"
,
wMsg
);
}
return
MMSYSERR_NOTSUPPORTED
;
}
#else
/**************************************************************************
* widMessage (WINECOREAUDIO.6)
*/
DWORD
WINAPI
CoreAudio_widMessage
(
WORD
wDevID
,
WORD
wMsg
,
DWORD
dwUser
,
DWORD
dwParam1
,
DWORD
dwParam2
)
{
FIXME
(
"(%u, %04X, %08X, %08X, %08X): CoreAudio support not compiled into wine
\n
"
,
wDevID
,
wMsg
,
dwUser
,
dwParam1
,
dwParam2
);
return
MMSYSERR_NOTENABLED
;
}
/**************************************************************************
* wodMessage (WINECOREAUDIO.7)
*/
DWORD
WINAPI
CoreAudio_wodMessage
(
WORD
wDevID
,
WORD
wMsg
,
DWORD
dwUser
,
...
...
dlls/winmm/winecoreaudio/winecoreaudio.drv.spec
View file @
eccfe6e8
@ stdcall -private DriverProc(long long long long long) CoreAudio_DriverProc
@ stdcall -private widMessage(long long long long long) CoreAudio_widMessage
@ stdcall -private wodMessage(long long long long long) CoreAudio_wodMessage
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment