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
Wim Taymans
ae9262409f
audioconvert: suggest to inline some functions
2023-05-18 10:21:47 +02:00
Wim Taymans
e3cfd73b9e
audioconvert: use target_rate/quantum when starting
...
When the node is starting and negotiating, use the target_rate and
quantum because that is what is going to be used in the next cycle.
2023-05-09 15:53:36 +02:00
Wim Taymans
efea7ad060
hooks: add and use _fast callback function
...
Add a _fast callback function that skips the version and method check.
We can use this in places where performance is critical when we do the
check out of the critical loops.
Make all system methods _fast calls. We expect them to exist and have
the right version. If we add new versions we can make them slow.
2023-05-06 00:27:12 +02:00
Wim Taymans
9967c35bbe
audioconvert: exit early to ask more data
...
We don't need to peek all the output buffers before deciding that we
need more data. Just check if we have input, if not ask more data.
2023-05-05 21:34:53 +02:00
Pauli Virtanen
6e17962ad0
impl-port/audioconvert: add PORT_IGNORE_LATENCY
...
Add port.ignore-latency prop, which if true causes peer ports to ignore
the latency of the given port.
This is useful for ports that are not intended to affect latency
calculations of other ports, such as ports in monitor streams.
2023-05-03 18:01:00 +00:00
Wim Taymans
8f7acb717c
audioconvert: clear format and buffers on start error.
...
When we get an error, clear the ready state again and also clear the
format a buffers that we might have negotiated before starting.
2023-04-28 10:47:30 +02:00
Wim Taymans
b262812643
audioconvert: always allow peaks resampler
...
When we're using the peaks resampler, allow resampling, even when it is
disabled in the config.
The peaks resampler is just for GUI and would not really change the
signal, so we can allow this.
2023-04-27 17:10:41 +02:00
Wim Taymans
b9381a9da6
audioconvert: use a new boolean to check if ready
...
Use a new boolean to check if the follower is allowed to emit a ready
event. This can be done right after negotiating.
Set the started field to true after we finish setting the state of the
converter and follower. This fields is used to block calling into the
process function before we complete the setup.
This avoid a crash in always-process nodes when the node is scheduled
before the audioconverter completes setup.
2023-04-25 20:16:28 +02:00
Wim Taymans
bf1b3bb157
audioconvert: handle recursive Props set_param
...
When the node receives a set_param Props, it calls the follower
set_param implementation. If that one calls set_param again on the
adapter, discards the original set_param.
This makes it possible for the follower to intercept the Props param and
set a modified version on the converter. This can be used to intercept
volume changes.
2023-04-17 16:12:35 +02:00
Wim Taymans
463e723a1e
test: add more lossless tests
...
Also test that S16->F32->S32 and U16->F32->U32 are lossless.
2023-04-06 10:00:17 +02:00
Wim Taymans
edf2062830
fix compilation
2023-04-05 19:53:33 +02:00
Wim Taymans
6dcf0027d8
audioconvert: implement mix/resample_disabled
...
Fail when resampling or channelmixing is required but disabled.
2023-04-05 19:51:16 +02:00
Ashok Sidipotu
7dbad54ae5
audioconvert: donot return errors in the volume ramp setparams
...
Also avoid the divide by zero while generating sequence.
2023-04-05 16:27:48 +05:30
Wim Taymans
d41d8cf983
audioconvert: fix return values
...
Return negative error numbers for errors.
2023-04-03 21:34:10 +02:00
Ashok Sidipotu
dcec2e785e
audioconvert: add a invalid value for scale
...
The invalid value here is zero, this will help avoid inadvertant parameter
updates and brings this on par with rest of the volume ramp parameters
2023-04-03 19:04:55 +00:00
Ashok Sidipotu
74872250e8
audioconvert: make volume ramp parameters non-sticky
...
This mean the volume ramp parameters will have to be issued along with volume
every time. They will not be persistant.
2023-04-03 19:04:55 +00:00
Ashok Sidipotu
737bc89ab9
audioconvert: grow the volume ramp buffer
...
Grow the volume ramp sequence command buffer dynamically, if needed.
2023-04-03 19:04:55 +00:00
Ashok Sidipotu
8bfafaeca2
audioconvert: add support of volume ramp scale parameter
...
- Add support for Linear and Cubic volume scales
- Also start treating a "zero" value of volume ramp parameters as invalid
2023-04-03 19:04:55 +00:00
Ashok Sidipotu
b0f6c4a8c0
audioconvert: add support for volume ramp time params
2023-04-03 19:04:55 +00:00
Ashok Sidipotu
40cf237eb3
audioconvert: add volume ramp parameters
...
Add volume ramp parameters and the add ramp up and down funtions which get
triggered on volume change.
2023-04-03 19:04:55 +00:00
Ashok Sidipotu
3b1ce6c268
audioconvert: parameterize channelmix_process_control() function
...
Decouple the function from control port and parameterize it, so that it can be
called any spa pod sequence.
2023-04-03 19:04:55 +00:00
Wim Taymans
b3940627dd
audioconvert: pass the NODE_ASYNC flag correctly
...
Pass the follower async flag correctly in the adapter.
2023-03-30 15:03:29 +02:00
Wim Taymans
4fb17d1c03
audioadapter: clear rate matching when not using converter
...
Ensure that we clear the rate matching when we are not using the
converter. This will make the follower use the quantum instead of the
dummy unused rate matching area.
Exit when we can't make an internal converter because then things really
are not going to work. Remove some of the pointless NULL checks.
2023-03-30 15:03:29 +02:00
Wim Taymans
3decaa6457
audioconvert: use spa_strbuf
2023-03-22 15:41:27 +01:00
Wim Taymans
5d2773a554
audioconvert: fix test
...
Enable upmix manually because we test that.
2023-03-22 15:41:06 +01:00
Wim Taymans
d07e1b5641
audioconvert: disable upmix by default again
...
But instead ship config override files to enable it again.
The idea is that distros can make extra packages that can than be
installed to enable the upmixing.
Also ship a config file to enable more samplerates.
Fixes #3081
2023-03-22 15:21:55 +01:00
Wim Taymans
689184a5e7
audioconvert: check return value of pod parse
2023-03-16 12:33:08 +01:00
Wim Taymans
c88f841a58
audioconvert: fix passthrough PortConfig enum
2023-03-16 11:59:07 +01:00
Wim Taymans
54cf394b1b
wav: fix build
2023-03-09 17:09:47 +01:00
Wim Taymans
670bf8fe8f
echo-cancel: add wav debug file support
2023-03-09 16:31:30 +01:00