Commit graph

1318 commits

Author SHA1 Message Date
Wim Taymans
6cc3224031 a2dp-source: fix source
Use codec methods. Init codec at start.
Remove rate match until we actually implement this
Add some buffering of packets before we hand them out.
Always simply fill a buffer and hand it out.
don't emit signals when we are following another driver.
Acquire transport as soon as it goes to PENDING.
2020-10-19 18:25:52 +02:00
Wim Taymans
d727123b86 a2dp-codecs: add more codec params 2020-10-19 18:12:47 +02:00
Wim Taymans
cdb83fa225 a2dp-sbc: implement decode 2020-10-19 18:12:13 +02:00
Wim Taymans
a91d129698 a2dp-sink: fix timing 2020-10-19 15:35:45 +02:00
Wim Taymans
53ee5ce72a bluez5: make codecs configurable
Make the list of supported codecs available.
Register all supported codecs endpoints
Find the codec from the endpoint name
Put the codec on the transport for the sink to find.
2020-10-19 13:27:11 +02:00
Wim Taymans
e18c4d76dc a2dp: move codecs to separate files 2020-10-19 12:12:21 +02:00
Wim Taymans
5c5b9f61bb a2dp: generate format info from config in init 2020-10-19 10:38:22 +02:00
Wim Taymans
574c0afc93 a2dp: refactor codec functions 2020-10-19 09:48:57 +02:00
Wim Taymans
e1fc51d965 a2dp-sink: don't force flush 2020-10-16 13:25:35 +02:00
Wim Taymans
3be0e7e1c6 a2dp-sink: fix playback
Use a simple periodic timeout to pull in samples and write them to the
socket
2020-10-16 13:13:04 +02:00
Wim Taymans
1b7d052098 support: remove useless assignment 2020-10-16 13:11:27 +02:00
Wim Taymans
df912a9059 acp: fix > 2 channel maps 2020-10-15 09:46:14 +02:00
Wim Taymans
477d6e0b7f acp: fixup impossible decibel ranges 2020-10-13 17:24:23 +02:00
Wim Taymans
4e9b81960f acp: sync 2020-10-13 17:23:36 +02:00
Wim Taymans
c81021a742 channelmix: keep amount of volumes we parsed 2020-10-08 18:06:11 +02:00
Wim Taymans
e7585bd7b8 acp: handle devices with no ports
Make sure we don't crash when there are no ports on a device.

See #321
2020-10-08 18:05:49 +02:00
Wim Taymans
5c048500cc stream: normalize volumes when monitoring 2020-10-07 12:45:28 +02:00
Wim Taymans
9054cfcd8b channelmix: remap channel volumes
When we receive volume updates with a different number of channels
than we are configured for, remap them to our number of channels.
This currently involves taking the average volume until we actually
have a channelmap associated with the volume updates.

See #320
2020-10-07 12:01:37 +02:00
Wim Taymans
9e3ae3a045 acp: improve debug 2020-10-01 13:27:08 +02:00
Wim Taymans
c0c439ff76 acp: avoid profile switch to the current profile 2020-10-01 13:23:20 +02:00
Wim Taymans
971236e77a acp: don't fall back to the highest priority unavailable
Use the Off profile in case there are no yes/unknown profiles.
2020-10-01 13:23:20 +02:00
Wim Taymans
e394c5145a acp: only emit profile change for current profile
When a port is plugged/unplugged, first update all the profile states
and then emit a profile change only for the current profile. This way
the device can look at all the updated profiles to select the best one.
2020-10-01 13:23:20 +02:00
Wim Taymans
38276d126c acp: improve debug 2020-10-01 13:23:16 +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
664ecbefee loop: move debug to _fp 2020-09-30 12:01:23 +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
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
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
013e94ee4e audioadapter: propagate errors from the follower 2020-09-25 18:24:04 +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
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
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
Wim Taymans
66cc13cc56 acp: update properties correctly
After modifying the properties, update the exported dictionary again
because the memory might have changed.

Fixes #304
2020-09-22 12:40:21 +02:00