Eduard Permyakov
975d0632a1
dsound: Commit next audio chunk between play cursor and write cursor to playing.
...
This region of the audio buffer is forbidden to be written to by the
DirectSound specification. The documentation states: "The write cursor
is the point after which it is safe to write data into the buffer. The
block between the play cursor and the write cursor is already committed
to be played, and cannot be changed safely." However, some applications
still do this, which has lead to audio glitches only when using the Wine
DirectSound implementation. Experiments showed that the native DirctSound
implementation will still play the old audio the first time around when the
buffer region gets overwritten. Use an approach of copying the next forbidden
region into a "committed buffer" to add the same behavior to the Wine
implementation.
Out of performance considerations, only copy data to the committed buffer
when we detect that an overwrite is possible (i.e. the current mixing
region of the buffer gets locked).
Signed-off-by: Eduard Permyakov <epermyakov@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 22:48:41 +02:00
Hiroki Awata
8116d4e11c
dsound: Notify DSBPN_OFFSETSTOP earlier.
...
Some games may not receive the DSBPN_OFFSETSTOP event and get stuck if
CloseHandle is called immediately after IDirectSoundBuffer::Stop. To
solve this problem, IDirectSoundBuffer::Stop will immediately notify
the DSBPN_OFFSETSTOP event.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=41292
Signed-off-by: Hiroki Awata <castaneai@by.black>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-07 21:21:31 +02:00
Alistair Leslie-Hughes
2e8bd2682a
dsound: IDirectSoundBuffer8 GetStatus return DSBSTATUS_LOCSOFTWARE for deferred buffers.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=21014
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-18 22:46:37 +01:00
Zebediah Figura
91625e43f4
dsound: Select the nth effect matching the given CLSID in GetObjectInPath().
...
Instead of selecting the nth effect overall and checking whether it matches.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-03 21:24:01 +02:00
Akihiro Sagawa
70aeb7e4b0
dsound: Make GlobalHandle() for the sound buffer failed.
...
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-11 15:54:49 +01:00
Zebediah Figura
e091903999
dsound: Use an SRW lock for the buffer lock.
...
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-03 20:48:04 +01:00
Zebediah Figura
1308700843
dsound: Use an SRW lock for buffer_list_lock.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48408
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-03 20:48:04 +01:00
Alistair Leslie-Hughes
ff4ef417b7
dsound: Trace each special effect as it's processed.
...
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-05 19:51:09 +02:00
Alexandre Julliard
4c018c32ce
dsound: Make a qsort() callback function cdecl.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-22 09:56:53 +02:00
Alistair Leslie-Hughes
9a258c5dd7
dsound: IDirectSoundNotify is only available when DSBCAPS_CTRLPOSITIONNOTIFY is specified.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45473
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 21:01:56 +01:00
Alistair Leslie-Hughes
061121b81a
dsound: Trace ref in a consistent way.
...
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-11 17:01:31 +01:00
Alistair Leslie-Hughes
074de9258d
dsound: Don't trace current thread ID.
...
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-18 20:59:38 +02:00
Zebediah Figura
fe8e9daa1b
dsound: Call interface methods properly.
...
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-03 20:46:02 +02:00
Andrew Eikum
468477b694
dsound: Avoid NULL pointer dereference (Coverity).
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-11 12:17:55 +09:00
Michael Stefaniuc
bb72548f38
dsound: Use a better name for IDirectSoundBufferImpl_Create().
...
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-22 13:50:45 +01:00
Michael Stefaniuc
d51d55bab8
dsound: Simplify error handling when creating a sound buffer.
...
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-22 13:50:42 +01:00
Michael Stefaniuc
e69d9ec3c4
dsound: A version 1 3d secondary buffer allows SetPan().
...
For version 8 DSBCAPS_CTRL3D and DSBCAPS_CTRLPAN are mutually exclusive
and a sound buffer cannot be created when both flags are set.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-02 23:45:17 +09:00
Alexandre Julliard
8427c7816d
dsound: Fix an error return code.
2015-03-27 11:33:50 +09:00
Francois Gouget
359fbe829a
dsound: Remove unneeded NONAMELESSXXX directives.
2015-03-11 22:10:31 +09:00
Mark Harmstone
55ed98cb88
dsound: Pipe audio data through DMOs.
2015-03-11 13:18:08 +09:00
Mark Harmstone
862d7dae75
dsound: Implement GetObjectInPath.
2015-03-10 23:53:43 +09:00
Mark Harmstone
17056b9f30
dsound: Implement SetFX.
2015-03-10 23:53:40 +09:00
Mark Harmstone
e6ae73359f
dsound: Keep track of locked bytes.
2015-03-10 23:53:17 +09:00
Mark Harmstone
d4d14cdef0
dsound: Pretend we have hardware buffers.
...
When running in Windows XP mode, XAudio2 will refuse to output surround sound
unless it can open a buffer with DSBCAPS_LOCHARDWARE.
2015-01-13 17:51:54 +01:00
Marton Balint
6d009b988b
dsound: Convert freqAdjust and freqAcc to integers.
...
Fixes resampling errors caused by truncating floating point numbers.
2014-12-29 22:20:30 +01:00
Andrew Eikum
ee126c96f1
dsound: Report buffer notifications in offset order.
2014-12-04 14:03:16 +01:00
Andrew Talbot
b0e95d27a9
dsound: Indentation fix.
2012-12-17 11:47:38 +01:00
Michael Stefaniuc
b18bc659d6
dsound: Avoid a TRUE:FALSE conditional expression.
2012-08-14 11:59:26 +02:00
Andrew Eikum
bf263a347d
dsound: Fail if app requests 3D buffer interface on a non-3D buffer.
2012-06-14 18:20:29 +02:00
Andrew Eikum
f0be44c82d
dsound: Don't destroy primary buffer until device is released.
2012-05-09 17:49:33 +02:00
Andrew Eikum
4354be123c
dsound: Don't derive the secondary position from the primary position.
2012-05-02 12:00:02 +02:00
Andrew Eikum
f393a98a8a
dsound: Convert from fixed to floating point.
2012-05-02 11:59:58 +02:00
Michael Stefaniuc
84d5317302
dsound: Remove the now obsolete IDirectSoundBufferImpl_Destroy().
2012-01-20 13:34:20 +01:00
Michael Stefaniuc
c7f5f10aab
dsound: Merge IDirectSoundNotify into the secondary buffer object.
2012-01-20 13:33:33 +01:00
Michael Stefaniuc
e0d81e55e2
dsound: Merge IDirectSound3DBuffer into the secondary buffer object.
2012-01-19 21:08:49 +01:00
Michael Stefaniuc
3ec0b056d5
dsound: Support IKsPropertySet in the primary buffer too.
2012-01-17 11:53:25 +01:00
Michael Stefaniuc
48ca5924b4
dsound: Merge IKsPropertySet into the secondary buffer object.
2012-01-17 11:53:19 +01:00
Michael Stefaniuc
fd04e770f1
dsound: Drop "Buffer" from the IKsPropertySet method names.
2012-01-17 11:53:05 +01:00
Andrew Eikum
9cf7f95483
dsound: Lock the source buffer during duplication.
2012-01-17 11:51:25 +01:00
Michael Stefaniuc
5959e1d48c
dsound: Use AddRef to set the refcounts at object creation.
2012-01-16 12:45:33 +01:00
Alexander E. Patrakov
663bc47602
dsound: Always resample buffers in mixer thread.
2011-12-29 17:56:48 +01:00
Andrew Eikum
7fae5f4f9f
dsound: Validate buffer pointers in Unlock methods.
2011-09-26 18:38:11 +02:00
Andrew Eikum
b1fdaa81b0
dsound: Remove hardware acceleration support.
2011-09-26 18:38:07 +02:00
Michael Stefaniuc
c35745d45a
dsound: Handle primary buffers in two more IDirectSoundBuffer methods.
2011-08-31 19:43:06 +02:00
Michael Stefaniuc
a2bc634eaa
dsound: Handle primary buffers in IDirectSoundBufferImpl_SetFormat.
2011-08-31 19:43:06 +02:00
Michael Stefaniuc
6d7c38256f
dsound: Fix refcounting for the secondary buffer object.
...
This fixes a regression introduced in 6b64e0090c
.
2011-08-26 11:31:59 +02:00
Michael Stefaniuc
6b64e0090c
dsound: Kill SecondaryBufferImpl with extreme prejudice.
2011-08-24 12:14:46 +02:00
Michael Stefaniuc
7da80d1f01
dsound: Basic COM cleanup for the IDirectSoundBuffer8 iface.
2011-08-24 12:14:46 +02:00
Frédéric Delanoy
b5a33dab88
dlls: Assorted spelling fixes.
2011-08-02 20:47:51 +02:00
Akihiro Sagawa
2ab3d22663
dsound: Don't copy the position notify on duplicate.
2011-07-22 15:44:16 +02:00