Martin Geier
f8b0d0a43c
rtp: include stream delay to a read position
...
When a stream has some delay, a time t1 + delay has to be read in time
t1 to play it when expected.
Decrease target_buffer by delay to start playback sooner, so sound
is played at correct time when delay is applied.
Signed-off-by: Martin Geier <martin.geier@streamunlimited.com>
2025-07-24 07:28:53 +00:00
Wim Taymans
dd9d8038da
client-node: close SyncObj fd as well
...
We also need to close the SynObj fd we got, just like we close any
DmaBuf or MemFd.
Make sure we get a compiler error when we add more items to the
data type enumeration later.
Fixes #4807
2025-07-22 14:00:09 +02:00
Carlos Rafael Giani
97996a6e20
module-rtp-sap: Take RTP dest port into account when matching sessions
...
This is important if several sessions use the same multicast IP address.
2025-07-18 10:54:04 +02:00
Melvin Manninen
f4f548fbe6
module-rtp-sap: Fix Message Identifier Hash generation for first session and update SDP on grandmaster change
2025-07-17 16:00:32 +00:00
Wim Taymans
6605caa39e
filter-graph: add ONNX plugin
...
It uses the onnxruntime library to parse the onnx file and construct a
neural network. It uses the label field to setup the plugin and how to
map the various tensors of the model to input, output, control and
notify ports.
Add an example config for how to use the silero VAD ONNX model with the
noise gate.
2025-07-17 13:16:00 +02:00
Wim Taymans
b3dddfed6a
filter-chain: add Level control input port for noisegate
...
This makes it possible to use another volume measurement algorithm to
drive the noise gate, such as a VAD algorithm.
2025-07-17 12:12:24 +02:00
Demi Marie Obenour
b8e29d471b
module-rtp: Fix bounds checks in MIDI parsing
...
These are potential security problems.
2025-07-15 10:46:10 +02:00
Demi Marie Obenour
fb315b9050
*: Missing bounds checks in POD handling
...
There were missing bounds checks for ill-formed POD all over the place.
2025-07-15 10:13:17 +02:00
Barnabás Pőcze
90c0d8c225
pipewire: module-rt: use pw_thread_utils_join()
...
`pw_thread_utils_create()` is used to create the thread, so use
the corresponding `pw_thread_utils_join()` instead of just
`pthread_join()`.
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
a55561dcba
pipewire: module-rt: destroy mutex and condition variable
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
0923e12fa3
pipewire: module-rt: have just one impl_thread_utils
...
There are two definitions depending on `#ifdef HAVE_DBUS`,
however, the two definitions are indentical, so remove one.
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
b124385fac
pipewire: module-rt: remove sched_set_nice()
...
It has only a single caller, so inline it because
there is not much point in keeping it separate.
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
b71d0224db
pipewire: module-rt: remove check for impossible condition
...
Neither `sched_set_nice()` nor `pw_rtkit_make_high_priority()`
(should) ever return a positive number, so that case is not
possible; remove it.
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
7a336645fb
pipewire: module-rt: get_rtkit_priority_range(): return void
...
This function cannot fail, so make it return `void`.
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
801ac5ced8
pipewire: module-rt: simplify check_rtkit()
...
The return value is always 0, and the `impl` parameter
is not used, so ues the return value to return the boolean
result instead of an out parameter, and get rid of the
unused argument.
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
10161407ff
pipewire: module-rt: move RLIMIT_RTTIME compat definition
...
Move it next to the other macros.
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
f0579b9b67
pipewire: module-rt: deduplicate log message
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
c4984e33b2
pipewire: module-rt: use spa_autoptr for properties
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
3b4f37ac92
pipewire: module-rt: fix function brace style
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
7eb98a31bb
pipewire: module-rt: define SCHED_RESET_ON_FORK if not available
...
Instead of using a new macro with the `PW_` prefix, simply define
`SCHED_RESET_ON_FORK` to be `0` when it is not defined; as the
prefixed variant can be a bit confusing.
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
279b7ee698
pipewire: module-rt: use "tid" instead of "pid" for thread ids
2025-07-12 19:55:34 +00:00
Barnabás Pőcze
13fe4a5a57
pipewire: module-rt: use sizeof(variable) instead of sizeof(type)
2025-07-12 19:55:34 +00:00
Wim Taymans
20a4aa8cf9
modules: remove v0 protocol support
2025-07-10 16:26:01 +02:00
Demi Marie Obenour
c54fdb76f8
protocol-native: check for NULL strings
...
SPA_POD_String allows NULL strings, so check for them.
2025-07-10 14:08:56 +00:00
Demi Marie Obenour
adb3a55703
protocl-native: v0: Fix integer overflow to buffer overflow
...
Too many dict items could cause an integer overflow leading to a
stack-based buffer overflow.
2025-07-10 14:08:15 +00:00
Demi Marie Obenour
9a66938283
pulse: don't ignore return value
...
If a function can fail don't pretend it succeeded.
2025-07-10 14:06:05 +00:00
Demi Marie Obenour
b3bf5be1f6
*: Avoid macros that use casts where possible
...
Use direct field access when the type is known, instead of a macro that
includes a cast.
These were missed in e4fcbef89a .
2025-07-10 14:02:55 +00:00
Wim Taymans
5ca74996f0
filter-graph: allow setting a fixed rate
...
It's possible to make the filter streams resample to a specific rate
before running the graph.
2025-07-10 13:47:23 +02:00
Wim Taymans
e8dbd328d8
doc: fix a typo
2025-07-09 14:13:56 +02:00
Jonas Holmberg
85ff73d690
echo-cancel: reset buffers when deactivating
...
Reset buffers when deactivating to avoid having old data in the
ringbuffers, which also adds latency when activated again.
Clear sink_ready and capture_ready when resetting buffers to avoid
calling process() before there is new data to process.
2025-07-09 10:20:51 +02:00
Jonas Holmberg
a0beb30ba8
echo-cancel: drop if playback is not streaming
...
capture and sink streams may start before playback stream so process()
may fail to dequeue a playback buffer. In that case advance the read
pointers to avoid building up latency in the ringbuffers.
2025-07-03 19:02:59 +00:00
Wim Taymans
ef5d9ff028
filter-graph: add a simple noise gate
2025-07-03 20:58:00 +02:00
Wim Taymans
616db9809e
module-rtp: add some rate limit to send/recv errors
2025-07-03 20:57:49 +02:00
Wim Taymans
47ee9ef10a
module-rtp: set the EMPTY flag on empty buffers
...
And make sure other flags are reset.
2025-07-03 20:57:19 +02:00
Wim Taymans
3ff0c270dd
echo-cancel: send capture/source latency correctly
...
Input latency received on the source (output stream) should be
propagated on the input stream (capture).
2025-06-30 15:48:20 +02:00
Wim Taymans
bd7ce5c7fa
pulse-server: only react to state changes when not corked
...
When we are starting or corked we don't emit suspend/resume caused
by state changes.
2025-06-25 10:31:32 +02:00
Arun Raghavan
220b037683
pulse-server: Implement stream suspended callback
2025-06-23 09:19:10 +00:00
Wim Taymans
b51755bc8b
pulse-server: add stream_properties for RTP streams
2025-06-18 12:29:39 +02:00
Wim Taymans
0b2b723a0e
filter-graph: add a zeroramp plugin
...
The filter detects unnatural gaps (consisting of 0.0 values) and will
ramp-down or ramp-up the volume when entering/leaving those gaps.
This makes it filter out the pops and clicks you typically get when
pausing and resuming a stream.
See #4745
2025-06-17 09:14:18 +02:00
Pauli Virtanen
dc618d37c6
modules: fix missing free/close and length checks
...
Fix some missing free and close.
Fix not checking length of received netjack data.
2025-06-14 15:24:05 +03:00
Wim Taymans
83c644fe09
pulse-server: mark empty buffers
...
This makes it use some more optimal paths in the mixer.
2025-06-13 18:07:55 +02:00
Wim Taymans
3d1c9f1cce
modules: update Props and ProcessLatency
...
When setting Props or ProcessLatency on a stream, it doesn't actually
remember the values that were set so we need to manually update them.
See #4731
2025-06-13 12:46:40 +02:00
Wim Taymans
3d8a19af33
filter-chain: we manage the state from the playback stream
2025-06-13 11:58:42 +02:00
Wim Taymans
4c1be71773
modules: Propagate the combine latency
...
When we get latency on the combine stream, forward it to all
streams after setting the per stream compensate latency (if any).
See #4731
2025-06-12 16:36:51 +02:00
Wim Taymans
549f3fc46f
module-combine: use a better empty property string
...
The empty string fails to parse as a properties, use "{}" instead.
2025-06-12 16:35:49 +02:00
Wim Taymans
046fdad4ee
modules: improve latency handling
...
Now that the stream remembers the latency for us, we can only care
about the other latency.
So, if we get (output) latency on an input port/stream, we add our
own latency and then set it on the output port/stream. We do the
same for input ports.
2025-06-12 15:20:18 +02:00
Wim Taymans
5480a1382f
modules: always update latency params
...
Even if the latency didn't change, the current pw-stream
implementation will have wiped all Latency params away and we want
to put them back in all cases.
See #4731
2025-06-11 16:26:03 +02:00
Wim Taymans
82229b3d87
modules: make sure we deactivate the graph safely
...
Use the loop lock to ensure the loop is not using the graph anymore when
the deactivate or reset it.
2025-06-11 15:21:26 +02:00
Wim Taymans
b0462cb5de
filter-chain: do graph reconfigure in playback state change
...
Because we do the processing of the graph in the playback process
function, only do graph reset and reconfigure from the playback state
change so that we don't have process and state change at the same time
and crash.
2025-06-11 11:43:13 +02:00
Wim Taymans
c08ef84745
modules: initialize the latency params
...
Otherwise we get nonsense values for the direction.
See #4731
2025-06-11 10:17:32 +02:00