Commit graph

9341 commits

Author SHA1 Message Date
Barnabás Pőcze f61bb3aef5 doc: tutorial3: do not spa_zero() the hook objects
`spa_hook_list_append()` zeroes the hooks when they
are inserted into the list of hooks.
2022-07-21 07:20:11 +00:00
Barnabás Pőcze bb0cda3d94 doc: tutorial3: use tabs for indentation 2022-07-21 07:20:11 +00:00
Pauli Virtanen b3db13be10 stream: don't do overlapping assignment of union members
Coverity does not like assigning union member to another. Don't use
union here, as it's not needed.
2022-07-21 07:12:22 +00:00
Pauli Virtanen 67c41336db bluez5: fix minor issues / warnings
Make static analysis happier.
2022-07-21 07:12:22 +00:00
Wim Taymans 38b3d027ec audioconvert: remove S32_SCALE
We don't use it, we use S24_SCALE and then shift. Also adjust the
S32_MIN and S32_MAX values, based on S24 values.
2022-07-20 17:45:34 +02:00
Wim Taymans 862a0746e4 docs: fix ref 2022-07-20 15:49:09 +02:00
Barnabás Pőcze 5cdf4d6c64 spa: libcamera: remove unnecessary cast 2022-07-20 10:48:24 +00:00
Barnabás Pőcze 8bccad3ade spa: libcamera: only add "api.libcamera.location" property when available 2022-07-20 10:48:24 +00:00
Barnabás Pőcze 4072f63ab6 spa: libcamera: make cameraLoc() return a static string
There is no compelling reason to use `std::string`.
2022-07-20 10:48:24 +00:00
Barnabás Pőcze 237174b7f2 spa: libcamera: mark two functions static
`cameraLoc()` and `cameraModel()` are only used in one
translation unit.
2022-07-20 10:48:24 +00:00
Barnabás Pőcze 89d5d51bb3 spa: libcamera: fix build error due to return type change
libcamera commit 1c4d4801850559d6f919eef5c2ffbaf7675dbc46
changed the return type of libcamera::ControlList::get()
to be std::optional<T>. Adapt the code to this change.

Fixes #2575
2022-07-20 10:48:24 +00:00
Wim Taymans 0bf7911b37 audioconvert: tweak resampler window some more
By: Kevin Yin

R->A calculation removed: it wasn't valid anyway. No behavior change.
Placed existing A in there directly.

cosh window -> strangely tweaked exp window: remove the discontinuity
at the border, which is wrong for a window function. If A changes in the
future, this window will be better. With the current A, you will not be
able to tell the difference on any graph. (Of course, it's not a cosh
window anymore.)

Fixes #2574
2022-07-20 10:18:47 +02:00
Wim Taymans 5a8af97a40 audioconvert: use SPA_CLAMPF to clamp floats
It generates better assembler.
2022-07-19 17:59:14 +02:00
Wim Taymans fd46ef16ed man: update pw-cli man page
See #2552
2022-07-19 16:58:47 +02:00
Wim Taymans f857fd4626 avb: fix compilation on big endian 2022-07-19 15:59:00 +02:00
Pauli Virtanen 434cc6a90b bluez5: add Opus as a (Pipewire-specific) A2DP vendor codec
Support Opus as A2DP vendor codec.

The specification for vendor A2DP codec is our Pipewire-specific one, so
it is compatible only with devices running Pipewire.
2022-07-19 13:44:56 +00:00
Pauli Virtanen bf52b2acff bluez5: add opus-a2dp-0.5 caps 2022-07-19 13:44:56 +00:00
Pauli Virtanen b6d237fa43 bluez5: add OPUS-A2DP specification 2022-07-19 13:44:56 +00:00
Pauli Virtanen 0dc8255057 bluez5: handle sink vs. source correctly in get_supported_codecs
Make a distinction between sink and source endpoints when determining
supported codecs.
2022-07-19 13:44:56 +00:00
Pauli Virtanen 889d507e9c bluez5: enable logging for codecs
Add codec->set_log for setting the logging object for each codec.

Bump codec API.
2022-07-19 13:44:56 +00:00
Pauli Virtanen d29aafd857 bluez5: enable A2DP duplex volume boost only if codec asks for it
Make A2DP volume boost conditional on a flag the codec sets.

Bump codec API version.
2022-07-19 13:44:56 +00:00
Pauli Virtanen 92b2b44954 bluez5: pass global setting dict to codec select_config / preference_cmp
The device is not know at SelectConfiguration time, so the settings
argument in select_config is currently unused. Pass on a global settings
dict instead, so that codec parameters can be configured.

Also add settings argument to caps_preference_cmp.

Bump codec API version.
2022-07-19 13:44:56 +00:00
Pauli Virtanen a8eb146d39 bluez5: tell the codec whether endpoint is sink or source
Add a flag A2DP_CODEC_FLAG_SINK to incidate a sink endpoint.

Also enum_config and caps_preference_cmp may need to know whether the
codec is being configured for SRC or SNK. Also add the flags argument to
init_props.

Bump codec API version.
2022-07-19 13:44:56 +00:00
Pauli Virtanen 8d66b2b2f7 bluez5: a2dp-source: more duplex codec workarounds
a2dp-sink writing duplex data to the BT socket breaks a2dp-source source
polling, also in A2DP source role. Hence, use the timer-based polling
workaround always in duplex mode.
2022-07-19 13:44:56 +00:00
Pauli Virtanen f593a44069 bluez5: a2dp-sink: support duplex codec
Allow running a2dp-sink using the duplex codec, when the local endpoint
is the A2DP sink.
2022-07-19 13:44:56 +00:00
Wim Taymans 1a5ec4452f avb: fix compilation on big endian 2022-07-19 13:49:42 +02:00
Wim Taymans aaa015d0c0 avb: fix compilation on big endian 2022-07-19 13:06:52 +02:00
Wim Taymans f274e53d25 0.3.56 2022-07-19 09:49:51 +02:00
Wim Taymans 3c87541219 Revert "mixer-dsp: mix a quantum of data at a time"
This reverts commit ecc0eecf0f.

The io-position is not actually set or updated on the mixer node so it
might use the wrong values.

Fixes #2525
2022-07-18 21:34:57 +02:00
Pauli Virtanen d82cd959e7 audioconvert: add different channel remap testcase 2022-07-18 20:33:05 +02:00
Pauli Virtanen 977d6e2321 audioconvert: fix input remapping
As currently implemented, input format convert channel remap is no-op.
This is because although the out_datas array is permuted, the original
pointer array is not referred to later on, so the only effect is that
the temporary data array is stored in permuted order.

Fix the permutation by permuting the pointers only for the conversion
step.
2022-07-18 20:31:46 +02:00
Wim Taymans 4eb81b13ac audioconvert: add test
Add test for F32_7p1_remapped to F32P_7p1_remapped

See #1324
2022-07-18 18:55:30 +02:00
Wim Taymans aaeafa49c1 fix some printf arguments 2022-07-18 15:39:06 +02:00
Wim Taymans 67754ad3bc meson: remove sse_args from plain c build 2022-07-18 13:00:12 +02:00
Wim Taymans ada39f3048 audioconvert: improve noise bits
Make a new noise method called PATTERN and use it to add a slow (every
1024 samples) repeating pattern of -1, 0.
Only use this method when we don't already use triangular dither.

See #2540
2022-07-18 11:41:57 +02:00
Wim Taymans 57f63feb92 audioconvert: Fix Wannamaker name 2022-07-18 10:22:21 +02:00
Hubert Figuière 86257a0013 jack.pc libraries should only be libjack 2022-07-17 23:12:19 -04:00
Wim Taymans d030983212 pw-cat: don't print useless error
getopt has already printed a much better error for us.

See #2558
2022-07-17 16:47:24 +02:00
Doğukan Korkmaztürk 87f1979b36 stream: eliminate some implicit type conversions 2022-07-17 16:41:30 +02:00
Doğukan Korkmaztürk c80c6b79d7 buffers: eliminate an implicit type conversion 2022-07-17 16:41:30 +02:00
Wim Taymans 9dbd016f9d audioconvert: fix compilation warnings 2022-07-17 13:15:00 +02:00
Wim Taymans a4db745a7e audioconvert: improve noise shaping
Reorganize things a little so we can add more noise shapers.
Add sloped triangular noise.
Add wanamaker3 noise shaping.
2022-07-15 12:36:15 +02:00
Wim Taymans 7151150802 filter-chain: don't use invalid ports
When the stream has more channels than the filter inputs or outputs,
don't try to connect an invalid filter port but ignore the input and
clear the output.
2022-07-14 11:55:52 +02:00
Doğukan Korkmaztürk 43602911c6 module-rt: handle pthread_getschedparam() errors correctly
pthread_getschedparam() always returns non-negative values, so checking
if its return value is less than zero always evaluates to false.

Also, pthread functions don't set errno. While logging a warning
message, use the return value of pthread_getschedparam() instead of
errno.
2022-07-14 10:55:33 +02:00
Wim Taymans a458b39774 tests: add test for rounding 2022-07-14 10:48:37 +02:00
Wim Taymans 419517fd55 audioconvert: build C versions with -Ofast and -ffast-math
Move resampler implementations to a -c version.
Compile some of the functions with other flags to make them more
optimized.
2022-07-14 10:07:07 +02:00
Wim Taymans 0ba3e7c5db audioconvert: round instead of truncate, to reduce distortion
See #2543
2022-07-13 20:56:13 +02:00
Wim Taymans d18428f8bb audiconvert: make macros for conversions
Make a common macro for float to int and int to float so that we can
change the algorithms easily.
2022-07-13 18:10:25 +02:00
Wim Taymans 117fb6d697 filter-chain: add example LFE generator 2022-07-13 17:15:14 +02:00
Wim Taymans b2bb2fe028 filter-chain: be more carefull with buffer sizes
Take the min of the input buffer size as the output size. Make sure we
don't process more than the output buffer maxsize as well.
2022-07-13 16:45:57 +02:00