Sebastian Lackner
c649ec3a02
xaudio2: Use assembly wrapper to call OnVoiceProcessingPassStart callback.
...
During a callback function, some games use the wrong function
signature for an xaudio2 function, which changed between xaudio2
versions. As a result, the EDI and ESI registers are overwritten by
the game. Apparently Windows's implementation happens not to use
these registers in a way that causes the crash.
This patch pushes EDI and ESI onto the stack before calling the
callback, then pops them back after the callback exits.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42520
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=43358
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-01 21:50:58 +01:00
Roger Zoellner
a303f9cd10
xaudio2: Don't return XAudio28 interface for XAudio2[0..7] objects in QueryInterface().
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=43660
Signed-off-by: Roger Zoellner <zoellner.roger@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-15 23:09:07 +02:00
Andrew Eikum
b747d6f6cc
xaudio2: Prefer builtin version.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-26 21:07:18 +02:00
Andrew Eikum
45babd780f
xaudio2: Fix ClassFactory ref counting.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-06 19:39:12 +01:00
Masanori Kakura
7ff0881775
xaudio2: Partially implement XA2SRC_SetChannelVolumes().
...
Signed-off-by: Masanori Kakura <kakurasan@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-22 22:26:47 +01:00
Andrew Eikum
f57246e5e5
xaudio2: Account for abandoned buffer bytes.
...
This should fix bug 44148, a regression caused by e2c73fc394
.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-11 18:21:29 +01:00
Andrew Eikum
e2c73fc394
xaudio2: Ignore buffers returned from OpenAL after Stop.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-30 19:07:04 +01:00
Kimmo Myllyvirta
8b94c5b51c
xaudio2: Add support for float formats with more than 2 channels.
...
Signed-off-by: Kimmo Myllyvirta <kimmo.myllyvirta@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-13 17:20:16 +01:00
Andrew Eikum
986a14f950
xaudio2: Try to increase OpenAL source limit.
...
openal-soft recently added support for applications to request new
source count limits. Older versions will silently ignore these
attributes.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-19 09:11:27 +02:00
Andrew Eikum
49078e00a5
xaudio2: Always set current OpenAL context before making AL calls.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-07 21:23:24 +09:00
Andrew Eikum
e733770416
xaudio2: Implement GetVoiceDetails for source and submix voices.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-02 13:25:10 +09:00
Andrew Eikum
b77ec00f1c
xaudio2: Shut down OpenAL in the correct order.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-02 13:25:07 +09:00
Sebastian Lackner
caff64333f
xaudio2_7: Unset DebugInfo->Spare[0] before destroying critical sections.
...
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-12 23:06:50 +09:00
Andrew Eikum
7bb885a3d3
xaudio2: Protect access to submix voice during creation (Coverity).
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-11 12:18:08 +09:00
Andrew Eikum
2c82e8b477
xaudio2: Protect access to source voice during creation (Coverity).
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-11 12:18:05 +09:00
Andrew Eikum
ecadabe25b
xaudio2: Handle openal source allocation failure.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-10 13:46:12 +09:00
Andrew Eikum
3934253513
xaudio2: Report incoming underruns to the application.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-26 14:54:35 +09:00
Andrew Eikum
2b2b179422
xaudio2: Use an HRESULT return code.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-21 17:01:44 +09:00
Andrew Eikum
121a69e028
xaudio2_9: Add xaudio2_9.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-20 14:48:37 +09:00
Andrew Eikum
d9e6a31c6e
xaudio2: Don't build interfaces for other versions.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-19 20:48:07 +09:00
Andrew Eikum
fb954b7b9f
xaudio2_8: Don't use IXAudio27 interface to call Initialize.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-19 20:48:07 +09:00
Andrew Eikum
0a8e8d190f
xaudio2: Remove run-time versioning of xapo objects.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-17 15:41:12 +09:00
Andrew Eikum
fb9f616b2b
xaudio2: Remove run-time version checks for XAudio2 object.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-17 15:40:58 +09:00
Andrew Eikum
adc6281ea1
xapofx1_1: Use shared source.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-15 01:44:53 +09:00
Andrew Eikum
80de4ba64d
xapofx1_2: Use shared source.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-15 01:44:53 +09:00
Andrew Eikum
1559b715a8
xapofx1_3: Use shared source.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-15 01:44:53 +09:00
Andrew Eikum
12d7ce689a
xapofx1_4: Use shared source.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-15 01:44:53 +09:00
Andrew Eikum
d8739d4433
xapofx1_5: Use shared source.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-15 01:44:53 +09:00
Andrew Eikum
5f15d5b37c
xaudio2_8: Use shared source.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-12 16:06:30 +09:00
Andrew Eikum
4ad4c61100
xaudio2: Explicitly version the 2.7 coclasses.
...
In versions 2.8 and later, no coclasses are provided by the API, so we
should version the old ones to make it clear they're out of date.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-12 16:05:02 +09:00
Nikolay Sivov
f505f5fdeb
xaudio2: Add another missing break for consistency.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-08 21:38:26 +09:00
Nikolay Sivov
f9be2024da
xaudio2: Added missing break in a switch (Coverity).
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-06 18:08:39 +01:00
André Hentschel
35eebeef0f
xaudio2_7: Check return of IAudioClient_Start (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-12-22 20:19:01 +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
Francois Gouget
c9a040b510
xaudio2_7: Make some functions static.
...
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-25 12:58:05 +09:00
Andrew Eikum
d672ebfeb8
xaudio2_7: Update current buffer position after flushing buffers.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-13 11:53:58 +09:00
Andrew Eikum
daed36fbe3
xaudio2: Add stub interface for FXEQ.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-28 12:45:02 +09:00
Andrew Eikum
9da38fdbee
xaudio2_7: Move APO implementations to a new file.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-28 12:45:02 +09:00
Andrew Eikum
539d7fb4e4
xaudio2: Implement CreateFX for legacy xaudio2 versions.
...
The various xapofx versions all use the same CLSID to identify the
same effect types. In order to differentiate the versions in Wine
without duplicating a ton of code into each xapofx DLL, I made new
internal CLSIDs for each version of xapofx, which xaudio2_7 registers
and uses to tell them apart.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-26 23:03:31 +09:00
Andrew Eikum
998e5a0432
xaudio2: Don't render less than a period of audio.
...
Sometimes the ALSA driver will report a very small amount of frames
available after a period signal. There is a bug in OpenAL 1.15 which
will crash the application if alcRenderSamplesSOFT is called with less
than 4 frames. And anyway, we shouldn't incur all of this overhead
just to render a couple of frames. So, just skip the rendering step if
we have less than a period of space available in the driver.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-22 16:47:26 +09:00
Andrew Eikum
61202a68b2
xaudio2: Explicitly trace the xaudio object version.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-20 00:30:40 +09:00
Andrew Eikum
3b9e089c63
xaudio2: Implement IXAudio28MasteringVoice::GetChannelMask.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-20 00:30:40 +09:00
Alexandre Julliard
d548639d97
xaudio2_7: Fix a typo.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-09 23:23:17 +09:00
Andrew Eikum
4185cc7a94
xaudio2_0: Add compatibility implementation and forward to xaudio2_7.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-08 12:53:49 +09:00
Andrew Eikum
c8f2d095b2
xaudio2: Register legacy AudioVolumeMeter CLSIDs.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
2015-10-07 13:27:22 +09:00
Andrew Eikum
e9459b047a
xaudio2: Register legacy AudioReverb CLSIDs.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
2015-10-07 13:27:22 +09:00
Andrew Eikum
831095ed93
xaudio2_2: Add compatibility implementation and forward to xaudio2_7.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
2015-10-06 17:21:00 +09:00
Andrew Eikum
7d7b1176da
xaudio2_6: Forward to xaudio2_7.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
2015-10-06 00:01:56 +09:00
Andrew Eikum
c4f49ac965
xaudio2_5: Forward to xaudio2_7.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
2015-10-06 00:01:55 +09:00
Andrew Eikum
a7ae7b47e5
xaudio2_4: Forward to xaudio2_7.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
2015-10-06 00:01:55 +09:00