Wim Taymans
10e71264e7
resample: recalc rate match when out of buffers
...
When we don't have any input buffers, recalculate the rate match
size field so that we can know the size of the expected buffer.
We already do this when starting but it might have been done with
a different quantum.
2021-12-03 17:54:00 +01:00
Wim Taymans
401e56699d
audioconvert: listen for merger and channelmix for params
...
List all the params of the merger and resampler.
2021-12-02 11:35:13 +01:00
Wim Taymans
5d85e85ba7
audioconvert: remove listener for resampler
...
When adding a listener, don't add a listener for the resampler because
it does not contribute to the result, we only listen for results from
the resampler.
2021-12-02 11:35:13 +01:00
Wim Taymans
73b5e7aec4
audioconvert: expose more config options
...
Use the PROP_param to list and configure additional config options.
2021-12-02 11:35:13 +01:00
Wim Taymans
385246f5a1
audioconvert: only update the arrays when valid
...
Only update our internal channelmap/volumes array when we actually
parsed something.
2021-12-02 11:35:13 +01:00
Wim Taymans
7b4b73ae5b
channelmix: only remap volumes when we have a format
...
Or else we remap to 0 channels and lose all info.
2021-12-02 11:35:13 +01:00
Wim Taymans
77d66d73d1
audioadapter: return result from enum_param directly
...
There is no need to pass the result in an argument, just return the
value from the function.
2021-12-02 11:35:13 +01:00
Wim Taymans
e3ddcc3b19
audioadapter: also update the follower PropInfo flags
...
So that we can enumerate them.
2021-12-02 11:35:12 +01:00
Julian Bouzas
921a9038e1
spa: audioadapter: check if follower supports enum params before requesting them
...
Some follower nodes don't support all audioadapter params (For example, param
SPA_PARAM_Props is not supported by 'support.null-sink'). This change adds a
check to avoid unsuported errors when requesting a param that is not supported
by the follower.
2021-11-30 17:33:17 +00:00
Wim Taymans
f10b872733
resample: improve buffer size calculations
...
Scale the buffer size with the rate conversion ratio. Also make sure
that we can at least produce a maximum quantum of samples.
If we have large upconversion (8KH -> 48KHz) and small input
buffers, we would not allocate enough space for the output buffer
and cause xruns in the sink.
Fixes #1809
2021-11-16 11:48:02 +01:00
Wim Taymans
263adb45f4
audioconvert: fix compilation on armv7
2021-11-11 11:21:07 +01:00
Wim Taymans
0ace131d72
audioconvert: add stereo deinterleave neon asm
...
This can take some shortcuts and convert twice as many samples in one
iteration as the strided stereo deinterleave one.
2021-10-28 11:30:04 +02:00
Gleb Popov
12a4fbb425
Use uint16_t instead of int16_t to fix a compiler warning.
2021-10-22 19:05:18 +03:00
Gleb Popov
e94adaac24
Don't include byteswap.h on FreeBSD, use sys/endian.h instead
2021-10-22 17:50:42 +03:00
Wim Taymans
67209b9ecc
resample: add some float math optimization
...
Multiplying and adding the smaller floats first will reduce the amount
of rounding errors.
2021-10-18 21:19:43 +02:00
Wim Taymans
cc996b6292
resample: use blackman with 0.232 alpha
...
Gives much better results with less aliasing.
2021-10-18 21:09:16 +02:00
Wim Taymans
061ab16415
resample: tweak params a little
...
Gives less aliasing in Sweep-float.wav.
2021-10-15 12:54:49 +02:00
Wim Taymans
c8c4923fcb
spa: use log topics
2021-10-13 10:48:23 +02:00
Wim Taymans
f6d69f9bcd
resample: avoid NULL deref
...
The function is NULL when the resampler was not initialized.
Fixes #1706
2021-10-09 15:53:40 +02:00
Wim Taymans
88d7ea3d88
spa-resample: add some verbose info messages
2021-09-29 10:16:25 +02:00
Wim Taymans
4d85e6aead
resample: fix off-by-one
...
Don't use the previously skipped sample to calculate the remaining
amount of samples or else we remove one sample too much in some cases
and cause distortion, mostly when downsampling.
Fixes #1646
2021-09-28 15:31:07 +02:00
Wim Taymans
143f233be3
audioconvert: increase buffer size
...
64 channels with the new format support needs more space.
See #1620
2021-09-20 20:11:50 +02:00
Peter Hutterer
0cbd56f0cd
spa: declare a dependency for each used library in meson.build
...
For SPA libraries that we link against elsewhere in the tree, declare a
declare a dependency "foo_dep" for that library that specifies how to
link to it. Then use that dependency in the various targets.
This removes the knowledge of how to link with the library from the
target which can treat it as just another dependency.
In the case of optional libraries (e.g. the journal support lib) we can
then use declare_dependency() to declare an empty dependencies and thus
link them unconditionally in the target.
2021-09-20 07:29:03 +00:00
Wim Taymans
d04244abb9
audioconvert: add softMute to PropInfo
...
So that it can be introspected.
Fixes #1613
2021-09-15 20:57:10 +02:00
Julian Bouzas
20e64b39da
fmtconvert: add support for U16, U24, U32 and U24_32 formats
2021-09-08 14:24:26 -04:00
Wim Taymans
0cf6760ee0
resample: limit the amount of taps
...
So that we don't allocate too much space but also don't cause an
overflow in the indexes.
2021-09-08 16:28:24 +02:00
Wim Taymans
435de99428
Increase pod buffer size
...
The props of a 64 channel node are at least 2048 bytes long so make sure
we can build and filter them.
Fixes #1574
2021-09-06 15:09:28 +02:00
Wim Taymans
93e9efc1e4
audioconvert: handle NULL param
2021-09-01 13:23:00 +02:00
Wim Taymans
6c3c88f9d3
audioconvert: handle follower EnumFormat changes as well
2021-09-01 13:22:57 +02:00
Wim Taymans
743aaa3dbd
audioconvert: don't just copy the converter flags
...
We need to manage our own flags based on the direction of the follower.
We also need to make sure we only clear the NEED_CONFIGURE flag
after we are actually configured, not just when we configured our
internal converter.
See #1548
2021-08-25 15:11:54 +02:00
Wim Taymans
9dbfa63193
audioconvert: silence an info debug message
2021-08-23 17:44:56 +02:00
Wim Taymans
0af0cceca2
audioadapter: use format directly when reconfiguring
...
There is no need to parse and then recreate the format.
2021-08-23 11:20:52 +02:00
Wim Taymans
2427eeae2b
audioconvert: reset converter format as well
...
Reset the format of the converter so that when we go back to DSP mode,
we don't expose the old ports again.
.
2021-08-23 11:20:52 +02:00
Wim Taymans
8f7a972a48
audioadapter: fix passthrough switching some more
...
Remove the follower ports when leaving passthrough, add the DSP
ports.
Set up the link_io between follower and convert again when leaving
passthrough.
2021-08-23 11:20:40 +02:00
Wim Taymans
9090f19b0a
audioconvert: improve passthrough mode
...
When in passthrough mode, use the position io to update the
io_rate_match fields for the follower. This makes it possible for the
follower to also provide the right amount of data when the converter
is not selected in passthrough.
Add an option to configure the converter in None port config where it
removes all the ports. We can use this when removing the converter to
make sure all it's ports are removed.
When we remove the converter, make sure we expose the follower ports
directly so we can use them for passthrough.
2021-08-23 11:11:11 +02:00
Julian Bouzas
b368bea98c
audioconvert: do _port_set_param on fmtconvert if convert mode
...
The fmtconvert plugin does not support SPA_PARAM_PortConfig. Instead, we need to
set the format in the specific port with SPA_PARAM_Format.
2021-08-23 08:11:21 +00:00
Julian Bouzas
cad64bc992
audioadapter: add support for passthrough mode
...
Allows audioadapter to behave as its follower
2021-08-17 16:01:10 +00:00
Wim Taymans
49c1c0386f
pw-cat: fix raw read
...
raw read needs bytes, so use the stride to calculate it from frames.
Move ulaw/alaw to packed formats.
2021-08-17 17:56:31 +02:00
Wim Taymans
e9679afb12
audioconvert: support alaw/ulaw conversion
2021-08-17 17:33:29 +02:00
Wim Taymans
df9f79d869
audioconvert: add converstion to and from alaw/ulaw
2021-08-17 17:32:25 +02:00
Wim Taymans
fd82da938a
audioconvert: add more format support
...
Add support to endian conversion as well.
2021-08-17 15:03:03 +02:00
Wim Taymans
a5e2e955d2
audioconvert: add more conversions
...
Add the other endian conversions.
2021-08-17 14:45:00 +02:00
Wim Taymans
391465d1cd
audioadapter: emit Latency param changed when follower changed
...
When the follower port Emits a latency param changed, our reported
latency also changes so we need to emit the changed notify.
2021-08-17 10:49:05 +02:00
Wim Taymans
6d196b1d11
alsa: use ProcessLatency param to get and set internal latency
2021-08-17 10:04:12 +02:00
Nils Tonnätt
dd12910769
Revert "[Meson] Fix all deprecation warnings"
...
This reverts commit f7e1175ef0 .
2021-08-08 19:18:40 +00:00
Nils Tonnätt
f7e1175ef0
[Meson] Fix all deprecation warnings
2021-08-06 07:56:16 +00:00
Wim Taymans
2dabd337dc
audioconvert: clear negotiated rate
...
When we clear the format on the non-dsp port, set the rate back to
0 so that we can negotiate a new rate if needed.
2021-07-29 13:35:41 +02:00
Peter Hutterer
49f3d5842e
test: replace all spa_assert() macros with spa_assert_se()
...
These are tests, we never want those to be optimized away.
2021-07-27 10:24:44 +10:00
Wim Taymans
1ad54e8a26
spa: add 64 AUX channels
...
Make 64 AUX channels instead of using the CUSTOM range for them.
2021-07-21 11:25:43 +02:00
Wim Taymans
acad6b8f2b
audioconvert: use the right variable
...
Keep the result of the follower in res2, fail if we could not set the
properties on both the follower and the converter.
2021-07-06 16:28:57 +02:00