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
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
Nikola Pavlica
fc84b8675a
dsound: Added 7.1 to stereo downmix.
...
Signed-off-by: Nikola Pavlica <pavlica.nikola@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-25 17:28:11 +02:00
Jacek Caban
e8fd1c73b2
dsound: Wait on thread handle instead of dedicated event in DirectSoundDevice_Release.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-26 18:52:44 +01:00
Nikolay Sivov
339d9e3a6a
dsound: Use correct pointer type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-11 20:13:23 +02:00
Huw Davies
e6f8f136fa
dsound: Pass sample count to the normfunction.
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-01 23:35:42 +01:00
Huw Davies
134b684fd9
dsound: Use frame rather than byte counts to clarify the mixing.
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-01 23:35:40 +01:00
Huw Davies
7a27cc89aa
dsound: Don't propagate writepos in the non-WRITEPRIMARY case - it's unused.
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-01 23:35:34 +01:00
Erich E. Hoover
b7118753f4
dsound: Clear the temporary mixing buffer after allocation.
...
Signed-off-by: Erich E. Hoover <erich.e.hoover@wine-staging.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-06 19:28:46 +01:00
Andrew Eikum
1def346bab
dsound: Support downmixing quadraphonic to stereo.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-19 23:42:06 +09:00
Andrew Eikum
88dd3b4f6e
dsound: Support downmixing 5.1 to stereo.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-19 23:42:02 +09:00
Maarten Lankhorst
db316c1243
dsound: Remove unconditional memory allocation in mixing thread.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-18 10:36:56 +09:00
Maarten Lankhorst
5b0914ece9
dsound: Remove state machine from render buffer.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-18 10:36:54 +09:00
Maarten Lankhorst
a330b01143
dsound: Fixup DSOUND_WaveQueue checks.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-17 11:51:41 +09:00
Maarten Lankhorst
09890d7142
dsound: Mix float natively.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-14 14:39:52 +09:00
Maarten Lankhorst
569ed159b0
dsound: Use AudioClient buffer statistics.
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-14 14:39:52 +09:00
Aric Stewart
0aea30e44c
dsound: Do not wait on mixer thread exit on dsound release.
...
This fixes a loader deadlock if the dsound object is being released
during a dll unload.
2015-03-18 19:35:43 +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
Michael Stefaniuc
91e59d99f9
dsound: Avoid comparing BOOL variables with TRUE (PVS-Studio).
2015-03-09 22:06:45 +09:00
Mark Harmstone
77b2ab21f4
dsound: Support 5.1 sound.
2015-01-09 17:37:50 +01:00
Mark Harmstone
3ba100d81c
dsound: Support quadraphonic sound.
2015-01-09 17:37:48 +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
Mark Harmstone
25b13178de
dsound: Use array for channel volumes.
2014-12-29 12:15:50 +01:00
Mark Harmstone
b7a2f0879c
dsound: Remove unused struct entries.
2014-12-29 12:14:56 +01:00
Andrew Eikum
29d1ccc7e2
dsound: Don't send notify events before played range.
2014-12-19 19:14:15 +01:00
Andrew Eikum
ee126c96f1
dsound: Report buffer notifications in offset order.
2014-12-04 14:03:16 +01:00
Andrew Eikum
ace3c315b8
dsound: Don't change play position if IAudioClient methods fail.
2013-11-22 11:34:53 +01:00
Maarten Lankhorst
f5abeb8471
dsound: Use a thread instead of a timer for greater precision.
2012-12-27 18:47:53 +01:00
Maarten Lankhorst
605cd62c7d
dsound: Create a primary_pwfx separately from pwfx.
2012-11-22 14:53:14 +01:00
Andrew Eikum
8ba4090fc3
dsound: Don't exit early in mixer thread.
2012-10-10 20:34:10 +02:00
Andrew Eikum
1cc9ecb558
dsound: Don't use IAudioClock::GetPosition to determine buffer fullness.
2012-05-16 18:30:18 +02:00
Andrew Eikum
98c653bc8b
dsound: Resample to float, not device format.
2012-05-15 16:26:31 +02:00
Andrew Eikum
20356f7458
dsound: Compute mix buffer's size more accurately.
2012-05-15 11:18:07 +02:00
Andrew Eikum
5cce1d9da2
dsound: Get rid of redundant primary_mixpos member.
2012-05-15 11:17:53 +02:00
Andrew Eikum
1053bfb48d
dsound: Express buffer positions in terms of bytes, not fragments.
2012-05-14 19:58:32 +02:00
Andrew Eikum
2c6087457b
dsound: Remove minlen, since we always mix full chunks anyway.
2012-05-14 19:58:24 +02:00
Alexander E. Patrakov
275dfb83f2
dsound: Added a windowed-sinc resampler.
2012-05-08 09:29:47 +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
Alexander E. Patrakov
93a0ca7c6c
dsound: Clean up channels.
2012-05-01 19:16:23 +02:00
Alexander E. Patrakov
ab4ef6636d
dsound: Clean up cp_fields.
2012-05-01 19:16:00 +02:00
Alexander E. Patrakov
f88f3d4149
dsound: Replace convert() functions with get() and put().
2012-05-01 19:15:49 +02:00
Alexander E. Patrakov
0195e01990
dsound: Clean up MixToTemporary().
2012-05-01 19:15:12 +02:00
Austin English
c6bda4dc17
dsound: Remove an unnecessary assignment (LLVM/Clang).
2012-01-31 13:47:39 +01:00
Jörg Höhle
35cdb8bb22
dsound: Fix the computation of the mixer position in bytes.
2012-01-03 19:27:16 +01:00
Alexander E. Patrakov
663bc47602
dsound: Always resample buffers in mixer thread.
2011-12-29 17:56:48 +01:00
Andrew Eikum
c60583ab8b
dsound: Fix type conversion problems.
2011-10-18 15:11:32 +02:00