Commit Graph

1060 Commits

Author SHA1 Message Date
Ken Thomases fa84451647 winecoreaudio: Implement CoreAudio_wiAudioUnitIOProc, the input callback. 2006-12-29 12:49:43 +01:00
Ken Thomases 959ec2aa44 winecoreaudio: Implement widStart. 2006-12-29 12:49:43 +01:00
Ken Thomases c47c82a20b winecoreaudio: Implement widStop. 2006-12-29 12:49:43 +01:00
Ken Thomases 335ab8c1a2 winecoreaudio: Changed widReset to stop the audio unit. 2006-12-29 12:49:43 +01:00
Ken Thomases cff4da8db8 winecoreaudio: Add mechanism for cross-thread call of widHelper_NotifyCompletions.
wodSendNotifyInputCompletionsMessage sends the kWaveInNotifyCompletionsMessage
to the message thread, which calls widHelper_NotifyCompletions.
2006-12-29 12:49:43 +01:00
Ken Thomases 9ef54e4ebe winecoreaudio: Add widHelper_NotifyCompletions.
It scans for completed input wavehdrs, removes them from the queue,
and notifies the application that they're done.
2006-12-29 12:49:42 +01:00
Ken Thomases 19c75a4ec6 winecoreaudio: Store the device ID in the WINE_WAVEOUT structure. 2006-12-29 12:49:42 +01:00
Ken Thomases 127523d7a2 winecoreaudio: Allocate/deallocate audio buffers in widOpen/widClose. 2006-12-29 12:49:42 +01:00
Ken Thomases 4b904bbf13 winecoreaudio: Do additional setup in AudioUnit_CreateInputUnit.
It now returns in an output parameter the frame count that the AU will use.
Also, initialize the Audio Unit.
2006-12-29 12:49:42 +01:00
Ken Thomases 5c489283c9 winecoreaudio: Implement widDevInterfaceSize and widDevInterface. 2006-12-29 12:49:42 +01:00
Ken Thomases 503f9be161 winecoreaudio: Implement widReset. 2006-12-29 12:49:42 +01:00
Ken Thomases 58ea6abe72 winecoreaudio: Implement widAddBuffer. 2006-12-29 12:49:42 +01:00
Ken Thomases 5432adaaac winecoreaudio: Implement widOpen and widClose. 2006-12-29 12:49:42 +01:00
Ken Thomases 30a1b29351 winecoreaudio: Add AudioUnit_CreateInputUnit to create an input audio unit. 2006-12-29 12:49:42 +01:00
Ken Thomases 8ba3daaf5c winecoreaudio: Add stub implementation of CoreAudio_wiAudioUnitIOProc.
It will serve as the input callback called when our Audio Unit has sound
data available.
2006-12-29 12:49:41 +01:00
Ken Thomases 5319b64b39 winecoreaudio: Initial implementation of widGetDevCaps. 2006-12-29 12:49:41 +01:00
Ken Thomases eccfe6e8a3 winecoreaudio: Initial stub implementation of audio input support. 2006-12-29 12:49:41 +01:00
Ken Thomases 5cbc520318 winecoreaudio: Replace pthread mutex with OSSpinLock. 2006-12-21 12:08:37 +01:00
Ken Thomases 234558c2c7 winecoreaudio: Move a memset out of a mutex-guarded section. 2006-12-21 12:01:12 +01:00
Ken Thomases acf3499916 winecoreaudio: Merge wodReset and wodHelper_Reset. 2006-12-21 12:01:02 +01:00
Ken Thomases 3ade58b0b9 winecoreaudio: Change to faster non-recursive mutex. 2006-12-21 12:00:49 +01:00
Ken Thomases d5975872af winecoreaudio: Push notify of completions from render callback to message thread.
Rather than have the Audio Unit render callback traverse the queue of wave
headers looking for complete ones, and sending a message to the message thread
for each one it finds, just send one message to tell the message thread to do
that work itself.  The render callback is called in a real-time priority
thread and is expected to return as quickly as possible.
2006-12-21 12:00:36 +01:00
Ken Thomases e24533cb6d winecoreaudio: Remove more mutexes from around Audio Unit calls. 2006-12-21 12:00:20 +01:00
Ken Thomases 0bb13dd31c winecoreaudio: Report when the render callback is just providing silence. 2006-12-21 12:00:09 +01:00
Ken Thomases 82fff94c33 winecoreaudio: Lift mutex lock/unlock out of wodHelper_PlayPtrNext to caller. 2006-12-21 11:59:53 +01:00
Ken Thomases bdbe803cb6 winecoreaudio: Leave audio unit running, except when waveout device paused. 2006-12-21 11:45:36 +01:00
Ken Thomases aef21c19c1 winecoreaudio: Eliminate unnecessary variable, unreachable code, unused retval. 2006-12-21 11:45:11 +01:00
Ken Thomases 7cecf7a40a winecoreaudio: Inline & eliminate the specializations of wodHelper_BeginWaveHdr. 2006-12-21 11:44:42 +01:00
Ken Thomases be4a17876d winecoreaudio: Specialize wodHelper_BeginWaveHdr for its two callers and simplify.
wodHelper_PlayPtrNext is only called when state == WINE_WS_PLAYING.  Also, it
clears dwPartialOffset itself.

wodWrite only calls wodHelper_BeginWaveHdr[Write] with a non-NULL lpWaveHdr
parameter.  wodWrite is not called from the Audio Unit render callback, so it
can use Wine debug channels.
2006-12-21 11:43:21 +01:00
Ken Thomases 551f7d94a3 winecoreaudio: Simplify handling of BEGIN+ENDLOOP wave headers. 2006-12-21 11:42:48 +01:00
Ken Thomases 91c5ec9616 winecoreaudio: Extract wodHelper_CheckForLoopBegin() from wodHelper_BeginWaveHdr().
This refactoring prepares the ground for subsequent refactoring of
wodHelper_BeginWaveHdr.
2006-12-21 11:42:28 +01:00
Ken Thomases a6da8f212d winecoreaudio: Create port for sending messages to the callback thread only once. 2006-12-21 11:42:12 +01:00
Ken Thomases 23bb112b10 winecoreaudio: Control the fprintf's by the Wine debug channel on/off settings. 2006-12-21 11:42:05 +01:00
Dmitry Timoshkov 0b988c73c9 winearts: Make some data const. 2006-12-14 20:11:17 +01:00
Dmitry Timoshkov b05173486a wineoss: Make some data const. 2006-12-14 20:10:58 +01:00
Marcus Meissner 4d52a421d7 Made some functions static. 2006-12-12 12:10:57 +01:00
Francois Gouget 89f4b5645f winmm: Add a Portuguese translation (contributed by Americo Jose Melo). 2006-11-28 12:13:24 +01:00
Andrew Talbot 89bb54601f winmm/wineoss: Cast-qual warning fix. 2006-11-24 12:56:31 +01:00
Francois Gouget b5f104d05b Replace SUBLANG_DEFAULT with the specific SUBLANG_XXX constant for languages that have multiple sublanguages. 2006-11-24 11:49:32 +01:00
Andrew Talbot 529aa7de90 winmm: Cast-qual warnings fix. 2006-11-24 11:47:44 +01:00
Andrew Talbot a8f02b8bb7 winmm: Cast-qual warnings fix. 2006-11-24 11:47:39 +01:00
Alexandre Julliard 0beeffa935 winmm: Avoid using sizeof() in traces. 2006-11-20 11:50:14 +01:00
Francois Gouget 1ccf944900 Assorted spelling fixes. 2006-11-13 13:01:53 +01:00
Michael Stefaniuc 8f0f9371a8 winmm/tests: Win64 printf format warning fixes. 2006-11-13 12:49:27 +01:00
Michael Stefaniuc 60c19952b7 winmm/tests: Fix the parameters of LPTIMECALLBACK functions. 2006-11-13 12:49:14 +01:00
Eric Pouech d1737cc24b winmm: Plug a memory leak. 2006-11-09 12:24:54 +01:00
Eric Pouech 2f540b8602 winmm: Remove WINE_NO_LONG_AS_INT. 2006-11-09 11:44:30 +01:00
Francois Gouget 30e44c85c8 Assorted spelling fixes. 2006-11-07 15:25:24 +01:00
Mikołaj Zalewski 58bd35c8c5 resources: Change Dutch sublanguage code to SUBLANG_NEUTRAL. 2006-10-24 17:45:51 +02:00
Mikołaj Zalewski e32aa55703 resources: Change German sublanguage code to SUBLANG_NEUTRAL. 2006-10-24 11:45:12 +02:00
Marcus Meissner d1b2282a9b wineoss: On non-OSS systems define MidiExit too. 2006-10-24 11:31:21 +02:00
Byeong-Sik Jeon e1fd734c97 Korean: Use SUBLANG_NEUTRAL in Korean resources. 2006-10-20 13:49:39 +02:00
Alexandre Julliard 18aafc27d0 wineaudioio.drv: Win64 printf format fixes. 2006-10-20 12:59:02 +02:00
Alexandre Julliard 6f4d2f8dc4 winecoreaudio.drv: Win64 printf format fixes. 2006-10-20 12:36:38 +02:00
Francois Gouget ef998ea6cb Assorted spelling fixes. 2006-10-16 11:33:38 +02:00
Michael Stefaniuc 173f7bd26c janitorial: Remove remaining NULL checks before free() (found by Smatch). 2006-10-10 12:56:24 +02:00
Michael Stefaniuc 10ee330a19 winmm/wineoss: Win64 printf format warning fixes. 2006-10-07 17:47:26 +02:00
Michael Stefaniuc a0f541399a winmm/winealsa: Win64 printf format warning fixes. 2006-10-07 17:47:13 +02:00
Michael Stefaniuc fe0af93cb6 winmm/winearts: Win64 printf format warning fixes. 2006-10-07 17:47:06 +02:00
Michael Stefaniuc 6f6e054ffb winmm/winenas: Win64 printf format warning fixes. 2006-10-07 17:47:01 +02:00
Michael Stefaniuc c8ef239057 winmm/wineesd: Win64 printf format warning fixes. 2006-10-07 17:46:58 +02:00
Michael Stefaniuc 3baeb485a0 winmm/winejack: Win64 printf format warning fixes. 2006-10-07 17:46:52 +02:00
Francois Gouget 82babbee0b Add missing '\n's to Wine traces. 2006-10-05 17:46:48 +02:00
Michael Stefaniuc 41dd56cb7f "One liners" printf format warning fixes for the migration of DWORD/LONG/ULONG from long to int. 2006-09-29 16:09:24 +02:00
Michael Stefaniuc 85ce5117c5 Add a WINE_NO_LONG_INT define to many makefiles to ease the transition of DWORD/LONG/ULONG from long to int. 2006-09-29 16:08:30 +02:00
Hwang YunSong(황윤성) 2b4a76001f winmm: Updated Korean resource. 2006-09-28 11:56:37 +02:00
Mikołaj Zalewski 636f2ac0f3 winmm: Use English (US) instead of English (Neutral) for resources. 2006-09-27 09:40:11 +02:00
Alexandre Julliard 32ab895e46 makefiles: Generate the dependencies line to avoid some code duplication. 2006-09-14 09:38:16 +02:00
Jan Zerebecki 1ee1d819f9 wineoss: Remove "please report" from a trace. 2006-09-07 16:11:11 +02:00
Jan Zerebecki 6698e9e0b0 winmm: Prevent NULL dereference in MCI_Close and add testcase for it. 2006-09-07 16:10:48 +02:00
Alexandre Julliard 5cf75e615a makefiles: Only run test and documentation targets in directories that need them. 2006-08-28 13:37:44 +02:00
Alexandre Julliard eb8a40c368 libs: Merged libwine_unicode into libwine.
Most dlls use libwine_unicode at this point, so there's nothing to
gain by having two separate libraries.
2006-07-11 19:33:22 +02:00
Alexandre Julliard 77dc0d9be5 .gitignore: Added wildcards to ignore generated resource files. 2006-07-10 21:39:00 +02:00
Alexandre Julliard 0fa8baafcb make_dlls: Recursively ignore .ok files in all tests directories. 2006-07-10 21:26:50 +02:00
Alexandre Julliard edd100b899 make_dlls: Recursively ignore testlist.c in all tests directories. 2006-07-10 21:19:42 +02:00
Alexandre Julliard 5258e061dc make_dlls: Ignore generated import libraries from the top-level .gitignore. 2006-07-10 20:55:58 +02:00
Alexandre Julliard cc2b3b48e6 Take advantage of the recursive nature of .gitignore for Makefile entries.
Prefix other entries with '/' to make them non-recursive.
2006-07-10 20:47:54 +02:00
Michael Stefaniuc 00e779370f janitorial: Put "inline static" at the beginning of a declaration. 2006-07-07 14:30:35 +02:00
Andrew Talbot 343597b336 winmm/winealsa: Write-strings warning fix. 2006-07-03 11:59:02 +02:00
Eric Pouech 6f03b0c021 mci: Fix some mciSendString quirks.
Really check in MCI open string commands if the name we have is a
device (and no longer rely on bad heuristics for it).
2006-06-26 13:38:03 +02:00
Francois Gouget 21668ad76a winecoreaudio: Protect pthread.h inclusion. 2006-06-26 13:05:00 +02:00
Peter Åstrand 2585e1a6fd winmm: Add support for "open new" commands. 2006-06-15 12:25:50 +02:00
Alexandre Julliard 82a404a077 winmm/tests: Don't use sizeof in ok() to avoid printf format warnings. 2006-06-13 14:04:07 +02:00
Mike McCormack 25f521f1b2 winmm: Undefine SW_MAX defined by linux/input.h to avoid a conflict with winuser.h. 2006-06-13 12:56:38 +02:00
Alexandre Julliard ea50196447 winecoreaudio: Fixed the FSF address. 2006-06-01 13:15:54 +02:00
Ken Thomases 1612ce8659 winecoreaudio: Don't CFAllocate buffer for port message. 2006-06-01 13:09:44 +02:00
Ken Thomases fb5a073e46 winecoreaudio: Use unique name for message port.
Use a unique port name for the message port to the message thread.
Port names are system-global, so using a non-unique constant name
prevents the CoreAudio driver from being used in multiple processes
simultaneously.
2006-06-01 13:08:21 +02:00
Ken Thomases a1e6989a9b winecoreaudio: 8-bit Linear PCM data is unsigned. 2006-06-01 13:05:59 +02:00
Ken Thomases 178f9fecd9 winecoreaudio: Keep processing wavehdrs to satisfy AudioUnit data request.
When fulfilling the output AudioUnit's request for audio data, don't
stop when the current wavehdr is exhausted; advance to the next.  This
addresses the buzzy quality of the sound.
2006-06-01 13:03:22 +02:00
Ken Thomases 6a6aec72d3 winecoreaudio: Improve state tracking.
Improved tracking of device state (stopped, playing, or paused).
Also, tied starting and stopping the AudioUnit more directly to the
state.  No need to change the state when preparing or unpreparing
wavehdrs.  Pausing overrides both playing and stopped states; if
stopped, pausing prevents output from starting when the program
writes.  When, restarting from the paused state, the device starts
playing if there are queued wavehdrs.  Otherwise, it goes to stopped
state.
2006-06-01 12:59:50 +02:00
Ken Thomases fb9f878849 winecoreaudio: Miscellaneous cleanup.
Miscellaneous cleanup: release resources when done with them; protect
against null pointers; reduce redundant code; avoid potential integer
underflow; clarify a do-nothing loop.
2006-06-01 12:59:38 +02:00
Ken Thomases 00e9996339 winecoreaudio: Fix race to open.
Fixes a race condition (noted in a comment for wodOpen) when multiple
threads try to open the same wave-out device simultaneously.
Addressed by creating the device mutexes when the driver is
initialized, instead of as each device is opened.  Then use the mutex
to protect the open operation against races.  At the same time, made
the mutexes recursive to avoid self-deadlocks the driver was
encountering when reentered from the callback.
2006-06-01 12:50:46 +02:00
Alexandre Julliard 11fe657466 winecoreaudio: Fixed a bunch of compiler warnings. 2006-05-31 14:52:58 +02:00
Robert Reif 2b3247a424 winmm: Always check for open and close enents in wave test.
Always check for open and close events.
Send WM_APP message to thread to terminate it rather than TerminateThread.
Fix CreateThread/waveOutOpen race by waiting for background thread to
run before waveOutOpen is called.
Add more non-hardware supported formats.  There is a bug in wave
mapper GetPosition when multiple headers are used and this helps
trigger it.
2006-05-31 11:45:22 +02:00
Andrew Talbot 9480d3e50a winmm/joystick: joystick.c requires Unicode library. 2006-05-31 11:42:40 +02:00
Emmanuel Maillard 144a5353ef winecoreaudio: Initial Audio Driver for Mac OS X. 2006-05-30 19:34:20 +02:00
Robert Reif fe2becaee3 winmm: Add multiple header wave tests.
The current wave tests only use a single header for playback.  Tests
have been added to use multiple headers and to reuse them.  This is
how streaming applications and direct sound use the wave api.
2006-05-30 12:22:58 +02:00
Alexandre Julliard 9ca8a86914 Link against libwine_unicode everywhere we use Unicode functions. 2006-05-24 18:05:40 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Robert Reif ed62b0150c winmm: Fix wave test handle use after close bug. 2006-05-20 14:00:22 +02:00