Commit Graph

252 Commits

Author SHA1 Message Date
Robert Reif 17a8372302 Only copy number of bytes specified up to size of DevCaps structure. 2004-08-11 18:48:46 +00:00
Robert Reif 7bf7bce0da Add CRITICAL_SECTION debug info. 2004-08-04 18:14:21 +00:00
Francois Gouget eed1b5209d Added bytes_to_mmtime() to convert the stream position from bytes to
the requested MMTIME format. This function should be identical in all
drivers.
Remove the corresponding code from wodGetPosition() and
widGetPosition() and use bytes_to_mmtime() instead.
bytes_to_mmtime() uses no floating-point arithmetic to compute
TIME_SMPTE and no longer uses round(). It should have no integer
overflows either.
2004-07-23 23:01:21 +00:00
Francois Gouget 54751b230d Use round() instead of ceil() in wodGetPosition(TIME_SMPTE).
Fixes the corresponding winmm conformance test.
2004-07-19 20:08:06 +00:00
Francois Gouget 170dbf4243 An SNDCTL_DSP_SETDUPLEX failure should be a WARN(), not an ERR(),
since the OSS specifications say we have to call it before knowing if
the sound card is full-duplex capable.
2004-07-14 21:44:50 +00:00
Robert Reif 33e4506cda Get certification for VerifyCertification from driver to match
GetCaps.
Change OSS driver to report certified.
Change OSS driver to show message name rather than number in traces.
2004-07-06 18:43:57 +00:00
Francois Gouget d8e9b8f7aa Log the format when mapping the sound device (or failing to). 2004-06-16 20:06:48 +00:00
Francois Gouget 1d834f4717 Fix the check for SNDCTL_DSP_GETCAPS so that it is compliant with the
OSS specification.
Only test the different formats if tracing is on.
2004-06-15 20:25:46 +00:00
Robert Reif bdbb54f340 Fix calculation of SMPTE time (round up to full frame).
More accurate ms calculation.
2004-06-01 20:22:11 +00:00
Francois Gouget ceeed96a38 Use triggers to disable the sound input/output side we don't care
about when in pseudo fullduplex mode.
2004-05-20 01:16:10 +00:00
Robert Reif 4a787831f0 Add an interface name to wineoss, winealsa, winearts and winejack.
Add support for wave interface message where missing.
2004-05-11 04:28:13 +00:00
Francois Gouget 9f1aea2fb8 Assorted spelling fixes. 2004-05-05 01:09:24 +00:00
Francois Gouget 8ceb200817 We only support 8 and 16 bit sound so we should reject the other
formats.
2004-04-26 20:03:59 +00:00
Robert Reif a1f01d353c Cleanup reference counting.
Move notify array to buffer.
Add state info and fix GetStatus.
Remove unnecessary driver description flags.
2004-04-12 23:12:17 +00:00
Robert Reif dc4535f91a Remove trailing white space.
Cleanup white space and format in direct sound capture routines.
2004-04-12 22:01:47 +00:00
Francois Gouget 20547de012 Patch the fragment size if it does not match the current sound
format. This saves us from triggering a kernel freeze on some OSS 2.4
+ SoundBlaster 16 systems.
2004-04-09 19:05:09 +00:00
Robert Reif 86976d53e2 More duplex mode soundcard info. 2004-03-31 19:57:53 +00:00
Robert Reif 605064a4bf Print out sound card info for playback, capture and duplex modes.
Hardware capabilities can vary depending on usage mode.
Print out format requested and actual format returned.
2004-03-29 20:27:50 +00:00
Alexandre Julliard 9e4ed6460c .spec.c files are no longer used for 32-bit dlls. 2004-03-24 03:36:44 +00:00
Robert Reif af3fa1c48d Enable exact position calculation when hardware supports it. 2004-03-12 19:43:44 +00:00
Christian Costa 009c04a040 Replaced the timer and its callback by a thread for receiving midi in
events.
Handled DRVM_EXIT in OSS_midMessage.
2004-02-24 01:22:18 +00:00
Robert Reif d6993619ef Add secondary buffer array. 2004-02-16 20:23:42 +00:00
Robert Reif 20fff3d111 Enable hardware secondary buffer support on cards that support it (SB
live and audigy).
2004-02-13 21:10:21 +00:00
Robert Reif 61cb01781e Save oss device fd and creation flags in dsound buffer object. 2004-02-13 21:04:28 +00:00
Robert Reif e9b7222e34 Split buffer creation function into primary and secondary buffer
creation functions. Secondary buffer creation function is stubbed
out.
2004-02-13 20:56:21 +00:00
Robert Reif b6adacb81c Moved dsound mmap mapping info into dsound objects. 2004-02-13 20:44:42 +00:00
Dmitry Timoshkov ab2266de9a AFMT_AC3 might be not defined in the system headers. 2004-02-11 23:57:17 +00:00
Robert Reif a9d2fb8ee7 Fixed a problem on BSD.
Fixed a trace.
2004-02-09 20:55:30 +00:00
Robert Reif bcb1387929 Show sound card info in trace. 2004-02-06 05:20:14 +00:00
Christian Costa 485390de6f Added missing notifications to MIDI_NotifyClient.
Made checks less strict in midPrepare, only return an error for buffer
in queue.
Fixed time of input events in Alsa driver.
2004-02-05 01:24:28 +00:00
Alexandre Julliard 20b4585e3c Only link against libdxguid where necessary. 2004-01-27 00:11:16 +00:00
Francois Gouget 6b6ed724ae Add missing '\n's to debug traces. 2004-01-27 00:01:43 +00:00
Robert Reif e14a1b262a Added notify and property set to dsound output driver.
Cleaned up existing notify and property set for capture.
2004-01-20 01:47:27 +00:00
Gerald Pfeifer db1113fed1 Improve error messages in OSS_WaveOutInit() and OSS_WaveInInit() and
warn instead of aborting in case of problems reading mixer info.
2003-12-31 18:58:07 +00:00
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
Dimitrie O. Paun fbdfd910c1 Remove SYMBOLFILE and LDDLLFLAGS from Makefiles. 2003-10-11 01:09:15 +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
Daniel Marmier 7e0ddbc60f Fixed warnings with gcc option "-Wwrite-strings". 2003-10-07 22:54:17 +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
Christian Costa 4b40180e38 Fix modLongData.
Enable opening of MOD_SYNTH type devices.
Add some comments.
2003-09-04 00:04:37 +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
Francois Gouget 14a5d168e9 Fixed some common spelling errors. 2003-07-02 04:37:26 +00:00
Francois Gouget c5f775a9c7 Typos/spelling fixes. 2003-06-18 03:30:39 +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
Marcus Meissner dac51c005a Added include <errno.h>. 2003-05-06 18:25:11 +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
Dimitrie O. Paun 297f3d898d Define NONAMELESS{STRUCT,UNION} explicitly in the files that need them. 2003-01-07 20:36:20 +00:00
Francois Gouget 772cabeba9 Fix the BlockSize check. 2003-01-07 19:43:02 +00:00
Jeff Smith b9f0fce668 Correct all instances of mixMessage to mxdMessage. 2002-12-23 02:05:30 +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
Jeff Smith f88d00a25d MMDRV_GetDescription32 fix + a few cosmetic improvements. 2002-12-12 22:26:01 +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
Eric Pouech f086286d4f Better support for multiple midi devices on the OSS interface. 2002-11-20 19:46:35 +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
Alexandre Julliard b34fb35b31 Fixed warnings caused by conversion to -DSTRICT. 2002-10-18 23:48:57 +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
Alexandre Julliard 77afd6c47e Made some more spec file entries optional or unnecessary.
Fixed a few DLLName/DLLFileName mismatches.
2002-06-21 19:15:45 +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
Alexandre Julliard 2ab7625934 Removed most imports of ntdll since we no longer import Wine internal
functions from there.
2002-05-17 03:37:12 +00:00