Jeremy Shaw
f7cae99969
Move the data around when the ring buffer is resized so that the empty
...
messages are between the tosave and toget indexes.
2003-12-12 05:55:26 +00:00
Robert Reif
3f1498fc6c
Fixes more use before set races.
...
Work around for queue reordering feature.
Stop recording on reset.
Better debug info.
Dsound callback capture state fix.
2003-11-14 21:03:24 +00:00
Robert Reif
342d59f262
Fix a race condition where result could be read before set.
...
Fix test to use correct event in interactive mode.
2003-11-11 00:25:50 +00:00
Robert Reif
636f29d83c
Fix wave in stop.
2003-11-05 23:22:23 +00:00
Robert Reif
0c55534707
Fixed bug in capture stop. Only current header should be returned to
...
app.
Make wave fragment size adjustable to guarantee better than 10 ms
latency. Makes a difference for 8 kHz voice apps.
2003-11-04 04:20:47 +00:00
Robert Reif
d6f746de4c
Cache the wave volume so it can be returned rather than the OSS
...
derived value when possible.
2003-10-30 23:08:46 +00:00
Robert Reif
be4281522d
Added support for getting the wave device name.
2003-10-28 00:15:16 +00:00
Robert Reif
4824460772
Clear a new hardware buffer to proper silence values based on format.
...
Allows dxdiag to play 8 bit sounds in hardware primary buffer now.
2003-10-27 22:00:10 +00:00
Oleg Prokhorov
cf8b84c19f
Another portion of HeapReAlloc fixes.
2003-10-15 21:01:05 +00:00
Robert Reif
9964e42988
Fixed SMPTE time.
...
Fixed bad wave in position at startup and reset.
2003-10-09 19:45:39 +00:00
Robert Reif
6b145f0473
Allow wave emulated capture while doing hardware accelerated
...
playback.
2003-09-27 02:20:19 +00:00
Robert Reif
3be10b0458
Avoid divide by zero if the sound driver returns 0 for speed.
2003-09-25 20:23:52 +00:00
Robert Reif
99b0e8fa66
Added volume and pan support to primary buffers.
...
Added more property set support.
2003-09-19 00:10:51 +00:00
Robert Reif
725d8c39aa
Device enumeration callbacks should return a NULL guid for default
...
devices.
Fixed some volume and pan cases.
Added missing property set.
Fixed capture notification bug.
2003-09-15 20:08:05 +00:00
Alexandre Julliard
e37c6e18d0
Fixed header dependencies to be fully compatible with the Windows
...
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Robert Reif
7d43d7bb3b
Use the drivers to get device capabilities and property sets.
2003-09-03 19:28:20 +00:00
Mike Hearn
61402c64de
Fixed the error message in Wave(In|Out)Init, it used to give a
...
confusing message, now uses strerror.
2003-08-29 22:12:15 +00:00
Robert Reif
a9460b3dbe
Use same GUIDs as win2k and xp for dsound drivers.
2003-07-28 19:02:29 +00:00
Robert Reif
a104d91ce8
Added a dynamically growing ring buffer for oss, alsa, arts, and nas.
2003-06-04 20:28:04 +00:00
Eric Pouech
639db3ef8b
Stop wavemap lookup if a device isn't functional (spotted by Lionel
...
Ulmer).
2003-05-11 03:30:51 +00:00
Robert Reif
bcfff87be5
Added driver property set implementation.
...
Fixed notify release bug.
2003-05-02 20:16:20 +00:00
Robert Reif
aa8559e84a
Fixed a problem where OSS trigger support is inconsistent.
2003-04-29 22:54:09 +00:00
Robert Reif
144d7f5da2
Added driver notify implementation.
2003-04-29 22:47:59 +00:00
Robert Reif
f64f69abe7
Fixed bug caused by OSS inconsistent trigger operation on different
...
hardware.
2003-04-26 02:09:20 +00:00
Robert Reif
303d93680d
Better error messages.
2003-04-10 18:33:46 +00:00
Alexandre Julliard
c2ebe1ff93
Removed uses of the non standard ICOM_VTBL macro.
2003-04-10 18:17:34 +00:00
Eric Pouech
f5554c3236
Work around not implemented ioctl in BSD.
2003-04-05 05:09:57 +00:00
Alexandre Julliard
7c7bd1c359
Avoid warnings.
2003-03-17 00:00:53 +00:00
Alexandre Julliard
3453746aa1
Added #ifdef checks for SOUND_MIXER_INFO.
2003-03-15 22:23:27 +00:00
Robert Reif
89b469fefe
Added support for multiple direct sound devices.
2003-03-15 00:54:11 +00:00
Robert Reif
a20f86fc7b
Fixed bug where the enable state of the output and input were not set
...
properly when doing full duplex.
Fixed bug where resetting the output would affect the capture when
doing full duplex.
2003-03-07 20:37:25 +00:00
Robert Reif
f851a860fc
Capture thread checks queue for more headers before giving error.
...
Capture driver work started.
2003-03-04 02:11:21 +00:00
Robert Reif
bcc4bb2d06
Started to add support for a real direct sound capture driver.
...
Changed the capture fragment size but this still needs tuning for best
performance.
2003-02-14 23:59:15 +00:00
Alexandre Julliard
f8aa3b506c
Added -Wpointer-arith gcc flag, and fixed the resulting warnings.
2003-01-23 21:32:35 +00:00
Francois Gouget
9140349886
Warn if open_count is already 0 when OSS_CloseDevice is called.
...
Don't decrement it in that case.
2003-01-16 01:16:46 +00:00
Francois Gouget
2147b9f5da
Return MMSYS_NOERROR even if we don't open the device with the
...
requested format, otherwise OSS_OpenDevice will not increment
open_count.
Use -1 to signal OSS_RawOpenDevice not to do ioctls because 0 is
ambiguous (also means mono as opposed to stereo).
2003-01-16 00:19:04 +00:00
Francois Gouget
6bbce6cd22
Initialize the pwave array whenever we don't have a hardware buffer.
...
Always create the wineoss thread.
Change the mmap ERR into a TRACE: there are normal circumstances where
mmap will fail and we can deal with them.
2003-01-15 00:44:50 +00:00
Francois Gouget
ce0557fe8e
Modify OSS_Wave{In,Out}Init to report the exact capabilities of the
...
OSS driver.
Add support for the 48kHz and 96kHz formats.
2003-01-11 22:47:51 +00:00
Francois Gouget
ede0e8ae64
In OSS_RawOpenDevice, always retrieve the device format and store it
...
in the OSS_DEVICE structure.
Modify our internal functions so that they can be told to still open
the device even if the device format is not an exact match.
In wodOpen return the actual device format if the WAVE_DIRECTSOUND
flag is set.
Fixes DirectSound on i810 soundcards (i.e. cards supporting only
48000x16x2).
2003-01-07 23:08:05 +00:00
Francois Gouget
772cabeba9
Fix the BlockSize check.
2003-01-07 19:43:02 +00:00
Eric Pouech
59227d6b80
Fixed hangup condition at the end of some playback.
2002-12-15 02:59:13 +00:00
Francois Gouget
e4eee61a3d
If unable to set the desired format, OSS_RawOpenDevice should call
...
TRACE, not ERR.
2002-12-15 01:12:47 +00:00
Chris Morgan
50bd40c775
Reset the oss device before we try to close it. Fixes hang on startup
...
of Starcraft due to oss device being in a bad state.
2002-12-10 19:06:51 +00:00
Francois Gouget
ffd98e9c59
OSS_RawOpenDevice should return an error if the format is not
...
supported.
2002-11-04 22:39:19 +00:00
Eric Pouech
580235504d
Fixed some multi-sound card related bugs.
2002-10-09 20:37:09 +00:00
Alexandre Julliard
6ac4da7efb
Fixed file descriptor corruption.
2002-10-09 18:15:05 +00:00
Eric Pouech
dcb44969b9
Added support for several soundcard.
...
Remove non full duplex mode in code.
OSS Commercial doesn't properly handle SNDCTL_DSP_RESET, so close/open
device to workaround this issue (by Ove Kaaven).
2002-10-07 18:23:40 +00:00
Ove Kaaven
9fd3538b45
Tweaks to improve playback performance and reduce sound glitches:
...
- wodGetPosition does not send an update message to the player thread;
this reduces the accuracy of the readout from byte-accuracy to near
fragment-accuracy, but we save 2-4 context switches and kernel
scheduling penalties.
- if FeedDSP runs out of data, do not flush output buffers before
notifications are sent and given the chance to provide more sound data.
Do not flush before we're down to the last fragment.
- messages to the player thread are signaled using Unix pipes instead
of Win32 synchronization primitives, to avoid having the player thread
wait for the wineserver (and context switches from/to it) before the
it can feed more data to the sound card.
- ring buffer size is increased from 30 to 192 to support some games
that fires 128 messages at once to determine DMA buffer size.
2002-08-26 21:49:42 +00:00
Patrik Stridvall
d016f819f1
Added include protection for unistd.h and sys/time.h.
2002-08-17 00:43:16 +00:00
Michael Stefaniuc
ec7d7b72b2
- Convert HDRVR to a void*.
...
- Fix declaration of DriverCallback().
2002-08-09 01:02:25 +00:00
Eric Pouech
d075eff2e9
Ensured full duplex mode is only used with same parameters in in/out
...
streams.
Some more work towards multiple audio cards support.
2002-06-28 17:31:31 +00:00
Vincent Béron
9a62491660
Removed trailing whitespace.
2002-05-31 23:06:46 +00:00
Patrik Stridvall
5e6943f421
Fixed some issues found by winapi_check.
2002-05-22 01:55:18 +00:00
Eric Pouech
90b71b5191
Fixed multi-thread access to local variables (mainly fd for
...
/dev/dsp).
God rid of obsolete macro.
Fixed some slight init issues.
2002-04-22 22:35:30 +00:00
Eric Pouech
a1e57324e4
More robust and less time consuming playback.
2002-04-01 21:02:49 +00:00
Alexandre Julliard
0799c1a780
Added LGPL standard comment, and copyright notices where necessary.
...
Global replacement of debugtools.h by wine/debug.h.
2002-03-09 23:29:33 +00:00
Andreas Mohr
bfbe3b5c62
Fixed ==/!= mismatch.
2002-01-29 02:56:50 +00:00
Francois Gouget
54697dd302
Print the strerror instead of just the errno.
2002-01-21 18:00:42 +00:00
Eric Pouech
738669a709
Fixed the wodReset implementation, internal messages priority, full
...
duplex code, wait algorithm for feeding the OSS buffer.
2002-01-12 21:15:08 +00:00
Eric Pouech
d547450b35
Added full-duplex capability.
...
Added missing init for wave-in.
Fixed pause behavior in wave-out.
Added message-ring deletion.
Added experimental full-duplex capability.
2001-12-21 20:28:43 +00:00
Eric Pouech
37083176e8
Thawed some freezes.
...
Cleaned up time and notification handling.
Typos fixes (Gerard).
Added breakloop support.
2001-12-14 22:44:29 +00:00
Simon Britnell
5ba7438df1
Fix a loop playing failure and a problem with choppy sound.
2001-11-19 02:10:50 +00:00
Eric Pouech
fa7a8c6306
Fixed some race conditions in notification vs. operation
...
synchronization using the same in process message ring in waveIn as in
waveOut.
2001-11-12 15:55:37 +00:00
Simon Britnell
78bae03241
Cleaned up the wodPlayer functionality to make it easier to follow.
...
Changed notification to be calculated from bytes played rather than
time elapsed.
2001-11-09 20:26:59 +00:00
Eric Pouech
96c514bdf8
Replaced memset by hand made equivalent to work around some buggy
...
memset implementations.
2001-08-18 16:09:41 +00:00
Alexandre Julliard
1922c72b8a
Removed unnecessary inclusion of heap.h.
2001-07-25 00:43:29 +00:00
Patrik Stridvall
044855c6ec
Documentation fixes.
2001-07-11 18:56:41 +00:00
Huw D M Davies
738e2461f0
Attempt to write fragments and check whether we can notify the client
...
after every message.
2001-05-29 20:52:23 +00:00
Francois Gouget
e76218dd61
Add '\n' at the end of traces.
2001-05-09 17:31:31 +00:00
Eric Pouech
7a3ec5d705
Fixed some buffers issue in recording.
...
Zeroed unnecessary second parameter for WIM_DATA notification.
2001-04-13 22:26:51 +00:00
Ove Kaaven
e746f665ef
Show an error if small enough fragment sizes couldn't be set.
...
Force a complete close/reopen of the sound device if pause is
requested in DirectSound mode (many drivers require this).
2001-03-21 03:37:33 +00:00
Andreas Mohr
1ea771c218
Don't touch WAVEHDRs dwLoops variable.
2001-02-12 01:24:18 +00:00
Huw D M Davies
53cb7cecc5
Fix off by one error in buffer length check.
2001-01-18 20:29:41 +00:00
Eric Pouech
ad250aac34
Now using manifest constant instead of raw values for all the
...
DRV_QUERY??? values.
2001-01-04 19:53:51 +00:00
Marcus Meissner
f7e09367bf
Set fragments for wave input to 7 x 1024 byte.
2001-01-04 19:28:14 +00:00
Marcus Meissner
7a01b38321
Read 4 bytes to wake up GETISPACE.
2001-01-02 20:32:33 +00:00
Marcus Meissner
eba8cee584
Handle errors for IDsDriver_GetPosition.
...
Report DSERR_UNINITIALIZED on non-opened WineOSS audio device.
2000-12-21 20:49:26 +00:00
Ove Kaaven
96f9a8d609
Enable the DirectSound HAL for sound drivers that do not report
...
DSP_CAP_REALTIME. Set precision of these to 256 bytes (about 3ms).
2000-12-21 20:20:34 +00:00
Alexandre Julliard
db0747d095
Removed some unnecessary includes.
...
Got rid of ldt.h.
2000-12-13 20:23:41 +00:00
Stephane Lussier
cb2abbc2d3
- Read all the fragments available, not only one fragment before
...
going back to sleep.
- Use SNDCTL_DSP_SETTRIGGER ioctl command to trigger the start the
recording. If this command is not supported by the device, read 4
bytes in the sound device instead.
2000-11-25 02:10:53 +00:00
Andreas Mohr
4ff660838f
Transform device open error TRACE()s into WARN(); better error msgs.
2000-10-25 20:29:39 +00:00
Francois Jacques
0282825f63
- All audio device handles are initialized to -1 and set to -1 when closed.
...
- WINE_WM_HEADER event should *NOT* make the recording thread start. The
thread should only start through waveInStart. The application calling
waveInAddBuffer might not be in a state to provide another buffer in
a period of time short enough to avoid buffer underrun in widRecorder
thread.
- widRecorder - improved robustness of widRecorder to avoid some data
loss that occured when not reading one full fragment from the OSS
audio driver.
2000-10-24 02:20:01 +00:00
Andreas Mohr
c472708f69
Added sleep time calculation for the wodPlayer thread.
...
Changed the wodPlayer thread messaging to use its own fast 30 entries
ring buffer list.
2000-10-22 23:43:15 +00:00
Francois Jacques
11805e0a4b
Should test unixdev against -1 (see wodOpen/widOpen).
...
widRecorder: bytesRead is now tested against (DWORD) -1.
2000-10-19 20:26:04 +00:00
Andreas Mohr
1563abe8ec
- stupid spelling fixes
...
- some more loadorder array work
2000-10-13 20:26:52 +00:00
Marcus Meissner
0d30481a31
Suppress junk noise at startup of DirectSound on SB Live! and ES 1371.
2000-10-12 20:37:51 +00:00
Huw D M Davies
044e082cf5
Set close on exec() flag at times when we leave /dev/dsp and
...
/dev/sequencer open.
2000-09-22 20:54:51 +00:00
Eric Pouech
c70082fb22
Fixed recording format settings (16 bit was broken) and reentrancy
...
issues.
2000-08-25 21:33:45 +00:00
Eric Pouech
731e9f5309
- removed (now obsolete) driver.h file (it's content is now in mmsystem.h)
...
- upgraded vfw.h content
2000-07-26 18:07:04 +00:00
Eric Pouech
eef1fb8f41
Fixed first seek on MEM mmio files.
2000-07-23 13:35:39 +00:00
Patrik Stridvall
6314ad696b
Fixed some warnings.
2000-07-15 21:33:38 +00:00
Eric Pouech
b4905d2241
Cleaned up loading/init code in OSS.
...
Cleaned up getDevCaps in midi part.
Implemented asynchronous waveIn recording using a thread.
2000-06-24 17:54:43 +00:00
Ove Kaaven
fd92ebdb4c
Implemented the DirectSound HAL in winmm's wineoss (Open Sound System)
...
driver, and winmm's interface for DirectSound to access it. It
requires the ability to mmap /dev/dsp, to trigger playback, and
sample-accurate position readouts. (If the soundcard's device driver
does not report these capabilities, wineoss will report the HAL as
unavailable and force DirectSound to use its HEL instead.)
2000-06-24 12:55:33 +00:00
Ove Kaaven
df0dd9ab49
Fixed WHDR_DONE race condition.
2000-06-20 20:18:09 +00:00
Andreas Mohr
2e011a5243
Lots of spelling fixes that accumulated in my tree again, made several
...
error msgs more verbose, doc updates.
2000-06-01 23:28:25 +00:00
Eric Pouech
3de3cad9ce
Fixed division by zero.
2000-05-11 21:42:52 +00:00
Eric Pouech
a1894523b4
Changed WAVEHDR notification heuristic.
...
Added preliminary support for loops in WAVEHDRs.
Fixed issues when mixing open and getCaps calls.
2000-05-09 22:35:47 +00:00
Marcus Meissner
502e15b6e7
open() the OSS sounddevice non-blocking in case another process has it
...
open already.
2000-03-30 20:22:12 +00:00
Francois Gouget
6d77d3a1df
Use min/max instead of MIN/MAX.
2000-03-25 21:44:35 +00:00
Patrik Stridvall
fcfacb95a7
Added/fixed some documentation reported by winapi_check.
2000-03-24 20:46:04 +00:00