Commit graph

4561 commits

Author SHA1 Message Date
Wim Taymans
38276d126c acp: improve debug 2020-10-01 13:23:16 +02:00
Wim Taymans
0da406d304 media-session: make sure we don't read invalid data 2020-10-01 11:32:40 +02:00
Wim Taymans
62b882c13d acp: improve debug 2020-10-01 11:32:28 +02:00
Wim Taymans
735eefa2fb acp: pass right user_data to event 2020-10-01 11:31:52 +02:00
Wim Taymans
41db0f35b3 acp: sync with latests 2020-09-30 12:56:05 +02:00
Wim Taymans
bc35221210 context: destroy clients first
Destroy clients before trying to remove nodes. If the clients are
still connected they might try to react to the removed nodes.
2020-09-30 12:01:46 +02:00
Wim Taymans
664ecbefee loop: move debug to _fp 2020-09-30 12:01:23 +02:00
Wim Taymans
68bff629b3 jack: optimize get_buffer
Keep track of global mix port.
Calculate the get_buffer function beforehand.
2020-09-30 11:59:41 +02:00
Wim Taymans
ac4d4582a4 pulse: set mask after completing the operation
This ensures we first finish all pending operations and then get
notifications of the new events. Brings pactl subscribe in line
with what it does on real PulseAudio.
2020-09-30 10:16:20 +02:00
Wim Taymans
19c9a55050 pulse: first sync globals, then try operations
First sync the globals and if no global created new pending operations,
run through the operations. This ensures no operation is run before
all globals have data.
2020-09-30 10:14:44 +02:00
Wim Taymans
60df925dfd pulse: set monitor as device.class for monitor sources 2020-09-30 10:14:04 +02:00
Wim Taymans
c91afe2525 pulse: increase period size when !ADJUST_LATENCY 2020-09-29 17:58:59 +02:00
Alexander Volkov
17b6dd40e8 pulse: fix build with pulseaudio < 13.0 2020-09-29 15:47:24 +00:00
Wim Taymans
30254977c6 pulse: improve support for !ADJUST_LATENCY streams
When a stream does not specify ADJUST_LATENCY, use some slightly
different metrics to implement the readable_size. We want the app
to fill as much space as possible. Makes mplayer work and paplay
use the right amount of buffering.
2020-09-29 17:42:11 +02:00
Wim Taymans
9639f32db5 v4l2: zero some structures before ioctl 2020-09-29 17:06:53 +02:00
Wim Taymans
ced338ad7d v4l2: mmap the buffer again
Some drivers need a mmaped buffer...
2020-09-29 17:06:24 +02:00
Wim Taymans
2a630dbecd jack: move some debug to fastpath 2020-09-29 16:57:50 +02:00
Wim Taymans
ed1ee3f164 v4l2: detect driver reusing buffers
Some drivers seem to only use 2 buffers when asked for 16 buffers. We
can see this because the buffer is already queued. In this case, just
use the 2 buffers.

See #294
2020-09-29 12:33:14 +02:00
Wim Taymans
2df10d1a40 channelmix: reset the volume if the channels changed. 2020-09-29 12:02:37 +02:00
Wim Taymans
f70d0b19af channelmix: add option to NORMALIZE volumes
Normalize the complete matrix with the same coefficient
2020-09-29 12:02:34 +02:00
Wim Taymans
700a0aa35c Fix FLC+FRC to FL+FR 2020-09-29 12:02:30 +02:00
Wim Taymans
df3394a694 add some more debug 2020-09-29 12:02:25 +02:00
Wim Taymans
62ef0145c3 pulse: limit get_writable_size()
Try to limit the amount of data we can write. Fixes chrome playback.
2020-09-29 09:57:16 +02:00
Wim Taymans
81ca70af9b alsa-monitor: avoid crash in release
Only try to release the device when we have a proxy.

Fixes #310
2020-09-28 18:23:23 +02:00
Wim Taymans
d7714f734d 0.3.13 2020-09-28 16:08:10 +02:00
Wim Taymans
5dedf483bb pulse: fix load_module 2020-09-28 16:05:10 +02:00
Wim Taymans
588a946311 pulse: don't use queued_bytes for queue fill level
The queued bytes are already included in the read/write index.
2020-09-28 13:09:47 +02:00
Wim Taymans
08438903e5 acp: reset soft volume
When we have accurate enough hardware volume, set the software volume to
1.0. Also fixes the issue of going to 0 volume and then staying silent
until we raise the volume above 1.0.
2020-09-28 12:40:16 +02:00
Wim Taymans
479bf3c803 fmtconvert: fix debug line 2020-09-28 11:47:16 +02:00
Wim Taymans
d13181fb37 acp: prefer some other profile than Off
The Off profile is always available but we should only use it as the
ultimate fallback when all other profiles are NO.

Fixes #309
2020-09-28 11:39:09 +02:00
Wim Taymans
a97287351c acp: use flag for the Off profile 2020-09-28 11:32:36 +02:00
Wim Taymans
9f1d84e37c v4l2: in alloc buffer, don't mmap, just pass the fd
If we can't use EXPBUF, just put the fd and mapoffset in the buffer
memory. This way we can pass the fd to the client and let it mmap .
2020-09-27 17:07:29 +02:00
Wim Taymans
59990ea049 v4l2: fall back to mmap when EXPBUF fails
If EXPBUF returns and error, try to mmap instead.

Fixes #294
2020-09-27 16:30:51 +02:00
Wim Taymans
cce8f3fb08 v4l2: improve debug 2020-09-27 16:30:06 +02:00
Wim Taymans
79fbddb838 stream: handle out of buffers port
If the port was out of buffers and we can't recycle a buffer, return
-EPIPE.
2020-09-25 18:24:29 +02:00
Wim Taymans
013e94ee4e audioadapter: propagate errors from the follower 2020-09-25 18:24:04 +02:00
Wim Taymans
c2fc8423eb jack: move metadata to exports file
So that we don't have to depend on the header file.

Fixes #306
2020-09-25 17:39:26 +02:00
Wim Taymans
fffe94771f pulse: fix fragsize
Don't round up, we give to the app what we get and use the fragsize
always when recording.
2020-09-25 17:24:05 +02:00
Wim Taymans
a79d1fc866 pulse: tweak buffer attributes some more
Seems to work well with vlc and firefox other apps now.
paplay without ADJUST_LATENCY reports wrong latency still.
2020-09-25 17:06:46 +02:00
Wim Taymans
d2d722efb3 node: add an ASYNC flag
The flag means that the process function might not complete
synchronously.

We can use this knowledge to improve the adapter. In sync mode we
can pull before scheduling the converter. In async mode we need to
schedule the follower after the converter to get the data ready for
the next iteration.

We can also improve the stream when it is operating async to schedule
a process call when a new buffer is ready to be filled.

This reduces a cycle latency from alsa and improves latency in
pulse.
2020-09-25 17:02:54 +02:00
Wim Taymans
9dfd261c71 add some more debug info 2020-09-25 17:01:52 +02:00
Wim Taymans
8bb4b91e74 stream: present less writable bufferspace
firefox likes that better
2020-09-24 19:25:37 +02:00
Wim Taymans
9d694b7b38 stream: tweak the timings and buffer attributes
Use tlength as the latency.
Round attributes to frame size
Only use the delay in get_time().
Tweak queued, writable and required bytes for callbacks.
2020-09-24 17:57:10 +02:00
Wim Taymans
abf268d168 stream: tweak the timings and buffer attributes
Use tlength as the latency.
Round attributes to frame size
Only use the delay in get_time().
Tweak queued, writable and required bytes for callbacks.
2020-09-24 17:28:30 +02:00
Wim Taymans
584ae678c6 audioadapter: improve the processing loop
Handle the case where the converter in a source needs more output
buffers (-EPIPE). Schedule the follower in that case and try to
run the converter again until we have output or we can't make progress
anymore.

If the converter needs more data, schedule the follower before we
exit the loop with the data. This gives the follower a chance to get
more data asynchronously for the next iteration.
2020-09-24 17:18:47 +02:00
Wim Taymans
9dc1c3b168 stream: improve the input process loop
Only try to reuse a buffer when the io area is not already in
the NEED_DATA state or else we might overwrite a previous buffer
reuse and run out of buffers.
We also always need more input.
2020-09-24 17:15:47 +02:00
Wim Taymans
1cccaaa2bd merger: we always consume all input
Even when we only have empty input buffers
2020-09-24 16:57:15 +02:00
Wim Taymans
6bc3b1b764 audioconvert: fix Buffers param debug 2020-09-24 11:53:10 +02:00
Wim Taymans
c6358c4ed5 alsa: add and install spa-acp-tool 2020-09-23 11:37:53 +02:00
Wim Taymans
28f60eaf6f spa: install the spa-resample tool 2020-09-23 11:37:16 +02:00