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