Commit graph

4634 commits

Author SHA1 Message Date
Peter Hutterer
6c156cdbb4 media-session: move the media-session config files to here 2021-10-14 07:51:27 +00:00
Peter Hutterer
3560f3ba2d media-session: add MEDIA_SESSION_CONFIG_DIR as lookup location
Use this to override the default $PIPEWIRE_CONFIG_DIR/media-session.d
directory. This allows us to have separate configuration directories for
pipewire and media-session.
2021-10-14 07:51:27 +00:00
Peter Hutterer
4ec2a6b320 modules: fix a property fetch
Leftover from an earlier version where get() was what is now called
fetch().

Fixes d8d7e90ceb21dac3723fa3c3fd3c2983afe1372
2021-10-14 06:32:20 +10:00
Wim Taymans
64d6ff4184 modules: flush and reset state in paused
So that we don't end up with previous data when we resume.

See #1660
2021-10-13 18:37:02 +02:00
Wim Taymans
6e818480c1 filter-chain: implement convoler_reset
To reset the state of the convolver.
2021-10-13 18:36:20 +02:00
Wim Taymans
0d1f7be0e9 context: the max quantum is never scaled with samplerate
Or else we could end up with a quantum > 8192 when we have a higher
samplerate than the default and we crash.

See #1702
2021-10-13 17:11:28 +02:00
Wim Taymans
058cecee7e pulse-server: remove some pw_log_info debug 2021-10-13 15:44:38 +02:00
Wim Taymans
f1c29194a8 pulse-server: improve lookup of default source and sink
Make things work then there is no default input device and the default
source is actually the monitor of the default sink.

Also implement lookups of monitor sources with the monitor id as the
name.

Fixes #1691
2021-10-13 15:39:41 +02:00
Wim Taymans
1b09640b6f pulse-server: use find_device for get_info of a device
So that we also go through the same logic for finding the default
source and sink when needed.
2021-10-13 15:38:59 +02:00
Peter Hutterer
027dd25980 pipewire: declare pw_proxy_ref/unref
Both are already SPA_EXPORT but missing from the public header file.
2021-10-13 09:13:12 +00:00
Wim Taymans
d8540cc596 impl-node: always deactivate node in suspend
pause_node() will check the IDLE state of the node and will not
deactivate the node when suspending when it was already IDLE.

Fixes an issue where node.pause-on-idle=false filters would not want to
resume after a suspend.
2021-10-13 10:54:45 +02:00
Wim Taymans
e77a0e8dc4 impl-node: start always need activate_node 2021-10-13 10:51:24 +02:00
Wim Taymans
e0974122ce impl-node: rename pending to pending_state for clarity 2021-10-13 10:50:41 +02:00
Peter Hutterer
eabd00e012 properties: log a warning if the property type differs
If we try to fetch a property as some specific type and the parsing
fails, log a warning. This should catch any client bugs where the
properties are set wrongly.
2021-10-13 07:12:00 +00:00
Peter Hutterer
32fb369b66 modules: switch more modules to the new property helpers 2021-10-13 07:12:00 +00:00
Peter Hutterer
c59ede837d pipewire: switch to new property helpers 2021-10-13 07:12:00 +00:00
Peter Hutterer
56bc3508c4 module-rt{kit}: replace get_default_int with the new property helper 2021-10-13 07:12:00 +00:00
Peter Hutterer
1d8d7e90ce modules: switch a few modules to the new property helpers 2021-10-13 07:12:00 +00:00
Peter Hutterer
d8de1cb255 modules: switch to new property helpers 2021-10-13 07:12:00 +00:00
Peter Hutterer
12c5a9b7ea media-session: switch to new property helpers 2021-10-13 07:12:00 +00:00
Peter Hutterer
0028b294d0 properties: add type-specific pw_properties_get helpers
Two method calls to get properties,
- pw_properties_fetch_$type()
- pw_properties_get_$type()

The former allows for easy error checking and conditional setting of
properties. The latter for easy fetching of a property with a default
value. This simplifies the code and makes property parsing behave more
consistently across the code base.

Before:
   str = pw_properties_get(props, "foo");
   if (str)
	myval = pw_properties_parse_int(props, str);
	if (myval == 0) /* parsing error or a valid zero */
	    do_stuff(myval);

Now:
   if (pw_properties_fetch_int32(props, "foo", &myval) == 0)
	do_stuff(myval);
2021-10-13 07:12:00 +00:00
Peter Hutterer
696a4b22e9 module-rt{kit}: use spa_atoi32 instead of custom strtol
And duplicate the function into rtkit which had a similar but different
approach to it. Let's get both to do the same here.
2021-10-13 07:12:00 +00:00
Peter Hutterer
87a1e1534c daemon: let meson handle the uninstalled media-session path
If we build media-session before the daemon we have the executable
variable available and can rely on meson to fill in the path instead of
handling it manually.
2021-10-13 07:09:13 +00:00
Peter Hutterer
c81dcae683 media-session: rename the executable variable name in meson.build
Makes it more obvious to access the result from other meson.build
files.
2021-10-13 07:09:13 +00:00
Peter Hutterer
f4516e6745 media-session: decouple config from the pipewire daemon config
There are only two values we care about that are identical, we can
re-set those in a new configuration_data() object.

All the other values set by the pipewire daemon are related to how we
start the session manager which isn't applicable here.
2021-10-13 07:09:13 +00:00
Wim Taymans
a5c64ffa3b impl-node: deactivate node in destroy
When pause-on-idle is false, the node can be destroyed without ever
being deactivated, which would crash. Make sure we deactivate in destroy
and remove the node from the graph.
2021-10-12 12:07:18 +02:00
Peter Hutterer
12379a9a3c pipewire: fix error message if the DBus library load failed
If the handle is NULL, we'd print out the strerror with res at whatever
value it currently has, leading to confusion.
2021-10-12 09:45:33 +10:00
Wim Taymans
9afb832d22 pulse-server: find the sink when doing monitor source lookup
When we do a lookup of a source with the monitor flag bits set in the
id, strip off the monitor bits se we can find the associated sink.

Fixes #1677
2021-10-11 17:02:13 +02:00
Wim Taymans
38981a4c8c filter-chain: biquad fequency is half the samplerate
See #1699
2021-10-11 16:07:13 +02:00
Wim Taymans
85d5c8cd6c cpu: add zero_denormals method
Add a method to enable/disable the denormals flush-to-zero and
denormals-as-zero CPU options.

Add a config option to make it possible to disable this again.

Fixes high CPU usage when dealing with denormals, which can happen
in many DSP functions.

Fixes #1681
2021-10-11 14:57:02 +02:00
Wim Taymans
036371c48f media-session: fix aux channels links
AUX channels can link to any other channel but when AUX channels are
linked, they must match exactly.

Fixes some issues with split devices with aux channels.
2021-10-11 11:35:29 +02:00
Pauli Virtanen
4b831021fb bluez5: add a dummy AVRCP player as a workaround
Some devices (Bose Mini Soundlink II, Air 1 Plus, ...) don't enable
AVRCP volume control, or fail to enable it before a hardware button is
pressed.  However, these devices appear to enable it, if an AVRCP player
is present.

As a workaround, register a dummy AVRCP player for each adapter. It only
displays the current transport acquisition state as playing/stopped, but
just its presence appears to be enough to make devices behave.

Multiple AVRCP players interfere with each other, as BlueZ uses the one
registered earliest as the default player. So add also a config option
for disabling this. (It's not common to have mpris-proxy etc. running,
so defaulting to true should be OK.)

See pipewire#1157
2021-10-10 16:24:41 +03:00
Pauli Virtanen
98a0e54d5f doc: link examples to Doxygen docs
Include examples to the documentation, using Doxygen's example system.
2021-10-10 00:35:46 +03:00
Wim Taymans
ffc5c49508 impl-link: cancel link operations in work_queue in destroy
Fixes #1705
2021-10-09 15:18:20 +02:00
columbarius
2aabc4610b gst: Don't reconnect gstpipewiresrc
Clients connecting via the gstreamer plugin can stall a stream when
reconnecting to it. Disable reconnection until the gstreamer plugin
has improved.
2021-10-09 13:12:06 +00:00
Wim Taymans
5f7c4dec34 meson: make it possible to compile without dbus
Make an option to disable dbus and all the code that depends on
it.

Fixes #1685
2021-10-09 15:00:04 +02:00
Peter Hutterer
82de0613d6 doc: document pw_map
Take some parts out of the public documentation, add a lot of internal
documentation to make it easier for the next person to figure out how
this works.

The use of static inline prevents doxygen from generating docs, put a
note in to link to the header file directly.
2021-10-08 12:55:34 +10:00
Peter Hutterer
626d30e4bd map: fix free_list corruption when re-using removed ids
Re-using an id after removing it is a bug in the caller but there are
two cases where we corrupt the free list without warning:

Removing an object twice:

   id = pw_map_insert_new(object);
   pw_map_remove(map, id);
   pw_map_remove(map, id);

And inserting an element at an index previously removed:

   id = pw_map_insert_new(object);
   pw_map_remove(map, id);
   pw_map_insert_at(map, id, new_object);

The latter is arguably valid code, or at least it'll look like it's
valid code.

For both cases, check if the id to remove/insert at is a free item and
handle that accordingly.
2021-10-08 12:40:23 +10:00
Björn Daase
492abccfe6 filter-chain: fix incorrect codespell fix
Fixes cf38b7bdc4
2021-10-07 21:31:01 +02:00
Björn Daase
cf38b7bdc4 fix codespell issues 2021-10-07 15:26:18 +00:00
Nicolai Syvertsen
dea1755b68 pulse-tunnel: follow pulseaudio for default format 2021-10-07 15:39:11 +02:00
Nicolai Syvertsen
28c2e8ca56 pulse-tunnel: use format, channels and rate props 2021-10-07 13:00:24 +02:00
Peter Hutterer
e36183d3cf array: re-initialize the array in pw_array_clear()
Leaving the data nonzero is a use-after-free bug waiting to happen.
2021-10-07 15:08:57 +10:00
Wim Taymans
28744fc5ed work-queue: share one work queue for links and nodes 2021-10-06 19:59:15 +02:00
Pauli Virtanen
49901f2d61 doc: add brief explanations for all groups 2021-10-04 20:55:04 +03:00
Pauli Virtanen
125051a700 doc: reorganize some \pages, and fix some group names
Move \pages having to do with the API usage to the API section.
Better group names for some groups.
2021-10-04 20:39:56 +03:00
Wim Taymans
26c7d48f0a impl-metadata: implement exposed method 2021-10-04 13:49:35 +02:00
Pauli Virtanen
c620121529 bluez5: add faststream quirks
For some devices FastStream causes problems. Add quirk for disabling it.
2021-10-03 20:55:02 +03:00
Pauli Virtanen
8159797f89 doc: reorganize Doxygen groups/modules to make more sense
The Doxygen "Modules" page is not very illuminative, as different parts
of the API are mixed together and not all parts are included.

Try to address this:

Put all parts of the public API to some Doxygen group, usually one group
per header file. Use short, systematic names.

Make these groups sub-groups of a few top-level groups, roughly
corresponding to the different logical parts of the API (core, impl,
stream, filter, spa, utilities).
2021-10-03 15:39:27 +03:00
Wim Taymans
a95937dfdb log: remove NAME as log prefix, topic is enough 2021-10-03 12:03:45 +02:00