Commit graph

4868 commits

Author SHA1 Message Date
Wim Taymans
dcbaed1251 pulse-server: also handle fix_ for capture 2022-03-07 10:26:59 +01:00
Pauli Virtanen
67a27d80c6 gst: use target.object instead of node.target, soft-deprecate ids
Use target-object=<serial/name> instead of path=<id> for specifying
sink/src targets. Deprecate path= argument.

Change device provider to preferably expose serials instead of ids.
2022-03-06 18:34:47 +00:00
Wim Taymans
2653e9f129 filter-chain: use property hints
Use property hints to expose int or bool controls.
2022-03-03 21:23:25 +01:00
Wim Taymans
2125ec048d filter-chain: use dynamic builder for param update 2022-03-03 21:22:23 +01:00
Wim Taymans
8646117374 stream: guard against NULL params 2022-03-03 21:21:43 +01:00
Wim Taymans
a6304b47f6 pw-cat: improve DSD file reading
Support reading non-multiples of the blocksize.
Stop reading at the end of the file.
2022-03-03 16:05:03 +01:00
Wim Taymans
ce2f1b3737 dsffile: fix negative interleave 2022-03-03 14:01:32 +01:00
Wim Taymans
d25bb89cc0 channelmix: enable upmixing by default, disable normalization 2022-03-03 12:33:02 +01:00
Wim Taymans
5a55e1a47a pulse-server: handle pulse.properties
Load properties from pulse.properties section so that they can have
overrides.
2022-03-03 11:59:55 +01:00
Wim Taymans
b645793d7e filter-chain: remove stray debug 2022-03-02 21:43:37 +01:00
Wim Taymans
b7c78d0108 minimal.conf: add some more example config
Add an example for how to add a virtual source and how to link it
to the real source.

Fixes #2105
2022-03-02 12:20:44 +01:00
Wim Taymans
99f9f729ff handle open_memstream errors
Fixes #2182
2022-03-02 11:48:31 +01:00
Wim Taymans
fdaf4613d8 module-raop: handle and debug read errors
Fixes #2183
2022-03-02 11:28:43 +01:00
Wim Taymans
00d4de3799 module-raop: use the right socket to read from
See #2183
2022-03-02 11:24:40 +01:00
Wim Taymans
e7958fac1b filter-chain: remove limits on ports
Allocate all ports dynamically so that there is no limit anymore.

Fixes #2179
2022-03-02 10:12:22 +01:00
Wim Taymans
c89595d86f protocol: increase some limits 2022-03-02 10:05:27 +01:00
Wim Taymans
dfdca3ce29 stream: add support for PropsInfo
So that streams and filter can describe custom properties.
2022-03-02 10:02:55 +01:00
Wim Taymans
b324c02570 filter-chain: use offsets to deref pods
In a dynamic builder we can only save the offsets in the array and
deref after we completed building everything.

Increase the control limits.

See #2179
2022-03-01 21:24:39 +01:00
Wim Taymans
cdf1b15d38 client-node: use dynamic pod builder 2022-03-01 21:07:56 +01:00
Wim Taymans
07a410e715 pod: use dynamic pod builder in some places 2022-03-01 21:00:54 +01:00
Wim Taymans
d3a1b9fe31 spa: add dynamic builder helper
Resizes the buffer dynamically. Be careful with getting the address
of a pod in the buffer, it might not be valid after building more stuff
with the builder.
2022-03-01 20:32:58 +01:00
Wim Taymans
23db50630d channelmix: add option to filter FC
Add an option to do a lowpass filter on the FC channel to isolate
the voices better and move the higher frequencies to the stereo
channels.

See #861
2022-03-01 11:30:12 +01:00
Wim Taymans
5b3388e4ac audioconvert: add optional hilbert transform to rear channels
Add an option to do a hilbert transform on the generated rear channels
to do a 90 degree pahse shift on them. This can improve spacialization
of the rear channels.

See #861
2022-03-01 11:09:43 +01:00
Wim Taymans
5dd0a12875 channelmix: add option for stereo widen
When generating FC, add an option to subtract some of the generated
FC from the FL and FR channel to move the sound more to the center.

See #861
2022-03-01 10:28:11 +01:00
Wim Taymans
5a307c11e1 audioconvert: add delay to rear channels when upmixing
See #861
2022-03-01 09:56:12 +01:00
Wim Taymans
168511c157 filter-chain: do some checks on the number of ports
Try to check that we don't overflow our port arrays.
2022-02-28 20:44:05 +01:00
Wim Taymans
5c44c6cd5c filter-chain: use MAX_CONTROLS for control ports
See #2179
2022-02-28 20:32:35 +01:00
Pauli Virtanen
fb04074335 pulse-server: set also metadata target.object when moving streams
Set also metadata target.object when moving streams, in case the session
manager supports that.
2022-02-28 18:36:26 +00:00
Tasos Sahanidis
daf85f1cd6 pw-top: Fix unicode character clipping
Instead of using snprintf to clip the node line to the terminal width,
causing multibyte characters to be split improperly, this lets curses
wrap the text as it normally would, and then overwrites the wrapped
text with the next line, simulating clipping.
2022-02-28 18:30:34 +00:00
Pauli Virtanen
ab353a8057 module-session-manager: set object.serial on session objects
Session, endpoint, link, and stream objects should also set
object.serial.
2022-02-28 20:11:01 +02:00
Pauli Virtanen
3b94345bbe module-metadata: set object.serial on new client metadata
Client-created metadata should also set object.serial.
2022-02-28 20:11:01 +02:00
Pauli Virtanen
09d005aa3e impl-client: add workaround for old pipewire-media-session compatibility
pipewire-media-session purposefully makes one of its cores to lag the
other, and then uses it to bind ids it obtained from the faster core.
This no longer works with the registry generation number checks.

It's possible to fix in p-m-s, but we can also add a specific workaround
for it.

This workaround is supposed to be eventually removed.  Workarounds for
other apps should not be added.
2022-02-27 15:04:23 +02:00
Pauli Virtanen
d71cf24183 global: update generation number also in clients without registry
Not all clients have an existing registry, and the registry generation
number will not be updated for them.  However, we would like to check
for stale globals also elsewhere, eg.  metadata, and it must work also
in this case.

To avoid failing to update client registry generation, on global
addition which the client would see if it had a registry, send done
message for the new global id instead.
2022-02-27 15:04:23 +02:00
Pauli Virtanen
a9accd1668 protocol-native: footer pre_demarshal must come first
Message footer should be handled before attempting to find the object
the main message is sent to / checking permissions, because it is not
aimed at a specific object.  E.g. the registry generation updates should
be handled regardless of whether the main message is valid or not,
because the updates will not be re-sent.

Fixes registry generation updates sometimes going missing.
2022-02-26 17:48:51 +00:00
Wim Taymans
bf52630153 pw-cli: fix print of pod debug 2022-02-25 11:14:34 +01:00
Wim Taymans
76aaae2034 pulse-server: get stream id in paused
We can get the stream id when going to PAUSED.
2022-02-24 13:08:50 +01:00
Wim Taymans
6769becac5 module-echo-cancel: fix leak on error
Don't leak the properties on error.
Use and log the error returned from the init function.
2022-02-22 17:27:33 +01:00
Wim Taymans
d06e13210d filter-chain: move node.name to the streams
The global node.name is not used anymore because the streams need unique
names.
2022-02-22 15:48:43 +01:00
Wim Taymans
2cd3427786 pulse-server: fix device.description
We now translate device.description to node.description when parsing
the properties so check for node.description and generate one when
it's not available.

Fixes #2166
2022-02-22 15:27:06 +01:00
Wim Taymans
580f499939 filter-chain: improve error reporting
Don't overwrite the errno from the plugin loader with 0 so that we can
actually report the right error.
2022-02-22 12:42:36 +01:00
Wim Taymans
bc8df52317 conf: return the error
Only return the loaded items when there is no error.
2022-02-22 12:41:58 +01:00
Wim Taymans
542b0acd73 context: set zero_denormals in data thread.
Use invoke to set the zero-denormals flag from the data thread when
explicitly set. The flag is per thread and should really only be set on
the data thread and only when explicitly enabled.

Fixes #2160
2022-02-22 11:31:06 +01:00
Wim Taymans
62ae9b7d30 filter-chain: avoid denormals in biquad
See #1681 #2160
2022-02-21 17:34:52 +01:00
Wim Taymans
820e282a14 context: don't touch denormals settings when left unset
We should not influence the denormals CPU flag unless explicitly
requested in the config.
2022-02-21 17:19:57 +01:00
Wim Taymans
edb5664017 pulse-server: fix IEC958 passthrough again
We need to create fake channels when parsing the IEC958 format or
else we get an invalid format and IEC958 passthrough doesn't work.

Ignore the IEC958 formats when collecting formats for the device or else
the fake channels mess with the real channels of the device.

See #1442
2022-02-21 16:53:03 +01:00
Wim Taymans
22ec01d5c0 pulse-server: improve fix_ flags handling
PulseAudio will convert the samplespec/channelmap to a format_info
and omits the input format/rate/channels when the fix flags are set. It
does not use the input values at all.

Do the same in pipewire-pulse, make a single format description without
the requested fields.

This also needs a session manager fix to make it deal with those missing
fields.

See #876
2022-02-21 15:19:08 +01:00
Wim Taymans
e420b9c93c pulse-server: place the final sample rate as property
Use the final negotiated sample rate as node.rate to suggest a rate for
the graph.
2022-02-21 14:54:21 +01:00
Wim Taymans
d6a2b21fbe pulse-server: don't deref freed pending_sample 2022-02-21 11:12:10 +01:00
Wim Taymans
0475adbd35 pulse-server: wait for pending_sample to complete
Wait the reply to be sent and the sample to complete playback before
freeing the sample. Otherwise it might have been possible that the
sample completes before the reply can be sent.
2022-02-21 08:57:15 +01:00
Wim Taymans
1d9be5b25a pulse-server: ref client while completing operations
So that an operation can't accidentally free the client.
2022-02-21 08:56:02 +01:00