Commit graph

8274 commits

Author SHA1 Message Date
Wim Taymans 6d081d5214 filter-chain: also allow control params with index
Allow specifying the control parameter by index instead of name.
2022-01-07 16:37:45 +01:00
Wim Taymans ce8af10cfe impl-node: set signal and awake time
When a non-driver emits the ready event, set the awake and signal time
so that pw-top reports times correctly.

See #1987
2022-01-07 16:36:29 +01:00
Wim Taymans 126d380e85 spa-resample: don't add simd_cargs, they are not needed 2022-01-07 13:28:43 +01:00
Wim Taymans 63f6cbc27a spa-resample: add option to set CPU flags
To force SIMD implementations
2022-01-07 13:25:19 +01:00
Wim Taymans 222ef88704 pulse-server: request more data when seeking backwards
Immediately ask for more data when we seek backwards so that we don't
underrun in the next process cycle.

See #1981
2022-01-07 10:59:41 +01:00
Wim Taymans ab425d44b8 pulse-server: after uncork, ask for missing data
When we uncork, ask for any missing data immediately so that we don't
underrun in the next process cycle.

See #1981
2022-01-07 10:41:10 +01:00
Pauli Virtanen 9eddd0474f pulse-server: show monitor sources with device.class=monitor
Pulseaudio shows monitors with device.class=monitor, so we follow.
2022-01-06 20:32:53 +00:00
Pauli Virtanen 38c8a19d9e bluez5: use save flag in profile
Add SPA_PARAM_PROFILE_save to current profile information, and handle it
properly in set_param and when setting profile.
2022-01-06 16:45:57 +02:00
David Runge 41392eda7f Add custom variable to jack pkgconfig to distinguish implementations
pipewire-jack/src/meson.build:
Add the custom `jack_implementation=pipewire` pkgconfig variable to the
generated jack.pc file to be able to distinguish jack implementations.
As jack implementations exist with jack1, jack2 and pipewire-jack, it is
not (easily) possible to distinguish them by looking at the version
alone (particularly the case with jack2 vs. pipewire-jack, as they share
the same headers).

Related to #1666
2022-01-06 12:37:08 +00:00
Niklāvs Koļesņikovs 01c6fd0a88 meson.build: bump Meson minimum version to 0.59.0
When creating a new build directory, Meson prints a warning:
  WARNING: Project specifies a minimum meson_version '>= 0.56.0' but
  uses features which were added in newer versions:
   * 0.59.0: {'unescaped_variables arg in pkgconfig.generate'}

Since 0.59.0 was released a while ago and no one has complained so far,
it should be reasonable to just bump the minimum version required,
rather than try to make it 0.56.0 compliant.
2022-01-06 12:20:12 +00:00
Wim Taymans 25e565c34c conf: fix compiler warning about different signedness 2022-01-06 13:19:34 +01:00
Timo Gurr 814d409501 systemd: Add systemd-system-unit-dir override 2022-01-06 12:17:10 +00:00
Wim Taymans af11fb4804 audioconvert: avoid infinite loop
When the follower has no param to enumerate we would keep on enumerating
the params of the converter forever. Fix this by setting the next value
to something that would then stop the iteration.

Also increase the amount of bits for the follower because it might need
them.
2022-01-05 17:05:17 +01:00
Doğukan Korkmaztürk adb02119b7 conf: eliminate an unnecessary narrowing conversion 2022-01-05 06:26:43 -05:00
Wim Taymans 56a6f94732 NEWS: fix year 2022-01-05 12:13:36 +01:00
Wim Taymans 07724b7aef 0.3.43 2022-01-05 11:25:04 +01:00
Pauli Virtanen 9b43388cee bluez5: retry codec switch with timeout on BlueZ failure
Try to call SetConfiguration after timeout when BlueZ reports a failure
for it.
2022-01-04 22:14:10 +02:00
Pauli Virtanen cc43b2f601 bluez5: rate limit BlueZ SetConfiguration calls
A2DP profile may disappear if several SetConfiguration events occur too
rapidly. Rate limit these calls when switching codecs.

This resolves failures if e.g. the session manager attempts to set the
profile immediately after the device is created, which previously might
cause a failure.
2022-01-04 22:14:10 +02:00
Wim Taymans 22625fb658 pulse-server: support server config
Extend the server.address property so that you can also specify
an object per server. Add support for configuring some aspects of the
server such as max-clients and backlog.

Most importantly, the pipewire client.access can be configured per
server.

See #1960
2022-01-04 14:30:33 +01:00
Wim Taymans 611591d0fc json: add spa_json_parse_stringn()
It also checks the destination size.
2022-01-04 12:37:00 +01:00
Wim Taymans c46113faa3 json: spa_json_get_string() writes up to len chars or fail 2022-01-04 10:42:32 +01:00
Wim Taymans 68b31d37d9 json: check spa_json_get_string() return value correctly
It is only successful when > 0.
2022-01-04 10:15:35 +01:00
Wim Taymans 13c0cbb899 pulse-server: remove unused defines 2022-01-04 10:08:54 +01:00
Wim Taymans b63a6a1b66 acp: sync with pulseaudio 2022-01-03 17:21:28 +01:00
Wim Taymans 2f4c589d5b pw-cat: also list additional targets in record mode
Also list the sink and output stream nodes because we can also record
from them.

Fixes #1952
2022-01-03 16:59:21 +01:00
Pauli Virtanen effa0ca124 bluez5: adjust codec profile priority ordering
Higher priority for A2DP over HFP/HSP.  Prefer mSBC over CVSD for HFP,
and put A2DP codecs in the order we tell BlueZ to use.

Ensures that picking highest-priority profile gives sensible results
(e.g. does not pick HFP unless input route is required, and prefers A2DP
duplex codecs over HFP).
2022-01-03 15:23:55 +00:00
Pauli Virtanen 878e630527 bluez5: prefer aptx-ll over faststream 2022-01-03 15:23:55 +00:00
Pauli Virtanen 55ce3d48c9 bluez5: bump up HFP codec switch timeouts
It appears some headsets (eg. Air 1 Plus) can take some tens of seconds
before replying with AT+BCS switch to CVSD.
2022-01-03 15:22:37 +00:00
Wim Taymans 03f069c35b alsa: handle extra propinfo in all cases
When we don't have iec codecs, increment the result.index to iterate
the remaining properties.
2022-01-03 16:16:16 +01:00
Wim Taymans 67dc97fa43 alsa: add audio.allowed-rates param
Add a construct and runtime param to limit the amount of allowed
samplerates used by the node.

Fixes #1932
2022-01-03 16:03:23 +01:00
Wim Taymans c3725d5dde module-loopback: align stream media names to filter-chain 2022-01-03 13:14:29 +01:00
Wim Taymans 9e207a2deb filter-chain: use node.name in media.name instead of id
The node name is likely more stable when specified, which is better
because media.name is used to restore volumes.
2022-01-03 13:12:29 +01:00
Wim Taymans 81f1a6c511 module-loopback: make unique media name per stream
If not otherwise set, the media.name will be the name used when
pw_stream_new(), which is the same for all loopback streams.
This makes the session manager restore the same volume for all
loopback streams.

Do something more clever and use the node.name + suffix to make
the name unique per stream if no media.name was given.

Fixes #1942
2022-01-03 13:00:15 +01:00
Wim Taymans 35cbe4e939 buffers: make alignment optional
Make the alignment parameter optional when negotiating buffers.
Default to a 16 bytes alignment and adjust for the max cpu
alignment.
Remove the useless align buffer parameter in plugins, we always
set it to 16 anyway.
2022-01-03 12:32:26 +01:00
Wim Taymans 30982775d9 support: use defines for alignment 2022-01-03 11:14:15 +01:00
Wim Taymans 6740290410 bluez5: free player path 2022-01-03 10:41:00 +01:00
Wim Taymans 21d07dba26 alsa: add TI PCM2902 mapping
Fixes #1136
2022-01-03 09:47:34 +01:00
Wim Taymans 2ed62f53d9 spa: allocate ports dynamically
So that we don't need to allocate large memory blocks that are mostly
unused.

See #1840
2022-01-01 17:41:27 +01:00
Doğukan Korkmaztürk 3f87741b27 context: calculate target rate only when needed
Instead of calculating the target rate and overriding it in some
conditions, calculate it only if it is necessary. This change also
eliminates a set of conditional branches that have the same outcome,
which causes clang-tidy to produce a bugprone-branch-clone warning.
2022-01-01 10:00:03 -05:00
Petros Angelatos 5054b48c9d systemd: correctly prefix systemd system units
The definition of the `systemdsystemunitdir` variable uses `rootprefix`
instead of `prefix`:

https://github.com/systemd/systemd/blob/v250/src/core/systemd.pc.in#L23

Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2021-12-31 20:47:56 +01:00
Barnabás Pőcze e35b9828d3 pulse-server: make GET_SERVER_INFO accessible without manager
For example, pulseaudio.js[1] immediately sends a
GET_SERVER_INFO request after AUTH, and only later
issues a SET_CLIENT_NAME.

See #1966.

[1]: https://github.com/janakj/pulseaudio.js
2021-12-31 02:12:03 +01:00
Barnabás Pőcze 1c3e45a584 pulse-server: add command access control
By default require that a client is authenticated and
has a manager to be allowed to run a command.

Specially:
 * AUTH requires nothing
 * SET_CLIENT_NAME and STAT only require authentication
2021-12-31 02:11:59 +01:00
Barnabás Pőcze 92abc7b7ad pulse-server: store whether the client has been authenticated
Add a new flag to the client struct which saves whether or not
the client has successfully authenticated itself.
2021-12-30 21:24:06 +01:00
Barnabás Pőcze 705ac662e3 pulse-server: use macro to generate command entries 2021-12-30 21:22:19 +01:00
Sanchayan Maity 81fac5b896 bluez5: Set profile priority in SPA attributes 2021-12-30 18:15:32 +05:30
Wim Taymans 2f742bb56c Revert "pulse-server: use partial data as missing/played for"
This reverts commit 08b18b9da4.

This was likely caused by a bug in mpv

Fixes #1956
2021-12-29 19:49:15 +01:00
Wim Taymans 8416d66ab3 filter-chain: improve lv2 support
Add support for Worker.
Add Options feature.
Pass support in plugin load.
2021-12-29 17:17:17 +01:00
Barnabás Pőcze c04580a256 pulse-server: module-roc-{sink,source}: fix potential memory leaks
Two `pw_properties` objects are not freed in the error path.
Resolves Coverity issues: 1468665, 1468666, 1468667, 1468668.

Furthermore, the module argument string is also not freed.
2021-12-29 15:16:58 +01:00
Barnabás Pőcze 6d64454300 pulse-server: module-zeroconf-publish: harmonize log messages
Use lowercase letters consistently and report errors.
2021-12-28 23:56:03 +01:00
Barnabás Pőcze 7fb27098b9 pulse-server: module-zeroconf-publish: handle allocation failure 2021-12-28 23:37:53 +01:00