Commit graph

112 commits

Author SHA1 Message Date
Wim Taymans
71028f184d settings: set the max-quantum to 2048
Allow an app to request up to 2048/48000 quantum. This will be scaled
with the selected sample rate so if the graph changes to 96000, the
quantum will be scaled to 4096. It will scale up to the hard limit of
quantum_limit.

See #1931
2022-01-12 17:58:14 +01:00
Wim Taymans
676bed734c context: scale max_quantum and add quantum_limit
Also scale the max_quantum with the selected rate. Add a new
quantum_limit property that is the upper limit of the quantum regardless
of the sample rate, this is usually the allocated buffer size.

See #1931
2022-01-12 17:44:45 +01: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
Ivan
1129e90c4f conf: Fix format inconsistencies and beautify configs 2021-09-20 16:40:40 +00:00
Peter Hutterer
71ee6ec669 daemon: split the session-manager and pipewire-pulse comments
Let them be enabled/disabled individually.
2021-09-08 07:50:48 +00:00
Wim Taymans
1ff208875c context: implement dynamic rate
Add a default.clock.allowed-rates property that lists the possible
rates for the graph.

Add node.rate and node.lock-rate properties to suggest a graph rate
and lock the rate.

Collect the largest clock rate from the nodes and if it is allowed,
try to configure it as the graph rate. Only switch rates when the
driver is IDLE or suspended or when we force a rate.

No alternative samplerates are specified because we first need to
work around a common driver bug (cards with 1 cristal need the same
rate for capture as playback) for this to work.
2021-07-30 16:15:34 +02:00
Wim Taymans
4b9b97841d increase rt.limit from 200ms to 2seconds
200ms seems a little small, some plugins initialize themselves from the
RT thread and get killed. 2 seconds seem to be a better default.

The important part is that there is a limit so that runaway processes
are killed and don't lock up the system.

Fixes #1344
2021-07-04 21:57:54 +02:00
George Kiagiadakis
7ee5172ce8 meson: integrate wireplumber as a subproject
This allows building wireplumber as part of the pipewire build
and running it in the uninstalled environment instead of media-session.

Building each session manager is individually contolled by the options:
 -Dmedia-session=auto/enabled/disabled
 -Dwireplumber=auto/enabled/disabled

And controlling which one is used in pipewire.conf is done with:
 -Dsession-manager=media-session/wireplumber

Wireplumber's source tree must be in subprojects/wireplumber/
If this is missing, the .wrap file ensures that the latest git
master is downloaded while meson configures the build.
This git tree will not be automatically updated later, you need
to ensure that it is up-to-date on your own.
2021-06-18 17:54:18 +03:00
Wim Taymans
b7c2e7a693 conf: the midi bridge example is from a spa-node-factory
Fixes #1294
2021-06-10 23:47:15 +02:00
Wim Taymans
61007dd412 Revert "conf: add comment about removing sections"
This reverts commit 85d34d8d94.
2021-06-10 11:27:31 +02:00
Wim Taymans
85d34d8d94 conf: add comment about removing sections
Sections that don't need to be changed can be removed because they
are now taken from the main config file.
2021-06-09 15:25:58 +02:00
Wim Taymans
dde03a7dd3 config: add some comments in the config file
About where to copy and change it.
2021-06-02 15:22:49 +02:00
Jonas Holmberg
b1610d37fe modules: Add module-rt
Add a module to set thread priorities without using rtkit.
2021-05-19 17:39:17 +02:00
Wim Taymans
c89af625db pipewire.conf: add dummy driver to pipewire.dummy group
So that we can have nodes join to the dummy driver group to let
them be scheduled by it.
2021-05-11 15:47:38 +02:00
Wim Taymans
a80ec36ad5 node-driver: run as fast as possible in freewheel mode 2021-05-07 11:50:55 +02:00
Wim Taymans
888612dc0f conf: add freewheel driver
Add freewheel driver and enable freewheel mode on it.
2021-05-07 09:03:34 +02:00
Wim Taymans
8294a4f42c Add vm.overrides property in pipewire and pulse-server
Apply vm.override properties when running in a VM. Increase the
default quantum to 1024 when running in a VM to cause less
dropouts.
2021-04-21 15:58:30 +02:00
jasker5183
4767bbc169 Update pipewire.conf.in Formatting 2021-04-12 15:30:03 +00:00
Jonas Holmberg
44e0251afd impl-node: Make rounding of quantum configurable
Add new context config clock.power-of-two-quantum to make it possible to
not round quantum to closest lower power of two. This makes it possible
to match the quantum of a source node with the quantum of a client
node.
2021-03-16 19:09:29 +00:00
Wim Taymans
90b0410280 conf: improve config files
Make arrays from config sections that should really be an array.
Having the module name as the object key technically makes it
impossible to load the same module twice because the key can only
be once in the object.

The same applies to the context.objects and context.exec sections.

This also makes it somewhat easier to parse the config..
2021-03-12 12:39:58 +01:00
Wim Taymans
67b431cfca rtkit: boost default rt.prio to 88
See #685
2021-03-03 19:56:22 +01:00
Wim Taymans
a57d3e4dae Revert "context: set max-quantum to 4096 by default"
This reverts commit 293d9b3c5d.

The root cause of this might now be fixed.

See #724
2021-03-02 10:46:24 +01:00
Wim Taymans
293d9b3c5d context: set max-quantum to 4096 by default
Some devices seem to have trouble with larger quantum.

See #724
2021-02-25 12:25:01 +01:00
Wim Taymans
7cf07da392 Start media-session and pulse-server in uninstalled config
Also update the INSTALL instructions to match reality.
2021-02-25 07:00:56 +01:00
George Kiagiadakis
2491f56355 config: ignore module-portal load failures
When running pipewire as a system-wide daemon, module-portal
obviously doesn't load. Make it optional so that the default
config doesn't fail in system-wide mode
2021-02-24 21:15:41 +00:00
George Kiagiadakis
012a68f8ef systemd: add unit files for pipewire-media-session
... and disable starting it from context.exec in the config
2021-02-23 16:21:59 +00:00
Wim Taymans
250a10cd63 conf: put "" around string with potential special chars 2021-02-18 17:21:29 +01:00
Wim Taymans
373fd53d2e conf: fix audioconvert regex 2021-02-13 20:38:02 +01:00
Ivan
7e7f0225d4 style: Format and fix config files
Some minor formatting for recently added config files.
2021-02-13 19:20:10 +00:00
Wim Taymans
70390a631e context: add suport.dbus option
Add a support.dbus option in the context that can be used to disable
the dbus feature.
2021-02-12 17:57:24 +01:00
Wim Taymans
13d655ceb2 conf: add and example of how to make a raw alsa device 2021-02-12 13:15:45 +01:00
Wim Taymans
80825aeaea conf: more work on config changes
Add -c option to pipewire to select config file. Use this to select
the uninstalled conf file.
Rename conf properties, prefix with context.
Simplify the main daemon now that everything can go in config.
Simplify pipewire-pulse now that we can put everything in config, it's
now virtually the same as pipewire but with a differenct config file.
Parse server addresses as array of strings.
2021-02-12 10:31:29 +01:00
Ivan
0d56f717bf style: Reformat config files
Use spaces instead of tabs (as they depend on text editor settings).
Make configuration files more readable and consistent seeing as there
were some mixed indentation and styling.
Also put some logic into styling.
2021-02-12 05:26:16 +00:00
Wim Taymans
5b36d77ed0 conf: fix the example... 2021-02-09 18:28:10 +01:00
Wim Taymans
c3c6dcf53f conf: add an example for a virtual source 2021-02-09 18:15:54 +01:00
jasker5183
2eaf10d5b3 pipewire.conf Formatting #2 2021-02-09 07:55:48 +00:00
jasker5183
c14361b19d Spelling/Punctuation Fixes 2021-02-08 17:14:02 +00:00
Wim Taymans
085fd536be daemon: make flags parse like an array 2021-02-08 17:30:26 +01:00
Wim Taymans
ecd1d3e1d7 Move node.pause-on-idle setting to config files
So that we can configure it.
Add some more docs to the config file
2021-02-08 17:19:47 +01:00
Wim Taymans
210950dc0a context: disable mlock warnings by default
Make this a tunable option instead.
2021-02-08 10:59:02 +01:00
Wim Taymans
a48a4fc1bd conf: add comments for the other access permissions 2021-02-02 17:48:25 +01:00
Wim Taymans
b8ef0fc5bb module-access: make access.allowed an array
Reformat the config file a little
2021-02-02 17:48:25 +01:00
jasker5183
11f95fe11e Remove obsolete intructions 2021-01-21 12:04:37 +01:00
Wim Taymans
8c84c96fe1 daemon: add support for mlockall 2021-01-19 12:17:29 +01:00
Wim Taymans
23fd40df94 daemon: support containers as arguments
so that

ags = "foo=bar baz=5"

can be written as:

args = { foo = bar baz = 5 }
2021-01-17 14:56:23 +01:00
Wim Taymans
ff416cdc9e daemon: add some comments to the config file 2021-01-17 11:42:42 +01:00
Wim Taymans
7eac9874f0 daemon: add nofail option to the modules section
Use nofail on rtkit when it's not available.
2021-01-14 15:06:24 +01:00
Wim Taymans
d99ac615b2 conf: remove extra object level
We can parse this without the extra object level.
Use 4 spaces per level
2020-12-31 21:45:36 +01:00
Wim Taymans
49d11acde0 daemon: rework config parsing
Replace config parsing for something more flexible based on json.
2020-12-31 16:44:35 +01:00
Wim Taymans
7ac23c8b82 improve some docs about options
See #387
2020-11-17 21:00:17 +01:00