This helps the compiler know the returned pointer won't alias another pointer
or existing object, since it's a fresh allocation, and is unlikely to return
nullptr.
Newer versions of PipeWire copy the PW_KEY_DEVICE_FORM_FACTOR property to the
sink node, so this should work to detect whether the device should be treated
as headphones or not.
* Fix crashes while capturing audio using openal with sndio backend.
* Proper function for mFds preallocation.
Now it is checked whether the returned value of the sin_nfds() function is not a negative number.
With the increased use of PipeWire, which offers JACK compatibility, the JACK
backend has a higher potential to be auto-selected for users. However, due to
the backend's inability to auto-configure output to the device format, this
creates a less optimal out-of-the-box experience.
Unfortunately this also means the JACK backend won't be used automatically when
a real JACK server is running along with PulseAudio. While not ideal, this is
probably the better of the two options, to have the user explicitly configure
the library to use JACK when they really want to use it, instead of unwantingly
selecting JACK because of PipeWire.
It messes with 5.1 sources using direct channels, and the surround channels are
supposed to map to the side labels. Individual backends can deal with the
channel order/label differences, as they already do to a degree.
If setting the requested format channel count fails, getting anything with 2 or
more channels assumes the first two channels are stereo, leaving the rest
silent.
This way merely avoids the several lines of spam when the config module isn't
found, which there's otherwise no reasonable way to test for since they're
provided by the package, which you need to use find_package to search for,
which causes the spam. It's still useful to report the packages weren't found
in case they were expected.