Barnabás Pőcze
43f7831d14
spa: audioconvert: use SPA_N_ELEMENTS in noise_init()
2022-06-24 16:27:39 +02:00
Michael Tretter
a745374232
v4l2: fix port param enumeration for devices without controls
...
It is valid for V4L2 devices to not implement any controls. QUERYCTRL
returns ENOTTY in these cases. Enumerating the controls must not fail in
these cases but return no controls.
2022-06-24 12:16:05 +00:00
Michael Tretter
edd41d8259
v4l2: close v4l2 device on error
...
The device needs to be closed when the enum_controls function is exited,
but is not closed if the VIDIOC_QUERYCTRL fails. Fix it.
2022-06-24 12:16:05 +00:00
Wim Taymans
13ccccbfbd
audioconvert: add missing file
2022-06-24 14:15:17 +02:00
Wim Taymans
1c6cb049ce
audioconvert: add an option generate silence noise
...
Add an empty.noise option that specifies the number of bits to
use for noise when the input signal is pure silence.
Some amplifiers can go into suspend mode pretty easily when they
get pure silence. With empty.noise = 1, audioconvert will now generate
a bitpattern that can keep those amplifiers alive, together with
disabling suspend in the session manager.
Fixes #705
2022-06-24 13:45:35 +02:00
Wim Taymans
9430df0ba6
channelmix: undefine the function macro
2022-06-24 13:45:35 +02:00
Wim Taymans
974ab5348e
audioconvert: reset props before parsing config
...
Or else we undo all settings from the config params.
2022-06-24 13:45:35 +02:00
Wim Taymans
f2dee23085
buffer: add EMPTY chunk flag
...
Add an EMPTY chunk flag to mark a piece of memory as 'empty'. For audio
this means silence.
Use the empty flag to avoid mixing 0 samples.
Set the empty flag in output buffers on audioconvert.
2022-06-24 11:09:01 +02:00
Wim Taymans
71f3c759f4
audiomixer: support offset and clamp size
2022-06-24 10:41:30 +02:00
Wim Taymans
f6938d8364
alsa: simplify writing
...
We don't use the input buffers as ringbuffers, so remove that
code and simpify fomr things.
2022-06-24 10:38:13 +02:00
Wim Taymans
da95043002
channelmix: guard against invalid channels
2022-06-23 11:40:22 +02:00
Wim Taymans
cc463da63e
audioadapter: adjust max input ports
...
The control port adds an extra input port.
2022-06-23 11:39:27 +02:00
Wim Taymans
a365b19110
audioconvert: handle too many channels earlier
2022-06-23 11:28:27 +02:00
Pauli Virtanen
6bfe9a362c
audioconvert: avoid crash on 64 channels + monitor enabled
...
this->monitor enabled adds an additional port in reconfigure_mode. If
there was already the maximum 64, this will crash.
Make maximum number of ports one larger than max channels to avoid
problems.
2022-06-23 09:11:25 +00:00
Wim Taymans
0f62d3442c
alsa: handle driver bugs better
...
Use the NEAREST flag when setting a format. This only works for raw
formats and will update the format with the nearest accepted rate
or channels. We can then query the real configured format and use that
for the converter.
This makes things work when a driver tells us it can do 44100Hz but then
refuses and changes the rate to 48000.
See #2197 , #2457 , #2455 , rhbz#2096193
2022-06-23 10:20:49 +02:00
Wim Taymans
ecc0eecf0f
mixer-dsp: mix a quantum of data at a time
...
When there is no input, mix up to a quantum of data. Otherwise we might
send too much data to the next node and cause a delay if it does not
handle this.
2022-06-22 15:50:56 +02:00
Wim Taymans
a427e602bd
audioconvert: in merge mode, flush input
...
In merge mode we handle 1 quantum and then flush the input and
output. Fixes a case were samples were cut at the start.
2022-06-22 15:48:09 +02:00
Wim Taymans
a13f65f583
alsa-seq: disable the running status
...
Running status is not something we want in the PipeWire graph.
2022-06-20 16:18:42 +02:00
Wim Taymans
25d9039f2e
alsa-seq: handle midi event decoder errors
2022-06-20 16:12:49 +02:00
Wim Taymans
40f50deae9
alsa: remove NoteOn 0-velocity fixup
...
Pass MIDI events as they are.
JACK requires NoteOn 0-velocity midi events to be patched to NoteOff
events for compatibility with LV2 plugins. Let's do this patchup in
the JACK layer then and add an option to disable it.
It's best to pass the midi messages unmodified and then patch them up
wherever they need patching up.
2022-06-20 15:51:33 +02:00
Wim Taymans
d13a206866
audioconvert: fix resampler in_offset
...
Only advance the in_offset with the number of samples that were consumed
by the resampler. In case when the resampler is filling up an old
buffer, this can be less than n_samples.
Fixes a2dp source and possibly others.
2022-06-20 12:33:52 +02:00
Lucas Holt
6a15a02ec2
Add support for MidnightBSD
...
Fix build issue
Fix build issue
2022-06-19 18:22:47 +00:00
Barnabás Pőcze
492a328227
spa: audioconvert: free resampler
...
resample::free() needs to be called in `impl_clear()` otherwise the
resampler's private data is leaked when the audioconvert instance is destroyed.
2022-06-16 19:49:50 +02:00
Barnabás Pőcze
96d0902dc8
spa: ffmpeg: set spa_handle_factory::version
...
Initialize the version with the `SPA_VERSION_HANDLE_FACTORY` macro.
This way `spa-inspect` can properly inspect the factory.
2022-06-16 17:29:42 +02:00
Barnabás Pőcze
de5a85d808
spa: ffmpeg: implement spa_handle::clear
...
Implement the spa_handle::clear method for both the encoder and decoder.
At the moment, they both do nothing.
2022-06-16 17:29:20 +02:00
Barnabás Pőcze
f2bd2ef6fb
spa: ffmpeg: implement spa_handle_factory::get_size
...
This method is necessary for the creation of a handle,
so implement it for both the encoder and decoder.
2022-06-16 17:28:23 +02:00
Barnabás Pőcze
6cb8fb899d
spa: ffmpeg: move some function declarations to a header
...
Move the declarations for `spa_ffmpeg_{dec,enc}_init` to the
"ffmpeg.h" header file. This way the implementation is checked
against the signature.
2022-06-16 17:27:36 +02:00
Barnabás Pőcze
1a21da9898
spa: tools: spa-inspect: clear and free handles
...
Call the handle's `clear()` method after it has been
inspected, and free the allocated storage for the handle.
2022-06-16 16:59:40 +02:00
Wim Taymans
3cb5fab176
audioconvert: rework the control loop
...
Use the offset to skip entries in the sequence array.
Use one loop to handle intermediate and trailing samples.
Fixes an issue where the last chunk of a sequence would be ignored.
2022-06-16 16:45:32 +02:00
Wim Taymans
e0af67b670
examples: fix spelling mistake
2022-06-16 16:40:47 +02:00
Wim Taymans
de2e819fec
audioconvert2: rename to audioconvert
2022-06-16 09:19:05 +02:00
Wim Taymans
cf04bb573c
audioconvert: remove old plugins
2022-06-16 09:16:49 +02:00
Wim Taymans
f74b59b39f
examples: fix volume fade in and out with control
2022-06-16 09:09:27 +02:00
Wim Taymans
c160cd0176
audioconvert2: implement control port
...
Add a control port when requested in the PortConfig.
Fix the sequence loop.
Make a copy of the sample pointers before changing them.
2022-06-16 09:09:27 +02:00
Wim Taymans
5a60fd7041
audioconvert2: remove unused monitor field
2022-06-16 09:09:27 +02:00
Wim Taymans
194b8e2d97
audioconvert2: emit param change when volume changes
2022-06-16 09:09:27 +02:00
Wim Taymans
0ec41e60ef
audioconvert2: fix for quantum changes
...
Use the offset as the buffer size.
Use the amount of requested - amount of used samples as queued samples.
2022-06-16 09:09:27 +02:00
Wim Taymans
708b57aa64
examples: add control support to adapter
...
Based on patches by Julian Bouzas in !222
2022-06-16 09:09:27 +02:00
Wim Taymans
fa9baa6488
examples: fix up adapter-control
...
Negotiate format, then buffers.
Give quantum-limit as a property when making nodes.
Set clock and position io and fill in rate and duration.
2022-06-16 09:09:27 +02:00
Wim Taymans
db49021104
audioconvert2: add control port processing
2022-06-16 09:09:27 +02:00
Wim Taymans
d5c28149f1
audioconvert2: fix in/out queued samples
2022-06-16 09:09:27 +02:00
Wim Taymans
7fe15ee5db
audioconvert2: add beginnings of control ports
2022-06-16 09:09:27 +02:00
Wim Taymans
d3baa16559
audioconvert2: reset node in Flush/Suspend
2022-06-16 09:09:27 +02:00
Wim Taymans
8e6a8a705b
audioconvert2: clamp in and output samples
...
Make sure we don't read or write more samples than available in the
buffers.
2022-06-16 09:09:27 +02:00
Wim Taymans
9e93fe3c36
audioconvert2: remap volumes to right channels
...
We get the volumes with a channelmap of the input/output, remap this to
the channelmixer internal layout.
2022-06-16 09:09:27 +02:00
Wim Taymans
50c37cc801
audioconvert2: rearrange some code
...
Move some code around so that we don't have to prepare the output
buffers when there is no input to process.
2022-06-16 09:09:27 +02:00
Wim Taymans
d5e333eea7
audioconvert2: in merge mode, always process quant samples
2022-06-16 09:09:27 +02:00
Wim Taymans
c4d77d421a
audioconver2: process monitor ports immediately
2022-06-16 09:09:27 +02:00
Wim Taymans
f45f1acd82
audioconvert2: use the position rate as resampler rate
...
For the DSP inputs, use the position rate.
2022-06-16 09:09:27 +02:00
Wim Taymans
58abc1ec15
audioconvert2: Improvements
...
Suggest 2 buffers by default.
Improve rate match flow.
monitor does not need the out_offset
Update rate match when we know the queued samples.
2022-06-16 09:09:27 +02:00