212 Commits

Author SHA1 Message Date
Chris Robinson
dddacc25a5 Store a duplicate of the mmdevapi device ID 2012-03-06 13:15:55 -08:00
Chris Robinson
2ba2da467c Add a comment explaining the pulseaudio prop_filter 2012-03-06 12:01:15 -08:00
Chris Robinson
f2b64fd111 Update the ALCdevice in winmm's reset method instead of open 2012-03-06 10:14:05 -08:00
Chris Robinson
3131104595 Filter out a couple pulseaudio stream properties by setting them to 0-length data
It seems Qt/Phonon will globally set media.role and phonon.streamid properties,
causing them to apply even to our streams if they happen to be loaded in the
same process. This is particularly a problem because media.role gets set to
"event", preventing the streams from showing in pavucontrol.
2012-03-05 13:00:51 -08:00
Chris Robinson
f64bdc4bd4 Returned pa_operations can be NULL 2012-03-05 08:37:50 -08:00
Chris Robinson
fe6e532c87 Use a separate backend callback to start playback of the device
This allows us to properly update the ALCdevice and its resources with the new
parameters before starting playback, instead of expecting the mixer to block
and wait after it has begun.

This also lets us avoid holding the device lock while resetting and starting
the device, which helps prevent lock inversion on some backends (ie, one thread
locking A then B, and another thread locking B then A), ultimately allowing
certain backends to asynchronously update the ALCdevice without risk of lockup.
Capture still has issues here, however.
2012-03-05 07:11:09 -08:00
Chris Robinson
bc1bb7f90f Print and handle errors from pa_stream_readable_size 2012-03-05 00:11:28 -08:00
Chris Robinson
0f0141b9dd Set prebuf to 0 since we're handling the stream start manually 2012-03-04 09:24:07 -08:00
Chris Robinson
b643f13a6e Make sure the pulse stream is properly started and better handle buffer size changes 2012-03-04 05:30:42 -08:00
Chris Robinson
49433c2074 Slight correction for handling the wave writer backend's timer wrapping 2012-03-03 08:50:15 -08:00
Chris Robinson
a93ff6ef3c Slight correction for handling the null backend's timer wrapping 2012-03-03 08:47:23 -08:00
Chris Robinson
44e10c4f69 Remove some unneeded pulseaudio calls 2012-03-02 09:46:36 -08:00
Chris Robinson
7a832c4522 Don't unload libpulse
This sometimes spawns esoteric errors in dlclose
2012-03-02 09:27:30 -08:00
Chris Robinson
7d0faba424 Remove some unneeded markers 2012-03-02 09:08:17 -08:00
Chris Robinson
01d942628b Set prebuf to the expected buffer size
This is to make sure the stream starts even if PulseAudio increases tlength.
2012-03-02 05:38:11 -08:00
Chris Robinson
2a9012c94d Don't rely on PulseAudio to wake us up using early requests 2012-03-02 04:51:29 -08:00
Chris Robinson
b571926a6d Avoid a leak if PortAudio fails to give a usable channel count 2012-03-02 02:14:04 -08:00
Chris Robinson
153affac12 Recalculate the new update size using the device's UpdateSize 2012-03-02 00:08:56 -08:00
Chris Robinson
e5d365a3d9 Avoid an unnecessary doCapture check 2012-03-01 20:47:49 -08:00
Chris Robinson
06debb153d Fix a memory leak 2012-03-01 09:56:25 -08:00
Chris Robinson
51e6786f31 Set the func list after successfully connecting to PulseAudio 2012-03-01 09:22:37 -08:00
Chris Robinson
8d24bd720f Don't use GUIDs to ID mmdevapi devices, and don't enumerate if not needed 2012-03-01 06:07:00 -08:00
Chris Robinson
55556f0e6c Avoid enumerating when opening the default ALSA device 2012-03-01 04:58:28 -08:00
Chris Robinson
7d9cabebff Use NULL to open the default PulseAudio device, and get the actual device name from the stream 2012-03-01 04:37:40 -08:00
Chris Robinson
9602c46809 Move some function definitions down 2012-03-01 04:12:47 -08:00
Chris Robinson
85daab0d5e Don't define lib handles when dynamic loading is disabled 2012-03-01 03:46:45 -08:00
Chris Robinson
105faa1935 Only support PA_API_VERSION 12 2012-03-01 03:29:28 -08:00
Chris Robinson
b299b90964 Update the stored buffer attributes if PulseAudio changes it 2012-03-01 03:09:15 -08:00
Chris Robinson
346f1ac293 Don't allow the PulseAudio stream to move
Since the device specifier isn't updated to reflect the change, it's best to
not allow it to move. This should be fixed eventually.
2012-03-01 02:52:32 -08:00
Chris Robinson
6e113eea89 Don't force a sample spec when looking for the default device 2012-03-01 01:34:49 -08:00
Chris Robinson
54f906b347 Don't check if the pulseaudio sink is suspended when opening 2012-03-01 01:19:07 -08:00
Chris Robinson
4b252bc494 Constify a couple string pointers 2012-03-01 01:03:37 -08:00
Chris Robinson
b192165fb4 Look for and enumerate the default PulseAudio source first 2012-02-29 23:52:10 -08:00
Chris Robinson
f887f4efdd Use a separate function to create and connect a PulseAudio record stream 2012-02-29 23:46:30 -08:00
Chris Robinson
b37e54eead Look for and enumerate the default PulseAudio sink first 2012-02-29 23:35:01 -08:00
Chris Robinson
ea4f458c1d Avoid enumerating multiple devices with the same name 2012-02-29 23:21:38 -08:00
Chris Robinson
394c76d64f Avoid passing the ALCdevice to connect_playback_stream 2012-02-29 23:13:09 -08:00
Chris Robinson
d34fc21a50 Print the enumerated devices from PulseAudio 2012-02-29 22:31:51 -08:00
Chris Robinson
f5435aa2de Minor cleanups for OSS and Solaris 2012-02-29 21:45:44 -08:00
Chris Robinson
e88f954cbf Allow reading audio from ALSA directly if the requested length is supported 2012-02-29 10:01:45 -08:00
Chris Robinson
fe897f291b Don't store the frame size with pulse_data 2012-02-29 06:51:21 -08:00
Chris Robinson
fbb6239299 Read capture data from pulseaudio as needed, avoiding a ring buffer 2012-02-29 05:57:54 -08:00
Chris Robinson
ae1633497c Get and release the mmdevapi render client iface on the message thread 2012-02-29 05:54:58 -08:00
Chris Robinson
00b0e64bd2 Use local variables to determine how much to write to mmdevapi 2012-02-29 00:32:20 -08:00
Chris Robinson
4b88168edb Use a switch to handle the ALSA PCM state 2012-02-27 04:31:03 -08:00
Chris Robinson
f29fbdf088 Print enumerated ALSA devices 2012-02-26 23:02:29 -08:00
Chris Robinson
233acff3c4 Print enumerated dsound devices 2012-02-26 22:55:50 -08:00
Chris Robinson
5e625c9a68 Watch for unsupported sample types for dsound capture 2012-02-26 22:03:27 -08:00
Chris Robinson
da4408835d Print the mmdevapi device and GUID found 2012-02-26 21:59:27 -08:00
Chris Robinson
484e8f07a0 Watch for CLSIDFromString errors 2012-02-23 21:41:24 -08:00