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.
When the graph rate changes it is possible that the follower node can
renegotiate to the new suggested audioconvert rate without requiring
resampling and so the extra check for the disabled resampler is not
required.
Fixes#4933
Move the source offs, stride, data and size calculations out of the
destination loop. We only need to clamp the size to copy to the maxsize
of the destination buffer.