Chris Robinson
40ba9db406
Only call Pulse functions from under a lock
2010-07-31 16:07:04 -07:00
Chris Robinson
d886fb118b
Signal the Pulse mainloop on underruns
...
Otherwise there are (rare) risks of not getting signaled after writing the
amount of free audio data the client knows about, leading to a mixer loop
lockup
2010-07-30 20:20:40 -07:00
Chris Robinson
46d46c49a8
Store the time precision with the device
2010-07-25 12:54:50 -07:00
Chris Robinson
40dd1fb853
Add a backend callback to get the device time
...
The method should monotonically count the number of nanoseconds the device has
active contexts
2010-07-24 19:14:32 -07:00
Chris Robinson
ab77fc14d5
Make killNow volatile
2010-07-24 10:54:12 -07:00
Chris Robinson
e658df493a
Update PulseAudio using period-sized chunks
...
To match the behavior of other backends
2010-07-17 23:30:25 -07:00
Chris Robinson
969818db6f
Use a 100ms capture buffer minimum for PulseAudio, with 50ms fragments
...
This better matches what is given with the WaveIn backend
2010-07-04 16:27:42 -07:00
Chris Robinson
25a941666a
Prevent multiple PulseAudio devices from getting the same name
2010-06-09 18:22:05 -07:00
Chris Robinson
33234d605a
Don't attempt to look for more samples from Pulse after a disconnect
2010-06-05 00:09:45 -07:00
Chris Robinson
c6defe9a6d
Read PulseAudio's capture data into the ring buffer when querying the sample count
...
This ensures we have all the samples available that the app knows about
2010-06-04 00:27:31 -07:00
Chris Robinson
e98f1205e5
Increase the temp buffer sizes to construct device names with
2010-05-31 19:04:41 -07:00
Chris Robinson
2205f91e5f
Fix Pulse mainloop handling for device probing
2010-05-31 19:02:20 -07:00
Chris Robinson
da1dee351d
Update device naming to be more apparent about the device being used
2010-05-31 19:00:33 -07:00
Chris Robinson
694e9a5fec
Always add the default PulseAudio device when probing
2010-05-30 23:04:04 -07:00
Chris Robinson
9ac5d8ad2d
List all available PulseAudio sources
2010-05-30 21:05:05 -07:00
Chris Robinson
706b9f2357
Probe and expose all available PulseAudio sinks for the enumerate_all extension
2010-05-30 20:33:57 -07:00
Chris Robinson
55b3675dee
Add a separate function to create/connect a pulseaudio context
2010-05-30 19:05:19 -07:00
Chris Robinson
dc86563486
Pass the threaded main loop object to context/stream_state_callback
2010-05-30 18:19:01 -07:00
Chris Robinson
ebccfa93c3
Don't unload libs when they're not needed
...
Some libs don't really like being unloaded and reloaded all the time, and the
benefits aren't that great
2010-05-28 23:00:59 -07:00
Chris Robinson
e9f4576d4d
Watch for changes to the PulseAudio sink device
2010-05-28 17:03:57 -07:00
Chris Robinson
f89c9f7ea4
Connect a pulse stream on device open, to make sure the device isn't suspended
...
Also use the opportunity to get the stream's device's name, so later reset
calls will use the same device
2010-05-27 22:12:54 -07:00
Chris Robinson
37190b2caf
Add a function to get the frame size from a format
2010-05-24 21:51:30 -07:00
Chris Robinson
7f533c6a25
Change inline -> __inline for MSVC
2010-05-16 06:02:27 -07:00
Chris Robinson
4d15391c88
Disable PulseAudio's write callback when disconnecting
2010-04-17 00:27:13 -07:00
Chris Robinson
d4159430f0
Set the buffer length for Pulse when opening the device
...
So it will properly scale with context frequency requests
2010-03-14 22:20:55 -07:00
Chris Robinson
14255a38fc
Pulse's buffer size is not a good measurement for the update size
...
Lie and say 20ms instead, since there is no stable method to get such info
2010-03-14 21:45:23 -07:00
Chris Robinson
3108a6a997
Limit PulseAudio's buffer size to the requested length
2010-03-11 09:47:26 -08:00
Chris Robinson
9b47048231
Silence some warnings
2010-02-16 05:44:39 -08:00
Chris Robinson
3a87c3c3ba
Avoid using periods with PulseAudio, and add an option to specify its buffer length
2010-02-07 19:29:48 -08:00
Chris Robinson
bd518ed264
Make sure all requested data gets written to PulseAudio
2010-01-24 00:03:23 -08:00
Chris Robinson
56379bffac
Use pa_channel_map_superset only when available with PulseAudio 0.9.15
...
pa_channel_map_equal can otherwise detect some compatible output modes
2010-01-22 21:20:08 -08:00
Chris Robinson
4d9a368f96
Suppress connection refused errors
...
Since that just typically means the server isn't running
2010-01-08 01:43:27 -08:00
Chris Robinson
0ceaa01c3d
Adjust PulseAudio's capture latency
2009-12-30 15:33:16 -08:00
Chris Robinson
7ee81eac0f
Store ALC errors with the device when possible
2009-12-28 23:19:13 -08:00
Chris Robinson
69ab93a824
Add a function to check if a config option is set to a non-empty value
2009-12-28 13:08:15 -08:00
Chris Robinson
2a735b14dc
Add an option to spawn a PulseAudio server on request
2009-12-28 10:49:31 -08:00
Chris Robinson
a294dd8d9b
Be more lenient in signaling the mainloop
2009-12-28 10:15:59 -08:00
Chris Robinson
dc1522282b
Try to find a compatible format from Pulse's default sink
2009-12-27 11:05:59 -08:00
Chris Robinson
1770a8b62b
A NULL Pulse context won't have a valid error code
2009-12-26 12:18:16 -08:00
Chris Robinson
77a0a6de95
Wait for the buffer attrib update from pulse to finish
2009-12-26 11:30:41 -08:00
Chris Robinson
c1fd977e79
Consolidate pulse capture failure path
2009-12-26 10:46:29 -08:00
Chris Robinson
cbbda93292
Make sure a proper channel map is set for pulse capture
2009-12-26 09:17:03 -08:00
Chris Robinson
c6340ce12d
Clean up some loading checks
2009-12-26 08:49:11 -08:00
Chris Robinson
89f59c0e1c
Shorten a long line
2009-12-26 07:42:16 -08:00
Chris Robinson
3793919892
Capture as much as possible directly from PulseAudio
2009-12-25 17:56:57 -08:00
Chris Robinson
d1699d50f6
Add missing newline
2009-12-25 15:18:32 -08:00
Chris Robinson
b94d950b1e
Undefine no longer needed macro
2009-12-25 14:11:43 -08:00
Chris Robinson
965a71ee90
Only use pa_stream_set_buffer_attr_callback when available (0.9.15+)
2009-12-25 13:17:21 -08:00
Chris Robinson
fd794b44b2
Use pa_stream_begin_write when available for "zero-copy" writing
...
Must be compiled against 0.9.16 or newer to be available. It will fall back to
the old method if the function is not available at run-time.
2009-12-25 13:11:17 -08:00
Chris Robinson
7f0c6629b9
Use a 64-bit value to scale potentially-large numbers
2009-12-24 15:41:45 -08:00