Commit graph

5257 commits

Author SHA1 Message Date
Wim Taymans
d1f9966a77 resample: implement methods we now call 2021-01-08 17:43:13 +01:00
Wim Taymans
f94d2e7da5 pulse-server: use rate match to read from ringbuffer
Use the rate match io are to read the exact amount of samples we
need for this cycle from the ringbuffer. We can then request lower
latency.

There will also be less buffering in the audioconverter, which makes
our timestamps more accurate.
2021-01-08 17:22:15 +01:00
Wim Taymans
3f0cadfa00 alsa: use rate_match to read exactly what we need
Use the rate match from the resampler to get the exact amount
of samples we need to provide in this cycle.
2021-01-08 16:55:24 +01:00
Wim Taymans
03430da64a stream: notify about port IO areas as well 2021-01-08 16:52:42 +01:00
Wim Taymans
7f007b6bca resample: tweak the resampler to keep delay number of samples
Instead of requiring the upstream node to resubmit the delayed
samples, keep the samples ourselves. The benefit is probably too
small to measure but it simplifies things a lot.
2021-01-08 16:35:26 +01:00
Wim Taymans
84eed9ef6f pw-cat: use none as default latency for record
Don't force the record latency to the large latency we use for playback
(100ms) but set it to none, which means use defaults.
2021-01-08 16:30:57 +01:00
Wim Taymans
7e9ab8b457 resample: first resample the data, then apply the new rate
Else we might not have enough input samples for the new rate.
2021-01-08 13:17:06 +01:00
Wim Taymans
4440ede41c bluez5: add SBC XQ support with a config option 2021-01-08 13:00:44 +01:00
Wim Taymans
860389492b a2dp: fix size check 2021-01-08 12:54:43 +01:00
Wim Taymans
9a03f8769e pw-cli: handle unquoted strings
Use parse_string for everything else to use it as a string value.
Make it possible to use short name for the param.

so now you can do:

pw-cli set-param 55 Props '{ channelVolumes: [ 0.3, 0.3 ], channelMap: [ FR,FL ] }'
2021-01-08 12:23:02 +01:00
Rafael Kraut
4340f84776 fix: update some typos in README.md 2021-01-08 10:11:21 +00:00
Wim Taymans
1084306f4d disable i18n stuff, something doesn't work on bots 2021-01-08 11:04:03 +01:00
Wim Taymans
e9c7a3bb4a po: add missing file 2021-01-08 10:59:28 +01:00
Wim Taymans
ef6bb2195a pw-dump: dump all objects
Dump all objects, not only the ones for which we have a class.
2021-01-08 10:51:37 +01:00
Wim Taymans
3c2794dcc9 add i18n support 2021-01-08 10:26:46 +01:00
Fran Diéguez
a47e3584d3 Add Galician translations 2021-01-08 09:43:19 +01:00
Wim Taymans
e91fbd2721 bluez5: Implement routes
Implement routes on the device. This makes it possible for the
session manager to restore the device volumes.
Use validate_config to get the negotiated channels for the route
volumes.
2021-01-07 18:10:22 +01:00
Wim Taymans
5bb7a0f573 a2dp-codecs: add settings to codec init function
To make it possible to add extra config options in init.
Also add a method to update settings in a codec.
2021-01-07 17:39:39 +01:00
Wim Taymans
deb3fa1d9b media-session: handle device events
The object config event should set props on the object.
2021-01-07 17:30:10 +01:00
Wim Taymans
ece8a95c29 bluez5: improve a2dp codec api
Pass dict to select_config to influence the selection
Make a method to validate a config.
Add spa_dict to the codec to pass more info around.
2021-01-07 17:28:49 +01:00
Wim Taymans
1ca3998b41 alsa: remove unused field 2021-01-07 17:27:36 +01:00
Wim Taymans
e61f571e22 Revert "Update of a2dp-codec-sbc.c to achieve SBC XQ quality in dual channel, with fall back to standard Joint Stereo mode"
This reverts commit 4e1cbef687.

This needs some more work
2021-01-07 14:58:36 +01:00
JP Guillemin
b17db2cebc bluez5: add SBC XQ readme 2021-01-07 09:54:16 +01:00
JP Guillemin
4e1cbef687 Update of a2dp-codec-sbc.c to achieve SBC XQ quality in dual channel, with fall back to standard Joint Stereo mode 2021-01-07 09:39:05 +01:00
Pauli Virtanen
a81158f3d5 bluez5: after registering a2dp profiles, connect them to connected devices
After registering a2dp profiles on startup, call
org.bluez.Device1.ConnectProfile on already connected devices, if
applicable.
2021-01-06 17:36:34 +02:00
Wim Taymans
18b5199d44 alsa: add read/write access mode
Add support for read/write access mode when mmap is not available.

See #526
2021-01-05 17:48:09 +01:00
Wim Taymans
c430b1de58 jack: move monitor ports after playback ports
Enumerate monitor ports after their playback ports, like how
jack does this.

See #527
2021-01-05 15:38:52 +01:00
Arnaud Ferraris
0d6ba3a032 alsa-acp-device: make sure EnumRoute is updated on profile change
When using UCM profiles, ports can have different priorities between 
profiles, meaning EnumRoute should be updated too.
2021-01-05 14:34:43 +00:00
Arnaud Ferraris
a39bfa4995 acp: make sure each port's priority is updated when switching profiles
UCM profiles can use the same ports, but with different priorities. One 
good example is a phone, having an earpiece and a speaker:
- the default profile will put a higher priority on the speaker
- the "voice call" profile will put a higher priority on the earpiece

When switching to the "voice call" profile, we want pipewire to take 
into account the priority change, so that the earpiece gets the highest 
priority and is selected by default.

As the ports have the same name in both profiles, we have a single 
instance of each port in memory, and therefore need to trigger a port 
update when the profile is changed, so that the priority set by the new 
profile is used.

Moreover, the UCM code updates only the priority inside the 
`pa_device_port` structure, so this commit also makes sure we reflect 
this value into the `acp_port` structure when enabling a device.
2021-01-05 14:34:43 +00:00
Wim Taymans
b2b45abe01 0.3.19 2021-01-05 13:39:10 +01:00
Wim Taymans
87292432b7 alsa: add option to configure period-size
api.alsa.period-size can be set to something else than 1024 with
this config option.
2021-01-05 12:44:10 +01:00
Wim Taymans
bad9a36a84 rtkit: set nice-level to -11 by defaukt
To mimic pulseaudio.
2021-01-05 12:33:41 +01:00
Wim Taymans
62065ac263 acp: update to latest 2021-01-05 10:08:31 +01:00
Wim Taymans
962bf4d897 media-session: clean proxy and handle in destroy
After we called destroy on the handle and proxy we should not
try to access them anymore so we set them to NULL.

See #534
2021-01-05 10:05:30 +01:00
Pauli Virtanen
307d62484c sco-source: don't crash in do_stop if transport disappeared 2021-01-05 00:31:36 +02:00
Pauli Virtanen
b76bcdc70d pulse-server: NULL means default only if id==INVALID
The default values also only apply for sources/sinks which have
defaults.
2021-01-04 23:54:48 +02:00
Nicolai Syvertsen
7a82be3361 pw-top: Fallback to app name if no node name/desc exists 2021-01-04 19:26:44 +00:00
Pauli Virtanen
5a22d0bfca bluez5: delay SCO transport releases in case they get reacquired
SCO socket connect may fail with ECONNABORTED if it is done too soon
after previous close. To avoid this in cases where nodes are toggled
between stopped/started rapidly, postpone release until the transport
has remained unused for a time. Since this behavior appears common to
multiple SCO backends, do it for all SCO backends.
2021-01-04 20:37:25 +02:00
Pauli Virtanen
073217ae63 bluez5: remove mtu hardcoding
Hardcoding MTU is no longer necessary with the reworked SCO i/o, which
guesses suitable write sizes based on rx.
2021-01-04 19:19:16 +02:00
Pauli Virtanen
368182d963 bluez5: rework sco i/o + autodetect mtu
Move SCO polling to a single place, and abstract mtu handling.
Autodetect suitable tx packet size based on rx, instead of relying on
the kernel providing correct values.
2021-01-04 19:19:16 +02:00
Wim Taymans
518365e350 pulse-server: fix module arg parsing
Parse the module arguments according to the pulseaudio syntax,
not our own syntax (which requires "" around a , delimter). Fixes
audio.position=FL,FR argument.

See #527
2021-01-04 17:25:28 +01:00
Wim Taymans
776147c125 jack: also find port by aliases
one can also use the aliases to connect ports, qjackctl does this.

Fixes #527
2021-01-03 21:25:55 +01:00
Wim Taymans
134f27a201 alsa: log warning for unhandled formats
When we can't enumerate a single supported format, log a warning with
the supported formats and access.

See #526
2021-01-03 08:52:59 +01:00
Pauli Virtanen
da2fa8a599 bluez5: setting this->transport = NULL should block data thread
Since the data thread accesses the spa_bt_transport, its destroy event
needs to sync with data thread to avoid races.

Also check transport is present in places that need it.
2021-01-03 06:59:00 +01:00
Pauli Virtanen
a5e52c07b1 sco-source: simplify mSBC frame parsing
Simplify mSBC buffer handling and syncing to frame headers to work
on a per-byte basis.

The previous code could terminate with buffer overrun if it encountered
multiple consecutive incomplete packets.
2021-01-03 06:56:03 +01:00
Pauli Virtanen
2760c151bd sco-source: fix bugs in buffer handling
Buffers sent to io should be marked outstanding, also in node_process.
port->current_buffer has to be initialized together with buffer lists.
2021-01-02 23:10:20 +02:00
Wim Taymans
0bf7b07d91 pulse-server: improve warning 2021-01-02 20:37:44 +01:00
Wim Taymans
b4f359ed77 media-session: ensure unique node names
Fixes #525
2021-01-02 20:07:27 +01:00
Wim Taymans
498b4bd080 media-session: ensure unique device.name
See #525
2021-01-02 20:00:03 +01:00
columbarius
e871b761fe examples: only announce SPA_DATA_MemPtr 2021-01-01 21:12:00 +01:00