Make a new library.filter-path for the filter-graph that will filter and
restrict the dlopen filenames (used for the LADSPA plugin only).
By default this is false and so filter-chain can load from absolute
paths without extra checks.
Enable the extra checks for the pulse LADSPA modules and the
audioconvert filter graphs because these allow loading LADSPA plugins
into other processes.
Fixes#5222
When we are asked to add noise bits, don't call the clear function.
Make the passthrough and clear-on-empty flags available with a new flag
field to make it more extensible.
Fixes#5260
There could have been a write error or allocation error while building
the json file that we can detect in spa_json_builder_close().
Error out instead of silently using a truncated JSON.
Use spa_autofree for the memory to make cleanup easier.
Make the module valid_args a structure that includes the argument key,
description and some flags. Use this to enforce mandatory properties
in a more central place.
We should be able to generate the module usage from this as wel later to
have things a bit more structured.
Convert matrix_orig and matrix to float arrays and use variable size 2d
arrays to access the elements of the matrices. This removes the need for
storing pointers to matrix rows.
Make pw_net_get_ip also accept NULL ip to just get the port and ip
version. Make rtsp-client use pw_net_get_ip.
Make sure we initialize the iovec before logging in all cases.
Print a warning if a control value is clamped instead of silently
failing as the user might want to know if the intended
configuration was not applied successfully, such as filter
parameters.
If the pipeline is running for coverity scan, then only two jobs are needed:
* container_coverity
* build_with_coverity
but currently 4 container, 1 build, and 1 deploy jobs are running unnecessarily.
Disable the container jobs by simply extending `.not_coverity`.
The `build_on_fedora_html_docs` and `pages` jobs already extend `not_coverity`,
however, they override the `rules` section, hence it is replaced, so the "not coverity"
condition is lost. Fix that by adding the condition separately. (`build_on_fedora_html_docs`
referencesc the rules of `pages`, so modifying the latter is sufficient.)
The bluetooth VM tests require building BlueZ (specific version is
better than relying on FDO image version) and building pytest-bluezenv.
Build them and cache the results.
Add tests that check PipeWire <-> PipeWire bluetooth audio streaming for
A2DP, BAP, HFP. The tests use Qemu VMs and don't require Bluetooth
support from HW / kernel.
Full VM images are not required; similarly to BlueZ kernel tester these
use (read-only) mount of host filesystem. A monolithic kernel image
with suitable config is required. The bluetoothd binary installed on
host is used if found; otherwise tests are skipped.
These test depend on https://github.com/pv/pytest-bluezenv which manages
the VM setup.
To launch:
python3 -m pip install pytest-bluezenv
meson devenv -C builddir -w . python3 -m pytest test --kernel-build -v
which also builds a kernel image with required options.
BAP/USR/ADV/BV-01-C test requires to advertise Audio Stream Control
Service properties with General Announcement type and supported
contexts values for sink and source which should be in sync with
the PACS values.
AVB_MRP_VECTOR_GET_NUM_VALUES can be 13 bits and is stored in a
unit16_t. event_len and param_len are however calculated from this and
then truncated to 8 bits (uint8_t) which causes the bounds check to
silently pass and cause an OOB read.
Change the type to uint16_t to avoid overflows.
With large quantum and many channels, the silence buffer can become
quite large (many MB), which can cause a stack overflow.
Use a fixed size silence buffer instead and write in smaller chunks.
If the "debug" log level is not enabled for the "spa.alsa" log topic,
then there is no point in going into the loop and splitting the data
into lines, so skip that.
Do not use `strcspn()` because it assumes a null terminated string,
but the `fopencookie()` write callback receives a (ptr, length) pair.
So use `memchr()` instead to find the `\n`.
The `fopencookie()` write callback should return the number of consumed
bytes, but it currently only ever returns 0, which signals an error
condition according to the documentation.
Fix that by not overwriting `size`.
Fixes: 73073eb33f ("alsa: redirect alsa output to log file")
The programs in `doc/examples` are not compiled currently, so let's
compile them if the `docs` and `examples` options don't disallow it.
`tutorial4.c` needs a small modification to avoid `-Wfloat-conversion`.
Additionally, install them if `installed_tests` is not disabled.