Commit Graph

114 Commits

Author SHA1 Message Date
Jörg Höhle 2b51d38d3c winealsa: Fix AudioRenderClient Get/ReleaseBuffer protocol. 2012-01-10 10:48:01 +01:00
Jörg Höhle 49aa7f9f2f winealsa: Check ValidBitsPerSample and support SND_PCM_FORMAT_S20_3LE. 2012-01-06 19:24:28 +01:00
Jörg Höhle 76f655dbb0 winealsa: Unify the checks for wBitsPerSample. 2012-01-06 19:24:28 +01:00
Jörg Höhle 92d8e93acb winealsa: Have GetStreamLatency reflect the ALSA period. 2012-01-06 19:24:18 +01:00
Jörg Höhle 8316a77959 mmdevapi: Avoid HeapRealloc when no data need be copied. 2012-01-06 19:24:17 +01:00
Jörg Höhle 6d17715b01 winealsa: Use an ALSA buffer of 4 periods to limit prefill. 2011-12-22 17:19:21 +01:00
Jörg Höhle 54402a7c82 winealsa.drv: Request ALSA period time to match MMDevAPI period time. 2011-12-21 15:08:17 +01:00
Andrew Eikum 54b24f3926 winealsa.drv: Limit the data written to ALSA's buffer.
Based on an algorithm by Alexey Loukianov.
2011-12-20 10:12:19 +01:00
Jörg Höhle 38f9ba0070 mmdevapi: Enforce limits on period and duration. 2011-12-19 20:15:43 +01:00
Jörg Höhle 62017964be winealsa: Implement IAudioClock::GetPosition() using snd_pcm_delay. 2011-12-12 15:50:41 +01:00
Jörg Höhle 7c5b90006c mmdevapi: SHAREDMODE_EXCLUSIVE + EVENTCALLBACK is too ... exclusive for now. 2011-11-22 18:24:53 +01:00
Francois Gouget 97283f8b8d winealsa.drv: Don't unset Spare[0] when deleting static critical sections. 2011-11-15 19:37:35 +01:00
Francois Gouget 9b55cc9e6f winealsa.drv: Delete the g_sessions_lock critical section when unloading the dll. 2011-11-08 09:49:27 +01:00
Jörg Höhle 00684f84a5 mmdevapi: IsFormatSupported EXCLUSIVE mode never returns S_FALSE. 2011-10-28 12:49:44 +02:00
Francois Gouget 39e12238e9 winealsa.drv: Give a name to the mmdevapi critical sections.
Also statically initialize g_sessions_lock.
2011-10-27 14:20:44 +02:00
Dan Kegel 78e6287f71 winealsa.drv: When allocating opaque blobs for alsa, initialize them to zero. 2011-10-13 20:43:15 +02:00
Andrew Eikum f2c33ae17a winealsa.drv: Fix invalid pointer dereference on error path. 2011-10-13 19:57:18 +02:00
Michael Stefaniuc d8ca697233 winealsa.drv: Remove redundant NULL checks before free (Smatch). 2011-10-11 13:37:50 +02:00
Andrew Eikum b0652dd8bd winealsa.drv: Don't try to control ALSA's behavior.
Now, winealsa maintains its own buffer, which is written to ALSA on the
period cycle requested by the application. We also let ALSA start when
it has enough data and stop when it runs out, recovering from the
expected underruns. This seems to be more like how ALSA expects to be
used.
2011-10-11 13:37:49 +02:00
Andrew Eikum d41f6a6f02 winealsa.drv: Fix default device creation logic. 2011-09-30 10:32:09 -05:00
Andrew Eikum f7364dfb4b mmdevapi: Don't fail if dwChannelMask is not set correctly. 2011-09-28 21:04:33 +02:00
Andrew Eikum b1fdaa81b0 dsound: Remove hardware acceleration support. 2011-09-26 18:38:07 +02:00
Andrew Eikum 8258a5188c winealsa.drv: Remove wave, mixer, and dsound driver code. 2011-09-26 18:33:43 +02:00
Jörg Höhle 386f7639f3 winealsa: Simplify the test for 8bit linear PCM. 2011-09-26 18:09:14 +02:00
Jörg Höhle 8379680095 mmdevapi: Unlock buffer in case of ReleaseBuffer error. 2011-09-22 19:51:52 +02:00
Jörg Höhle 03ad9366f1 mmdevapi: Fix stuttering upon start and underrun. 2011-09-22 19:51:52 +02:00
Henri Verbeet 232893e083 winealsa.drv: Use the plughw instead of the hw interface for opening devices. 2011-09-22 09:39:11 +02:00
Henri Verbeet 0625d439de winealsa.drv: Only report endpoints for "default" if they can be opened.
The default device may for example be a set of USB speakers or an USB
microphone, in which case you'd have just an output or just an input
respectively.
2011-09-22 09:39:01 +02:00
Andrew Eikum e7a652395b winealsa.drv: Allow creation of the default device even if all real devices failed to open. 2011-09-15 15:41:40 +02:00
Bernhard Loos 366f54110a winealsa.drv: If there are no devices, there is also no default device. 2011-09-09 16:03:42 +02:00
Jörg Höhle 3e1d402881 mmdevapi: IsFormatSupported fills closest match iff it returns S_FALSE. 2011-09-09 14:24:08 +02:00
Jörg Höhle 9c75a6aae5 winealsa: Recommend Pulse users to upgrade to handle_underrun. 2011-09-08 20:08:09 +02:00
Jörg Höhle 08dd823c7c mmdevapi: Use UINT32 for a number of frames and UINT64 to sum them. 2011-09-08 20:08:09 +02:00
Jörg Höhle df201d3ef3 mmdevapi: Accept up to 8 channels. 2011-09-07 18:13:29 +02:00
Andrew Eikum c4b94b1ba4 mmdevapi: Automatically select the correct driver. 2011-09-01 18:06:37 +02:00
Jörg Höhle abf5b64f4c mmdevapi: Do not mix frames and bytes. 2011-08-30 17:10:40 +02:00
Jörg Höhle 8129b1847a winealsa: Pulse knows handle_underrun only since 2010-07-09. 2011-08-26 13:21:41 +02:00
Jörg Höhle 541075c3db mmdevapi: After GetBuffer, refuse Reset, but Start/Stop is ok. 2011-08-24 11:52:06 +02:00
Jörg Höhle 47bc6223e9 winealsa.drv: Fix AudioRenderClient write pointer calculation. 2011-08-22 16:14:34 +02:00
Andrew Eikum 9ad60d1d14 winealsa.drv: Inject handle_underrun=1 setting for pulse-backed devices. 2011-08-05 16:41:09 +02:00
Andrew Eikum 8c109aee13 winealsa.drv: Tell ALSA to play silence during underruns. 2011-08-05 16:37:54 +02:00
Andrew Eikum 96aa86c99d winealsa.drv: Fix AudioRenderClient write pointer calculation. 2011-07-27 19:42:21 +02:00
Andrew Eikum 80fd691e9e mmdevapi: Use a sane default if no buffer size is requested. 2011-07-18 18:31:06 +02:00
Andrew Eikum 2174717fbd mmdevapi: Only enumerate devices that can be opened during initialization. 2011-07-14 14:39:46 +02:00
Francois Gouget 84fca0017a winealsa.drv: Make the AudioSessionManager methods static. 2011-07-11 18:31:50 +02:00
Jacek Caban dbba09ca29 audiopolicy.idl: Fixed SetGroupingParam declaration. 2011-07-04 13:45:14 +02:00
Jörg Höhle 8db18a893b winealsa: Avoid deadlock in AudioClient_Stop. 2011-06-21 14:51:14 +02:00
Andrew Eikum 0085689f5d mmdevapi: Implement ISimpleAudioVolume::{Set, Get}Mute. 2011-06-20 19:31:57 +02:00
Andrew Eikum c6312990ab winealsa.drv: Be less choosey about sample rates. 2011-06-20 19:31:50 +02:00
Andrew Eikum a93efd5346 mmdevapi: Fix refcounts in IAudioClient::GetService. 2011-06-20 19:31:39 +02:00
Jörg Höhle 26efb871d3 winealsa: Fix mmdevapi memory allocations. 2011-06-17 15:04:53 +02:00
Andrew Eikum bc10fd3ce6 mmdevapi: Sessions should be unique per-device. 2011-06-14 12:59:39 +02:00
Jörg Höhle d726cf8819 winealsa: Properly allocate the WAVEFORMATEXTENSIBLE returned by GetMixFormat. 2011-06-06 21:49:20 +02:00
Andrew Eikum 6dac4d713c winealsa.drv: Partially implement IAudioSessionManager2. 2011-06-06 21:49:18 +02:00
Andrew Eikum 934a64cb38 winealsa.drv: Implement device enumeration. 2011-05-25 12:22:09 +02:00
Andrew Eikum ae9338c136 winealsa.drv: Implement volume control interfaces. 2011-05-09 11:58:41 +02:00
Andrew Eikum af92572b38 winealsa.drv: Move IAudioClock closer to its related interfaces. 2011-05-09 11:58:38 +02:00
Andrew Eikum eabf5715ce winealsa.drv: Implement IAudioSessionControl::GetState. 2011-05-02 18:48:20 +02:00
Andrew Eikum 4a37f2f093 mmdevapi: Initialize global driver data at DLL load time. 2011-05-02 18:48:20 +02:00
Andrew Eikum e3ff943e9c winealsa.drv: Add mapping for 64-bit floats in IAudioClient::Initialize(). 2011-04-27 17:49:53 +02:00
Andrew Eikum fc4748ae74 winealsa.drv: Properly allocate and free the WAVEFORMATEX returned by IsFormatSupported. 2011-04-27 17:49:46 +02:00
Andrew Eikum 2692a68ce6 winealsa.drv: Replace incorrect 41100 with 44100. 2011-04-27 17:49:11 +02:00
Maarten Lankhorst c385a93505 winealsa: Zero buffer, only write data if needed. 2011-04-26 16:18:00 +02:00
Andrew Eikum 86e90c92af winealsa.drv: Add mmdevapi driver.
Maarten Lankhorst also contributed to this driver.
2011-04-25 17:29:11 +02:00