74 Commits

Author SHA1 Message Date
Markus Volk 4fdac1bbc2 pipewire: update 1.2.2 -> 1.2.3
PipeWire 1.2.3 (2024-08-22)

This is a bugfix release that is API and ABI compatible with the
previous 1.2.x and 1.0.x releases.

Highlights
  - Implement freewheeling support in the FFADO driver. Also improve
    buffersize and samplerate handling.
  - Improve some locking on spa_loop. Remove a possible deadlock when
    the queue was full.
  - Allocate more space for the libcamera devices string to properly
    deduplicate libcamera and v4l2 devices.
  - Some more bugfixes and improvements.

PipeWire
  - Improve activation state changes and xrun detection some more.
    (#4182)
  - Avoid a memory leak when a link in error is destroyed.

Modules
  - Improve samplerate and buffersize handling in FFADO driver so that
    it is possible to force a rate and buffer size.
  - Implement freewheeling support in the ffado driver.
  - Always set the server side clock.quantum-limit on nodes. This fixes
    a buffer size problem in Midi-bridge. (#4005)

SPA
  - Improve some locking on spa_loop. Remove a possible deadlock when
    the queue was full. (#4114)
  - Allocate more space for the libcamera devices string to properly
    deduplicate libcamera and v4l2 devices.
  - Fix a potential race when enumerating v4l2 udev devices. (#3960)

Bluetooth
  - Improve compatibility with some devices (Soundcore Motion 300).

Tools
  - pw-cli can now handle arbitrarily large input and params. (#4166)
  - Avoid some compiler warnings in pw-top.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-08-29 10:25:18 -07:00
Markus Volk db5575b55e pipewire: update 1.2.1 -> 1.2.2
PipeWire 1.2.2 (2024-07-31)

This is a bugfix release that is API and ABI compatible with the
previous 1.2.x and 1.0.x releases.

Highlights
  - Fix some more fallout of the async nodes rewrite. Fixes some
    crackling, xruns and possibly also some crashes in some cases.
  - Fix freewheeling timeouts in case of xruns. This fixes ardour export.
  - Fix event mixdown in JACK. Fixes qsynth and possibly other apps.
  - Some more small fixes and improvements.

PipeWire
  - Add a new SPA_IO_CLOCK_FLAG_XRUN_RECOVER flag when the process function
    is called because of xrun recovery.
  - Properly stop nodes in all cases, this avoids spurious xruns and
    scheduling errors. (#4122)
  - Make sure async nodes receive an async link in all cases. Do the
    processing of source output ports slightly differently to make sure we
    don't cause latency for sources. (#4138) (#4133)
  - Fix some races when negotiating and starting nodes. (#4094)
  - Actually include the config.h header to use malloc_trim() to reduce
    memory usage in pulse-server.

Modules
  - Avoid unloading some modules on stream errors because it is possible to
    recover from the error. (#4121)
  - Fix a (harmless) warning in module-rtp because of comparing samples and
    time. (#4095)

SPA
  - Let the freewheel driver detect xrun recovery and handle the timeouts
    correctly. This fixes an issue with ardour export.
  - Remove the HDMI/AC3 profiles. they turn out to fail on some hardware
    with no way to detect this.
  - Signal the eventfd when the loop is full to make sure the other thread
    is woken up to process the queue.

JACK
  - Don't check timestamps when mixing down events. The timestamps are only
    checked when writing new events with the public API. This fixes an
    issue where qsynth would not receive midi events anymore.
  - Fix the jack_get_time() function, it was returning nano instead of micro
    seconds.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-08-18 15:54:39 -07:00
Markus Volk 188186a3a0 pipewire: update 1.2.0 -> 1.2.1
PipeWire 1.2.1 (2024-07-12)

This is a bugfix release that is API and ABI compatible with previous
the previous 1.2.0 release and the 1.0.x releases.

Highlights
  - Fix a regression in the node activation counters that would break audio
    when using KODI.
  - Fix a regression in ardour export because of mishandling of sync groups.
  - Fix a regression in KDE screen preview because of the new async
    scheduling.
  - Fix a regression in context.exec argument parsing that would break some
    existing scripts.
  - More small bug fixes and improvements.

PipeWire
  - Fix a regression in the node activation counters that would break audio
    when using KODI. (#4087)
  - Fix a regression in ardour export because of mishandling of sync groups.
    (#4083)
  - Fix a regression in KDE screen preview because of the new async
    scheduling. Disable async for driver nodes. (#4092)
  - Slightly improve node shutdown to cause less xruns.
  - Fix a regression in context.exec argument parsing that would break some
    existing scripts.
  - Support custom thread create functions.

Modules
  - Improve snapcast address parsing. (#4093)

SPA
  - Fix multiple %f parsing in ACP for the new plug+a52 profiles.
  - Improve v4l2 param generation. Improve recovery when framesize or rates
    are unknown, support vivid. (#4063)

JACK
  - Use the custom thread create function to correctly let module-rt kit
    manage threads so that we don't end up with priorities on the wrong
    threads. (#4099)

GStreamer
  - Fix a crash when destroying a stream.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-07-22 11:02:32 -07:00
Markus Volk 7592911d47 pipewire: update 1.0.7 -> 1.2.0
PipeWire 1.2.0 (2024-06-27)

This is the 1.2 release that is API and ABI compatible with previous
1.1.x and 1.0.x releases.

This release contains some of the bigger changes that happened since
the 1.0 release last year, including:

  * Support for asynchronous processing has been implemented. Nodes can choose
    (or be forced) to be scheduled asynchronously. The graph will not wait for
    the output of the node to continue processing but it will use the output
    of the previous cycle (or silence) instead. This adds one cycle of latency
    but it can avoid having some nodes blocking the processing graph. Non realtime
    streams and filters now also use this asynchronous processing instead of
    their own slightly broken version.
  * The concept of node.sync-group was added. This groups nodes with overlapping
    sync-group together when one of them sets the node.sync = true. This is now
    used to make sure all nodes are scheduled together when JACK transport is
    started so that they all see the same transport time.
  * Config parsing errors are reported earlier and much better with line and
    column numbers where the parsing started to fail.
  * Add support for mandatory metadata when negotiating buffer parameters. This
    can be used to only negotiate extra buffer planes when certain metadata is
    negotiated. One use case is the explicit sync support that requires 2
    extra fds for the timelines.
  * Explicit sync metadata and support was added.
  * Support was added for making and using multiple data-loops in the server
    and clients. Support for CPU affinity and priorities was added to the
    data-loops as well.
  * The log topic debug levels can now be changed at runtime with metadata.
    The log levels in the pulse server can be dynamically changed with a
    /core message.
  * The UCM conflicting devices patches were merged.
  * Add snapcast-discover module to stream to snapcast servers.
  * Rework how peers are linked and the counters are updated. Resume the
    peers when a node is unlinked and not yet processed. This should cause
    less occasional dropouts in the graph when reconnecting things.
  * Many GStreamer element updates.
  * Many more fixes and improvements.

Enjoy the summer vacation!

Highlights (since the previous 1.1.83 release)
  - Small fixes here and there.

PipeWire
  - Compilation fixes after enabling -Werror=float-conversion

Modules
  - The module-rtp-sap now propagates the cleanup.sec property to the
    rtp-source and the rtp-source now sets a property with the receiving
    status.
  - Fix for ROC 0.3, explicitly specify sender encoding. (#4070)
  - Some fixes to the RAOP sink module, including a format fix for 32 bit
    machines.

Tools
  - Fix pw-cli monitoring code.

SPA
  - Revert peer_enum_params again because it was not used and flawed.
  - Fix multichannel processing in webrtc AEC.

GStreamer
  - Logging improvements.
  - Fix a race in the bufferpool activation.

Bluetooth
  - Improvements to BAP broadcast code parsing.

Older versions:

PipeWire 1.1.83 (2024-06-17)

This is the third and hopefully the last 1.2 release candidate that is
API and ABI compatible with previous 1.0.x releases.

Some last minute changes went in to clean up the node activation and
scheduling that justify another pre-release.

Highlights
  - Rework how peers are linked and the counters are updated. Resume the
    peers when a node is unlinked and not yet processed. This should cause
    less occasional dropouts in the graph when reconnecting things.
  - Improve xruns in module-ffado.
  - Many GStreamer element updates.
  - More fixes and improvements.

PipeWire
  - Rework how peers are linked and the counters are updated. Resume the
    peers when a node is unlinked and not yet processed. This should cause
    less dropouts in the graph when reconnecting. (#4026)
  - Improve debug of xruns.
  - Evaluate node.rules and device.rules before loading the plugin so that
    extra properties can be passed to the plugin init function.

Modules
  - Improve timing reporting in module-ffado some more.
  - Prealloc less memory in the profiler by default.
  - Improve xrun handling in module-ffado.

Tools
  - Fix a crash in pw-link when a link fails.
  - Fix pw-dump update for metadata. (#4053)

SPA
  - Improve handling of controls. (#4028)
  - Fix the string size in v4l2 to hold the device and vendor id.
  - Support meta_videotransform on buffers in v4l2. This can be used to
    signal that the buffer was rotated for example.
  - Add HDMI/AC3 profile to ALSA when supported.
  - Make it possible to disable the webrtc dependency

GStreamer
  - Improve caps handling in the elements.
  - Set buffer duration when we can.
  - Post an element error when all the elements buffers are removed.
    (#1980)
  - Improve DMA_DRM caps selection.
  - Some refactoring work.
  - Improve state handling in the elements.

JACK
  - Improve how links are activated.
  - Fix some races when freeing memory.

Bluetooth
  - Support multiple BIS in the broadcast source.

PipeWire 1.1.82 (2024-05-24)

This is the second 1.2 release candidate that is API and ABI
compatible with previous 1.0.x releases.

Not so many things needed to be fixed so this might already be the
last prerelease if everything goes well...

Highlights
  - Fix problem when moving nodes that could cause nodes to be scheduled
    wrongly and cause errors. (#4017)
  - Add snapcast-discover module to stream to snapcast servers.
  - Work around wrong kernel provided MTU for USB controllers.
  - Fix some spelling mistakes all over the codebase.
  - More small fixes and improvements.

PipeWire
  - Remove the private cleanup.h header and use the public SPA version.
  - Fix problem when moving nodes that could cause nodes to be scheduled
    wrongly and cause errors. (#4017)

Modules
  - Handle IPv6 in module-protocol-simple and support port allocation.
  - Add snapcast-discover module to stream to snapcast servers.

Bluetooth
  - Work around wrong kernel provided MTU for USB controllers.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-07-01 23:38:56 -07:00
Markus Volk 45f1bd0933 pipewire: update 1.0.6 -> 1.0.7
This is a small bugfix release that is API and ABI compatible with previous
1.0.x releases.

  - Fix a potential race/crash.
  - Fix some problems with negotiation of large integers and floats.
  - Fix JACK sysex MIDI event handling.
  - Some more smaller fixes and improvements.

  - Fix a potential race when adding/removing a port to be scheduled.

  - Fix FFADO default device handling. (#4023)

  - Fix in integer overflow and float/double compare in POD.

  - Copy larger MIDI events correctly.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-06-11 15:40:16 -07:00
Khem Raj 0b8dc5346b pipewire-0.2: Include time.h for timespec struct signature
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-05-23 08:44:42 -07:00
Markus Volk 852abb0599 pipewire: update 1.0.5 -> 1.0.6
PipeWire 1.0.6 (2024-05-09)

This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.

Highlights
  - A bitfield race was fixed that could cause some crashes or undefined
    behaviour whem moving nodes between drivers.
  - Fix to some invalid memory access in the pw-mon and pw-dump.
  - A regression in kodi with IEC958 formats playback was fixed.
  - A race in the ALSA plugin was fixed when updating the eventfd.
  - Improvements and fixes to module-combine-stream.
  - Negotiation was improved in pipewiresrc.
  - Some more small fixes and improvements.

PipeWire
  - Context properties are now set early so that client properties can be
    matched with rules.
  - A bitfield race was fixed that could cause some crashes or undefined
    behaviour when moving nodes between drivers.

Tools
  - Fix failure to hide properties in pw-mon. (#3997)
  - Fix some memleaks and a crash in pw-dump. (#4001)

Modules
  - The combine-stream module now prevents resampling to avoid broken
    audio because of different samplerates.
  - Fix a potential double free in module-loopback when calculating the
    delay. (#3748)
  - The FFADO module now only starts when ports are negotiated to avoid
    startup races. (#3968)
  - The combine-stream module will now forward tags.

SPA
  - Monitor volumes are now also clamped to the min/max volumes. (#3962)
  - V4l2 and libcamera now encodes the device ids into a JSON array. This
    is part of the deduplication code of devices.
  - A regression in kodi with IEC958 formats playback was fixed.

Bluetooth
  - Improved buffer handling and queued data when stopping.

ALSA
  - A race was fixed when updating the eventfd. (#3711)

GStreamer
  - Handle some errors better instead of crashing. (#3994)
  - Fix a memleak in the stream params handling.
  - Negotiation was improved in pipewiresrc.

0

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-05-21 14:15:11 -07:00
Markus Volk 534032bbe2 pipewire: update 1.0.4 -> 1.0.5
PipeWire 1.0.5 (2024-04-15)

This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.

Highlights
  - pw_stream can now report timestamps on buffers and the expected
    amount of samples for the resampler.
  - The GStreamer element now has more correct timestamps using the new
    pw_stream timestamps as a fallback.
  - The FFADO module now handles suspend and resume better.
  - A regression in v4l2 was fixed when parsing malformed filters.
  - A potential memory/fd leak was fixed in client-node.
  - Many more small bugfixes and improvements.

PipeWire
  - pw_stream now reports the expected resampler input or output size in
    the pw_time structure. (#3750)
  - pw_stream now also adds a time field to the buffer, which contains the
    time of the graph when the buffer was received in the stream.
  - Fix a compiler error when compiling with -Werror=shadow. (#3915)
  - The config parser will warn when invalid config is detected.

Modules
  - The FFADO module now opens and closes when suspending. This fixes some
    problems when FFADO properties are changed while suspended. (#3558)
  - Filter-chain will now warn when invalid config is detected.
  - Echo-cancel will now handle manage the state of the echo-cancel plugin
    better, making sure run() is not called after deactivate().
  - Fix some potential memory/fd leaks in client-node.

SPA
  - Improve reading the bound ALSA controls.
  - The resampler can now also report the number of expected output samples.
  - The ALSA ACP device objects have some more properties like the card.id
    and alsa.components. (#3912)
  - Fix a potential string corruption when parsing JSON strings.
  - V4l2 now sets the latency on the port. (#3910)
  - alsa-udev now has an option to expose the device even if busy. (#3914)
  - Improve null-audio-sink channel handling. (#3931)
  - v4l2 will now drop the first frame because it often contains wrong
    timestamps or garbage. (#3910)
  - A regression in v4l2 was fixed where invalid/empty properties in the
    filter would make it error early. (#3959)

GStreamer
  - The source now falls back to the new pw_buffer time for the timestamps.

Docs
  - Sync with the master branch.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-04-19 14:33:14 -07:00
Markus Volk c91ee17443 pipewire: update 1.0.3 -> 1.0.4
This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.

Highlights

  - Track memfd better to avoid inconsistent memory. Also make sure the
    mixer info is removed correctly in all cases on destroyed ports.
  - Correctly handle removed objects in the metadata.
  - Add an option to set the server and client priorities instead of using
    a hardcoded value of 88.
  - The FFADO module has been fixed. Audio and MIDI now works with
    the same latency as the JACK driver. This has now also been
    tested with a Focusrite Saffire Pro 14.
  - The JACK library has seen some important fixes. Some ardour crackling
    has been fixed when looping and multiple MIDI ports on a client should
    now work.
  - Small bugfixes and improvements.

PipeWire
  - Track memfd better to avoid inconsistent memory. Also make sure the
    mixer info is removed correctly in all cases on destroyed ports.
  - Fix Props param emission again in pw_stream. (#3833)
  - Add MAPPABLE flag to buffer data to indicate that the fd can be
    mmapped directly. Use this on DMABUF from v4l2. (#3840)
  - Correctly handle removed object in the metadata.
  - FreeBSD build and compatibility fixes.
  - Add an option to set the server and client priorities instead of using
    a hardcoded value of 88.
  - Read config overrides in the right order.
  - Fix PIPEWIRE_QUANTUM rate handling in pw_stream and pw_filter.
  - Fix pw_context_parse_conf_section(), actually use the conf argument.
  - A new pw_stream_get_nsec() and pw_filter_get_nsec() function was added
    to get the current time of the stream/filter without having to assume a
    particular clock.
  - A new default.clock.quantum-floor property was added to configure the
    absolute lowest buffer-size. (#3908)

docs
  - Many doc updates.

tools
  - Make sure we always quit pw-cli when the server stops. (#3837)
  - pw-top now prints all drivers in batch mode. (#3899)

modules
  - Don't destroy the client in protocol-simple on EAGAIN.
  - Handle IPv6 better in the RTP modules. Fix IPv6 SAP header
    parsing. (#3851)
  - The FFADO module has been fixed. Audio and MIDI now works with
    the same latency as the JACK driver. This has now also been
    tested with a Focusrite Saffire Pro 14. (#3558)

pulse-server
  - Make sure the peer_name is filled to avoid protocol errors.

SPA
  - Small resampler tweaks to improve stability of adaptive resampler.
  - Add ALSA option to control htimestamp autodisable.
  - Avoid some potential crashes in audioconvert when ports are removed.
  - Improve HDMI jack detection on some SOCs.
  - The audioconvert now has a monitor.passthrough option to pass the
    latency information on the monitor ports. (#3888)

GStreamer
  - Don't use timeouts when autoconnect=false in pipewiresrc. (#3884)
  - pipewiresrc and pipewiresink can now be automatically selected as
    audio source and sink.
  - An invalid memory access was fixed when destroying the device
    provider.

JACK
  - Remove properties correctly with the object id, not serial.
  - Improve sync with the data thread by pausing the core. Also improve
    handling of port io to avoid invalid buffer access.
  - Fix PIPEWIRE_QUANTUM rate handling.
  - Support multiple MIDI input ports per client. (#3901)
  - The output buffer size is now always correctly set. (#3892)

ALSA
  - Handle errors from eventfd_create correctly.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-03-18 15:42:47 -07:00
Markus Volk 0f1629611c pipewire: update 1.0.1 -> 1.0.3
- remove fd33d2d3bb6333c7d6e74cbaa806bff2d908f589.patch

PipeWire 1.0.3 (2024-02-02)

This is a quick bugfix release that is API and ABI compatible with previous
1.0.x releases.

Highlights
  - Fix ALSA version check. This should allow the alsa plugin to work again.
  - Some small fixes and improvements.

PipeWire
  - Escape @DEFAULT_SINK@ in the conf files.

Modules
  - Improve logging in module-pipe-tunnel.

SPA
  - Always recheck rate matching in ALSA when moving drivers. This fixes a
    potential issue where the adaptive resampler would not be activated in
    some cases.

ALSA
  - Fix version check. This should allow the alsa plugin to work again
    with version 1.0.2.

Older versions:

PipeWire 1.0.2 (2024-01-31)

This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.

Highlights
  - Fix v4l2 enumeration with filter. This should fix negotiation in some
    GStreamer pipelines with capsfilter. Also probe for EXPBUF support
    before using it.
  - Fix max-latency property and Buffer param when dealing with small
    ALSA device buffers. This should fix stuttering with some AMD
    based soundcards.
  - More small cleanups an improvements.

Modules
  - Improve netjack2 channel positions.
  - Improve RAOP module state after suspend/resume. (#3778)
  - Avoid crash in some LV2 plugins by configuring the Atom ports. (#3815)

SPA
  - Bump libcamera requirements to 0.2.0.
  - Try to avoid unaligned load exceptions. (#3790)
  - Fix v4l2 enumeration with filter. (#1793)
  - Fix max-latency property and Buffer param when dealing with small
    ALSA device buffers. This should fix stuttering with some AMD
    based soundcards. (#3744,#3622)
  - Add a resync.ms option to node.driver to make it possible to resync
    fast to clock jumps.
  - Probe for EXPBUF support in v4l2 before using it. (#3821)

pulse-server
  - Also emit change events when the port list change.

Bluetooth
  - Log a more verbose explanation when other soundservers seem to be
    interfering with bluetooth.
  - Add quirks for Rockbox Brick. (#3786)
  - Add quirks for SoundCore mini2. (#2927)

JACK
  - Improve check for the running state of clients. (#3794)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-02-09 09:52:06 -08:00
Markus Volk 10c75cbde1 pipewire: fix build with libcamera-0.2
Add a backport patch to fix this issue with libcamera-0.2:
| In file included from ../git/spa/plugins/libcamera/libcamera-source.cpp:188:
| ../git/spa/plugins/libcamera/libcamera-utils.cpp:719:9: error: 'Transform' does not name a type

https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3782

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-01-27 09:48:32 -08:00
Markus Volk 819e1ef4b4 pipewire: update 1.0.0 -> 1.0.1
This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.

  - Work around the buggy ALSA backend in libcanberra by forcing the pulse
    backend in module-x11-bell.
  - Fix a race in the device info updates in pulse-server.
  - Fix timing and rate matching in ALSA sequencer.
  - Improve timing information in JACK and from the ALSA driver.
  - More small fixes and improvements.

  - Fix a build issue when examples where disabled.
  - Avoid some compiler warnings.
  - Avoid some bitfield data races. (#3706)

  - Bump the PTP driver priority. (#3217)
  - Support the previous "allowed" permission in the access module.
  - Fix filename leak in module-filter-chain.
  - Work around the buggy ALSA backend in libcanberra by forcing the pulse
    backend in module-x11-bell. (#3688)
  - Fix a race in the device info updates in pulse-server.
  - Fix compatibility in RAOP. (#3698)

  - Handle ALSA picth control errors correctly
  - Clamp buffer-frames correctly. (#3000)
  - Fix timing and rate matching in ALSA sequencer. (#3657)
  - Revert a commit that could result in current time in the future in the
    timing updates.
  - Improve adapter state checks.
  - Remove the timer from the ALSA pcm.
  - Fix timeout in freewheel driver.

  - Also handle active ports for monitor sources.
  - Fix zeroconf-publish format properties.

  - Improve timing and transport calculations.
  - Handle -ENOENT from the core and don't error out.

  - Handle node port removal in the device provider. (#3708)
  - Improve error handling while connecting.
  - Fix dts_offset.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-01-19 09:51:06 -08:00
Khem Raj c6c636e320 Revert "libcamera: skip until upstream resolves python 3.12 compatibility"
This reverts commit dd402176a6.
2023-12-30 11:06:30 -08:00
Alexander Kanavin dd402176a6 libcamera: skip until upstream resolves python 3.12 compatibility
I'd note that imp module has been deprecated for years, so that's what
happens when deprecation warnings are ignored.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-12-18 22:17:22 -08:00
Markus Volk 20c083b15b pipewire: upgrade 0.3.85 > 1.0.0
The PipeWire project is immensely proud to announce the 1.0 release
of PipeWire.

It is API and ABI compatible with previous 0.3.x releases.

 "PipeWire represents the next evolution of audio handling for Linux, taking
 the best of both pro-audio (JACK) and desktop audio servers (PulseAudio) and
 linking them into a single, seamless, powerful new system."
    - Paul Davis, JACK and Ardour author

 "What exciting times! PipeWire 1.0 is the culmination of 15 years of
 Linux audio expertise, blending lessons from PulseAudio into a high-performance,
 flexible, and user-friendly foundation for audio and multimedia on Linux.
 I'm looking forward to the next decade of progress in the free software
 consumer and professional audio space!."
    - Arun Raghavan, PulseAudio developer/maintainer.

 "I'm thrilled to witness the first stable release of PipeWire after five years
 of collaboration with its remarkable community, pushing the boundaries of
 multimedia integration in the Linux ecosystem one step further.”
    - George Kiagiadakis, WirePlumber author

 "From the beginning of the libcamera project, we have always seen
 PipeWire as the solution to handle desktop and mobile integration and
 give a seemless multimedia integration to users while providing security
 features and resource sharing between applications."
    - Kieran Bingham, libcamera author

Happy Holidays!

Highlights
  - Fix a memfd/dmabuf leak when uploading buffers while shutting down.
  - Handle concurrent jack_port_get_buffer() calls because ardour seems to
    be doing this.
  - Improve time reporting (less jitter) in ALSA when using IRQ.
  - Many doc improvements.

PipeWire
  - Respect PIPEWIRE_DLCLOSE everywhere, remove pw_in_valgrind().
  - Remove a warning when a client tries to change ignored properties.

Modules
  - Fix a memfd/dmabuf leak when uploading buffers while shutting down.
  - Fix a potential segfault when copying mix structures. (#3658)
  - Avoid races in setrlimit in module-rt.
  - Fix a memory leak in filter-chain.
  - Set rtp.ptime on senders, not receivers.
  - The ROC modules were ported to ROC 0.3

SPA
  - Improve time reporting (less jitter) in ALSA when using IRQ. (#3657)
  - Add latency param query in libcamera.
  - Fix some compiler warnings.
  - The EVL plugin was updated.

Bluetooth
  - LC3 codec and compatibility improvements.

Pulse server
  - Fix emission of events when a sink/source state changes. (#3660)

JACK
  - Improve transport and time handling. Use unique ids to make consistent
    snapshots of the current time and transport.
  - Avoid enumerating port params that we are not going to use.
  - Optimize buffer reuse.
  - Handle concurrent jack_port_get_buffer() calls because ardour seems to
    be doing this. (#3632)

Docs
  - Many doc improvements.
  - Add man pages for pw-dump, pw-loopback, modules, pipewire-pulse.
  - Manpages are now made with Doxygen.
  - Add docs for pulse-modules

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-11-26 14:18:58 -08:00
Markus Volk 87c8466fd6 pipewire: Upgrade 0.3.84 -> 0.3.85
PipeWire 0.3.85 (2023-11-16)

This is the fifth (and last) 1.0 release candidate that is API and ABI
compatible with previous 0.3.x releases.

Highlights
  - Fix an issue where a link could end up paused while not negotiated.
  - Fix an infinite recursion issue when finding runnable nodes.
  - Support XDG base directories when loading ACP config.
  - Fix MIDI event recording preview in Ardour.
  - Many more small fixes, cleanups and improvements.

PipeWire
  - Fix an issue where a link could end up paused while not negotiated.
    (#3619)
  - Fix an infinite recursion issue when finding runnable nodes by stopping
    the scan on feedback links around the driver. (#3621)
  - The system service now has better socket permissions.

Modules
  - Add support for uclamp. This allows the scheduler to make better informed
    decisions about where tasks should be placed, and what pstate to set
    for the CPU it is running on.
  - Emit warnings when applications are not doing the right locking instead
    of crashing.
  - Improve media.name for RAOP sinks. (#3801)
  - Support pause/resume in pipe-tunnel. (#3197)
  - Remove time rlimit when probing for realtime to avoid SIGXCPU.

SPA
  - Fix a bug where the resampler would be activated even when there is an
    ALSA pitch element. (#3628)
  - Improve resume from suspend in ALSA. (#3646)
  - Add option to expose ALSA controls as prop params.
  - Support XDG base directories when loading ACP config. This makes it possible
    to override the ACP config files.

Bluetooth
  - Schedule nodes in the same ISO group together.
  - More BAP fixes and cleanups.

JACK
  - Fix MIDI events from peer ports. This makes the MIDI event recording preview
    of Ardour work correctly.

GStreamer
  - Fix some error handling in the source and sink.

ALSA plugin
  - Improve poll descriptor handling. (#3648)

Docs
  - Many improvements to the layout and organization.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-11-17 11:38:26 -08:00
Markus Fuchs 7bd2cd290c remove unused AUTHOR variable
No longer used in generating packages
Also creates a possible confusion with the recipe maintainer
name.

Signed-off-by: Markus Fuchs <mklntf@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-11-08 22:51:28 -08:00
Markus Volk 8e218355e9 pipewire: Update 0.3.83 -> 0.3.84
PipeWire 0.3.84 (2023-11-02)

This is the fourth 1.0 release candidate that is API and ABI compatible
with previous 0.3.x releases.

 Highlights
  - Fix a regression with openal because the queued buffers in the stream
    were not reported correctly.
  - Fix a bug in port busy counters that could cause random silent links.
  - Fix a regression in echo-cancel because it was not reporting its
    streams as ASYNC.
  - Fix a JACK regression where not all ports were enumerated in all cases.
  - Many more fixes and improvements.

 PipeWire
  - pw_stream now reports the queued buffers more accurately. This fixes
    a regression when using openal. (#3592)
  - The port busy counters were not updated correctly in some cases. This
    could lead to negotiation errors and silent links. (#3547)
  - Ignore latency maximum when forcing rate/quantum. (#3613)
  - Nodes can now be added to multiple groups and link-groups. (#3612)

 Modules
  - The filter-chain now also handles notify port dependencies
    correctly. (#3596)
  - Filter-chain has support for new linear, clamp, recip, exp, log, mult,
    sine builtin plugins.
  - The echo-cancel module now correctly reports its playback and capture
    streams as ASYNC to avoid running out of buffers. (#3593)
  - It is now possible to specify an array of remote names to connect to
    with the native protocol.
  - module-rtp-sap and module-rtp-sink now try to bind to the specified
    interface.

 SPA
  - The alsa plugin now removes the runtime properties such as period-num,
    period-size and max-latency when suspended. (#3613)

 Bluetooth
  - BAP Locations/Context is now set on endpoints as required by new bluez.
  - Improve selection of BAP leader.

 JACK
  - Add a jack_set_sample_rate() extension function.
  - Make sure we get the info of all nodes/ports before completing the
    jack_client_open() operation so that we can enumerate the ports
    correctly in all cases. (#3618)

 GStreamer
  - Fix types of metadata in pipewiresink.
  - Also copy metadata in buffers in all cases.
  - Fix size allocation in bufferpool for compressed formats.
  - Don't stop streaming thread when unlinked. (#3620)

 ALSA
  - The ALSA plugin now handles NULL values from mmap_areas. (#3600)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-11-03 09:29:34 -07:00
Markus Volk a0f6f4da0b pipewire: Update 0.3.81 -> 0.3.83
PipeWire 0.3.83 (2023-10-19)

This is the third 1.0 release candidate that is API and ABI compatible
with previous 0.3.x releases.

Highlights
  - A quantum change regression was fixed.
  - Use a 2 socket server now for the manager and the applications
    with (when wireplumber is updated) different permissions.
  - Reduce memory usage a little in audioconvert and use fewer buffers.
  - Some JACK deadlocks were fixed.
  - More bugfixes and improvements.

PipeWire
  - Fix quantum change regression. (#3574)
  - Use a 2 socket server by default. One for the session-manager and one
    for applications.
  - Fix a potential use-after-free in node and device cleanup. (#3588)

modules
  - Some hardcoded buffer size limits were removed.
  - Fix ASYNC flag on combined-streams.
  - Add support for on-demand combined-streams using metadata.

SPA
  - alsa-udev will now ignore PCMs with the ACP_IGNORE udev environment
    variable. (#3570)
  - The audioadapter now uses at least 2 buffers when the follower is
    async.
  - The number of buffers used by plugins was tweaked a little. Most
    plugins now only ask 1 buffer.
  - Memory usage in audioconvert was reduced.
  - Fix some unaligned reads and writes and undefined left shifts reported
    by ASAN. (#3572)
  - Rework vulkan dependency checking.
  - Don't try to link ALSA devices when prepare fails. This fixes some
    crashes.
  - Fix a stall when the allowed codecs are changed in ALSA.
  - Improve ALSA rate control for sources to avoid xruns. (#3584)
  - Try to fix IEC958 TrueHD and DTS playback. (#2284)

Bluetooth
  - Improve fallback SCO mtu when the kernel doesn't tell us.

JACK
  - The fixed buffer size limit was removed.
  - Add an option to make input buffers writable (default true).
  - A potential deadlock was fixed when applications lock the process
    function. (#3585)
  - Use a separate thread to dispatch notifications to avoid deadlocks.
    (#3585)
  - Potentially fix silent export in ardour in some cases. (#3514)

Older versions:

PipeWire 0.3.82 (2023-10-13)

This is the second 1.0 release candidate that is API and ABI compatible
with previous 0.3.x releases.

Highlights
  - Fix a regression in some devices when the Pro-Audio profile was selected.
    Only enable the IRQ based scheduling and device linking in specific
    safe cases. (#3556)
  - Improve rate switching. In some cases the graph rate would not switch
    correctly. (#2929)
  - Fix regression in alsa wakeups that would cause silence in VMs.
  - Fix a leak in the SBC codecs for SCO.
  - More improvements to the RAOP module.
  - Other small improvements and fixes.

PipeWire
  - Improve client property checks.
  - Allow non-power-of-2 quantums when forced.
  - Improve rate switching. In some cases the graph rate would not switch
    correctly. (#2929)
  - The PIPEWIRE_QUANTUM env variable now forces the size and rate in the
    graph for the duration of the application. The softer PIPEWIRE_LATENCY
    and PIPEWIRE_RATE can still be used to merely suggest a maximum latency
    and a rate.

modules
  - Remove the RTSP FLUSH request in RAOP because it does not seem necessary.
  - The RAOP module now uses the common RTP stream functions.
  - Add sockets option to protocol-native to make pipewire listen on multiple
    sockets.

SPA
  - Clean up some of the log functions.
  - Add an option in ALSA to disable linking devices together.
  - Only link pcms together when 1 capture and 1 playback pcm. For more complex
    devices we can't be sure which ones can be linked. (#3556)
  - disable tsched only when using linked devices.
  - Add some extra checks in ALSA to avoid segfaults. (#3554)
  - Add Tag support to alsa-sink and alsa-source.
  - Use dynamic pod builder when we can.
  - Set priority.driver on midi-bridge to allow it as a fallback driver. (#3562)
  - Fix regression in alsa wakeups. (#3565)
  - The PTP clock can now be found from the interface in node-driver.

pulse-server
  - Some small cleanups and internal improvements.
  - Add some memory debugging messages.
  - Add Tag messages to streams.

Bluetooth
  - Fix a leak in the SBC codecs for SCO.

JACK
  - Patch up midi events in the destination buffer instead of writing to the
    source buffer. (#3580)
  - Group all jack clients together to avoid transport issues. (#3562)

ALSA-plugins
  - Add also.deny option to block alsa clients from opening the PCM.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-10-21 09:40:37 -07:00
Markus Volk 9fc1b037e4 pipewire: Upgrade 0.3.80 -> 0.3.81
This is the first 1.0 release candidate that is API and ABI compatible
with previous 0.3.x releases.

  - jackdbus support is now enabled by default.
  - IRQ based scheduling in ALSA was improved and enabled by default for
    Pro-Audio profile. It will also link the pcms together to get lower
    latency. This now matches what JACK does and gives equal latency to
    PipeWire for Pro-Audio profiles.
  - Support both old and new versions of webrtc-audio-processing to make
    the transition easier.
  - Forced quantum changes by nodes or metadata will now also force a
    suspend and resume of the graph, like the rate changes to make sure all
    nodes adapt to the new quantum. This is important for Pro-Audio nodes
    that need to reconfigure the hardware to a new period in IRQ based
    scheduling.
  - Fix a regression in regex parsing.
  - Many bugfixes and improvements.

  - jackdbus is by default enabled now. The idea is that when jackdbus is
    installed, the real libjack.so is in the path and we can become a
    real JACK client.
  - Forces quantum changes by nodes or metadata will now also force a
    suspend and resume in the graph, like the rate changes to make sure all
    nodes adapt to the new quantum. This is important for Pro-Audio nodes
    that need to reconfigure the hardware to a new period.
  - The stream now has an EARLY_PROCESS option that can be used to implement
    custum buffer fill levels. (#3480)
  - Fix a regression in regex parsing. (#3528)
  - Fix a bug in position reporting in the driver node. (#3189) (#3544)
  - Destroying a link will now recalculate the graph correctly.
  - Fix the rate comparison for finding the best rate in the graph.
  - Use malloc_trim() when available to release memory. (#1840)

  - pw-cat now supports DFF DSD files.
  - pw-cli avoid some NULL derefs in some cases.

  - The RAOP sink has seen some cleanups and improvements. It will now ask
    for feedback every 2 seconds to keep some devices alive.
  - A bug in filter-chain was fixed where it would fail to apply the gain
    when mixing just one source.
  - The filter-chain can now pass the stream volume to a control in the
    filter-chain graph. (#3434)
  - Improve volume handling in RAOP sink.

  - Some cleanup in the pending_stream handling.
  - Fix a regression in the event emission code where it failed to emit
    a changed event when a node was linked. (#3522)
  - Lower the realtime priority of pulseaudio clients.
  - Set pulse.module.id on the echo-cancel streams. (#3541)

  - Support both old and new versions of webrtc-audio-processing to make
    the transition easier.
  - The ALSA driver now does the sync of all followers directly from the
    wakeup event. This results in more stable rate matching.
  - IRQ based scheduling in ALSA was improved and enabled by default for
    Pro-Audio profile. It will also link the pcms together to get lower
    latency. This now matches what JACK does and gives equal latency to
    PipeWire for Pro-Audio profiles.
  - GNU/Hurd support was added.
  - Some improvements to passthrough handling.

  - Improvements to the codec handling when PipeWire is used as Audio
    Gateway.
  - Adapt to new Bluez API for BAP devices.

  - When the jack library is set in the default library path, avoid using
    LD_LIBRARY_PATH because this can cause confusion.
  - Handle clearing the latency on a port.
  - jack_property now always manages to actually change the metadata because
    it waits for a roundtrip before exiting.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-10-07 16:50:44 -07:00
Markus Volk 3b74a5267d pipewire: upgrade 0.3.79 -> 0.3.80
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - A new Tag param was added that allows arbitrary metadata to be transported
    out-of-band in the graph.
  - Vulkan DMA buf support was merged.
  - The echo-canceller was ported to webrtc-audio-processing-1.
  - Fix a regression in locating monitor sources by id in pulse-server.
  - Mixer io areas updates are now synchronized correctly with the data
    thread to avoid potential crashes.
  - Many more bugfixes and improvements.

  - Handle driver nodes that refuse to change the quantum or rate.
  - A new Tag param was added that allows arbitrary metadata to be transported
    out-of-band in the graph.

  - The pipe-tunnel source has been reworked to use a ringbuffer and rate
    adaption to keep the latency constant. It can now also function as a
    driver to reduce resampling. (#3478)

  - pw-cat will now place media properties in Tag params.
  - pw-mon can now filter props and params.

  - ALSA refuses to change quantum and rate when in IRQ mode.
  - ALSA will now be smarter in selecting the period size for batch devices
    and will make it depend on the samplerate. (#3444)
  - Vulkan DMA buf support was merged.
  - ALSA latency will now be reported in the time domain of the graph.
  - Add udev based autodetection for compress-offload devices.
  - The echo-canceller was ported to webrtc-audio-processing-1.
  - The v4l2 inotify code was rewritten to avoid a use-after-free and by
    using a separate watch (but same fd) for each device. (#3439)
  - The tag and latency handling was improved in audioadpter.
  - Don't use -Ofast on alpha because it can crash on denormalized
    values. (#3489)
  - The mixers now synchronize spa_io_buffers updates with the data
    thread to avoid crashes.
  - Handle NULL param updates. (#3504)

  - Fix a regression in locating monitor sources by id. (#3476)
  - Add support for use_system_clock_for_timing in module-pipe-sink.
  - Add support for checking module arguments.
  - Avoid some useless change events.

  - Ports are now marked as physical, which makes the bluetooth devices show
    up as hardware devices in Ardour and other JACK apps. (#3418)
  - Some fixes for LE audio support (#3479)

  - Also emit unregister notify even when supressed when creating the
    client.
  - The notify callbacks now match JACK2 behaviour more.
  - The mixer io areas are updated and handled safely now to avoid
    crashes. (#3506)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-09-14 10:46:54 -07:00
Markus Volk f9afd63370 pipewire: upgrade 0.3.78 -> 0.3.79
This is a quick bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Fix a regression in suspend that could cause silence.
  - Fix a regression in JACK port registration that could cause all kinds of
    JACK problems. (#3485)
  - Fix a typo in the neon sample conversion functions that could cause
    distortion.
  - Add BAP broadcast source and sink support.
  - pw-top now has a batch mode to dump the output to stdout.
  - Many more bugfixes and improvements.

  - Fix a regression in shutdown where a node might not first suspend
    properly. This cause loss of sound in some cases. (#3378)
  - Failure to compile a regular expression in the config file will now
    be reported and ! can be used to negate the match. (#3460)
  - Fix a regression where some nodes might not set running in some
    cases.
  - Nodes are now suspended before the format is cleared, which might
    fix some crashes.

  - pw-top now has a batch mode to dump the output to stdout.

  - The queued samples in audioconvert are now correctly reported in the
    delay. (#3454)
  - Make it easier to add a custom profile in ACP.
  - Fix a typo in the neon sample conversion functions that could cause
    distortion. (#3463)
  - device.profile.pro=true is added for pro audio nodes.
  - An xrun counter was added to spa_io_clock to detect and track skipped
    data because of xruns.

  - Add alsa-sink and alsa-source modules. (#3456)

  - Fix a regression where only the BAP off profile is shown.
  - Add BAP broadcast source and sink support.

  - Also emit a latency notify when the buffer size changes.
  - Fix a regression in JACK port registration. (#3485)
  - jack_port_tie() is now supported.

  - Improve property handling, support lists and ranges in addition to
    fixed values. (#3451)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-08-30 00:20:59 -07:00
Markus Volk 923a50c79f pipewire: upgrade 0.3.77 -> 0.3.78
This is a small bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - An old regression was fixed with where some nodes would not run.
  - A regression was fixed where removed events would not be shown in some
    cases. This would result in duplicate entries in audio clients.
  - Fix an off-by-one in the vban audio receiver. Tweak the rate adaption
    a little.
  - ACP will now set a UCM verb before probing the pro-audio devices.
  - More bugfixes and improvements.

  - An old regression was fixed with where some nodes would not run. (#3405)
  - Suspend was improved a little to avoid races when the session manager would
    suspend right when a driver was starting.

  - module-rtp-sap does not use the deprecated inet_aton anymore.
  - Fix an off-by-one in the vban audio receiver. Tweak the rate adaption
    a little. (#3380)

  - ACP will now set a UCM verb before probing the pro-audio devices. (#3407)
  - The mandatory flag will be set now on the video modifiers.
  - EVL was updated to Xenomai4 r46 and xbuf creation was improved.
  - An option was added to force colors in the log even when logging to !tty.
  - The return type of spa_pod_builder_control() was fixed.
  - inotify errors are handled better now. (#3439)

  - A regression was fixed where removed events would not be shown in some
    cases. (#3414)

  - Improve compatibility with more devices, avoid reusing the same transport
    for different media-sink instances to avoid encoder resets.
  - Improve enumeration of codec profiles for BAP and A2DP.

  - Ensure we can't iterate ports from a deactivated client. Also make sure
    the JACK clients with the node.always-process=false always show their
    ports. (#3416)

  - A potential crash was fixed in the device provider when stopping.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-08-26 17:32:44 -07:00
Markus Volk 38f525002c pipewire: add support for liblc3
- add liblc3 recipe

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-08-05 09:29:56 -07:00
Markus Volk 262cf75230 pipewire: update 0.3.75 -> 0.3.77
This is a quick bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Fix a bug in ALSA source where the available number of samples was miscaluclated
    and resulted in xruns in some cases.
  - A new L permission was added to make it possible to force a link between
    nodes even when the nodes can't see eachother.
  - The VBAN module now supports midi send and receive as well.
  - Many cleanups and small fixes.

  - Global objects now only show permissions that apply to them. The permissions
    required to perform various API calls are documented.
  - A new L permission was added to make it possible to force a link between
    nodes even when the nodes can't see eachother.
  - Config files need to end with .conf.
  - The client.api is added the to global properties of a node.

  - The VBAN module now supports midi send and receive as well.
  - Fix module-profiler alignment and make sure we don't overrun our buffers with
    many nodes.
  - Protect libcanberra calls with a mutex because it is not thread safe. (#2834)

  - Support older compilers for spa_clear_ptr().
  - Fix a bug in ALSA source where the available number of samples was miscaluclated
    and resulted in xruns. (#3395)
  - Don't set inotify on /dev but on the videoX devices directly. Setting inotify
    on /dev would cause a lot of spurious wakeups and lock contention in the
    fsnotify subsystem on some benchmarks.
  - Audioconvert now rate limits the warnings when it runs out of buffers. (#3384)

  - Some bugs and inconsistencies were fixed in device lookup.
  - Improve subscribe event emission, detect changes to the sink or the monitor
    and send the right sink/source event. (#3388)

  - The libjack.so now has a minor version of 3 and a micro version of the pipewire
    version.
  - JACK clients will now see portregistration from other jack clients when they
    activate/deactivate like real JACK. (#3260)

  - Use some more autoptr cleanups, fix some leaks.

Older versions:

This is a quick bugfix release that is API and ABI compatible with previous
  - LE Audio support is now enabled by default when liblc3 is available now that
    bluez has support for detecting the hardware features.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-08-05 09:29:56 -07:00
Michael Opdenacker 847f144f29 remove unused AUTHOR variable
No longer used in generating packages
Also creates a possible confusion with the recipe maintainer
name.

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-08-03 09:14:20 -07:00
Markus Volk 2595f4cba7 pipewire: update 0.3.73 -> 0.3.75
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Link permissions between nodes are now enforced. This avoids potential portal
    managed screencast nodes to link to the camera even though it was not assigned
    permissions to do so by the session manager.
  - Libcamera and v4l2 devices now have properties so that duplicates can be
    filtered out by the session manager.
  - A bug with draining was fixed where a buffer would be marked EMPTY and would not
    play when it contained drained samples. (#3365)
  - Many fixes and improvements.

  - Permissions for links between nodes are now enforced. The link will now check
    that the owner clients of the nodes can see eachother before allowing the link.
    This avoids screensharing clients to accidentally being linked to the camera
    nodes by the session manager. A side effect is that patchbay tools will no longer
    be able to link portal managed screencast nodes to the camera, for this we need
    a new permission for those patchbay clients. (wireplumber#218)
  - The stream.rules/filter.rules are now evaluated when connecting the stream/filter
    so that more properties can be matched. (#3355)
  - Move some internal events from the context to the nodes to better handle per-node
    threads in the future.
  - The thread-loop will now signal when the thread is started.

  - A timestamp workaround in module-raop was reverted because it does not work
    in all cases. Instead latency was increased to 1.5 seconds, which also makes
    the problematic device in question work. (#3247)
  - The profiler module was reworked a bit to use the new node realtime events. It
    should now also handle dynamically added and removed drivers.
  - The module-rt now does the rtkit calls from a separate thread so that it does
    not block the main thread. This could cause deadlocks during startup in some
    cases. (#3357)

  - Atomic operation macros were move from internal pipewire API to public API.
  - The video-info structure now has a new SPA_VIDEO_FLAG_MODIFIER_FIXATION_REQUIRED
    flag to instruct the application to fixate the modifiers. This simplifies some
    logic in applications a lot.
  - The libcamera and v4l2 nodes now have properties to enumerate the device id
    they are using. This can be used to match v4l2 devices and libcamera devices
    and filter out duplicates.
  - A bug with draining was fixed where a buffer would be marked EMPTY and would not
    play when it contained drained samples. (#3365)

This is a quick bugfix release that is API and ABI compatible with previous
  - Merge scope based cleanup macros.
  - Add ratelimit function.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-07-23 16:36:14 -07:00
Markus Volk c165db4f66 pipewire: upgrade 0.3.72 -> 0.3.73
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Fixes an ALSA resume after suspend error.
  - Handle and disable seemingly wrong hires timestamps from ALSA.
  - Filter-chain now has loadable plugin modules. The LV2 and sofa plugins are
    moved to a separate .so file to make things more modular.
  - Rate changes in the graph should now be handled more gracefully by loopback
    and filter-chain.
  - A regression in the rtp-sap module was fixed where it would in some cases
    fail to start.
  - A potential crash in the peaks resampler was fixed.
  - Many cleanups and other small bug fixes.

  - Fix a potential segfault when no fallback driver was set in the config.
  - Improve OPUS detection.
  - Add ASYNC flag to pw-filter and pw-stream when queue/dequeue is not called
    from the process function. This ensure we allocate an extra buffer.
  - Discard pending process callbacks when disconnecting. (#3314)
  - Cleanups and improvements to the debug environment variable parsing.
  - The graph rate was tweaked to better handle very low rates such as those
    requested by pavucontrol when it does the signal monitoring.

  - An example filter module was added.
  - Filter-chain and loopback now disable the resamplers if no rate is specified
    and will always follow the graph rate.
  - Improve setup of filter-chain. The graph is now created when starting
    because this ensure the target graph rate is known.
  - Filter-chain can now link notify ports to control ports in the graph.
  - Filter-chain now has loadable plugin modules. The LV2 and sofa plugins are
    moved to a separate .so file.
  - A regression in the rtp-sap module was fixed where it would in some cases
    fail to start.
  - Module-rt now has options to disable rlimits, portal and rtkit.
  - module-raop-discover now has an options to set the latency. (#3247)

  - pw-cat now supports overriding all stream properties.

  - Disable rate negotiation when the resampler is disabled. We will always
    follow the graph rate.
  - Set device.icon property for UCM ports as well.
  - Improve ALSA recover when using hires timestamps. This fixes some problems
    after resume from suspend. (#3315)
  - ALSA will now warn and disable hires timestamp when they seem wrong.
    They can also be disabled manually with a property.
  - V4l2 will now gracefully handle ENOTTY when enumerating frame sizes and
    frame rates. (#3325)
  - A potential crash in the peaks resampler was fixed. (#3320)

  - A client crash in pavucontrol is avoided by always setting a card name.
  - The graph rate is now taken correctly when using the FIX flags. (#3317)
  - An option was added to ignore the FIX flags of a stream. Also the
    documentation for those options was updated. (#3317)
  - module-raop-discover now support latency_msec. (#3247)

  - Remove an assert and issue a warning/recover instead when a buffer is too
    small.

  - The device provider does locking when destroying the registry.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-07-07 09:00:58 -07:00
Markus Volk 7f87f2ae7f pipewire: upgrade 0.3.71 -> 0.3.72
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Fix a critical bug that would refuse to update the samplerate or
    buffersize in JACK clients. (#3226)
  - A new module-netjack2-driver and module-netjack2-manager were added
    that are compatible with NETJACK2. This allows PipeWire to become
    a NETJACK2 manager or a driver between JACK2 or PipeWire servers.
  - Support was added for firewire devices with FFADO. This is untested
    for now and MIDI is not implemented yet.
  - The node scheduling was optimized some more. External drivers are now
    as efficient as in-server ones. This should improve performance of
    various drivers such as bluetooth and JACK based drivers.
  - Many, many bug fixes and a ton of improvements.

  - pw-filter can now be used to write sinks and sources.
  - The node activation for drivers was changed. The driver now does not
    need to go to the server to start the processing cycle. This makes
    out-of-server drivers as efficient as in-server drivers.
  - Don't try to use drivers with 0 priority as fallback drivers. This
    avoids making the screencast driver a driver for audio. (#3219)
  - Improve xrun count reporting in pw-top and the profiler. Now each
    node has their own xrun counter updated when it fails to complete
    processing during the cycle.
  - pw-filter now also has support for TRIGGER.
  - A potential fd leak was found when fds were send to a zombie client.
    (#1840)
  - Fix a bug where monitor or capture streams were logged twice in the
    profiler. (#3278)
  - Remove stream hooks safely. (#3251)
  - A bug in serialization of container properties was fixed. This could
    result in truncated property values. (#3290)
  - The PIPEWIRE_AUTOCONNECT environment variable now always overrides the
    autoconnect settings of streams. (#3299)
  - Node, port and link destroy now avoids some useless work.
  - Port will now try to renegotiate a new format when idle. (#3266)

  - The module-sap now is more compatible with AES67.
  - A new FFADO driver module was added. This is completely untested because
    of lack of hardware. Please test and report issues.
  - A new NETJACK2 driver and a NETJACK2 manager module were added. These
    should be drop in replacements for the JACK2 parts.
  - The RAOP discover module now tries harder to only list devices once.
  - The zeroconf discover module now tries harder to only list devices once.
  - The RAOP sink module now handles latency better and is compatible with
    some more devices. (#3247, #3282)
  - The loopback and filter-chain modules now always dequeue the last input
    buffer to avoid stuttering in some cases. (#3276)
  - The SPA node factory module can now also export nodes. This is used to
    export the PTP clock from the AES67 config file.
  - A bug in module-jack-tunnel was fixed that would cause stuttering and
    corrupted output in some cases. (#3255)
  - The resampler is now disabled in module-loopback and filter-chain when
    the samplerate is set to follow the graph rate. (#2969)
  - The way the mixer peer is sent to clients was improved. It is now also
    possible to let a remote node know about mixer port removes, which
    can avoid memory leaks and some code simplifications.

  - Monitor ports now report latency correctly.
  - The ALSA plugin now uses htimestamp to get a more accurate ringbuffer
    position to estimate the clock skew.
  - The channelmixer now has min/max-volume settings to limit or fix the
    volume.
  - The ALSA plugin can now control the playback and capture rate of USB
    gadgets. This can avoid resampling and instead use the USB feedback
    to control the rate.
  - The ALSA output to multiple devices has been improved, some lockups
    are avoided when the device ringbuffer is full.
  - The compress-offload sink has improved negotiation.

  - Only try to use GSettings when the schema exists.
  - @DEFAULT_SOURCE@, @DEFAULT_SINK@ and @DEFAULT_MONITOR@ are now correctly
    handled as targets in playback and capture streams. (#3284)
  - 2 new quirks are added to disable volume updates on sinks/sources.
    (#1517)
  - The virtual-sink and virtual-source modules were added. These are really
    example modules but actually also work and are useful on PulseAudio so
    implement them as well.
  - Fix initial stream volumes. (#3306)

  - Only register A2DP or BAP when we have codecs.
  - Include codec into the media.name

  - Fix a critical bug that would refuse to update the samplerate or
    buffersize. (#3226)
  - Improve updates of samplerate/buffersize, delay the updates until the
    client is activated. (#3297)
  - Use the new mix-info updates to simplify the mixer setup and peer
    detection.

  - Fill default strides instead of 0 on pipewire video buffers. (#3236)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-06-27 13:44:47 -07:00
Carlos Rafael Giani 01989effad pipewire: Add dedicated aes67 package and fix rlimits.d package assignment
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-06-24 09:01:53 -07:00
Carlos Rafael Giani 3f1cbeb615 pipewire: Improve packageconfigs
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-06-24 09:01:53 -07:00
Carlos Rafael Giani 8431c01ae9 pipewire: Disable libmysofa since it is not available in OE
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-06-24 09:01:53 -07:00
Markus Volk 9b37ba538a pipewire: update 0.3.70 -> 0.3.71
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - A new zero-latency jackdbus bridge was added. This works similar to what
    PulseAudio has to offer and creates a sink/source when jackdbus is
    started. It is however much more efficient and runs the complete PipeWire
    graph as a synchronous JACK client with no added latency.
  - Many performance improvements. Activation of remote nodes is more
    efficient, fewer eventfds are required on the clients, less callback
    overhead in performence critical paths and an optimized poll function
    was added. This was mainly driven by the jackdbus module to get the lowest
    possible overhead when running the graph.
  - The JACK notify callback implementation was reworked to emulate better what
    JACK does, improving compatibility with ardour7 and the JACK stress test.
  - More work on BAP devices. Device latency is now passed on to
    applications also for multi-device headsets, and channel allocation
    is handled better.
  - Many more improvements and bugfixes.

  - Remove the hardcoded limit on io_areas. This is used to link nodes together
    and exchange buffers, it was limited to 2048 but now dynamically scales
    based on requirements.
  - Rate and quantum changes are now applied correctly in more cases. (#3159)
  - Updates to client-node to more efficiently process the driver.
  - The profiler information was improved to be more accurate. It should
    now work better for remote drivers.
  - Some potential memory map errors were fixed in the protocol because in some
    case with large messages, some fds were closed too soon.
  - pw-filter now implements the pw_filter_set_active() method.
  - A potential out-of-buffers case was fixed in capture pw-streams where buffers
    were not moved to the recycle queue when the node suspended.
  - Nodes are now always woken up with the eventfd. Previously there were
    some optimiztions in the server to directly call into the node process
    function but that optimization is not necessary. Without this optimization
    it is now possible to run nodes in different threads.
  - pw-stream trigger is now implemented correctly in all cases.
  - Remote nodes now use one eventfd less because they get triggered with the
    node eventfd directly.
  - Monitor ports are now ignored in latency updates.
  - A potential race when reporting an error to a client was fixed. (#3192)
  - Fix a bug where always_process nodes would sometimes IDLE. (#3189)
  - Optimize peer activation. Nodes are now activated more efficiently and
    independent of the number of links. It also reduces the number of eventfds
    and memory in remote clients.
  - A bug in property serialization was fixed. Values with spaces would only
    serialize the first part of the value.

  - Correctly handle the echo-canceler plugin init method fallback. The
    samplerate was not correctly configured. This is only a regression for people
    that have external echo-canceler plugins.
  - RAOP sink now only sets the volume on the remote end when the stream is
    recording. (#3175)
  - RAOP discover now tries to deduplicate entries from the same host.
  - A new zero-latency jackdbus bridge was added. This works similar to what
    pulseaudio has to offer and creates a sink/source when jackdbus is
    started. It is however much more efficient and runs the complete PipeWire
    graph as a synchronous JACK client.
  - The access module uses a more secure way to check the application
    executable.
  - module-combine-stream now has configurable delay and latency for each
    stream. This can be used to align sinks/sources with different latencies.
  - A potential crash in module-pulse-tunnel was fixed when shutting down.
    (#3199)
  - Module-rt will now clamp the nice value to the min allowed value to avoid
    errors from rtkit. (#3186)
  - Fix a bug with the session counters in module-rtp-sap. Also use the right
    format for L24. Improve the AES67 example config.
  - Improve some warning and info messages in module-rt. (#3194)
  - module-rtp-session should now do something when started without arguments.
  - A potential crash in module-rtp-session was fixed. (#3217)
  - module-filter-chain has better error reporting when a convolver fails to
    load. (#3223)

  - Move some things around to avoid compiler warnings. (#3171)
  - Increase mixer ports. Reorganize some things and bump mixer input ports
    from 128 to 512.
  - Fix a potential crash when a node is scheduled before it completes
    the setup.
  - The JACK sink and source SPA plugins have seen some improvements.
  - Allow the peaks resampler still if we disabled resampling.
  - Perform more cleanup in audioadapter when in error.
  - An optimized non-cancellable loop implementation was added.
  - Callbacks were optimized with a _fast() varsion that doesn't check the
    version and method. When this check is performed earlier, it can
    be skipped in performance critical places.
  - Some of the callbacks and system methods are now using the fast function
    calls in critical paths.
  - A potential division by zero was fixed in the ALSA plugins.
  - Improve rate and quantum when starting audioconvert.
  - Make it possible to override node.driver in the SPA null-audio-driver.
    (#3220)

  - The audio info parameter parsing was refactored and improved.
  - Fix some races with clients exiting when playing samples.
  - An option was added to change or disable the dbus name registration.
    (#2987)

  - Implement battery reporting using AT+XEVENT.
  - Disable hardware volume for 3M WorkTunes.
  - Implement BAP audio locations (channel positions) by using the new
    bluez properties.

  - Fix some errors reported by JACK test.cpp. (#2638)
  - Add jack.show-midi option to show/hide midi ports.
  - Add jack.max-client-ports option. JACK also has a port limit and so
    PipeWire needs it as well to make the tests happy.
  - Call the shutdown callback only when the server stopped, not when there
    is a random error. (#3070)
  - Avoid registering the same port name twice.
  - Call port registration callbacks in activate/deactivate.
  - Improve jack_port_connected().
  - Improve some error reporting.
  - The JACK headers were updated to a newer version.
  - JACK callbacks are now managed with an event queue to simulate
    more what JACK does. This avoids emiting callbacks when a method is blocking
    for a reply and causing deadlocks. (#3183)
  - Assign unique names to JACK clients. (#2833)
  - Fix a potential crash when the thread_utils was used after free.
  - Aliases are now not filled in by default to improve JACK compatibility.
    (#3154)

  - The ALSA plugin will now wait for negotiation to complete or an error
    before _prepare() completes. This makes more applications deal correctly
    with the potential errors.

  - A new document about how scheduling is implemented was added.
  - Update the pw-cli man page. (#2988)
  - Document the SPA Pod serialization.
  - Document the PipeWire native protocol.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-05-18 10:26:13 -07:00
Markus Volk 72af3a0acb pipewire: update 0.3.68 -> 0.3.70
This is a quick bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Fix a regression in the scheduler that could keep some nodes IDLE.
  - Fix a regression in the biquad filters in filter-chain.
  - Fix a regression and potential crash in the ALSA mixer probing.
  - Fix a regression in pipewiresrc with timestamps that could cause cheese
    to record video with wrong timestamps.
  - Beamforming support was enabled in the echo-canceler.
  - pulse-tunnel and raop-sink will now proxy local volume changes to the
    remote end.
  - More bugfixes and improvements.

  - Fix a bug in the graph scheduler where some nodes might stay IDLE in
    some cases (like when connecting the source of the echo-canceler to the
    sink).
  - pw-metadata can now be created from the factory with initial values for
    the metadata. (#3076)
  - Conditions were added to the pipewire config file to make it possible to
    configure the access module and the exec sections.
  - Support was added in pw-stream to intercept and override properties for
    the adapter. This can be used to implement custom volume control, for
    example.

  - pw-metadata can now list all available metadata objects with the -l
    option.
  - A new pw-config tool was added to debug configuration file loading and
    parsing.

  - The webrtc echo canceler now supports beamforming. You can provide the
    coordinates of the microphones and let webrtc perform beamforming on
    the captured samples to improve quality and remove noise.
  - Fix a regression in the filter-chain with biquad filters. (#3161) and
    improve error reporting.
  - The pulse-tunnel will now proxy the volume changes to the remote end.
  - The RAOP sink will now send volume parameters to control the volume
    remotely. (#2061)

  - One ALSA commit was not correctly reverted and might cause crashes.
  - The ALSA sink and source now calculate the ALSA ringbuffer memory
    location more correctly wich might improve compatibility with some
    hardware.
  - v4l2 now sets the values of the controls in the Props param.

  - The echo-canceler aec_args are now parsed like they would be under
    pulseaudio.

  - More work on synchronizing BAP devices.

  - The GStreamer source can now renegotiate the format when it changes.
  - The GStreamer source now uses the BaseSrc clocking code to implement
    the clock and timing code.

This is a quick bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Reverted the UCM changes, they seem to cause regressions causing audio
    to be muted in some cases.
  - Fix a regression in the scheduler where a driver node might not be marked
    runnable in some cases, like when echo-cancel is used. (#3145)
  - Handle links from the driver to itself. This makes the midi bridge work
    again. (#3153)
  - ALSA rate matching for sources was fixed. It would previously wait too
    long for rate matching and then cause drift. This should reduce
    crackling and stuttering whan capturing in low latency.
  - Fix the GStreamer clock to make cheese video recording work again. (#3149)
  - More fixes and improvements.

  - Fix a regression in the scheduler where a driver node might not be marked
    runnable in some cases, like when echo-cancel is used. (#3145)
  - Handle links from the driver to itself. This makes the midi bridge work
    again. (#3153)
  - Some man pages were improved.
  - Fix a potential crash when thread-loop is destroyed before the loop.
    (#3150)

  - A new raw biquad filter was added to filter-chain. You can manually set the
    6 parameters and you can use this to create custom filters per sample rate.
    (#3139)
  - The echo-canceler now supports different channels for the capture and playback
    streams.

  - A SB Audigy specific profile set was added to make better use of the
    controls. (#2934)
  - More ALSA IRQ based scheduling improvements.
  - ALSA rate matching for sources was fixed. It would previously wait too
    long for rate matching and then cause drift. This should reduce
    crackling and stuttering whan capturing in low latency.
  - The echo-cancel plugin API has a new method to make it possible to have
    different channels for capture, source and playback.
  - Reverted the UCM changes, they seem to cause regressions causing audio
    to be muted in some cases.

  - Many more BAP fixes and improvements. Devices are now created as a set
    and can be combined into one device by the session manager.

  - Fix the GStreamer clock to make cheese video recording work again. (#3149)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-04-28 10:29:06 -07:00
Markus Volk daa0c135a8 pipewire: remove 'inherit gsettings'
- remove duplicated PACKAGECONFIG

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-04-19 08:10:45 -07:00
Markus Volk 07ca097d36 pipewire: update 0.3.67 -> 0.3.68
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

This release contains a huge number of changes, some of which might cause
regressions. Please report anything that seems to fail after the upgrade.
UCM devices in particular might have changed names, profiles and ports that
might require changes in custom scripts.

  - Symbolic links to the pipewire binary are now used instead of recompiling
    the same binary multiple times.
  - Changes to the graph scheduler related to quantum/rate updates and
    calculation of the node states. Things should start and switch between
    quantums and rates more smoothly now and especially virtual devices should
    now only run when required.
  - A new RTP session module was added. This uses the Apple MIDI protocol
    to configure low-latency bidirectional MIDI (and with a PipeWire specific
    extension, also audio) between machines. OPUS encoding was added to the
    RTP formats. The SAP module was separated from the rtp-sink/source module
    to make it more usable.
  - A new runtime debug property was added to all streams and nodes to trigger
    a save of the raw samples to a wav file. Support for this has also been
    added to the echo-canceler to debug potential issues.
  - Module pulse-tunnel has improved rate matching and synchronization
    support. It should also not drift anymore for capture devices.
  - The link-factory now ignores by default the link.passive property. This means
    that tools like pw-link or jack clients and wireplumber can't make passive
    links anymore. The reason is that there is now much more advanced logic in
    PipeWire itself to handle passive links based on node and port properties.
  - The RAOP sink was ported to new OpenSSL functions. Digest passwords are
    handled correctly now and support for more devices was added.
  - The ACP code was updated with new PulseAudio UCM code: "Create multiple
    profiles per verb for conflicting devices". This might change the names
    of devices, profiles and ports so scripts might need to be updated.
  - Upmixing is disabled again by default. We now ship config files that
    distros can install to enable upmixing again. The reason being that PipeWire
    should not apply fancy DSP processing to audio by default.
  - Many cleanups and bugfixes, including some crashes and memory corruption
    bugs.

  - Various FreeBSD compilation fixes.
  - Don't crash when calling _connect twice in stream/filter. (#3091)
  - Links are now installed instead of compiling the pipewire binary
    multiple times.
  - There is now a new core event bound_props that augments the bound_id event
    with the global properties. This can be used to get the global.serial among
    other global properties. It also makes it possible in the future to let the
    server allocate unique names or uuids.
  - Fix a bug where the server could go into an infinite reconfigure loop when
    the samplerate of a driver would change.
  - When a samplerate was forced, restore the previous best samplerate when the
    samplerate is no longer forced. (#2133)
  - Rework how the states of the nodes in the graph are calculated. A more
    refined algorithm is now used that only runs nodes that need to run.
  - Rework how the quantum change is applied to the graph. Drivers are now
    responsible for using the new updated rate/quantum before starting a new
    cycle. This avoids starting a cycle with an old quantum first.
  - pw-stream and pw-filter will now ensure that the Trigger event is called
    from the main thread.
  - node.force-rate=0 will now force the node.rate on the graph, forcefully
    switching the hardware into the new rate if possible. (#3026)
  - Additional checks were added to the thread-loop to check locking order.
  - Additional checks were added to pw-stream and pw-filter to check if methods
    are called from the right thread context.

  - A new RTP session module was added. This uses the Apple MIDI protocol
    to configure bidirectional MIDI (or audio) between machines.
  - SAP support was removed from module-rtp-source and module-rtp-sink and
    moved to a separate module. This makes it possible to use the RTP modules
    without SAP support as well.
  - The echo-cancel module now has support to save the signals to a wav
    file for debugging purposes.
  - The RTP modules now have support for the OPUS codec.
  - The RAOP module was ported to new openssl encryption functions and handles
    digest passwords correctly now.
  - module-raop-discover now has match rules to be able to select the streams
    and set properties.
  - Module pulse-tunnel has improved rate matching and synchronization
    support. (#3093)
  - Fix potential memory corruption and infinite loops because
    module-pulse-tunnel was unloaded from the wrong thread.
  - The link-factory now ignores by default the link.passive property. This means
    that tools like pw-link or jack clients and wireplumber can't make passive
    links anymore. The reason is that there is now much more advanced logic in
    PipeWire itself to handle passive links based on node and port properties.
  - module-echo-cancel will now clear its buffers after a suspend to avoid
    playing stray samples.
  - module-raop-sink will now handle 0 timing_port replies. (#3133)

  - The adapter module now has support for saving the raw audio to a wav
    file for debugging purposes.
  - The ACP code was updated with new PulseAudio UCM code: "Create multiple
    profiles per verb for conflicting devices". This might change the names
    of devices, profiles and ports so scripts might need to be updated.
  - Upmixing was disabled again by default. We now ship config files that
    distros can install to enable upmixing again. (#3081)
  - audioadapter and audioconvert have seen improvements in the experimental
    non-DSP/passthrough mode.
  - Fix a potential race where the dummy drivers could fail to stop a timer
    and cause endless warnings in the logs.
  - The ALSA plugin has experimental support for IRQ based scheduling. This
    should decrease latency for some (mostly USB) drivers. This should bring
    latency within JACK latency. More work on this will be done before the
    1.0 release later this year.
  - Audioconvert now has support for volume ramping. (#3046)
  - A new loop method was added the check if a thread is currently running the
    loop.
  - channelmix.disable and resample.disable now generate an error when true
    and channelmixing or resampling is required in the converter.

  - Fix a crash in some cases when a device was disconnected.
  - Support async transport state changes. This avoids some lockups when the
    bluetooth backend is having issues. (#3023)
  - Align BAP sinks. This improves synchronization between earpieces.

  - Improve properties in pw-top and pavucontrol.

  - Improve error handling from pulse-tunnel.
  - Generate silence correctly for unsigned formats as well.
  - Review buffer params. The streams should now just work with 1 or 2
    buffers.
  - module-rtp-send and module-rtp-recv now have support for the OPUS codec.

  - Make sure we don't call any callbacks anymore when deactivating. (#2781)

  - Sort the device by priority in deviceprovider. (#3072)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-04-09 23:38:06 -07:00
Markus Volk c4e081a116 pipewire: update 0.3.66 -> 0.3.67
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - The loopback module and other couples streams will now not randomly
    fail in some cases. (#3028)
  - The RTP module now has support for sending and receiving MIDI as
    well.
  - The compress offload sink has seen many improvements. It now uses
    ioctls directly to bypass limitations of tinycompress (to be able
    to detect the available codecs, for example).
  - Pulse server compatibility was improved for some apps by improving
    the format parsing and FIX_ stream flag handling.
  - The min quantum in the pulse server was changed from 256/48000 to
    128/48000 to fix some issues with games that expect 5ms or less of
    latency.
  - The Bluetooth plugin has seen many improvements in packet scheduling
    to attempt to reduce stuttering on some devices.
  - The ALSA plugin now handles some impossible cases better. This fixes
    recording in QEMU again. (#2971)

  - SPDX tags were added to the code for copyright information.
  - The random number functions were made more usable.
  - The port property code was moved from the adapter to the port
    implementation itself to make it more useful and unified for the
    cases where no adapter is used (midi and video).
  - Fix a potential overflow in mixer areas.
  - Improve runnable state calculations of nodes. This is part of
    ongoing work to avoid running nodes that should not need to run.
  - The stream will now always call the process function when using
    trigger, even if there are no buffers. This avoids stalls of the
    processing graph in some cases. (#3028)
  - Links are now marked as passive by PipeWire itself so that
    the right thing happens in all cases.
  - Implement the in/out/true values for the node.passive property.
    Place a passive state on ports to make passive links on a port
    by port basis.

  - pw-cat has seen improvements in the encoded file playback case.

  - The rtp module has support for MIDI now.
  - DSCP is now configurable in the RTP module.
  - The loopback module doesn't randomly fail to work anymore. (#3028)

  - The null-audio sink can now be given a format and it will return this
    instead of the default float ones. This makes it possible to make a
    null-sink that has a given format.
  - The compress offload sink has seen many improvements. It now no longer
    uses tinycompress to be able to detect the available codecs.
  - The ALSA plugin now handles some impossible cases better. (#2971)
  - Fix compilation on older compilers. (#3050)

  - The FIX_ flags are now implemented more correctly by fixating the
    stream to the format of the sink/source they ask to be connected to.
    There is now also an option to override the fixation based on rules.
  - Format parsing was improved and should now support all format strings
    supported by pulseaudio including upper and lower case variants
    and shortcuts.
  - Channelmap parsing was improved and should now reject invalid
    channelmaps as well as support the shortcuts supported by pulseaudio.
  - Escape codes in module arguments now work as it does in pulseaudio. (#3071)
  - The min quantum was changed from 256/48000 to 128/48000 to fix some
    issues with games that expect 5ms or less of latency.

  - jack.passive-links can now be used to have a JACK client make passive
    links and the node.passive property is no longer used for this because
    it has a different function.
  - The qsynth rule was updated to the new node.passive features. It is now
    only passive on the output side.

  - BAP delay and transport latency are handled now.
  - A2DP and SCO can now use bigger buffers to improve quality when the
    reception is jittery.
  - The AT+BCC command is now implemented.
  - Packet encoding now happens ahead of time when possible to avoid delays
    before sending it.
  - Source should now always produce complete (padded) buffers to avoid sync
    problems.
  - Don't set unnecessary socket options.

  - The pipewiresrc now has an autoconnect argument.
  - The metadata plane count is now handled correctly in more cases.
  - Stream errors are now handled correctly to stop the GStreamer elements.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-03-13 09:07:40 -07:00
Markus Volk 68d6195061 pipewire: update 0.3.65 -> 0.3.66
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Fix a regression in the pulseaudio module-combine-stream because the new
    module-combine-stream was not installed.
  - PipeWire can now generate a limits.d config file with our recommended
    settings for priorities and memlock.

  - Avoid rate switches when the graph is idle.
  - The rate selection algorithm was improved. This ensures minimal performance
    and quality loss when resampling.
  - The default min.quantum was set to 32 again after it got erronously changed
    to (the too low) 16 in version 0.3.45.
  - Fix compilation issues with rust bindings because of macros in defines.
    Work around it for now. (#2952)
  - Invalid file mappings are now refused (#2617 #2914 #3007)
  - Modules, exec and objects can now be loaded depending on conditions. One
    example is the X11-bell module that can now be disabled with a custom
    property override.
  - Filter now also supports _trigger_process() to drive the graph.
  - TID is now added to the journald log.
  - PipeWire generates and installs */etc/security/limits.d/25-pw-rlimits.conf*
    that by default contains project's recommended settings. Creation of the
    pipewire group is left to the distro or user ( `groupadd -r pipewire` ).
    See the rlimits-* Meson options for controlling this behavior.
  - Additionally there is now by default disabled Meson option that will
    install */etc/security/limits.d/20-pw-defaults.conf* with the current Linux
    default memlock value. Distros with only kernels >=5.16 or always using
    systemd v251 or newer do not need this. But all other builds should set the
    `-Dpam-defaults-install=true` Meson option to ensure that the memlock value
    is always large enough. Thanks to Rickie Schroeder for pointing out that
    the default Linux memlock value has been somewhat recently increased.

  - Install module-combine-stream.
  - RTP source now has support for custom channel names.
  - RTP source will now stop when inactive.
  - There is now
  - Filter-chain has a new mysofa based spacializer plugin.
  - The RTP modules can now use direct clock timestamps to send and receive
    packets. This makes it possible to synchronize sender and receiver with
    a PTP clock, for example.
  - Filter-chain now has an invert plugin to invert the polarity of a
    signal. (#3008)

  - There is now an option to set the channels used for probing Pro Audio
    devices. This could unlock more samplerates for some devices when they are
    probed with fewer channels. (#2990)
  - Support was added for other clocks than the MONOTONIC clock in the
    driver nodes. This can be used to synchronize the graph to a PTP clock,
    for example.
  - The ALSA source has some more headroom when rate matching to avoid
    stuttering when following another driver.
  - libcamera controls are now mapped to standard PipeWire property values.
  - The channelmixer has seen some improvements. MONO and undefined channel
    layouts are now upmixed and downmixed more correctly. (#3010)

  - Many BAP support fixes.

  - The gstreamer elements now support buffer video metadata so that strides
    are correctly handled.
  - pipewiresrc will now error out correctly in more cases. (#2935)

  - The frame to/from time functions are improved to also work with negative
    time and frame offsets.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-02-19 11:03:18 -08:00
Markus Volk 7b357b6181 pipewire-media-session: update 0.4.1 -> 0.4.2
Media Session 0.4.2 (2023-01-20)

This is a small release to keep the dead corpse walking... Repeated attempts to
shoot it in the head seem to have failed (We don't think it is running with a lot
of brains left). It does not look pretty and we don't know yet when it will finally
stay down. What we do know is that some creatures (humans?) have been secretly
feeding it with their brain cells and as such, here we are...

Anyway, it contains some minor patches for some organ (memory?) leaks. It also adds
some fixes to make things stumble on (compile?) and make disturbing slurping sounds
again (work?) with the latest PipeWire versions.

Seriously.. back off.. don't become a victim... use Wireplumber.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-02-11 08:34:39 -08:00
Markus Volk a83305a15d pipewire: update 0.3.64 -> 0.3.65
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Add back the deprecated symbols but make sure a deprecated warning is
    emitted for them. This fixes compilation issues in bindings.
  - Fix an error in the AVX code that could cause crackling in filter-chain
    when using the mixer.
  - The convolver in filter-chain can now select an IR from a list of IRs
    that best matches the current samplerate. Also resampling of the IR
    has been improved.
  - A new native module-combine-stream was added. You can use this to create
    a 5.1 device from 3 stereo soundcards, for example, or direct the output
    to multiple sinks at once.
  - Support for Bluetooth MIDI was added. This requires a wireplumber
    addition as well.
  - An ALSA plugin rule was added to tweak the buffer settings in Davinci
    Resolve so that it now runs with acceptable latency. (#1697)
  - Support for compress offload was added using tinycompress. This allows
    compressed formats to be decoded in hardware using ALSA on some devices.
  - Many more buffixes and improvements.

  - Add back the deprecated symbols but make sure a deprecated warning is
    emitted for them. (#2952)
  - Fix a regression when running older servers and newer clients (such as
    flatpaks on older server) where the server would run clients too soon,
    causing crashes. (#2964)
  - Ensure that environment variables override any config values.

  - pw-cli has received some improvements in the output.
  - pw-cat can now use ffmpeg to demux streams for compress offload.

  - The convolver IR volume is now preserved after resampling.
  - Adapter ports can now have a custom prefix.
  - module-rt now clamps the realtime priority to the user allowed one if
    it is within an acceptable range. Before it would fall back to RTKit
    immediately.
  - The module-echo-cancel can now have per stream channel layouts which
    makes it possible to link to specific audio ports on a device. (#2939)
  - Fix an error in the AVX code that could cause crackling in filter-chain
    when using the mixer. (#2965)
  - The convolver in filter-chain can now select an IR from a list of IRs
    that best matches the current sample-rate.
  - module-pipe-* now better matches the pulseaudio properties. (#2973)
  - A new combine-stream module was added to combine multiple sinks into
    one sink. It is also possible to merge multiple sources into one.
  - module-rtp-source now has match rules to select what SAP sessions
    to stream from. There were also improvements to the buffering and
    latency handling.
  - module-rtp-sink now handles multicast loopback correctly.
  - module-rtp-sink implements min-ptime and max-ptime to control the
    send packet latency.

  - A new modifier flag was added to the video format parser helper to
    allow 0 (linear) as a valid modifier. (#2943)
  - Params includes were reorganized to make it more scalable. Many compressed
    audio formats were added.
  - The alsa pcm plugin now handles invalid values from the driver
    gracefully. (#2953)
  - Fix some potential stuttering cause by wrong scaling and overflow
    of the output buffers in audioconvert. (#2680)
  - Debug output is now also sent to the log instead of stdout. (#2923)
  - A debug context was added to debug macros to implement custom debug
    handling. This is used to redirect the debug of pods to the debug log
    instead of using some custom duplicated code.
  - Fix some warnings for potentially undefined shifts in format
    conversion.
  - Support for compress offload was added using tinycompress. This is mostly
    used on some embedded hardware where decoding of audio formats can be
    done in hardware.

  - Some fixes for LE audio were added.
  - Support for Bluetooth MIDI was added. This requires a wireplumber
    addition as well.
  - Reply OK to empty commands.
  - Improve compatibility with some devices that send stray \n such as
    the Sennheiser HD 350BT. (#2991)

  - Devices with unsupported formats (by the pulseaudio API) are now also
    listed in the pulseaudio API (with invalid formats).
  - The native module-combine-stream is used for module-combine-sink.

  - Make jack.merge-monitor default to true to better match the jack1/2
    behaviour. Add an exception for mixxx, which is more usable with
    unmerged monitors. (#1760)

  - The property handling in the ALSA plugin was improved. alsa.properties
    and alsa.rules can now be added to the config file.
  - A rule was added to tweak the buffer settings in Davinci Resolve so that
    it can run with acceptable latency. (#1697)
  - ALSA volume will now also use cubic volumes, like pulseaudio.
  - The ALSA ctl plugin now also uses the client-rt.conf file.
  - A new alsa.volume-method was added to configure cubic or linear volume.
    This can be set per application using the rules.

  - pipewiresrc will now advertize DMABUF support if the pipeline suports
    this.
  - pipewiresrc will now always be a live source unless told otherwise.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-02-02 21:37:37 -08:00
Khem Raj f8a25ccf54 pipewire: Do not split modules using PACKAGES_DYNAMIC for native case
One of the module has -native in its name which causes it to be provided
by both pipewire and pipewire-native and we need to set preferred
provider just for that. The fine tailored packages is not needed for
native case anyway so disable it

Fixes
NOTE: Multiple providers are available for runtime pipewire-modules-protocol-native (pipewire, pipewire-native)
Consider defining a PREFERRED_RPROVIDER entry to match pipewire-modules-protocol-native

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-02-02 10:25:33 -08:00
Khem Raj e6119b2f34 pipewire: Split dymanic modules to target recipe alone
This avoid unnessary provider conflict with pipewire-native to
provide modules

NOTE: Multiple providers are available for runtime pipewire-modules-protocol-native (pipewire, pipewire-native)
Consider defining a PREFERRED_RPROVIDER entry to match pipewire-modules-protocol-native

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-01-28 01:58:44 -08:00
Khem Raj 02831aa6e3 pipewire-media-session: Use PW_ENABLE_DEPRECATED
pipewire 0.64 has removed [1] NODE_TARGET which is still used by pipewire-media-session
so enable deprecated features for now to get the definition of PW_KEY_NODE_TARGET [2]

[1] https://gitlab.freedesktop.org/pipewire/pipewire/-/releases/0.3.64#highlights
[2] https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2952

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-01-21 10:02:02 -08:00
Markus Volk 750394bb0f pipewire: update 0.3.63 -> 0.3.64
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

  - Clear old buffer memory on ports to fix some SIGBUS errors.
  - It is now possible to assign custom port names to the ports from an
    adapter. This feature is helpful to those who use a multichannel
    interface with long-term connections. This way they can label each
    port with its designation, such as an instrument name or anything else
    to be displayed in a patchbay or DAW.
  - Fix some issues with node suspend and quantum and rate calculations.
  - Fix some regressions in pulse-tunnel and RTP-source adaptive resampling
    that could cause synchronization problems.
  - UCM devices now also have a Pro Audio profile.
  - NODE_TARGET (with the object.id) is now deprecated, use TARGET_OBJECT
    (with the object.serial, which is not reused and can avoid races).

  - Clear all peer input port buffers when suspending. This fixes some
    SIGBUS errors when some plugins were using old memory. (#2914)
  - Fix a case where nodes that were not supposed to be suspended, were
    kept suspended on a rate change. (#2929)
  - Fix an error in the quantum and rate calculations that could cause
    nodes to run with wrong quantum and rates when multiple rates were
    allowed. (#2925)

  - pw-dump will now sort dictionaries to make it easier to compare
    different outputs.
  - Improve output of pw-reserve.
  - pw-loopback uses TARGET_OBJECT so you will need to use the serial
    id (or better the name) as the target instead of the object id.

  - The filter-chain modules has seen some cleanups, refactoring and
    optimizations in the various DSP functions.
  - The ROC module now supports setting a custom samplerate.
  - ROC 0.2.X is now required.
  - The pulse tunnel and RTP source were not updating the rate field
    correctly which could cause synchronization problems. (#2891)
  - The filter-chain now supports an arbitrary number of control
    properties. (#2933)
  - It is now possible to assign custom port names to the ports from an
    adapter with the PW_KEY_NODE_CHANNELNAMES.
  - Support was added for capture and playback props in echo-cancel.
    (#2939)

  - The ACP code now has an option to set the probe samplerate. (#1599)
  - UCM devices now also have a Pro Audio profile.
  - Filtering of Step ranges is now implemented.

  - The channel-map is now set correctly on the echo-cancel module.
  - source_master and sink_master are now correctly handled in module
    echo-cancel.
  - Fix a regression in DRAIN where resuming after a DRAIN would fail.
    This caused problems for espeak. (#2928)
  - TARGET_OBJECT is now used to make it possible to use the indexes
    as a target.
  - ladspa-source and remap-source can now also link to monitors.

  - The ALSA plugin now handles the target.object correctly when set to
    -1. (#2893)

  - The v4l2 replacement library now also follows symlinks.
  - Support for getting and setting controls was added.
  - Support for G_PARM was added.
  - The environment variable PIPEWIRE_V4L2_TARGET can be used to force
    an application onto a specific camera.

  - Fix compilation without ldac_abr.
  - Fix a missing brace in CIND reply. This could cause some devices to
    fail.
  - Fix configuration of the initial latency.

  - The device provider now supports setting an fd so that it can connect
    to PipeWire sessions from the portal.
  - DMABuf support was re-enabled in gstpipewiresrc.

Build with support for gsettings and libcamera

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-01-17 01:05:52 -08:00
Markus Volk c4d52888a0 pipewire: update 0.3.62 -> 0.3.63
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-12-23 08:52:22 -08:00
Markus Volk f3d14d41ad pipewire: update 0.3.61 -> 0.3.62
PipeWire 0.3.62 (2022-12-09)
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

Highlights

A regression in screensharing was fixed. It was caused by a race when
activating links and driver nodes.
Video transform metadata was added so that cameras and screen sharing
can report the video orientation and transformations.
Support for the PulseAudio module-gsettings was added to make paprefs
work.
Support for bluetooth offloading was added. This allows for the bluetooth
reception, decoding and playback to happen completely in hardware.
This also requires some support in WirePlumber.
Many bugfixes and improvements.

PipeWire

More work on stopping nodes in a more controlled way.
Fix a race in starting nodes and drivers. In some cases the driver
node would already be started while the link to the peer node was not
ready yet. This caused regressions in screen sharing. The driver is
now only started after all the followers and links completed.
Fix a case where a slow capture stream would not recycle buffers
anymore and stall. (#2874)
Fix a subtle bug in pw_loop_invoke that could cause callbacks to be
delayed and cause crashes in some cases.
Fix a case where IPC was done from the data-thread and could cause
crashes.

Tools

Silence some expected errors in the pw-top output.

modules

The filter-chain has seen some optimizations in the copy plugin and
the convolver.
The zeroconf plugin will now only unpublish services from the server
that was removed.
Fix a potential crash when stopping pw-loopback.
Some harmless errors were turned into info messages.
Fix some cases where pw_stream methods were called from the data-thread
that could cause segfaults. (#2633)

SPA

There is now a video transform metadata that indicates how a video
frame was transformed (rotated/flipped). libcamera and the GStreamer
elements now have support for this metadata.
The SPA volume plugin is now disabled from the default build.
Handle missing control info in libcamera.
Handle errors from loop better, don't call the callbacks on errors.
Somewhat improve performance in some audioconvert AVX2 code for format
conversion.
Fix PortConfig and EnumPortConfig params in audioconvert and
audioadapter to reflect what is actually going on instead of using
hardcoded values.
Pass ignore-dB property correctly in all cases.
Probing is now done in 48KHz again. (#2857)

Pulse-server

IPv4 addresses are now added first to the list and exposed first with
zeroconf discover.
module-gsettings was added to make paprefs work.
The pulse.idle.timeout option was disabled by default and only enabled
for selected apps (speech-dispatcher) because it caused some problems
for other apps. (#2880)

JACK

Only process valid ports. Could fix some crashes. (#2863)

Bluetooth

Support was added for offloading bluetooth handling. Some hardware can
receive, decode and play the bluetooth audio directly in hardware.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-12-09 10:39:27 -08:00
Markus Volk 8715a47240 pipewire: upgrade 0.3.60 -> 0.3.61
PipeWire 0.3.61 (2022-11-24)
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

Highlights

Fix a bug in audioadapter that could cause crashes when switching
bluetooth profiles.
Fix sound in QEMU, deadbeef and openal again.
libcamera plugin fixes, dynamic add and remove should now work with
the next wireplumber version.
Fix a regression in pw-midiplay where the first buffer would not
play and some events would be missing.
The network module now doesn't export other network sources
anymore.
pulse-server now detects clients that keep underrunning for a long time
and will pause them to save power.
Many more bugfixes and improvements.

PipeWire

Optimize away some useless graph recalculations.
Increase alternative sample rates from 16 to 32.
FreeBSD and musl build fixes.
Silence some module loading errors when the error can be ignored.
Fix initial buffer requested size for pw-stream when operating in
async mode. This also indirectly fixes the first buffer in
pw-midiplay. (#2843)

Modules

Set the network property on pulse-tunnel streams so that they are
not exported anymore. (#2384)
Filter-chain has optimized mix functions now.

SPA

Handle some errors in libcamera better.
Fix libcamera remove events. Fix the id allocation for devices.
Fix a bug in audioadapter where it would not renegotiate after
a port reconfiguration, leading to crashes, especially when
automatically switching profiles in bluetooth. (#2764)
Do ALSA probing in 44100Hz again. Some devices seem to fail
otherwise for some unknown reason. (#2718)
Force playback start when the ALSA buffer is full. This fixes sound
in QEMU. (#2830)
Support Digital 5.1 AC3 for Asus Xonar SE.
Improve format renegotiation in audioadapter. This makes the ALSA
plugin work again for deadbeef. (#2832)
Fix latency reporting on adapter DSP ports.

pulse-server

Fix a bug where openal based applications would hang. (#2821)
Improve zeroconf publish. Only publish on the address of the first
running server. This avoids duplicate entries for IPv4 and IPv6.
Add support for republish entries when new servers are started.
Add a pulse.idle.timeout option (default to 5 seconds) to pause
streams that have been underrunning for this amount of time. Badly
behaving clients will then not keep the graph and device busy so
that devices can be suspended to save battery. This should give
better default behaviour with speech-dispatcher. (#2839)

JACK

Add an option to configure the filter character.
Fix connect_callbacks. It was only called once for output ports.
(#2841)
Add option to set node.passive on jack clients. Make some quirks
for qsynth to make it suspend and fade out better.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-11-26 21:38:42 -08:00
Markus Volk f399aebbe3 pipewire: upgrade 0.3.59 -> 0.3.60
- switch PIPEWIRE_SESSION_MANAGER to wireplumber by default

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-11-23 08:25:30 -08:00
Markus Volk 2c71d7f098 pipewire: upgrade 0.3.57 -> 0.3.59
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-10-15 18:24:49 -07:00
Markus Volk 2db221c649 pipewire: update 0.3.56 -> 0.3.57
PipeWire 0.3.57 (2022-09-02)
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.

Highlights

Support masking of conf.d/ files. (#2629)
Use org.freedesktop.portal.Realtime when available. This does the
correct PID/TID mappings to make realtime also work from flatpaks.
Fix rate adjustment logic in pulse-tunnel. This would cause
increasing delays and hickups when using tunnels. (#2548)
Add OPUS as a new vendor codec. Add OPUS-A2DP spec. PipeWire can now
send and receive OPUS data over bluetooth.
An AAC decoder was added so that PipeWire can now also function as
an A2DP AAC receiver.
Fix some issues where the wrong samplerate was used. (#2614)
Fix rate match for sources. This fixes an error where follower sources
would generate many resync warnings.
Many more bugfixes and improvements.

PipeWire

Support masking of conf.d/ files. (#2629)
Add some more debug info to memfd.
Improve data-loop invoke method. Also flush pending items. (#2631)
Add a filter-chain systemd service file than can be used to start
custom filters placed in ~/.conf/pipewire/filter-chain.d/ (#2553)
Improve triggered timestamps for remote nodes.
Fix some potential cross compilation problems due to wrong
host_machine.
Check return values of pw_getrandom().

Tools

Updates to pw-cli manpages. (#2552)
Remove the pw-cli dump command. It is mostly implemented as part of
wpctl status, pw-dump, pw-link, pw-top and others.
Clean up resource in pw-cat correctly on errors. (#2651)

Modules

Fix compilation of AVB on big-endian. Enable AVB only on Linux.
Use org.freedesktop.portal.Realtime when available. This does the
correct PID/TID mappings to make realtime also work from flatpaks.
Fix compilation of ROC module when headers are missing. (#2513)
Improve some error cleanup paths in protocol-native. Improve connect
and disconnect.
Fix a potential crash in FFT unload in filter-chain.
Implement PIPEWIRE_NOTIFICATION_FD for notification when the socket
is ready.
Try to use rtkit if set_nice() fails.
Fix rate adjustment logic in pulse-tunnel. This would cause
increasing delays and hickups when using tunnels. (#2548)
Handle disconnect in pulse-tunnel.

Bluetooth

Add OPUS as a new vendor codec. Add OPUS-A2DP spec. PipeWire can now
send and receive OPUS data over bluetooth.
An AAC decoder was added so that PipeWire can now also function as
an A2DP AAC receiver.

SPA

Tweak the resampler window function some more. (#2574)
Improve format convert performance in some fallback cases.
Fix rounding in format conversion on ARM NEON.
Fix libcamera build error. (#2575)
Fix some issues where the wrong samplerate was used. (#2614)
Don't wait for more samples that can fit in the ringbuffer in ALSA.
Improve buffer size handling in audioconvert, scale the buffers based
on the rate conversion and make things work with really large rate
conversions as well.
Add more and better debug for ALSA devices.
Improve channel mix: Filter FC and LFE when copying from a different
layout. Implement STEREO from FC. Avoid generating REAR from FC in PSD
mode.
Fix rate match for sources. This fixes an error where follower sources
would generate many resync warnings.
Improve ALSA format negotiation. If the ALSA node is not running and
there was a previously configured format, close and reopen the device
to enumerate and accept all possible formats again. (#2625).

ALSA

The alsa plugin will now also save the volumes set with the control
API. This saves the volumes set with alsa-mixer, for example.

Pulse-server

Flatpak apps with devices=all (Zoom) will now be granted Manager
permissions.
Small tweaks to the amount of data sent to clients to work around an
issue in freerdp.

JACK

Clean up the transport correctly when closing a client. (#2569)
Match context properties in addition to node properties for the jack
client rules. (#2580)
Make sure to return an error when disconnected from the server. (#2606)
Fix thread cast problem in jack_client_thread_id().
Increase jack_client_name_size() length and make sure we have space for
the \0 byte.
JACK clients from the same application will be added to the same group
so that they share the quantum and rate.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-09-08 19:02:11 -07:00