Wim Taymans
27bed62e66
audioconvert: avoid bitfield data races
...
Move the driver and warned bits after the int field in the struct so
that they are placed in separate memory.
Otherwise, a write from the data thread might race with a write from the
main thread and leave the bits in the wrong state.
2023-12-13 12:15:11 +01:00
Wim Taymans
67c32ec3c2
audioadapter: don't clear format when EnumFormat changes
...
Don't blindly clear the format when EnumFormat changes. This will
just stop the node without renegotiating.
We should probably find a new best format, check if it changed and
then Stop/configure/Resume the follower with the new format.
This fixes a stall when a node is running and you change the allowed
codecs.
2023-10-16 18:23:49 +02:00
Wim Taymans
7ecea07a63
audioconvert: use alternative store to avoid ASAN errors
...
See #3572
2023-10-16 12:59:41 +02:00
Wim Taymans
16ad067cc9
audioconvert: use spa_write_unaligned
...
Use a macro to write out unaligned data to avoid ASAN errors.
See #3572
2023-10-16 12:21:33 +02:00
Wim Taymans
82b2515af3
test: avoid left shift on signed values
...
See #3572
2023-10-15 22:27:44 +02:00
Wim Taymans
2bef057428
audioconvert: avoid unaligned read
...
See #3572
2023-10-15 22:20:54 +02:00
Wim Taymans
fdc1391b19
audioconvert: avoid unaligned reads using memcpy
...
See #3572
2023-10-15 22:09:44 +02:00
Wim Taymans
cc109843e5
audioconvert: avoid unaligned writes and left shift of neagtives
...
See #3572
2023-10-15 21:12:23 +02:00
Wim Taymans
20b336b1d7
audioconvert: avoid unaligned writes
...
See #3572
2023-10-15 21:03:52 +02:00
Barnabás Pőcze
80572a6fbc
audioconvert: don't left shift negative values
...
See #3572
2023-10-15 21:00:01 +02:00
Wim Taymans
b2c24f3435
audioconvert: fix unaligned writes
...
Avoid some optimizations that cause unaligned writes.
See #3572
2023-10-15 20:52:54 +02:00
Wim Taymans
bdd577c360
Revert "audioconvert: fix unaligned address"
...
This reverts commit ae3798abaa .
2023-10-15 20:49:31 +02:00
Wim Taymans
ae3798abaa
audioconvert: fix unaligned address
...
See #3572
2023-10-15 20:40:30 +02:00
Wim Taymans
f3942fca29
audioconvert: fix unaligned writes
...
Use 16 bits writes for 16 bits samples or else we might be doing
unlaigned writes.
See #3572
2023-10-15 19:10:45 +02:00
Pauli Virtanen
960ca82552
spa: deduplicate test-helper.h
2023-10-15 16:20:17 +00:00
Wim Taymans
c94d5d9d34
audioconvert: improve allocation
...
Don't try to allocate each time port buffers are set but only once
before we start procesing.
Also allocate enough temp buffers are there are ports. This saves us
quite a bit of memory in the normal case.
2023-10-13 18:05:42 +02:00
Wim Taymans
11320cf203
tweak number of buffers
...
In most cases we can use just 1 buffer.
The alsa-pcm-source needs at least 2 buffers so increment the min
limit.
2023-10-13 14:00:29 +02:00
Wim Taymans
9163c419df
audioadapter: alloc at least 2 buffers when async
...
When the follower is async, alloc at least 2 buffers.
2023-10-13 13:59:34 +02:00
Wim Taymans
7a0b400c18
spa: use dynamic builder where we can
...
With the spa_auto support this becomes feasable and avoids problems when
the pod size is unknown and ends up larger than our stack buffer.
2023-10-11 18:04:17 +02:00
Barnabás Pőcze
8256a2d5a6
spa: remove unnecessary indirection for some spa_log_topics
...
This results in shorter machine code since it removes one
pointer load and a NULL check.
2023-10-06 13:08:24 +00:00
Wim Taymans
14114a7386
audioconvert: warn -> debug
2023-10-03 20:39:40 +02:00
Wim Taymans
48e11c6fe0
audioconvert: handle realloc errors
...
The original pointer is untouched when realloc fails and returns NULL so
make sure we free the previous values.
2023-10-03 20:38:11 +02:00
Wim Taymans
428f766d11
audioadapter: always pass Start when passthrough
...
When we are operating in passthrough, let the Start command pass through
to the follower in all cases. Only do the negotiate/buffers when not in
passthrough.
This fixes a case where the buffers are cleared on the alsa node and it
Pauses but then never resumes in a Start because the node is already
started. The real problem is probably somewhere else (in PipeWire) but
for now this will improve things in passthrough.
2023-10-02 15:41:56 +02:00
Wim Taymans
c4944dad17
audioconvert: silence some debug info
2023-09-27 11:44:31 +02:00
Wim Taymans
cc1d980f0a
audioconvert: silence some debug
2023-09-15 12:18:20 +02:00
Wim Taymans
016d15e598
ratelimit: missed -> suppressed
...
To avoid confusing with missed samples.
2023-09-08 12:18:23 +02:00
Wim Taymans
632f532036
audioconvert: don't use -Ofast on alpha
...
I can crash when using denormalized floats.
Fixes #3489
2023-09-07 17:44:30 +02:00
Wim Taymans
ebeae802ad
audioconvert: improve tag and latency handling
...
Don't just forward the tag and latency events to the follower but let
the audioconvert aggregate and emit the updated tag/latency event
that is then configured on the follower.
When using the DSP mode of the audioconvert, this results in an
accumulated latency/tag from all the DSP ports instead of just
the last DSP port param update.
Put properties with media. prefix in tags in pw-cat.
2023-09-07 15:27:21 +02:00
Wim Taymans
805fbd0b34
meson: remove -ffast-math
...
It can cause crashes in some cases and does not seem to cause much
performance loss on x86.
Fixes #3489
2023-09-06 21:32:48 +02:00
Wim Taymans
41dcac0ecd
Port: Add tag param
...
The tag param has a list of arbitrary key/value pairs. Like the Latency
param, it travels up and downstream. Mixers will append the info
dictionaries or do some more fancy merging.
The purpose is to transport arbirary metadata, out-of-band, through the
graph and it's used for stream metadata and other stream properties.
2023-08-29 14:22:13 +02:00
Wim Taymans
b54f7fe90d
audioconvert: fix typo in neon function
...
Thanks to Shengjiu Wang
fixes #3463
2023-08-24 13:45:11 +02:00
Wim Taymans
b9d78d5992
audioconvert: add queued input to the delay
...
The input that we have queued will also add to the resampler delay.
Fixes #3454
2023-08-22 13:06:10 +02:00
Wim Taymans
71262da6d7
audioconvert: remove requirement for data_loop
...
We just need to get a timestamp so that we can do the rate limiting, we
don't need anything accurate from the data_loop.
2023-08-01 18:20:04 +02:00
Wim Taymans
536129343a
audioconvert: rate limit the out-of-buffer logging
...
See #3384
2023-08-01 15:06:28 +02:00
Wim Taymans
35d932bc8b
audioconvert: only dequeue a buffer when queued
...
Add an extra check to only dequeue a buffer when it's queued. This
should always be the case but let's check again to be safe.
See #3384
2023-08-01 15:04:31 +02:00
Wim Taymans
ad1a36a718
audioconvert: add option to disable volume updates
...
Add channelmix.lock-volumes. When set to true it will disable volume
updates until set back to false.
See #3361
2023-07-25 12:36:23 +02:00
Wim Taymans
ab1436fb3b
audioconvert: improve EMPTY flag on output buffers
...
Only set the EMPTY flag on output buffers if we don't have any
previously queued samples and the input is EMPTY.
Fixes #3365
2023-07-19 21:39:25 +02:00
Wim Taymans
baa5497617
spa: warn out of buffers
...
Running out of buffers is pretty bad and warrants a warning because it
can cause loss of audio.
See #3316
2023-07-07 12:11:02 +02:00
Wim Taymans
b5b01f4dd2
resample-peaks: improve peaks some more
...
Update the i_count in the loop because we use it to check when we have
completed a chunk.
2023-07-05 14:07:30 +02:00
Wim Taymans
48bf039e25
resample-peaks: fix peaks resampler
...
Avoid some segfaults in some cases.
fixes #3320
2023-07-05 13:46:08 +02:00
Barnabás Pőcze
8c17a6626d
treewide: mark some functions static
...
These were found by enabling the "missing-declarations" warning.
2023-07-03 19:40:31 +02:00
Wim Taymans
c13696aca1
filter-chain: simplify biquads
2023-06-30 17:49:29 +02:00
Wim Taymans
0156d63109
audioconvert: don't negottiate rate when resample is disabled
...
This will leave the negotiated rate 0 when parsed and instructs the
stream to follow the graph rate.
2023-06-26 11:23:29 +02:00
Wim Taymans
774af1487a
Revert "audioadapter: renegotiate when EnumFormat changes"
...
This reverts commit b292e52740 .
It is probably not a good idea to renegotiate right away, we should at
least wait until the node is started again.
2023-06-22 10:01:02 +02:00
Wim Taymans
b292e52740
audioadapter: renegotiate when EnumFormat changes
...
Start renegotiation when EnumFormat changes.
2023-06-21 16:29:45 +02:00
Wim Taymans
d04e430f23
audioconvert: add channelmix.mix/max-volume param
...
And clamp the volume values between these two. This can be used lock the
voluem to value or do some volume limit.
2023-06-15 11:06:52 +02:00
Wim Taymans
05ea4520e6
audioconvert: improve debug
2023-06-14 16:57:13 +02:00
Wim Taymans
29989835f9
resample: improve debug
2023-06-14 11:19:50 +02:00
Wim Taymans
09f480ccb3
audioconvert: fix monitor port latency
...
The monitor port latency is the reverse direction of the input ports.
2023-05-25 20:05:54 +02:00
Wim Taymans
e3d9d9c9fa
audioadapter: warn !started and scheduled only once
...
One warning is enough.
2023-05-19 18:40:11 +02:00