Commit graph

765 commits

Author SHA1 Message Date
Wim Taymans
25e4f2088c policy-node: also handle the single stream move 2020-10-21 15:39:37 +02:00
Wim Taymans
bfac6f04db policy-node: avoid rescan when moving a node
When we are moving a node, the node becomes unlinked temporarily.
Make sure the rescan code doesn't try to link it to a node
meanwhile.

Fixes #344
2020-10-21 15:27:50 +02:00
Wim Taymans
77b91823f3 a2dp: mark a2dp-source as stream and autoconnect 2020-10-19 18:53:18 +02:00
Wim Taymans
3733a5e219 media-session: save last target_node
Keep a per node entry of the saved target node and use this when
there is no other target node.
When explicitly moving a stream, save the new target node.
2020-10-14 12:35:27 +02:00
Wim Taymans
12e6dd89e2 client: register client global after update properties
This way we only expose the client after we have all the properties.
Also add a new CLIENT_ACCESS property that contains the desired
client access mode.
2020-10-09 13:31:22 +02:00
Wim Taymans
f0102fd490 pulse: move pulse protocol to module 2020-10-08 18:06:11 +02:00
Wim Taymans
17843ae7cb pulse-bridge: fix reply of record latency
Makes bluejeans in firefox work
2020-10-08 18:06:11 +02:00
Wim Taymans
fead5c18d6 pulse-bridge: fix state of source 2020-10-08 18:06:11 +02:00
Wim Taymans
3194d5ca81 pulse-bridge: add introspection of dummy sink/source 2020-10-08 18:06:11 +02:00
Wim Taymans
6f6337e732 pulse-bridge: support record streams 2020-10-08 18:06:11 +02:00
Wim Taymans
7c1fbf5bee pulse-bridge: rework messages
Make recycled message blocks for receiving and sending data.
Implement async flushing out the output queue.
2020-10-08 18:06:11 +02:00
Wim Taymans
4ad085ef96 pulse-bridge: work more on timings
Fixes sync in firefox
2020-10-08 18:06:11 +02:00
Wim Taymans
ab4def7e5f pulse: respect flags to set volume/mute 2020-10-08 18:06:11 +02:00
Wim Taymans
a4874abc46 pulse: restore volume and muted 2020-10-08 18:06:11 +02:00
Wim Taymans
630889493c pulse-bridge: Update client properties 2020-10-08 18:06:11 +02:00
Wim Taymans
949f923b80 pulse-bridge: implement timing and corking 2020-10-08 18:06:11 +02:00
Wim Taymans
a536c38fbe pulse: use send to avoid SIGPIPE signals 2020-10-08 18:06:11 +02:00
Wim Taymans
90b52b9ff4 pulse-bridge: add more commands 2020-10-08 18:06:11 +02:00
Wim Taymans
9dad175959 pulse-bridge: implement stream volume
Implement some more things.
2020-10-08 18:06:11 +02:00
Wim Taymans
7655aa7066 pulse-bridge: implement enough to play flatpak Spotify 2020-10-08 18:06:11 +02:00
Wim Taymans
d180b8d927 beginnings of pulse protocol 2020-10-08 18:06:11 +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
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
61523d383a tools: add pw-reserve to reverse and monitor a device 2020-09-23 10:24:06 +02:00
Wim Taymans
f4bf7bc7e6 media-session: don't emit busy when we are acquiring 2020-09-23 10:22:22 +02:00
Wim Taymans
3f844f7b09 media-session: make the same node name as PulseAudio
Fixes #299
2020-09-22 12:59:13 +02:00
Wim Taymans
a4e079e1cb media-session: guard against invalid input
See #304
2020-09-22 12:39:39 +02:00
Wim Taymans
cf2c32f0a9 alsa: rework device reservation
Always try to first reserve the device name and then start the probing
so that we can be sure that the device is not in use.
2020-09-21 15:23:36 +02:00
Wim Taymans
2b8568e14f reserve: don't call busy/available when we are the owner
Also ignore acquired from our other devices.
2020-09-21 14:35:32 +02:00
Wim Taymans
cc470c048b reserve: improve debug 2020-09-21 14:35:08 +02:00
Arun Raghavan
2c8e2f3a36 reserve: Fix check for whether acquire succeeded or not
We only deem success if we successfully became the primary name owner.
2020-09-19 11:02:04 +00:00
Arun Raghavan
272624fe83 alsa-monitor: Don't ignore device reservation failure
We were ignoring the reservation status, which is incorrect as we might
not have succeeded in grabbing the device.
2020-09-19 11:02:04 +00:00
Arun Raghavan
2acfa0ee10 alsa-monitor: Lower our device reservation priority
For now, let's lower our priority in device reservation below that of
PulseAudio (which currently uses a priority of 0), so that it takes
priority while contending for the same device.
2020-09-19 11:02:04 +00:00
Wim Taymans
8ee07c3c66 policy-node: always boost default node priority
Make sure the default node as the highest priority.
Fixes a problem with default nodes not being selected when their
priority happens to be too low (bluetooth devices)
2020-09-17 12:35:33 +02:00
Wim Taymans
30dfe16c52 media-session: destroy errored links
When a link we create is in error, destroy it.
2020-09-14 20:19:44 +02:00
Sanchayan Maity
f4a949dc3a examples: media-session: Conform to XDG base directory spec
Currently pipewire-media-session uses ~/.pipewire-media-session for
storing configuration. Use home directory as specified by XDG base
directory specification viz. XDG_CONFIG_HOME and fall back to using
a default of $HOME/.config as per the spec if XDG_CONFIG_HOME is not
set or empty. Also in addition, all cases are now handled the same
and always end up using "%s/.config/pipewire-media-session".

If neither XDG_CONFIG_HOME or HOME are set, fall back to the earlier
approach.

Fixes: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/271

Signed-off-by: Sanchayan Maity <sanchayan@asymptotic.io>

Fixes !298
2020-09-09 17:51:30 +02:00
Wim Taymans
b6e78f5577 improve debug 2020-09-03 11:14:58 +02:00
Wim Taymans
dd0f4c7295 policy-node: only send PortConfig on audio nodes
0.2 version don't handle this correctly.

Possibly fixes #270
2020-09-02 14:25:11 +02:00
Wim Taymans
1e2d5e6837 policy-node: force channel setup of target node
When we are switching to a target node, force a downmix to the
target channel layout if we can. Don't try to upmix for now and
don't try to mix when the dont-mix flag is set.
2020-08-19 11:53:07 +02:00
Wim Taymans
d878843c2b policy-node: keep the original node format 2020-08-19 11:26:51 +02:00
Wim Taymans
0c04481ba7 metadata: improve default sink/source
Only check defaults when subject is PW_ID_CORE
Handle NULL keys: remove the defaults
2020-08-18 17:56:05 +02:00
Wim Taymans
3174e8b69e media-session: fix spelling mistake 2020-08-17 19:30:26 +02:00
Emmanuel Gil Peyrot
14fdf07e8f Run codespell on the entire codebase
This tool detects and fixes common English spelling mistakes, with
generally very few mistakes.

Here is the command I used to generate this commit.  There were a few
changes that had to be done manually, and of course adding the ignore
file:
```shell
codespell -I .codespell-ignore -x .codespell-ignore -w
```

I didn’t add it to the CI, but this would be a good place for it.
2020-08-17 17:16:31 +00:00
Wim Taymans
688a1ab082 media-session: add module to restore stream settings 2020-08-17 17:55:20 +02:00
Wim Taymans
6b7928aee5 media-session: only debug param when loglevel set 2020-08-17 17:52:25 +02:00
Wim Taymans
28bb212630 policy-node: improve move
Don't try to do work when not needed
2020-08-17 17:50:42 +02:00
Wim Taymans
f9a5053c73 media-session: improve cleanup in some modules 2020-08-17 17:50:15 +02:00
Wim Taymans
e544f82004 Revert "default-profile: keep a restore and save list"
This reverts commit de71618b99.

Doesn't work when the device is removed and added again.
2020-08-17 16:04:22 +02:00
Wim Taymans
d337abf690 media-session: escape and unescape keys when saving
So that we can allow space in the keys.
2020-08-17 12:12:11 +02:00
Wim Taymans
de71618b99 default-profile: keep a restore and save list
Load the settings into the restore list, when we see a device and it's
in the restore list, restore the profile and remove from restore list.
All updates to profiles go into the save list and it is then saved.
2020-08-17 11:48:52 +02:00