Jacek Caban
b1ddfca16e
winepulse: Move pulse_stop to unix lib.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-17 22:04:51 +02:00
Jacek Caban
a5d4079c82
winepulse: Move pulse_read to unix lib.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-17 22:04:48 +02:00
Jacek Caban
ebd344f292
winepulse: Move pulse stream initialization to unix lib.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-12 19:06:45 +02:00
Jacek Caban
0eeefec6c5
winepulse: Move pulse stream destruction to unix lib.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-12 19:06:43 +02:00
Jacek Caban
5477f2b015
winepulse: Introduce pulse_stream struct.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-12 19:06:41 +02:00
Jacek Caban
fa097243e0
winepulse: Store channel count directly in ACImpl.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-12 19:06:38 +02:00
Jacek Caban
8df72bade5
winepulse: Move pulse main loop to unix lib.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-12 19:06:36 +02:00
Jacek Caban
e264ec9c71
winepulse: Move pulse_test_connect to unix lib.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-12 19:06:33 +02:00
Jacek Caban
d3673fcb03
winepulse: Move synchronization functions to unix lib.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-12 19:06:24 +02:00
Jacek Caban
ac23adbdec
winepulse: Use nameless unions.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-24 20:46:23 +01:00
Torge Matthies
6dd96842fe
winepulse.drv: Make timer delay more accurate.
...
Signed-off-by: Torge Matthies <openglfreak@googlemail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-15 22:22:19 +01:00
Torge Matthies
b07c33cac4
winepulse.drv: Make timer thread time-critical.
...
Signed-off-by: Torge Matthies <openglfreak@googlemail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-15 22:22:19 +01:00
Andrew Eikum
db87636c91
mmdevapi: Support older version of the AudioClientProperties structure.
...
Warframe when using a win10 prefix uses an xaudio2_9redist.dll which
uses the older AudioClientProperties structure (missing the Options
member).
Based on a patch by Alistair Leslie-Hughes.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-20 21:13:53 +01:00
Andrew Eikum
6314a75006
mmdevapi: Stub implement IAudioClient3.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 09:59:28 +02:00
Andrew Eikum
d8ae98d421
mmdevapi: Implement SetClientProperties.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 09:58:45 +02:00
Andrew Eikum
530c79fba2
mmdevapi: Implement IsOffloadCapable.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 09:58:42 +02:00
Andrew Eikum
370a538e54
mmdevapi: Stub implement IAudioClient2.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 09:58:40 +02:00
Andrew Eikum
a10824a03c
winepulse: Don't rely on pulseaudio callbacks for timing.
...
Contains contributions from Mark Harmstone and Zhiyi Zhang.
Some devices, especially USB devices, have very irregular timing or
very long periods. Some Windows applications (The Witcher 3) are built
to expect regular, short period times, and so would underrun when the
device timing didn't match their expectations. This patch decouples
the Windows-side timing from the OS-side timing so we can meet those
applications' requirements.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-18 21:40:02 +02:00
Rémi Bernon
2e1934598d
mmdevapi: Support new AUDCLNT_* creation flags.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=25173
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45700
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-13 21:22:11 +02:00
Andrew Eikum
227c47e7a0
mmdevapi: Return E_INVALIDARG for invalid share mode argument.
...
Matches Windows 10 behavior.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:16:56 +01:00
Andrew Eikum
3c1ee2f80d
mmdevapi: Set data pointer to NULL on IAudioCaptureClient::GetBuffer failure.
...
Matches Windows 10 behavior.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:16:53 +01:00
Andrew Eikum
b56d19d3a0
mmdevapi: Avoid reporting odd numbers of channels.
...
Fixes sound in Touhou Luna Nights with some surround sound
configurations.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-10 23:20:41 +02:00
Gabriel Ivăncescu
1a7026136b
winepulse.drv: Add support for A-law and u-law formats with volume changes.
...
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-28 20:12:22 +02:00
Gabriel Ivăncescu
cad249b688
winepulse.drv: Adjust the buffer volume before sending it to PulseAudio.
...
Only fixes the PulseAudio driver for the first bug, not ALSA.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=38182
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46450
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-28 20:11:57 +02:00
Michael Stefaniuc
bfb4de3cd9
winepulse.drv: Use the ARRAY_SIZE() macro.
...
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 10:16:02 +02:00
Andrew Eikum
2157afff48
winepulse: Wake all threads when operations are completed.
...
If threads A and B queue operations simultaneously, it would
previously be possible for B's operation to complete and wake thread A
from cond_wait, which would fail its condition check and then deadlock
as only thread B is awoken when A's operation completes.
This change wakes all threads waiting on the cond var, and each thread
already checks its condition before choosing to continue.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-13 22:38:59 +01:00
Andrey Gusev
d9131acb89
winepulse.drv: Remove redundant comparison.
...
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-10-17 17:05:13 +02:00
Michael Stefaniuc
703080afb4
winepulse: Avoid casting a COM object to an interface.
...
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-23 22:59:44 +01:00
Michael Stefaniuc
b7e066eb30
winepulse.drv: Use debugstr_guid() to trace a guid.
...
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-08 21:51:42 +09:00
Andrew Eikum
ee2310f767
winepulse.drv: Don't hold PA-owned buffer between capture callbacks.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-27 12:42:47 +09:00
Andrew Eikum
87754283be
winepulse.drv: Downgrade failed server connection message to WARN.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-26 10:53:25 +09:00
Michael Stefaniuc
cd9aa35f68
winepulse: Remove a redundant NULL check before HeapFree().
...
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-09 11:03:46 +09:00
Andrew Eikum
0766334d04
winepulse.drv: Check that the server connection actually succeeded.
...
When there is no PA server running, some older PulseAudio versions
have pa_mainloop_iterate fail instead of setting the connection state
to failed. So, we should also check the connection state after exiting
the loop to ensure it really succeeded before continuing.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-07 13:16:26 +09:00
Alexandre Julliard
9bfff40db5
winepulse.drv: Avoid some printf format warnings.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-23 22:01:26 +09:00
Andrew Eikum
1245f8335c
winepulse.drv: Buffer data locally when needed.
...
PulseAudio doesn't make any buffer size guarantees. With some hardware
and some configurations, PulseAudio will fail to allocate the full
buffer requested by the application. So, we have to store the data
within winepulse until there is enough room in the PulseAudio buffer
to accept it.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-20 12:08:26 +09:00
Andrew Eikum
92da5e5d73
winepulse: Include a period in the stream latency.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-20 12:08:16 +09:00
Andrew Eikum
899c3fc4c4
winepulse.drv: Avoid unrealistically low period sizes.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-20 12:08:12 +09:00
Andrew Eikum
a599ea83c8
winepulse.drv: Print a winediag error when PA buffer size is too small.
...
winepulse depends on PulseAudio to allocate the entire requested
buffer size. If it allocates less than that size, then mmdevapi
clients may not be able to write as much data as they expect. So, we
should warn the user that the PA buffer is too small.
This is a common symptom of users setting the PULSE_LATENCY_MSEC
environment variable, which would help in some situations with
winealsa, but is no longer required with winepulse.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-12 05:30:27 +01:00
Francois Gouget
413c6f60cf
Assorted spelling fixes.
...
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-02 12:59:52 +09:00
Svante Signell
9d5173f77d
winepulse.drv: Avoid PATH_MAX in Windows code.
...
Signed-off-by: Svante Signell <svante.signell@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-24 15:54:00 +09:00
André Hentschel
7f6634b2bd
winepulse: Add missing return after default case in a switch (Coverity).
...
Signed-off-by: André Hentschel <nerv@dawncrow.de>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-19 01:20:38 +09:00
André Hentschel
005ff50252
winepulse: Avoid 32-bit calculation with 64-bit result (Coverity).
...
Signed-off-by: André Hentschel <nerv@dawncrow.de>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-19 01:20:38 +09:00
Andrew Eikum
a410990f7c
winepulse: Prefer PulseAudio driver.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 14:41:40 +09:00
Mark Harmstone
b56682cc49
winepulse: Return PKEY_AudioEndpoint_PhysicalSpeakers device prop.
...
Edited by Maarten Lankhorst: No support for multiple devices in winepulse yet.
Synchronous static data initialization by Andrew Eikum <aeikum@codeweavers.com>.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 14:41:40 +09:00
Mark Harmstone
8c62cc5e66
winepulse: Add stub for GetPropValue.
...
Edited by Maarten Lankhorst: No support for multiple devices in winepulse yet.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 14:41:40 +09:00
Andrew Eikum
15323580f8
winepulse: In Shared mode, track device position in bytes.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 14:41:39 +09:00
Andrew Eikum
8ed553c3c7
winepulse: Always mute buffer.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 14:41:39 +09:00
Mark Harmstone
0d7cee0dd6
winepulse: Handle stream create failing correctly.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 14:41:39 +09:00
Sebastian Lackner
64e83ddcad
winepulse.drv: Add a missing linebreak to ERR message.
...
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-03 11:25:36 +09:00
Maarten Lankhorst
e1933acb7b
winepulse: Add support for IMarshal.
...
Based on Jeff Klein's patches for the other drivers.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-03 11:12:44 +09:00