Wim Taymans
f372de8608
resample: refactor rate match code
...
Use the same code to start rate matching so that we get the same
results for passthrough.
2021-03-14 20:06:45 +01:00
Wim Taymans
17fd38c3a5
channelmix: use front-center matrix values
...
Use the front-center matrix values to mix left and right.
2021-03-14 15:42:53 +01:00
Wim Taymans
a9bf93030e
resample: limit input size to max size of empty space
...
When flushing use the max size of the empty space, not the
max size of the input buffers, which might be larger.
2021-03-13 13:53:41 +01:00
Wim Taymans
801bd98233
audioconvert: use preallocated empty buffer to drain
...
Avoid calling memset on a large piece of memory when draining
the resampler because it might use up all the allocated time in
our realtime thread. Instead use a prealloced empty buffer.
2021-03-13 12:54:41 +01:00
Wim Taymans
86cf4ad5a5
audioconvert: keep better track of changed params
...
Keep all the children param flags around and use those to decide
if something changed. Also don't change the param flag serial when
we are simply adding a listener.
This should reduce the number of param updates, most notably the
PropInfo that was updated along with the Props on volume changes.
2021-03-12 11:10:43 +01:00
Wim Taymans
6562a2ab79
channelmix: clean up param handling
...
Use defines to access the different params.
Fix the name of the function to emit properties.
2021-03-12 10:36:08 +01:00
Wim Taymans
d63f4234ae
channelmix: remap volumes
...
The volumes set with the properties need to be reordered to match
the volumes of our internal layout.
2021-03-11 11:26:26 +01:00
Wim Taymans
fc044a37af
resample: don't copy too much
...
When we are in passthrough mode, copy only the min of input and
output size or else we might overread/overwrite.
See #875
2021-03-09 12:47:38 +01:00
Wim Taymans
e095105e57
resample: fix passthrough check
...
Only in passthrough we need to just copy input to output. Otherwise
we need to ask the resampler for the conversion size.
2021-03-09 08:52:43 +01:00
Wim Taymans
99b2973c31
resample: disable when not used.
2021-03-08 16:55:56 +01:00
Wim Taymans
6324298bc5
channelmix: add more generic upmixing
...
Add options to enable lfe filtering and upmix.
Enable upmix by default, lfe is disabled because we don't actually
do a lowpass filter yet.
2021-03-06 21:31:18 +01:00
Wim Taymans
c7309f0248
channelmix: small cleanups
...
Fix indent
Rename DUAL/QUAD to REAR and SIDE and use it for checking availability
of stereo pairs.
2021-03-06 21:29:36 +01:00
fdev31
4d21b5f8bd
Simple upmix of stereo inputs up to 7.1 output
2021-03-06 20:22:09 +00:00
Wim Taymans
3af768f124
resample: take into account the number of queued input samples
...
Take the queued input samples into account when calculating the
required input size. This can be 0 when there is still enough
data queued in the input for another period.
Handle 0 read_size in alsa-source and make it push out a 0 buffer,
this will then drain the resampler and make it ask for a new buffer
size. This makes the transition from one period to another more
seamless for the resampler.
Fixes #805
2021-03-04 10:27:44 +01:00
Wim Taymans
00d8d1472d
channelmix: fix 7.1 to quad downmix
2021-03-01 19:51:14 +01:00
Wim Taymans
00e52ec167
resample: in drain, feed silence in all channels
2021-03-01 18:09:24 +01:00
Wim Taymans
5ae286702e
audioconvert: make sure we update the flags
...
When we get a param update, update with the new flags.
2021-03-01 17:01:46 +01:00
Wim Taymans
d5d8150e05
fmtconvert: prefer planar formats when possible
...
It's easier to convert to and from.
2021-02-26 21:14:35 +01:00
Wim Taymans
50437029a3
channelmix: improve debug, add passthrough state
2021-02-26 21:12:11 +01:00
Wim Taymans
e2181c582d
audioconvert: fix channel remapping some more
...
See #461
2021-02-26 18:40:04 +01:00
Wim Taymans
6ce3705f5e
fmtconvert: fix channel remapping
2021-02-25 17:41:50 +01:00
Wim Taymans
d080cd4819
channelmix: fix 7.1 to stereo and 3.1 downmix
2021-02-25 16:18:40 +01:00
Wim Taymans
44919c83fc
audioconvert: keep better track of param changes
...
Keep track of the param changes with the user counter. Make sure to
flip the serial switch whenever a change is pending. Previously
we copied the param from the channelmixer or follower but that
did not always result in a serial change.
Fixes #764
2021-02-19 09:57:59 +01:00
Wim Taymans
c7b7afa664
audioadapter: fix enum of properties
...
Keep track of the subelement we're iterating in the result index upper
bits. Use enum_sync to iterate each param and switch to the next
element when we run out of params.
See !468
2021-02-17 09:59:00 +01:00
Wim Taymans
ca10c6470f
audioconvert: use sizeof for position size
...
And make the position field a little larger
2021-02-16 15:07:40 +01:00
Frédéric Danis
0061ddd6be
audioconvert: Fix buffer overflow
...
This was introduced by commit c160a063b9
2021-02-16 14:56:17 +01:00
Wim Taymans
91610bd1a9
merger: emit params changed event when reconfiguring
...
The props param changes when the number of channels changes.
2021-02-16 12:34:59 +01:00
Wim Taymans
c160a063b9
audioconvert: handle unexpected channel positions
2021-02-16 12:34:59 +01:00
Wim Taymans
ef98361630
audioconvert: when we reconfigure, emit param changed event
...
When we reconfigure the node, the Props param changes with the
new number of channels.
2021-02-16 12:34:59 +01:00
Wim Taymans
d6afdda898
audioadapter: enumerate node params from follower as well
...
Enumerate the params from the follower as well.
Configure params on the follower and converter.
When follower params changes, emit event.
See !460
2021-02-15 15:43:03 +01:00
Wim Taymans
e7aa15e475
audioadapter: only check port params when changed
2021-02-15 15:39:39 +01:00
Wim Taymans
6c02fd663a
merger: handle monitor mute as well
2021-02-05 17:41:56 +01:00
Wim Taymans
11900bbd67
audioconvert: add missing file
2021-02-05 17:29:43 +01:00
Wim Taymans
1511f19f70
audioconvert: handle monitor volumes
...
Implement monitor volumes in the merger. There are two volumes,
the channel volume and the monitor volume. The monitor volume
is always applied.
By default the monitor volume will now follow the main volume of
the node. This can be disabled with a monitor.channel-volumes
property.
See #674
2021-02-05 17:12:51 +01:00
Wim Taymans
6249b00b9a
audioconvert: add volume ops
...
Add volume helpers and use this for the monitor output ports so
that we can add volumes to the monitor output signal as well.
2021-02-05 15:08:26 +01:00
Wim Taymans
972e740519
Don't advertize formats we don't yet support
...
We don't handle the reverse endian formats yet so make sure we
don't advertize them.
2021-02-05 12:12:44 +01:00
Wim Taymans
47b6ce84b2
channelmix: initialize with float
2021-02-02 11:01:01 +01:00
Wim Taymans
be6410909f
audioadapter: remove some unused code
2021-02-01 15:16:39 +01:00
Wim Taymans
88727afbd2
resample: take already queued sample into account
...
When asking for samples, take into account the amount of samples
we already have converted.
2021-01-18 15:09:54 +01:00
Wim Taymans
51d44e9154
test: improve resampler test
...
Test with different amount of input samples.
2021-01-18 15:08:23 +01:00
Wim Taymans
19be555fa6
audioadapter: run the converter after follower drained
...
When the follower drained, rerun the converter again to let it drain
as well.
2021-01-18 10:29:50 +01:00
Wim Taymans
6b0abd2057
channelmix: Improve unknown channel layout handling
...
Clamp position to valid range. so that AUX becomes UNKNOWN.
If we have one mono source channel and unknown destination, copy it
to all destination channels.
If we have one mono destination channel and unknown source layout,
average all channels.
Otherwise, pair source and dest channels.
See #538
2021-01-15 17:51:07 +01:00
Wim Taymans
d7ff7d098b
audioadapter: don't emit xrun when drained
2021-01-15 09:46:17 +01:00
Wim Taymans
a8faad9f17
fmt: support f32p -> s24s conversion
...
As used by MAudio Fasttrack Pro
See rhbz#916017
2021-01-14 17:58:54 +01:00
Wim Taymans
abe73c9146
meson: use global b_pie to build PIE executables
2021-01-14 16:29:32 +01:00
Wim Taymans
c9354c238f
Add -fPIE to installed executables
...
Fixes #570
2021-01-13 19:40:37 +01:00
Wim Taymans
540011f1e3
test-resample: fix unit test
...
Caller should not have to resubmit old samples anymore.
Fixes #551
2021-01-09 10:55:51 +01:00
Wim Taymans
d1f9966a77
resample: implement methods we now call
2021-01-08 17:43:13 +01:00
Wim Taymans
7f007b6bca
resample: tweak the resampler to keep delay number of samples
...
Instead of requiring the upstream node to resubmit the delayed
samples, keep the samples ourselves. The benefit is probably too
small to measure but it simplifies things a lot.
2021-01-08 16:35:26 +01:00
Wim Taymans
7e9ab8b457
resample: first resample the data, then apply the new rate
...
Else we might not have enough input samples for the new rate.
2021-01-08 13:17:06 +01:00