mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-10-29 05:40:27 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			7817 lines
		
	
	
	
		
			317 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			7817 lines
		
	
	
	
		
			317 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # PipeWire 1.5.81 (2025-10-16)
 | |
| 
 | |
| This is the first 1.6 release candidate that is API and ABI
 | |
| compatible with previous 1.4.x, 1.2.x and 1.0.x releases.
 | |
| 
 | |
| In addition to all the changes backported to 1.4.x, this release
 | |
| also contains some new features:
 | |
| 
 | |
| ## Highlights
 | |
|   - The link negotiation code was refactored and improved.
 | |
|     Applications now have more options for selecting the default
 | |
|     values and restricting the available options. The default
 | |
|     negotiation code will now attempt to better match the application
 | |
|     suggested values.
 | |
|   - The loop now has support for locking with priority inversion. Most
 | |
|     of the code was updated to use the locks instead of invoke to
 | |
|     get proper concurrent updates with the loop. The Thread loop
 | |
|     functionality of locks, signal and wait was moved to the SPA loop.
 | |
|     This guarantees better real-time behaviour because inter-thread
 | |
|     synchronization does not have to pass eventfd/epoll.
 | |
|   - The control stream parser was rewritten to be safe against concurrent
 | |
|     updates while parsing, which can occur when parsing shared memory.
 | |
|     It also has extra checks to avoid integer overflows and undefined
 | |
|     behaviour.
 | |
|   - MIDI 2.0 clip support was added to the tools.
 | |
|   - Bluetooth ASHA (Audio Streaming for Hearing Aid) support was added.
 | |
|   - The ALSA node setup was tweaked to provide low latency with the ALSA
 | |
|     Firewire driver.
 | |
|   - Better support for explicit sync. It is now possible to negotiate
 | |
|     extra features to know if a consumer will signal the sync objects and
 | |
|     implement a fallback using a reliable transport.
 | |
|   - Many bug fixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Avoid process calls in disconnect in pw-stream. (#3314)
 | |
|   - Disable PipeWire services for root.
 | |
|   - The link negotiation was refactored and improved. Drivers now
 | |
|     always have a lower priority in deciding the final format.
 | |
|   - Backwards compatibility with the v0 protocol was removed.
 | |
|   - pw-stream and pw-filter will now refuse to queue a buffer that
 | |
|     was not dequeued before.
 | |
|   - Object properties will now be updated on the global as well.
 | |
|   - The priority of config overrides is correct now. (#4816)
 | |
|   - Async links now correctly report 1 extra quantum of latency.
 | |
|   - node.exclusive and the new port.exclusive flag are now enforced
 | |
|     by PipeWire itself.
 | |
|   - A new timer-queue helper was added to schedule timeouts.
 | |
|   - node.terminal and node.physical properties are now copied to the
 | |
|     ports to make it possible to create virtual sources and sinks
 | |
|     for JACK applications.
 | |
|   - Port properties will now be dynamically updated when the node
 | |
|     properties they depend on are updated.
 | |
|   - Passive leaf nodes are now handled better. Now they will also
 | |
|     run when the peer is active. (#4915)
 | |
|   - Reliable transport has been added for output ports. This can be
 | |
|     used in some cases if the producer wants to ensure buffers are
 | |
|     consumed by a consumer. (#4885)
 | |
|   - Context properties now support rlimit.<resource> properties to
 | |
|     configure rlimits. (#4047)
 | |
| 
 | |
| ## Modules
 | |
|   - Close SyncObj fds.
 | |
|   - module-combine-stream has better Latency reporting.
 | |
|   - The JACK tunnel can now optionally connect ports.
 | |
|   - module-loopback has better Latency reporting.
 | |
|   - A Dolby Surround and Dolby Pro Logic II example filter config 
 | |
|     was added.
 | |
|   - Filter-chain can now resample to a specific rate before running the
 | |
|     filters. This is useful when the filter-graph needs to run at a
 | |
|     specific rate.
 | |
|   - Avahi-poll now uses the timer-queue to schedule timeouts.
 | |
|   - Modules are ported to timer-queue instead of using timerfd directly
 | |
|     for non-realtime timers.
 | |
| 
 | |
| ## SPA
 | |
|   - The loop now has support for locking with priority inversion. Most
 | |
|     of the code was updated to use the locks instead of invoke to
 | |
|     get proper concurrent updates with the loop. The Thread loop
 | |
|     functionality of locks, signal and wait was moved to the SPA loop.
 | |
|   - UMP to Midi 1.0 conversion was improved, some UMP events are now
 | |
|     converted to multiple Midi 1.0 messages. (#4839)
 | |
|   - The POD filter was refactored and improved. It is now possible to
 | |
|     use the default value of the output by specifying an invalid input
 | |
|     default value.
 | |
|   - The POD parser was made safe for concurrent updates of the memory
 | |
|     it is parsing. This is important when the POD is in shared memory
 | |
|     and the parser should not access invalid memory.
 | |
|   - Some hardcoded channel limits were removed and now use the global
 | |
|     channel limit. More things can dynamically adapt to this global
 | |
|     limit. The max number of channels was then bumped to 128.
 | |
|   - The POD builder is safe to use on shared memory now and tries to
 | |
|     avoid many integer overflows.
 | |
|   - Most debug functions are safe to be used on shared memory.
 | |
|   - User specified Commands and Events are now possible.
 | |
|   - The SPA_IO_CLOCK_FLAG_DISCONT was added to spa_io_clock to signal
 | |
|     a discont in the clock due to clock change.
 | |
|   - AC3, DTS, EAC3, TRUEHD and MPEGH now have helper parser functions.
 | |
|   - H265 was added as a video format. (#4674)
 | |
|   - SPA_PARAM_PeerFormats was added to let a port know about its peer
 | |
|     formats in order to better filter possible conversions.
 | |
|   - More color matrices, transfer functions and color primaries.
 | |
|   - The echo-canceler is enabled now.
 | |
|   - Pro-Audio mode now uses 3 periods by default. This lowers the
 | |
|     latency on some drivers (Firewire). The latency of Firewire is
 | |
|     also reported correctly now.
 | |
|   - The ALSA DLL bandwidth is configurable now.
 | |
|   - The resampler now uses fixed point for the phases and is a little
 | |
|     faster when updating adaptive rates.
 | |
|   - The convolver is a little faster by swapping buffers instead of
 | |
|     copying samples.
 | |
|   - Latency and ProcessLatency support was added to filter-graph.
 | |
|     (#4678)
 | |
|   - Audio channel position support was added to filter-graph.
 | |
|   - A new ffmpeg avfilter plugin was added to filter-graph.
 | |
|   - A new ONNX filter was added to filter-graph.
 | |
|   - A debug, pipe, zeroramp and noisegate filter was added to the
 | |
|     filter-graph. (#4745)
 | |
|   - The filter-graph lv2 plugin now supports options and state.
 | |
|   - videoconvert was greatly improved.
 | |
|   - The v4l2 plugin can negotiate DMABUF with modifiers.
 | |
|   - Colorimetry information was added to v4l2 and libcamera.
 | |
|   - Audioconvert can handle empty buffers more efficiently.
 | |
|   - Improve the POD compare functions for Rectangle.
 | |
|   - There is now a SPA_POD_PROP_FLAG_DROP flag to drop the property when
 | |
|     the property is missing from one side.
 | |
|   - A new FEATURE choice was added that is basically a flags choice with
 | |
|     a FLAG_DROP property.
 | |
|   - Metadata features were added. This is a way to negotiate new features
 | |
|     for the metadata. (#4885)
 | |
|   - DSD playback with pw-cat has been improved.
 | |
|   - Compatibility and xrun prevention for the SOF driver has been
 | |
|     improved. (#4489)
 | |
|   - The filter-graph max plugin can now have 8 input channels.
 | |
|   - Buffer Negotiation between the mixer port and the node ports is much
 | |
|     improved. (#4918)
 | |
|   - An offline AEC benchmark was added.
 | |
|   - Channel positions are now read from HDMI ELD when possible.
 | |
|   - Audioconvert and filter-graph now also support properties of Long
 | |
|     and String types.
 | |
| 
 | |
| ## ACP
 | |
|   - It's possible to disable the pro-audio profile.
 | |
|   - Support for Logitech Z407 PC Speakers was improved.
 | |
|   - Support for Razer BlackShark v3.
 | |
|   - Fix volume rounding down causing mute. (#4890)
 | |
| 
 | |
| ## Tools
 | |
|   - pw-cat can now play and record MIDI 2.0 Clips, which is the
 | |
|     official format for storing MIDI 2.0 UMP data. pw-midi2play
 | |
|     and pw-midi2record were added as aliases.
 | |
|   - pw-cat can now upload sysex files. The pw-sysex alias was
 | |
|     added for this.
 | |
|   - The pw-link tool now has a -t option to list port latencies.
 | |
|     It also has better monitor support.
 | |
|   - pw-top can now clear the ERR column with the c key.
 | |
|   - pw-cli now keeps the types of the variables it stores and avoid
 | |
|     using wrongly typed variables that can crash things. It can now
 | |
|     also list the available variables.
 | |
|   - pw-dump can now output raw JSON and SPA JSON.
 | |
|   - pw-dump has configurable indentation level.
 | |
|   - pw-mididump can be forced to output MIDI 1.0 messages.
 | |
|   - pw-profiler now uses doubles for extra precision.
 | |
|   - pw-top now marks the async nodes with =.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Telephony improvements.
 | |
|   - ASHA support was added.
 | |
|   - Add packet loss correction with spandsp for some codecs.
 | |
|   - Synchronisation between ISO streams in the same group.
 | |
| 
 | |
| ## Pulse-server
 | |
|   - The SUSPEND event is now correctly generated. fail-on-suspend is
 | |
|     now implemented.
 | |
|   - PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND is now implemented. (#4255)
 | |
|     (#4726)
 | |
|   - RTP streams now have stream.properties for extra configuration.
 | |
|   - Timed out streams are now destroyed instead of lingering. (#4901)
 | |
|   - A new help and pipewire-pulse:list-modules core message was added.
 | |
| 
 | |
| ## JACK
 | |
|   - Port rename callbacks are now emitted correctly.
 | |
|   - Use safe POD parsing for the control sequences.
 | |
| 
 | |
| ## V4l2
 | |
|   - The wrapper now avoids a race while initializing PipeWire. (#4859)
 | |
| 
 | |
| ## GStreamer
 | |
|   - Colorimetry support was added.
 | |
|   - Cursor metadata is now exposed as ROI metadata.
 | |
|   - Many more updates.
 | |
| 
 | |
| ## Docs
 | |
|   - Document the client-node flow a bit more.
 | |
| 
 | |
| 
 | |
| Older versions:
 | |
| 
 | |
| # PipeWire 1.4.0 (2025-03-06)
 | |
| 
 | |
| This is the 1.4 release that is API and ABI compatible with previous
 | |
| 1.2.x and 1.0.x releases.
 | |
| 
 | |
| This release contains some of the bigger changes that happened since
 | |
| the 1.2 release last year, including:
 | |
| 
 | |
|   * client-rt.conf was removed, all clients now use client.conf and
 | |
|     are given RT priority in the data threads.
 | |
|   * UMP (aka MIDI2) support was added and is now the default format
 | |
|     to carry MIDI1 and MIDI2 around in PipeWire. There are helper
 | |
|     functions to convert between legacy MIDI and UMP.
 | |
|   * The resampler can now precompute (at compile time) some common
 | |
|     conversion filters. Delay reporting in the resampler was fixed and
 | |
|     improved.
 | |
|   * Bluetooth support for BAP broadcast links and support for hearing aids
 | |
|     using ASHA was added. A new G722 codec was also added.
 | |
|     Delay reporting and configuration in Bluetooth was improved.
 | |
|   * The ALSA plugin now supports DSD playback when explicitly allowed
 | |
|     with the alsa.formats property.
 | |
|   * A PipeWire JACK control API was added.
 | |
|   * A system service was added for pipewire-pulse.
 | |
|   * Many documentation and translation updates.
 | |
|   * Many of the SPA macros are converted to inline functions.  All SPA
 | |
|     inline functions are now also compiled into a libspa.so library to
 | |
|     make it easier to access them from bindings.
 | |
|   * The module-filter-chain graph code was moved to a separate
 | |
|     filter-graph SPA plugin so that it becomes usable in more places.
 | |
|     EBUR128, param_eq and dcblock plugins were added to filter-graph.
 | |
|     The filter graph can now also use fftw for doing convolutions.
 | |
|     The audioconvert plugin was optimized and support was added to
 | |
|     audioconvert to insert extra filter-graphs in the processing pipeline.
 | |
|   * New helper functions were added to parse JSON format descriptions.
 | |
|   * The profiler now also includes the clock of the followers.
 | |
|   * RISCV CPU support and assembler optimisations were added.
 | |
|   * The clock used for logging timestamps can be configured now.
 | |
|   * The JSON parser was split into core functions and helper.
 | |
|   * Support for UCM split PCMs was added. Instead of alsa-lib splitting
 | |
|     up PCMs, PipeWire can mark the PCMs with the correct metadata so that
 | |
|     the session manager can use native PipeWire features to do this.
 | |
|   * Support for webrtc2 was added to echo-cancel.
 | |
|   * IEC958 codecs are now detected from the HDMI ELD data.
 | |
|   * Conversion between floating point and 32 bits now preserve 25 bits of
 | |
|     precision instead of 24 bits.
 | |
|   * A new Telephony D-BUS API compatible with ofono was added.
 | |
|   * The invoke queues are now more efficient and can be called from multiple
 | |
|     threads concurrently.
 | |
|   * Clock information in v4l2 was improved.
 | |
|   * An ffmpeg based videoconvert plugin was added that can be used with the
 | |
|     videoadapter.
 | |
|   * The GStreamer elements have improved buffer pool handling and rate
 | |
|     matching.
 | |
|   * The combine-stream module can now also mix streams.
 | |
|   * link-factory now checks that the port and node belong together.
 | |
|   * The netjack-manager module has support for autoconnecting streams.
 | |
|   * The native-protocol has support for abstract sockets.
 | |
|   * The pulse server has support for blocking playback and capture in
 | |
|     pulse.rules.
 | |
|   * The corked state of stream is now reported correctly in pulse-server.
 | |
|   * Fix backwards jumps in pulse-server.
 | |
|   * Latency configuration support was added in loopback and raop-sink.
 | |
|   * The ROC module has more configuration options.
 | |
|   * The SAP module now only send updated SDP when something changed.
 | |
|   * RTP source now has a standby mode where it idles when there is no
 | |
|     data received.
 | |
|   * Support for PTP clocking was added the RTP streams.
 | |
|   * The VBAN receiver can now dynamically create streams when they are
 | |
|     detected.
 | |
|   * Error reporting when making links was improved.
 | |
|   * Support for returning (canceling) a dequeued buffer in pw-stream.
 | |
|   * Support for emiting events in pw-stream was added.
 | |
|   * pw-cat now support stdin and stdout.
 | |
| 
 | |
| 
 | |
| ## Highlights (since the previous 1.3.83 release)
 | |
|   - Small fixes and improvements.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Fix some missing includes in metadata.h
 | |
|   - Pass the current error in errno when a stream is in error (#4574)
 | |
| 
 | |
| 
 | |
| ## modules
 | |
|   - Evaluate node rules before loading adapter follower to ensure
 | |
|     properties are set correctly. (#4562)
 | |
| 
 | |
| ## SPA
 | |
|   - Avoid a use after free when building PODs. (#4445)
 | |
|   - Take headroom into account when calculating resync.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Fix +CLCC parsing.
 | |
| 
 | |
| ## GStreamer
 | |
|   - Notify about default device changes in deviceprovider.
 | |
|   - Copy frames between pools and avoid splitting video buffers.
 | |
| 
 | |
| ## JACK
 | |
|   - Add an option to disable the MIDI2 port flags. (#4584)
 | |
| 
 | |
| # PipeWire 1.3.83 (2025-02-20)
 | |
| 
 | |
| This is the third and hopefully last 1.4 release candidate that
 | |
| is (almost) API and (entirely) ABI compatible with previous 1.2.x
 | |
| and 1.0.x releases.
 | |
| 
 | |
| We note that in the 1.3.x series, the API is slighty not backwards
 | |
| compatible because some methods previously used to accept void* as
 | |
| a parameter while they now require the correct type. We think this
 | |
| is however a good kind of API breakage and expect projects to patch
 | |
| their code to get things compiled with newer version (which will also
 | |
| compile for older versions). Note also that this is not an ABI break.
 | |
| 
 | |
| 
 | |
| ## Highlights
 | |
|   - Handle JACK transport updates in a better way.
 | |
|   - Fix a SAP regression when starting.
 | |
|   - Fix regression in rate scaling.
 | |
|   - Improve bluetooth source rate handling.
 | |
|   - More small bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Handle JACK transport updates in a better way. (#4543)
 | |
| 
 | |
| ## Modules
 | |
|   - Check that the link factory port and nodes match. Deprecate the
 | |
|     port.id when making links.
 | |
|   - Improve profiler output by scaling the quantum with the node
 | |
|     rate so that we don't end up with confusing information. (#4555)
 | |
|   - Fix sending of the SAP SDP. Handle some SDP parsing errors.
 | |
|   - Add some more options to the ROC source module. (#4516)
 | |
| 
 | |
| ## SPA
 | |
|   - Fix firewire quirks in udev rules. (#4528)
 | |
|   - Fix a bug in the rate scaling in some cases that would make things
 | |
|     run with the wrong samplerate.
 | |
|   - Improve introspection of control types.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Use the G722 codec from Android instead of FFmpeg for ASHA.
 | |
|   - Use the A2DP source rate as the graph rate. (#4555)
 | |
|   - Specify the bluetooth source latency property in the rate of the
 | |
|     stream to avoid conversions and rounding errors.
 | |
| 
 | |
| # PipeWire 1.3.82 (2025-02-06)
 | |
| 
 | |
| This is the second 1.4 release candidate that is API and ABI
 | |
| compatible with previous 1.2.x and 1.0.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Various pw-stream improvements: timing information fixes,
 | |
|     avoid locking buffers in some cases and an improved drain
 | |
|     event.
 | |
|   - A new Telephony D-BUS API compatible with ofono.
 | |
|   - Documentation fixes and updates.
 | |
|   - More small fixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Improve timing information when rate is unknown.
 | |
|   - Avoid locked buffers in pw_stream in some cases.
 | |
|   - Improve pw_stream drain event emission.
 | |
|   - Improve manager socket handling. Applications can avoid hardcoding
 | |
|     the sockets so that they will respect the config settings.
 | |
| 
 | |
| ## modules
 | |
|   - Fix header size calculation when using ipv6. (#4524)
 | |
| 
 | |
| ## SPA
 | |
|   - Optimize byteswapped s16 conversions.
 | |
|   - Improve event handling for internal events.
 | |
|   - Optimize negiotiation when in convert mode, prefer the format
 | |
|     of the follower in adapter.
 | |
|   - Fix EnumPortConfig for videoadapter without converter.
 | |
|   - Fix libcamera property buffer size.
 | |
| 
 | |
| ## Pulse-server
 | |
|   - Add systemwide systemd files.
 | |
| 
 | |
| ## JACK
 | |
|   - Add a UMP example.
 | |
|   - Use the new JackPortMIDI2 flag to mark UMP ports to JACK.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Support BAP hardware volume.
 | |
|   - Add a Telephony DBUS API.
 | |
| 
 | |
| ## GStreamer
 | |
|   - Disable buffer pools for audio by default.
 | |
| 
 | |
| ## Docs
 | |
|   - Improve the module documentation.
 | |
| 
 | |
| # PipeWire 1.3.81 (2025-01-23)
 | |
| 
 | |
| This is the first 1.4 release candidate that is API and ABI
 | |
| compatible with previous 1.2.x and 1.0.x releases.
 | |
| 
 | |
| In addition to all the changes backported to 1.2.x, this release
 | |
| also contains some new features:
 | |
| 
 | |
| ## Highlights
 | |
|   - UMP support was added with MIDI 1.0 and MIDI 2.0 support in the ALSA
 | |
|     sequencer plugin. By default PipeWire will now use MIDI 2.0 in UMP
 | |
|     messages to transport MIDI in the graph, with conversions to/from legacy
 | |
|     MIDI where required. This requires UMP support in the kernel.
 | |
|   - client-rt.conf is no longer supported. Custom changes made to this
 | |
|     config should be moved to client.conf. Clients that try to load the
 | |
|     client-rt.conf will emit a warning and be directed to client.conf
 | |
|     automatically for backwards compatibility.
 | |
|   - The module-filter-chain code was moved to a new filter-graph plugin. This
 | |
|     made it possible to add filter-graph support directly in audioconvert. It
 | |
|     is now possible to run up to 8 run-time swappable filter-graphs inside
 | |
|     streams and nodes. This should make it easier to add effects to streams
 | |
|     and device nodes.
 | |
|   - Bluetooth support for BAP broadcast links and support for hearing aids
 | |
|     using ASHA was added.
 | |
|   - Many more bugfixes and improvements.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Nodes are now only scheduled when ready to signal the driver.
 | |
|   - Add slovenian translation. (#4156)
 | |
|   - Link errors are handled better.
 | |
|   - The videoadapter is now enabled by default but no videoconverter
 | |
|     is loaded yet by default.
 | |
|   - Streams now have support for ProcessLatency.
 | |
|   - Streams now have a method to emit events.
 | |
|   - The RequestProcess event and command can now pass around extra
 | |
|     properties.
 | |
|   - Local timestamps are now used for logging.
 | |
|   - client-rt.conf is no longer supported. Custom changes made to this
 | |
|     config should be moved to client.conf. Clients that try to load the
 | |
|     client-rt.conf will emit a warning and be directed to cliert.conf
 | |
|     automatically to preserve backwards compatibility.
 | |
|   - pw_stream now has an API to return unused buffers.
 | |
| 
 | |
| ## modules
 | |
|   - module-combine-stream can now mix streams.
 | |
|   - Links in error are now destroyed by link-factory.
 | |
|   - The netjack2 driver can now also create streams that autoconnect when
 | |
|     specified. (#4125)
 | |
|   - Many updates and bugfixes to the RTP modules.
 | |
|   - The netjack2 driver can now bind to a custom IP and port pair. (#4144)
 | |
|   - The loopback module and module-raop have support for ProcessLatency, which
 | |
|     can be used to query and update the latency.
 | |
|   - The profiler module can now reduce the sampling rate.
 | |
|   - The filter-chain was optimized some more.
 | |
|   - The filter-chain gained some more plugins: param_eq, ebur128, dcblock.
 | |
|   - Support for fftw based convolver was added.
 | |
|   - Some module arguments can now be overridden.
 | |
|   - The VBAN receiver now creates new streams per stream name. (#4400)
 | |
|   - The RTP SAP module is now smarter with generating new SAP messages.
 | |
|   - The RTP source can now be paused when no data is received. (#4456)
 | |
| 
 | |
| ## tools
 | |
|   - pw-cat can now stream most formats from stdin/stdout.
 | |
|   - pw-profiler has a JSON dump option to dump the raw profiler data.
 | |
|   - pw-cli now supports unload-module. (#4276)
 | |
| 
 | |
| ## SPA
 | |
|   - The resampler can precompute some common coeficients now at compile
 | |
|     time.
 | |
|   - UMP support was added with MIDI 1.0 and MIDI 2.0 support in the ALSA
 | |
|     sequencer plugin. By default PipeWire will now use MIDI 2.0 in UMP
 | |
|     messages to transport MIDI in the graph, with conversions to/from legacy
 | |
|     MIDI where required.
 | |
|   - Control types can now be negotiated.
 | |
|   - Support for writing ALSA bind controls was added.
 | |
|   - The ALSA sequencer now has better names for the ports.
 | |
|   - The F32 to S32 conversion now uses 25 bits for an extra bit of
 | |
|     precision.
 | |
|   - libcamera controls can now be set in all cases.
 | |
|   - The videoadapter has been improved and a dummy and ffmpeg based
 | |
|     videoconverter plugin was added.
 | |
|   - Negotiation was improved in audioadapter. First a passthrough format
 | |
|     is tried.
 | |
|   - Some JSON helper functions were added and some duplicate code removed
 | |
|     or simplified.
 | |
|   - Add support for RISC V CPU detection and add many optimizations in
 | |
|     the audio converters.
 | |
|   - Add an option to disable ALSA mixer path select. (#4311)
 | |
|   - Fix a potential bug with the cleanup of the loop queues.
 | |
|   - ALSA nodes now dynamically adjust the DLL bandwidth based on average
 | |
|     measured variance.
 | |
|   - The loop invoke queue was made more efficient and make it possible to
 | |
|     invoke from multiple threads.
 | |
|   - The filter-chain code was moved to a new filter-graph plugin.
 | |
|   - Most function macros are now static inlined and can also be built into a
 | |
|     libspa.so file. This should improve language bindings.
 | |
|   - V4l2 clock information was improved.
 | |
|   - Supported IEC958 codecs are now autodetected via ELD info.
 | |
|   - Audioconvert was optimized some more.
 | |
|   - Audioconvert can now include filter-graphs in its processing.
 | |
|   - webrtc-audio-processing-2 is now supported in AEC.
 | |
|   - The resampler now reports the delay and subsample delay. Also the
 | |
|     delay is reported in the samplerate of the input.
 | |
|   - The ALSA sequencer now handle kernels without UMP support. (#4507)
 | |
| 
 | |
| ## Pulse-server
 | |
|   - Add quirk to block clients from making record and playback streams.
 | |
|   - The corked state is now set on stream to always report this state
 | |
|     correctly to other clients.
 | |
|   - Readiness notification was added to the pulse server with the
 | |
|     PIPEWIRE_PULSE_NOTIFICATION_FD environment variable. (#4347)
 | |
|   - The pulse.cmd config now supports conditions.
 | |
|   - A bug in clearing the ringbuffer was fixed. (#4464)
 | |
| 
 | |
| ## GStreamer
 | |
|   - Support for the default devices was added to the deviceprovider. (#4268)
 | |
|   - The graph clock is now used as the source for the GStreamer clock.
 | |
|   - The sink now does some rate control.
 | |
| 
 | |
| ## ALSA
 | |
|   - The ALSA plugin now supports DSD when explicitly enabled.
 | |
| 
 | |
| ## JACK
 | |
|   - JACK now supports 2 new extension formats for OSC and UMP.
 | |
|   - JACK clients can receive UMP MIDI1 or MIDI2 messages when using
 | |
|     the new UMP port format extension.
 | |
|   - JACK now reports the PipeWire version in the minor/micro/proto.
 | |
|   - Implement more jackserver functions.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Support BAP broadcast links.
 | |
|   - Support for ASHA was added.
 | |
|   - Delay reporting in A2DP sources was improved.
 | |
| 
 | |
| ## Examples
 | |
|   - 2 new examples of pw-stream using spa_ringbuffer were added.
 | |
| 
 | |
| ## Docs
 | |
|   - Many updates to the man pages.
 | |
|   - More documentation about thread safety of functions in stream
 | |
|     and filters. (#4521)
 | |
| 
 | |
| # PipeWire 1.2.7 (2024-11-26)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with the previous
 | |
| 1.2.x and 1.0.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Backport support for lazy scheduling.
 | |
|   - Handle the case where processing would stop when an ALSA driver is
 | |
|     destroyed.
 | |
|   - Add support for v4l2loopback in the v4l2 plugin.
 | |
|   - Small bug fixes and improvements.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Invalidate the proxy ID when removed.
 | |
|   - Backport support for lazy scheduling.
 | |
|   - Fix profiler stats for async nodes.
 | |
|   - Fix EARLY_PROCESS again in pw-stream. (#3480)
 | |
| 
 | |
| ## Modules
 | |
|   - Fix a crasher issue when nodes are created in the wrong order in
 | |
|     module-filter-chain.
 | |
|   - Fix unmap bug in lv2 uri tables.
 | |
|   - Add ratelimit to jack-tunnel xruns.
 | |
|   - Remove hardcoded limit in filter-chain sofa plugin.
 | |
|   - Handle the MTU size correctly in module-rtp and handle large MTUs.
 | |
|     (#4396)
 | |
|   - Fix JSON float parsing errors in equalizer module. (#4418)
 | |
| 
 | |
| ## SPA
 | |
|   - Fix crash in audiotestsrc when using spa-inspect (#4365).
 | |
|   - Improve JSON float infinity checks.
 | |
|   - Improve resampler performace a little.
 | |
|   - Make audioconvert only output when there is something to output.
 | |
|   - Fix regression in v4l2 port flags which would disable support for
 | |
|     EXPBUF.
 | |
|   - Handle the case where an ALSA driver is destroyed and the follower
 | |
|     becomes a driver. Processing would stop. (#4401)
 | |
|   - Add support for v4l2loopback in the v4l2 plugin.
 | |
| 
 | |
| ## Pulse-server
 | |
|   - Give a better error message when running out of fds.
 | |
|   - Ensure positive latency reporting.
 | |
| 
 | |
| ## GStreamer
 | |
|   - Fix memory leak in deviceprovider.
 | |
|   - Fix locking when emitting an error.
 | |
| 
 | |
| ## Tools
 | |
|   - Fix pw-dot link labels.
 | |
| 
 | |
| # PipeWire 1.2.6 (2024-10-23)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with the previous
 | |
| 1.2.x and 1.0.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - The filter-chain param changes were not aggregated correctly, causing some
 | |
|     param changes to be ignored. (#4331)
 | |
|   - Clear the JACK io ports correctly when stopping to avoid crashes. (#4337)
 | |
|   - Some more small fixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Stream states are now updated based on the underlying node state.
 | |
|   - Exported nodes now have their state change done synchronously so that the
 | |
|     server can immediately start the driver and avoid some initial xruns.
 | |
|   - Improve stream flush handling and improve the docs.
 | |
|   - Don't send mix_info to destroyed ports to avoid some errors in the
 | |
|     JACK clients.
 | |
| 
 | |
| ## Modules
 | |
|   - The filter-chain param changes were not aggregated correctly, causing some
 | |
|     param changes to be ignored. (#4331)
 | |
|   - The filter-chain now correctly optimizes unlinked nodes in all cases.
 | |
| 
 | |
| ## SPA
 | |
|   - ALSA PCM node properties are now no longer overwritten with card properties.
 | |
|     (#4135)
 | |
|   - Increase the adapter retry count to avoid xruns in some cases. (#4334)
 | |
|   - Fix potential crash in cleanup of ALSA nodes.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Fix a crash with broadcast sinks.
 | |
|   - Improve compatibility with Phonak hearing aids.
 | |
|   - Don't exit when DBus goes down.
 | |
| 
 | |
| ## JACK
 | |
|   - Clear the io ports correctly when stopping to avoid crashes. (#4337)
 | |
| 
 | |
| ## Docs
 | |
|   - Backport docs from master.
 | |
| 
 | |
| # PipeWire 1.0.9 (2024-10-22)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 1.0.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix an fd leak and confusion in the protocol that would cause leaks and
 | |
|     wrong memory to be used.
 | |
|   - Fix bug where the mixer would not be synced correctly after selecting
 | |
|     a port, leaving the audio muted. (#4084)
 | |
|   - Backport v4l2 systemd-logind support to avoid races when starting.
 | |
|     (#3539 and #3960).
 | |
|   - Other small fixed and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Fix a bug where renegotiation would sometimes fail to deactivate a link.
 | |
|   - Fix an fd leaks and confusion in the protocol.
 | |
| 
 | |
| ## modules
 | |
|   - Fix a use-after-free in the rt module when stopping a thread.
 | |
| 
 | |
| ## SPA
 | |
|   - Fix bug where the mixer would not be synced correctly after selecting
 | |
|     a port, leaving the audio muted. (#4084)
 | |
|   - Fix a compilation issue with empty initializers. (#4317)
 | |
|   - Backport v4l2 systemd-logind support to avoid races when starting.
 | |
|     (#3539 and #3960).
 | |
|   - Fix a potential crash when cleaning ALSA nodes.
 | |
| 
 | |
| ## JACK
 | |
|   - align buffers to the max cpu alignment in order to allow more
 | |
|     optimizations.
 | |
| 
 | |
| # PipeWire 1.2.5 (2024-09-27)
 | |
| 
 | |
| This is an important bugfix release that is API and ABI compatible with the
 | |
| previous 1.2.x and 1.0.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix an fd mismatch in the protocol in some cases that could lead to
 | |
|     fd leaks and crashes.
 | |
|   - Fix a bug where the mixer was not updated after setting the port, which would
 | |
|     cause muted audio at boot or resume from suspend.
 | |
|   - Fix a potential use-after-free in module-rt when stopping a thread.
 | |
|   - Cached objects are now freed in the JACK API to avoid memory leaks.
 | |
|   - Some more fixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - RequestProcess commands are now only sent after the node completes
 | |
|     the state change to RUNNING.
 | |
|   - More FreeBSD fixes.
 | |
|   - Handle ACTIVE links going to < PAUSED as well. This improves
 | |
|     renegotiation in some cases.
 | |
|   - Fix an fd mismatch in the protocol in some cases that could lead to
 | |
|     fd leaks and crashes.
 | |
| 
 | |
| ## Modules
 | |
|   - Many of the network modules can now also accept hostnames instead of
 | |
|     IP addresses.
 | |
|   - Fix a potential use-after-free in module-rt when stopping the thread.
 | |
| 
 | |
| ## SPA
 | |
|   - Support for elogind was added.
 | |
|   - Some more errors are checked when converting JSON to POD. (#4313)
 | |
|   - Fix a bug where the mixer was not updated after setting the port, which would
 | |
|     cause muted audio at boot or resume from suspend. (#4084)
 | |
| 
 | |
| ## JACK
 | |
|   - The BBT transport handling was improved. Some fields were added to be able
 | |
|     to handle the JACK semantics correctly. (#4314)
 | |
|   - Buffers are now aligned according to the maximum CPU alignment instead of
 | |
|     the hardcoded 16 bytes alignment.
 | |
|   - Cached objects are now freed correctly.
 | |
| 
 | |
| ## Doc
 | |
|   - Some small doc updates. (#4272)
 | |
| 
 | |
| # PipeWire 1.2.4 (2024-09-19)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with the
 | |
| previous 1.2.x and 1.0.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Avoid a crash in cleanup of globals. (#4250)
 | |
|   - Use systemd-logind to scan for new devices in v4l2.
 | |
|   - Some more bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Avoid a crash in cleanup of globals. (#4250)
 | |
|   - Improve RequestProcess dispatch.
 | |
| 
 | |
| ## Tools
 | |
|   - Improve float parsing. (#4234)
 | |
| 
 | |
| ## SPA
 | |
|   - Clear the ringbuffer when stopping in libcamera.
 | |
|   - Use systemd-logind to scan for new devices in v4l2. (#3539, #3960)
 | |
|   - Queue dropped first buffer in v4l2.
 | |
|   - Unlink pcm devices when moving drivers to avoid broken pipe.
 | |
| 
 | |
| ## JACK
 | |
|   - Emit buffer_size callback in jack_activate() to improve
 | |
|     compatibility with GStreamer. (#4260)
 | |
| 
 | |
| # PipeWire 1.0.8 (2024-09-19)
 | |
| 
 | |
| This is a small bugfix release that is API and ABI compatible with previous
 | |
| 1.0.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Backport support for explicit sync.
 | |
|   - FFADO backport fixes.
 | |
|   - Fix some races in JACK.
 | |
|   - More small fixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Add support for mandatory metadata and explicit sync metadata.
 | |
|   - Fix RequestProcess again.
 | |
|   - Include config.h to use malloc_trim() when cleaning nodes.
 | |
|   - Avoid crash when destroying a global. (#4250)
 | |
| 
 | |
| ## Modules
 | |
|   - FFADO fixes: improve timing reporting, avoid some xruns, improve
 | |
|     samplerate and period size handling, implement freewheeling.
 | |
|   - Decrease memory usage of the profiler.
 | |
| 
 | |
| ## Tools
 | |
|   - Fix pw-dump metadata changes fix. (#4053)
 | |
|   - Support large params in pw-cli. (#4166)
 | |
| 
 | |
| ## SPA
 | |
|   - Improve libcamera devices reporting to properly filter out duplicates in
 | |
|     all cases.
 | |
|   - Improve property reporting in v4l2.
 | |
|   - Fix lost buffer in v4l2.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Improve compatibility with some devices.
 | |
| 
 | |
| ## JACK
 | |
|   - Fix some races when shutting down.
 | |
|   - Fix rt-priority on the main thread when using custom thread create
 | |
|     function. (#4099)
 | |
| 
 | |
| ## ALSA
 | |
|   - Handle format renegotiation. (#3856)
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # PipeWire 1.0.7 (2024-05-24)
 | |
| 
 | |
| This is a small bugfix release that is API and ABI compatible with previous
 | |
| 1.0.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Fix a potential race when adding/removing a port to be scheduled.
 | |
| 
 | |
| ## Modules
 | |
|   - Fix FFADO default device handling. (#4023)
 | |
| 
 | |
| ## SPA
 | |
|   - Fix in integer overflow and float/double compare in POD.
 | |
| 
 | |
| ## JACK
 | |
|   - Copy larger MIDI events correctly.
 | |
| 
 | |
| # PipeWire 1.1.81 (2024-05-16)
 | |
| 
 | |
| This is the first 1.2 release candidate that is API and ABI
 | |
| compatible with previous 1.0.x releases.
 | |
| 
 | |
| In addition to all the changes backported to 1.0.x, this release
 | |
| also contains some new features:
 | |
| 
 | |
| ## Highlights
 | |
|   - 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 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 negotiation 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.
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - snap support has been added.
 | |
|   - Implement async processing. (#3509)
 | |
|   - Support for explicit sync was added.
 | |
|   - Config parsing errors are reported earlier and much better.
 | |
|   - A -P option was added to provide extra properties to the context. This can be
 | |
|     used to enable some features that use rules.
 | |
|   - properties.rules was added to enhance properties based on some rules.
 | |
|     This deprecates the vm.overrides.
 | |
|   - Support was added for security-context. This makes it possible for a flatpak
 | |
|     to request a socket with specific properties from pipewire to mount in the
 | |
|     flatpak. The session manager can then assign permissions based on the connection
 | |
|     properties.
 | |
|   - Support for fixed arrays in pw_array was improved.
 | |
|   - PipeWire server and clients can now use multiple threads to process the nodes
 | |
|     in parallel.
 | |
|   - device.rules and node.rules were added to update device and node properties
 | |
|     based on rules.
 | |
|   - device.param and node.param can now be used to configure params when devices
 | |
|     and nodes are created.
 | |
|   - Memory will now try to use MFD_NOEXEC_SEAL.
 | |
|   - The driver id of a node is now placed in the properties.
 | |
|   - A potential race was fixed when adding and removing ports to the scheduling
 | |
|     lists.
 | |
| 
 | |
| ## Modules
 | |
|   - Priorities for the FFADO threads can be configured now.
 | |
|   - The loopback module now has support for up and downmixing.
 | |
|   - Extra properties can now be configured per native-connection socket.
 | |
|   - The pulse-tunnel can now automatically reconnect when the connection is
 | |
|     broken.
 | |
|   - The RTP module now supports the PTP management protocol.
 | |
|   - The RTP sender can now use a timer to send out multiple packets per
 | |
|     quantum.
 | |
|   - A new module was added for loading Parametric EQ.
 | |
|   - The simple-protocol module now has per stream configurable properties
 | |
|     and can also be used to interface with a snapcast server.
 | |
|   - Support for local services was added to raop, rtp and pulse avahi
 | |
|     discoverers. Support for IPv6 on local services was added to RAOP.
 | |
| 
 | |
| ## SPA
 | |
|   - Support for reporting JSON parsing errors has been added.
 | |
|   - Some extra checks are added when iterating POD structures.
 | |
|   - Port and profiles can now be hidden from ALSA nodes with
 | |
|     api.acp.hidden-ports and api.acp.hidden-profiles properties.
 | |
|   - The UCM conflicting devices patches were merged.
 | |
|   - Profiles and Routes can now also be set by name.
 | |
|   - Hires timestamps are now used when possible in IRQ based scheduling to
 | |
|     get more accurate wakeup times.
 | |
|   - udev can now be an optional dependency.
 | |
|   - audioadapter now has an option to automatically configure its ports.
 | |
|   - Camera rotation was added to the libcamera node.
 | |
|   - invoke on loops can now be done from multiple threads at the same time.
 | |
|   - Make sure we use CLOCK_MONOTONIC everywhere in the io_clock.
 | |
|   - Vulkan bit and convert filters were added.
 | |
|   - ALSA will now always read the HW ringbuffer pointer when followers are
 | |
|     not on the same card.
 | |
|   - Support for larger MIDI sysex messages was improved. Configuration of
 | |
|     the client input and output pool was added. (#4005)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Support Google OPUS codec.
 | |
|   - Support the LC3-SWB codec.
 | |
|   - Support the AAC-ELD codec.
 | |
|   - Broadcast source configuration support was added.
 | |
| 
 | |
| ## pulseaudio-server
 | |
|   - The GSettings schemas are now optionally installed.
 | |
|   - Extensions were moved to the modules.
 | |
|   - The log level of the pulse server can dynamically be changed with
 | |
|     a core object message.
 | |
|   - snap access control was added to pulse-server.
 | |
|   - The old pacmd describe-module functionality is now implemented with
 | |
|     a core message pipewire-pulse:describe-module.
 | |
|   - An option was added to disable module loading and unloading.
 | |
| 
 | |
| ## JACK
 | |
|   - OSC messages can now also be placed in JACK MIDI and the translation
 | |
|     layer will detect and tag the right PipeWire control message types.
 | |
|   - A jack.other-connect-mode was added to limit the connections that an
 | |
|     app can do to ports it doesn't own.
 | |
|   - The way the transport is started and how the nodes are grouped together
 | |
|     in the transport was improved using the new sync groups. (#3850)
 | |
|   - Fix large MIDI messages handling. (#4005)
 | |
| 
 | |
| ## ALSA
 | |
|   - Fix format renegotiation. (#3858)
 | |
|   - Handle period events better. (#3676)
 | |
|   - Improve handling of the eventfd wakeups.
 | |
| 
 | |
| ## GStreamer
 | |
|   - The GStreamer elements can now negotiate and use DMABUF.
 | |
| 
 | |
| ## Tools
 | |
|   - The T flag is used in pw-top when the transport is running.
 | |
|   - A new pw-container tool was added to start a new security context and
 | |
|     run an application in it.
 | |
|   - pw-dot handles properties with quotes better. Nodes are grouped with the
 | |
|     node.link-group.
 | |
|   - pw-link has a --wait option to wait for all links to be created.
 | |
| 
 | |
| # 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 when 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.
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # PipeWire 1.0.4 (2024-03-13)
 | |
| 
 | |
| 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.
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # 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)
 | |
| 
 | |
| # PipeWire 1.0.1 (2024-01-11)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 1.0.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Fix a build issue when examples where disabled.
 | |
|   - Avoid some compiler warnings.
 | |
|   - Avoid some bitfield data races. (#3706)
 | |
| 
 | |
| ## Modules
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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.
 | |
| 
 | |
| ## Pulse-server
 | |
|   - Also handle active ports for monitor sources.
 | |
|   - Fix zeroconf-publish format properties.
 | |
| 
 | |
| ## JACK
 | |
|   - Improve timing and transport calculations.
 | |
|   - Handle -ENOENT from the core and don't error out.
 | |
| 
 | |
| ## GStreamer
 | |
|   - Handle node port removal in the device provider. (#3708)
 | |
|   - Improve error handling while connecting.
 | |
|   - Fix dts_offset.
 | |
| 
 | |
| # PipeWire 1.0.0 (2023-11-26)
 | |
| 
 | |
| 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 seamless 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
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # 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)
 | |
| 
 | |
| # 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)
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # PipeWire 0.3.81 (2023-10-06)
 | |
| 
 | |
| This is the first 1.0 release candidate that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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
 | |
|     custom 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)
 | |
| 
 | |
| ## Tools
 | |
|   - pw-cat now supports DFF DSD files.
 | |
|   - pw-cli avoid some NULL derefs in some cases.
 | |
| 
 | |
| ## Modules
 | |
|   - 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.
 | |
| 
 | |
| ## Pulse-server
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Improvements to the codec handling when PipeWire is used as Audio
 | |
|     Gateway.
 | |
|   - Adapt to new Bluez API for BAP devices.
 | |
| 
 | |
| ## JACK
 | |
|   - 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.
 | |
| 
 | |
| # PipeWire 0.3.80 (2023-09-14)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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.
 | |
| 
 | |
| ## Modules
 | |
|   - 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)
 | |
| 
 | |
| ## Tools
 | |
|   - pw-cat will now place media properties in Tag params.
 | |
|   - pw-mon can now filter props and params.
 | |
| 
 | |
| ## SPA
 | |
|   - 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)
 | |
| 
 | |
| ## Pulse-server
 | |
|   - 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.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - 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)
 | |
| 
 | |
| ## JACK
 | |
|   - Also emit unregister notify even when suppressed 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)
 | |
| 
 | |
| # PipeWire 0.3.79 (2023-08-29)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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.
 | |
| 
 | |
| ## Tools
 | |
|   - pw-top now has a batch mode to dump the output to stdout.
 | |
| 
 | |
| ## SPA
 | |
|   - 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.
 | |
| 
 | |
| ## Pulse-server
 | |
|   - Add alsa-sink and alsa-source modules. (#3456)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Fix a regression where only the BAP off profile is shown.
 | |
|   - Add BAP broadcast source and sink support.
 | |
| 
 | |
| ## JACK
 | |
|   - Also emit a latency notify when the buffer size changes.
 | |
|   - Fix a regression in JACK port registration. (#3485)
 | |
|   - jack_port_tie() is now supported.
 | |
| 
 | |
| ## ALSA
 | |
|   - Improve property handling, support lists and ranges in addition to
 | |
|     fixed values. (#3451)
 | |
| 
 | |
| # PipeWire 0.3.78 (2023-08-22)
 | |
| 
 | |
| This is a small bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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.
 | |
| 
 | |
| ## Modules
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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)
 | |
| 
 | |
| ## pulse-server
 | |
|   - A regression was fixed where removed events would not be shown in some
 | |
|     cases. (#3414)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - 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.
 | |
| 
 | |
| ## JACK
 | |
|   - 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)
 | |
| 
 | |
| ## GStreamer
 | |
|   - A potential crash was fixed in the device provider when stopping.
 | |
| 
 | |
| # PipeWire 0.3.77 (2023-08-04)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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 each other.
 | |
|   - The VBAN module now supports midi send and receive as well.
 | |
|   - Many cleanups and small fixes.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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 each other.
 | |
|   - Config files need to end with .conf.
 | |
|   - The client.api is added the to global properties of a node.
 | |
| 
 | |
| ## modules
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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)
 | |
| 
 | |
| ## pulse-server
 | |
|   - 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)
 | |
| 
 | |
| ## JACK
 | |
|   - 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)
 | |
| 
 | |
| ## bluetooth
 | |
|   - Use some more autoptr cleanups, fix some leaks.
 | |
| 
 | |
| # PipeWire 0.3.76 (2023-07-28)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix a regression that would cause the MPV pipewire backend to fail because
 | |
|     of a spurious thread-loop signal.
 | |
|   - Fix a crash when DBus is not found.
 | |
|   - ALSA hires timestamps are now disabled by default.
 | |
|   - Some more fixes and improvements.
 | |
| 
 | |
| ## PipeWire
 | |
|   - A new option was added to pw-thread-loop to signal when the thread starts.
 | |
|     This is only used in module-rt to avoid regressions in mpv. (#3374)
 | |
|   - Fix a compilation problem.
 | |
|   - Stream flags now only set the properties when not already set. This fixes
 | |
|     a regression with node autoconnect. (#3382)
 | |
| 
 | |
| ## Tools
 | |
|   - pw-cat will now stop when the stream is disconnected. (#2731)
 | |
|   - Improve the pw-cat man page, mention that stdin/stdout handling is only
 | |
|     on raw data.
 | |
| 
 | |
| ## modules
 | |
|   - module-rt will now not crash when dbus is not available but error out as
 | |
|     before.
 | |
|   - A new VBAN (vb-audio.com) sender and receiver was added. (#3380)
 | |
| 
 | |
| ## SPA
 | |
|   - Add an option in audioconvert to disable volume updates. (#3361)
 | |
|   - ALSA hires timestamps are disabled by default because many drivers seem to
 | |
|     give wrong timestamps and cause extra delay.
 | |
| 
 | |
| ## bluetooth
 | |
|   - LE Audio support is now enabled by default when liblc3 is available now that
 | |
|     bluez has support for detecting the hardware features.
 | |
| 
 | |
| # PipeWire 0.3.75 (2023-07-21)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Permissions for links between nodes are now enforced. The link will now check
 | |
|     that the owner clients of the nodes can see each other 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.
 | |
| 
 | |
| ## modules
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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)
 | |
| 
 | |
| # PipeWire 0.3.74 (2023-07-12)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix a critical bug where audio to bluetooth devices would cut out
 | |
|     randomly. (#3316)
 | |
|   - Improve RAOP compatibility.
 | |
|   - Avoid crashes after an update.
 | |
|   - Small fixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Mix info on port is now created explicitly.
 | |
|   - Remove the node as a driver peer when stopping. This caused some problem
 | |
|     with playback on and other remote bluetooth devices. (#3316)
 | |
|   - Work on avoiding crashes when loading new modules that use internal API
 | |
|     with old libpipewire. This is typical after an update where the old library is
 | |
|     still loaded by an application but when a new stream is created, updated
 | |
|     modules are loaded. (#3243)
 | |
| 
 | |
| ## Modules
 | |
|   - The RTP source module now has an option to ignore the SSRC, which is
 | |
|     useful to continue to receive the stream when the sender is restarted.
 | |
|   - The native protocol will refuse to load twice now instead of silently
 | |
|     ignoring the error.
 | |
|   - module-raop is compatible with more devices. (#3247)
 | |
| 
 | |
| ## SPA
 | |
|   - plugins will now warn when running out of buffers. This is always a bad
 | |
|     thing.
 | |
|   - Merge scope based cleanup macros.
 | |
|   - Add ratelimit function.
 | |
| 
 | |
| # PipeWire 0.3.73 (2023-07-06)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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.
 | |
| 
 | |
| ## Modules
 | |
|   - 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)
 | |
| 
 | |
| ## Tools
 | |
|   - pw-cat now supports overriding all stream properties.
 | |
| 
 | |
| ## SPA
 | |
|   - 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)
 | |
| 
 | |
| ## pulse-server
 | |
|   - 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)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Remove an assert and issue a warning/recover instead when a buffer is too
 | |
|     small.
 | |
| 
 | |
| ## GStreamer
 | |
|   - The device provider does locking when destroying the registry.
 | |
| 
 | |
| # PipeWire 0.3.72 (2023-06-26)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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)
 | |
| 
 | |
| ## Modules
 | |
|   - 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.
 | |
| 
 | |
| ## SPA
 | |
|   - 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.
 | |
| 
 | |
| ## pulse-server
 | |
|   - 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)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Only register A2DP or BAP when we have codecs.
 | |
|   - Include codec into the media.name
 | |
| 
 | |
| ## JACK
 | |
|   - 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.
 | |
| 
 | |
| ## GStreamer
 | |
|   - Fill default strides instead of 0 on pipewire video buffers. (#3236)
 | |
| 
 | |
| # PipeWire 0.3.71 (2023-05-17)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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 performance 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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 optimizations 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.
 | |
| 
 | |
| ## Modules
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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)
 | |
| 
 | |
| ## pulse-server
 | |
|   - 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)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Implement battery reporting using AT+XEVENT.
 | |
|   - Disable hardware volume for 3M WorkTunes.
 | |
|   - Implement BAP audio locations (channel positions) by using the new
 | |
|     bluez properties.
 | |
| 
 | |
| ## JACK
 | |
|   - 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 emitting 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)
 | |
| 
 | |
| # ALSA
 | |
|   - 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.
 | |
| 
 | |
| # Docs
 | |
|   - 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.
 | |
| 
 | |
| # PipeWire 0.3.70 (2023-04-20)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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.
 | |
| 
 | |
| ## Tools
 | |
|   - 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.
 | |
| 
 | |
| ## Modules
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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 which might improve compatibility with some
 | |
|     hardware.
 | |
|   - v4l2 now sets the values of the controls in the Props param.
 | |
| 
 | |
| ## Pulse-server
 | |
|   - The echo-canceler aec_args are now parsed like they would be under
 | |
|     pulseaudio.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - More work on synchronizing BAP devices.
 | |
| 
 | |
| ## GStreamer
 | |
|   - 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.
 | |
| 
 | |
| # PipeWire 0.3.69 (2023-04-13)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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 when capturing in low latency.
 | |
|   - Fix the GStreamer clock to make cheese video recording work again. (#3149)
 | |
|   - More fixes and improvements.
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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)
 | |
| 
 | |
| ## Modules
 | |
|   - 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.
 | |
| 
 | |
| ## SPA
 | |
|   - 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 when 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.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Many more BAP fixes and improvements. Devices are now created as a set
 | |
|     and can be combined into one device by the session manager.
 | |
| 
 | |
| ## GStreamer
 | |
|   - Fix the GStreamer clock to make cheese video recording work again. (#3149)
 | |
| 
 | |
| # PipeWire 0.3.68 (2023-04-06)
 | |
| 
 | |
| 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.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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.
 | |
| 
 | |
| ## modules
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - 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.
 | |
| 
 | |
| ## ALSA
 | |
|   - Improve properties in pw-top and pavucontrol.
 | |
| 
 | |
| ## pulse-server
 | |
|   - 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.
 | |
| 
 | |
| # JACK
 | |
|   - Make sure we don't call any callbacks anymore when deactivating. (#2781)
 | |
| 
 | |
| ## GStreamer
 | |
|   - Sort the device by priority in deviceprovider. (#3072)
 | |
| 
 | |
| # PipeWire 0.3.67 (2023-03-09)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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)
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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.
 | |
| 
 | |
| ## Tools
 | |
|   - pw-cat has seen improvements in the encoded file playback case.
 | |
| 
 | |
| ## Modules
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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)
 | |
| 
 | |
| ## Pulse-server
 | |
|   - 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
 | |
|   - 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.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - 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.
 | |
| 
 | |
| ## GStreamer
 | |
|   - 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.
 | |
| 
 | |
| # PipeWire 0.3.66 (2023-02-16)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
|   - 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-chain has a new mysofa based spacializer plugin.
 | |
|   - Support was added for different clocks that allow the RTP modules to work
 | |
|     with a PTP clock, for example.
 | |
|   - Many bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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 erroneously 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.
 | |
| 
 | |
| ## modules
 | |
|   - Install module-combine-stream.
 | |
|   - RTP source now has support for custom channel names.
 | |
|   - RTP source will now stop when inactive.
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Many BAP support fixes.
 | |
| 
 | |
| ## GStreamer
 | |
|   - The gstreamer elements now support buffer video metadata so that strides
 | |
|     are correctly handled.
 | |
|   - pipewiresrc will now error out correctly in more cases. (#2935)
 | |
| 
 | |
| ## JACK
 | |
|   - The frame to/from time functions are improved to also work with negative
 | |
|     time and frame offsets.
 | |
| 
 | |
| # PipeWire 0.3.65 (2023-01-26)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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.
 | |
| 
 | |
| ## Tools
 | |
|   - pw-cli has received some improvements in the output.
 | |
|   - pw-cat can now use ffmpeg to demux streams for compress offload.
 | |
| 
 | |
| ## modules
 | |
|   - 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.
 | |
| 
 | |
| ## SPA
 | |
|   - 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.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - 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)
 | |
| 
 | |
| ## pulse-server
 | |
|   - 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.
 | |
| 
 | |
| ## JACK
 | |
|   - 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)
 | |
| 
 | |
| ## ALSA
 | |
|   - 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.
 | |
| 
 | |
| ## GStreamer
 | |
|   - pipewiresrc will now advertise DMABUF support if the pipeline supports
 | |
|     this.
 | |
|   - pipewiresrc will now always be a live source unless told otherwise.
 | |
| 
 | |
| # PipeWire 0.3.64 (2023-01-12)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - 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).
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 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)
 | |
| 
 | |
| ## Tools
 | |
|   - 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.
 | |
| 
 | |
| ## modules
 | |
|   - 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)
 | |
| 
 | |
| ## SPA
 | |
|   - 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.
 | |
| 
 | |
| ## Pulse-Server
 | |
|   - 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.
 | |
| 
 | |
| ## ALSA
 | |
|   - The ALSA plugin now handles the target.object correctly when set to
 | |
|     -1. (#2893)
 | |
| 
 | |
| ## V4L2
 | |
|   - 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.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - 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.
 | |
| 
 | |
| ## GStreamer
 | |
|   - 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.
 | |
| 
 | |
| # PipeWire 0.3.63 (2022-12-15)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix a critical bug that causes audio distortion in some cases when using
 | |
|     AVX2.
 | |
|   - Fix a crash in mpv caused by deinit of PipeWire.
 | |
|   - Resample the convolver IR to match the graph samplerate for better
 | |
|     results.
 | |
|   - Many more small bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Fix a segfault in the PipeWire deinit code triggered by mpv in some
 | |
|     cases. (#2881)
 | |
|   - Fix docs about SPA_PLUGIN_DIR.
 | |
|   - Always dlclose by default (even under valgrind). Add an option with
 | |
|     PIPEWIRE_DLCLOSE to select alternative behaviour.
 | |
|   - Improve PIPEWIRE_DEBUG category handling.
 | |
| 
 | |
| ## modules
 | |
|   - Resample the IR for the convolver when the IR samplerate and graph rate
 | |
|     don't match.
 | |
| 
 | |
| ## SPA
 | |
|   - Handle spurious reads from timerfd gracefully.
 | |
|   - Fix potential stack-use-after-scope when starting Audacity.
 | |
|   - Fix distorted audio when using AVX2. (#2885)
 | |
|   - Remove fallback to default channel map in channelmix.
 | |
|   - Improve sorting of MIDI events, use the same order as Ardour. (#1816)
 | |
|   - Enable LFE downmixing by default. (#2425)
 | |
|   - Make IEC958/AC3 and IEC958/DTS work better by enforcing a fixed minimal
 | |
|     buffering for the encoder to avoid stuttering. (#2650)
 | |
| 
 | |
| ## Pulse-Server
 | |
|   - Add a new pulse.cmd config section to execute pulse commands, currently
 | |
|     only for loading modules. This removes the dependency on pactl.
 | |
|   - Improve debug of messages.
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # PipeWire 0.3.60 (2022-11-10)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - The filter-chain now handles errors better and has fixes for many
 | |
|     crasher bugs.
 | |
|   - A new RTP module was added with a sender and receiver. It uses SAP
 | |
|     to announce and consume RTP streams and is compatible with the
 | |
|     PulseAudio RTP modules.
 | |
|   - Many small bluetooth improvements and fixes.
 | |
|   - The alsa plugin will now only start playback when there is data. This
 | |
|     results in better sync and lower latency between capture and playback.
 | |
|   - The v4l2 and libcamera plugins have seen a lot of improvements. They
 | |
|     support control properties now. Also pw-v4l2 has seen many improvements
 | |
|     and mostly passes the v4l2-compliance test now.
 | |
|   - Many more bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Code cleanups, compiler warning fixes.
 | |
|   - Add some extra checks to avoid scheduling an inactive node.
 | |
|   - Rework the sequence of events to start and stop nodes.
 | |
|   - Improve param enumeration.
 | |
|   - An option was added to give priority to the Buffer params of the
 | |
|     consumer. This makes it possible to use the default values of the
 | |
|     consumer (instead of the producer) when capturing from a source.
 | |
|   - The graph rate selection was improved to pick a rate closest to the
 | |
|     requested one (instead of picking the default).
 | |
| 
 | |
| ## Modules
 | |
|   - Fix some crashes in filter-chain. (#2737)
 | |
|   - X11 Bell module will now be loaded by default when available.
 | |
|   - A new RTP module was added with a sender and receiver. It uses SAP
 | |
|     to announce and consume RTP streams and is compatible with the
 | |
|     PulseAudio RTP modules.
 | |
|   - Improve RAOP compatibility.
 | |
|   - The echo-cancel module now uses the resampler prefill option to align
 | |
|     input and output samples without buffering. Better latency control
 | |
|     when starting and stopping has been implemented.
 | |
|   - The pulse tunnel will now write aligned samples to pulseaudio even
 | |
|     when the ringbuffer wraps around. This fixes playback issues with
 | |
|     multichannel sinks.
 | |
|   - Add a delay option to module-loopback using a ringbuffer.
 | |
|   - Implement echo-cancel params.
 | |
|   - The filter-chain module has better error reporting.
 | |
|   - The LADSPA search path was extended with some more common paths.
 | |
|   - The echo-canceler input can now also be a monitor of a sink. This
 | |
|     improves compatibility with some proton games that expect a real
 | |
|     sink instead of a virtual one.
 | |
| 
 | |
| ## Tools
 | |
|   - Better error reporting in pw-link.
 | |
|   - pw-top now also shows IEC958 passthrough formats and JPEG/H264 video
 | |
|     formats.
 | |
|   - pw-top refreshes the screen faster.
 | |
|   - pw-top now prints the state of the node and shows less info for
 | |
|     inactive nodes.
 | |
|   - pw-dump now uses the new seq field in the spa_param_info to discard
 | |
|     old param updates and avoid duplicate params in the output.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Add ModemManager support in the native backend.
 | |
|   - Clean up GetManagedObjects handling.
 | |
|   - Handle QoS from the endpoints in the codec.
 | |
|   - Increase the socket buffer to have more control over the rate and QoS.
 | |
|   - Simplify the packet flushing code.
 | |
|   - Stop processing nodes before destroying them.
 | |
|   - Fix timers when a source switches drivers.
 | |
|   - Codecs can now share endpoints. This reduces the amount of endpoints and
 | |
|     avoids problems with devices that can't handle a large amount of
 | |
|     codec endpoints.
 | |
|   - Report battery status to UPower for HFP AG.
 | |
|   - Fix bitpool increase.
 | |
| 
 | |
| ## SPA
 | |
|   - The audioresampler now avoids clicks and pops between activating and
 | |
|     deactivating the adaptive resampler when used by the stream API.
 | |
|   - Use default locale to parse float parameters.
 | |
|   - The upmix functions now have SSE optimizations.
 | |
|   - Avoid recalculating the complete channelmix setup when only the
 | |
|     volume changes.
 | |
|   - The alsa plugin will now only start playback when there is data. This
 | |
|     results in better sync and lower latency between capture and playback.
 | |
|   - The ALSA MIDI sequencer will now pull data from the graph even when it
 | |
|     did not output anything. Fixes some graph stalls with the sequencer in
 | |
|     some cases. (#2775)
 | |
|   - v4l2 and libcamera sources now recycle buffers when nothing is consuming
 | |
|     them. This avoids stalling the graph.
 | |
|   - libcamera now suggests a more appropriate frame size than the smallest
 | |
|     poster frame.
 | |
|   - Improve state changes in audioconvert. (#2764)
 | |
|   - A new seq field was added to spa_param_info to keep track of pending
 | |
|     param updates.
 | |
|   - Support speaker output only on RealTek ALC4080. (#2744)
 | |
|   - The v4l2 source now supports setting controls.
 | |
|   - The libcamera plugin now supports enumerating and setting controls.
 | |
|   - A new unit test for 6.1 channel mapping was added. (#2809) More debug
 | |
|     info was added to audioconvert for the channel matrix.
 | |
|   - Audioconvert will now also upmix a rear-center channel when needed.
 | |
| 
 | |
| ## pulse-server
 | |
|   - Add support for the RTP send and recv modules with the new native
 | |
|     RTP module.
 | |
|   - Add option to set latency for pulse-tunnel streams and
 | |
|     module-zeroconf-discover.
 | |
|   - The socket will now be given the same permissions as what pulseaudio
 | |
|     did (0777).
 | |
|   - Implement module-loopback latency_msec correctly with the new delay
 | |
|     parameter.
 | |
|   - sysfs.path is now filled with the same data as pulseaudio.
 | |
|   - The manager now uses the new seq field in the spa_param_info.
 | |
|   - Fix a bug where in some cases the read pointer would get out of sync
 | |
|     and cause too large requests. (#2799)
 | |
| 
 | |
| ## ALSA
 | |
|   - The alsa plugin now reuses the stream in prepare which results in
 | |
|     better performance.
 | |
|   - Some deadlocks have been fixed in the ALSA plugin.
 | |
|   - The ALSA plugin reports more accurate timing information in some cases.
 | |
| 
 | |
| ## V4l2
 | |
|   - The v4l2 compatibility layer has received a lot of updates.
 | |
|   - Improved node names and format enumeration.
 | |
|   - Support for multiple /dev/videoX devices, each mapped to a unique
 | |
|     PipeWire node.
 | |
|   - Passes the v4l2-compliance test now with both the v4l2 and libcamera
 | |
|     backend in PipeWire.
 | |
|   - Improved mmap support for inline buffer memory. This makes it possible to
 | |
|     consume PipeWire streams.
 | |
|   - Negotiation works more reliably now.
 | |
| 
 | |
| ## JACK
 | |
|   - Implement jack_acquire_real_time_scheduling() and
 | |
|     jack_drop_real_time_scheduling() by keeping the thread utils in a global
 | |
|     state.
 | |
|   - Fix jack_client_thread_id() to return NULL when the client is not active,
 | |
|     just like jack1 and jack2.
 | |
|   - An option was added to let the jack_set_buffer_size() function update the
 | |
|     global metadata. A quirk was added so that jack_bufsize uses this new feature
 | |
|     to make the buffer size settings persistent and global, just like jack.
 | |
|   - jack_port_register() and jack_port_unregister() can be called on an
 | |
|     active client so make this thread safe. (#2652)
 | |
| 
 | |
| # PipeWire 0.3.59 (2022-09-30)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix possible wrong samplerate in loopback streams after suspend and
 | |
|     rate switch.
 | |
|   - module-filter-chain can now adapt to the graph samplerate.
 | |
|   - Fix some potential stuttering and crackling in pulse-server.
 | |
|   - Add Bluetooth LE support. This requires experimental kernel and bluez
 | |
|     support.
 | |
|   - The ALSA plugin has more options to control the buffer size. This can
 | |
|     be used to work around high latency in davinci resolve.
 | |
|   - Many bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Add audio capture example with volume meter.
 | |
|   - Fix a case where a rate switch would not suspend all the nodes of the
 | |
|     driver first. This could cause wrong samplerates in streams.
 | |
|   - Fix a case where a node would be Paused while still added to the
 | |
|     graph, causing potential crashes. (#2701)
 | |
| 
 | |
| ## Modules
 | |
|   - module-filter-chain and module-loopback now use the resample.prefill
 | |
|     option to avoid buffering extra samples and causing unwanted latency
 | |
|     when resampling is activated.
 | |
|   - module-filter-chain can now adapt to the graph samplerate.
 | |
|   - Improve module-raop to support the ALAC codec as raw PCM.
 | |
|   - Improve RTSP parsing to improve compatibility.
 | |
| 
 | |
| ## Tools
 | |
|   - Fix 100% CPU in pw-cli monitor mode. (#2709)
 | |
|   - spa-acp-tool can now be exited with ctrl-D.
 | |
| 
 | |
| ## SPA
 | |
|   - Various libcamera fixes and improvements.
 | |
|   - Set stride on audioconvert output buffers.
 | |
|   - Make sure we always place the last requested size from the resampler
 | |
|     on the buffers in pw-stream.
 | |
|   - Add resample.prefill option in the resampler to fill the history with
 | |
|     0 so that we don't have smaller buffers at the start.
 | |
|   - Make sure that when an overflow corrupts a POD, that it will always
 | |
|     stay corrupted.
 | |
|   - Rate limit some ALSA warnings and reduce some unwanted warnings.
 | |
|   - Don't recalculate the audioconverter state for each pause/play. (#2701)
 | |
|   - Fix some POD parsing inconsistencies and potential overflows.
 | |
|   - Add support for Asus Xonar SE.
 | |
|   - Fix Flush command handling. It should not stop playback. (#2726)
 | |
|   - Refactor the peaks function and add some unit tests and optimizations.
 | |
|   - The channelmix has an optimized nXm converter and new unit tests.
 | |
|   - Normalization in the channelmixer was fixed.
 | |
| 
 | |
| ## pulse-server
 | |
|   - The requested latency of record streams was reduced to fix some
 | |
|     stuttering in Teamspeak. (#2702)
 | |
|   - Tweak the max amount of bytes sent to a client. (#2711) (#2715)
 | |
|   - Improve maxlength calculations, this fixes some crackling noise with
 | |
|     high samplerate and channel counts in some players (audacious).
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Merge Bluetooth LE support.
 | |
|   - Make sure we are backward compatible with WirePlumber.
 | |
|   - Fix some HFP and HSP AT command parsing. (#2463)
 | |
|   - Use HFP by default over HSP.
 | |
| 
 | |
| ## ALSA
 | |
|   - Increase max number of periods.
 | |
|   - The parameters handling was improved. There is now an option to set the
 | |
|     buffer-bytes of the ALSA plugin.
 | |
|   - PIPEWIRE_ALSA can now be used as an environment variable to restrict the
 | |
|     plugin formats and buffer size.
 | |
| 
 | |
| # PipeWire 0.3.58 (2022-09-15)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix a regression that could cause audio crackling.
 | |
|   - Fix a regression in RTKit because rlimit was not set correctly.
 | |
|   - JAVA sound applications will now alsa work with the pulseaudio-alsa plugin.
 | |
|   - pw-top will now show the negotiated formats of devices and streams.
 | |
|   - Fix some potential crashes when starting streams.
 | |
|   - The ALSA plugin has had improved timing reporting and poll descriptor
 | |
|     handling that should improve compatibility.
 | |
|   - Many more improvements and bugfixes.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Avoid scheduling nodes before they are added to the graph. This could
 | |
|     avoid some crashes when scheduling nodes that were not completely
 | |
|     started yet. (#2677)
 | |
| 
 | |
| ## Tools
 | |
|   - pw-top now also shows the negotiated formats of streams and devices.
 | |
|     (#2566)
 | |
|   - pw-top prints microseconds as "us" now to avoid unicode problems.
 | |
| 
 | |
| ## Modules
 | |
|   - Fix compilation with newer lv2.
 | |
|   - Fix setting realtime priority with RTKit, it was not setting rlimit
 | |
|     correctly and RTKit would refuse to change the priority.
 | |
|   - Fix some playback problems with RAOP sink. (#2673)
 | |
|   - Filter chain will now warn when a non-existing control property is
 | |
|     used in the config file. (#2685)
 | |
|   - Filter chain can now handle control port names with ":" in the name.
 | |
|     (#2685)
 | |
|   - The echo-cancel module and interface now has activate/deactivate
 | |
|     functions to make it possible for plugins to reset their state.
 | |
| 
 | |
| ## SPA
 | |
|   - Make sure audioconvert uses the given channelmap and channels for the
 | |
|     volumes, even when not negotiated yet. This makes it possible to change
 | |
|     the volume before the node has been negotiated.
 | |
|   - Refactor the peaks resampler. Fix an error in the SSE code.
 | |
|   - Fix DSD min/max rates, avoid exposing impossible rates.
 | |
|   - Set monitor port buffer size correctly. This could cause some crackling
 | |
|     and hickups. (#2677)
 | |
|   - Make ALSA sequencer port names unique.
 | |
| 
 | |
| ## Pulse-server
 | |
|   - Rework the capture buffer attributes to better match pulseaudio. This
 | |
|     fixes a regression where opening pavucontrol could cause crackling.
 | |
|     (#2671)
 | |
|   - Implement TRIGGER and PREBUF methods.
 | |
|   - Handle clients that send more than the requested amount of data.
 | |
|     PipeWire will now also keep this as extra buffered data like PulseAudio.
 | |
|     This fixes JAVA sound applications when they are running on top of the
 | |
|     PulseAudio ALSA plugin. (#2626,#2674)
 | |
|   - Update the requested amount of bytes more like PulseAudio. Fixes
 | |
|     stuttering after resume with the GStreamer pulseaudio sink. (#2680)
 | |
| 
 | |
| ## ALSA Plugin
 | |
|   - More debug info was added. The time reporting was improved.
 | |
|   - The poll descriptor handling was improved, avoiding some spurious
 | |
|     wakeups. (#1697)
 | |
| 
 | |
| 
 | |
| # 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.
 | |
| 
 | |
| # PipeWire 0.3.56 (2022-07-19)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - A critical bug that could crash JACK apps was fixed.
 | |
|   - Some more regressions in audiomixer were fixed. This should fix crackling
 | |
|     and stuttering in some cases as well as some channel mapping regressions.
 | |
|   - A bug in the alsa plugin was fixed that could cause stuttering in VMs.
 | |
|   - Bluetooth sources should have improved latency and rate control.
 | |
|   - Many more bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## Modules
 | |
|   - An experimental AVB module was added. It can expose PipeWire as an AVB
 | |
|     entity and initiate (broken) streaming between entities.
 | |
|   - module-loopback now handles the cases where the input and output channels
 | |
|     are different without crashing or producing silence.
 | |
|   - The filter-chain module now correctly calculates the output size without
 | |
|     crashing in some cases. It also skips invalid ports instead of crashing.
 | |
|   - Handle and report pthread errors better.
 | |
| 
 | |
| ## SPA
 | |
|   - The resampler qualities were tweaked a little.
 | |
|   - A bug that would sometimes cut off the last part of a buffer was fixed in
 | |
|     the alsa plugin. This could cause broken audio in VMs. (#2536)
 | |
|   - Access to the alsa mixer and devices is now checked more thoroughly.
 | |
|     (#2534)
 | |
|   - The spa-resample tool can now also handle large downsampling rates without
 | |
|     crashing.
 | |
|   - Audioconverter now uses rounding for float to int conversions, which
 | |
|     reduces distortions. Compilation of the c functions was separated and uses
 | |
|     its own optimization flags now. Unit tests were added. (#2543)
 | |
|   - Noise shaping was improved in audioconvert. A new Wannamaker 3 tap shaper
 | |
|     was added.
 | |
|   - Audioconvert now uses a pattern for generating keep alive noise. This
 | |
|     should have much less energy and be even more inaudible. (#2540)
 | |
|   - A channel mapping bug was fixed in audioconvert. Unit tests were added.
 | |
|   - The dsp audio mixer would sometimes not mix enough and cause dropouts.
 | |
|     (#2525)
 | |
| 
 | |
| ## JACK
 | |
|   - A critical bug in the mixer was fixed. It would cause most JACK apps to
 | |
|     segfault at startup.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - A new rate control algorithm was implemented for the sources.
 | |
|   - The media role on HSP/HFP streams is now fixed.
 | |
| 
 | |
| ## Pulse Server
 | |
|   - Add the resampler delay to delay reporting as well.
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.55 (2022-07-12)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix some more critical bugs in the new audioconvert and the queueing
 | |
|     in pw-stream that causes stuttering and hickups.
 | |
|   - HFP hardware volumes are now saved and restored.
 | |
|   - Format conversions and mixing was improved.
 | |
|   - Small bug fixes and improvements.
 | |
| 
 | |
| ## PipeWire
 | |
|   - The queueing in pw-stream was improved with support for buffer prefetch
 | |
|     in async mode.
 | |
|   - Add a pw-filter unit test.
 | |
| 
 | |
| ## tools
 | |
|   - pw-midiplay should now work again after improvements in pw-stream.
 | |
| 
 | |
| ## modules
 | |
|   - The RAOP module was improved to support auth_setup.
 | |
|   - The RAOP module should now handle timing packets better.
 | |
|   - Add some more filter-chain examples.
 | |
|   - The filter-chain now has a separate config file with the boilerplate
 | |
|     settings. The examples are now just config snippets that can be dropped
 | |
|     in .conf.d/ directories, such as the filter-chain.conf.d/ one.
 | |
|   - Start suggesting to use target.object instead of node.target in docs
 | |
|     and examples.
 | |
| 
 | |
| ## SPA
 | |
|   - Use the cosh window again for the resampler. It should now
 | |
|     give better resampler quality. (#2483)
 | |
|   - Rework the mixer functions. They were rewritten for higher precision and
 | |
|     better performance. Add unit tests and benchmarks.
 | |
|   - Improve format conversion for 32bits for avoid errors in clang because
 | |
|     of undefined behaviour at extreme ranges.
 | |
|   - Fix a bug in audioconvert where it would not consume the right
 | |
|     amount of samples when the resampler was disabled. This could cause
 | |
|     skipping and hickups. (#2519)
 | |
|   - Fix bug in audioconvert where it would try to convert the input samples
 | |
|     multiple times, causing strange artifacts when upmixing.
 | |
|   - Be more strict about valid JSON floats.
 | |
|   - device.vendor.id and device.product.id should now always show up in
 | |
|     0xXXXX format and should not be converted to floats in pw-dump anymore.
 | |
|   - Add triangular dither, add unit tests for noise generation, add some
 | |
|     more optimizations.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - HFP and A2DP now expose different routes and thus can have different
 | |
|     volumes.
 | |
|   - HW Volumes for HFP are now synced better. Volume changes from HW buttons
 | |
|     are now also saved.
 | |
| 
 | |
| # PipeWire 0.3.54 (2022-07-07)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Some critical bugs in the new audioconvert were fixed. The old
 | |
|     adapter had internal buffering that was abused in some places.
 | |
|   - The bluetooth sources were rewritten using a ringbuffer to make them
 | |
|     more reliable to jitter and remove old audioconvert behaviour.
 | |
|   - Many improvements to the audio converter.
 | |
|   - Native DSD128 and up is now supported by pw-dsdplay.
 | |
| 
 | |
| 
 | |
| ## tools
 | |
|   - Support DSD128 to DSD512 as well by scaling the amount of samples
 | |
|     to read per time slice.
 | |
| 
 | |
| ## SPA
 | |
|   - Format conversion is now generated with macros to remove duplication
 | |
|     of code.
 | |
|   - 24bits conversions were rewritten to use the generic conversion
 | |
|     functions.
 | |
|   - Temporary buffers in audioconvert are now made large enough in all
 | |
|     cases.
 | |
|   - Fix draining in audioconvert. This fixes speaker-test.
 | |
|   - Fix the channel remapping. (#2502, #2490)
 | |
|   - Audio conversion constants were tweaked to handle the maximum ranges
 | |
|     and provide lossless conversion between 24bits and floats.
 | |
|   - Vector code and C code are aligned and the unit tests are activated
 | |
|     again. A new lossless conversion test was added.
 | |
|   - Fix an underrun case where the adapter would not ask for more data.
 | |
|   - Fix PROP_INFO for audioconvert. (#2488)
 | |
|   - Use the blackman window again for the resampler, the cosh window has
 | |
|     some bugs that can cause distortion in some cases. (#2483)
 | |
|   - Add more unit tests for audioconvert. Add end-to-end conversion tests.
 | |
|   - Don't leak memory in format converter.
 | |
| 
 | |
| ## pulse-server
 | |
|   - Card properties are now also added to sinks and sources, just like
 | |
|     in pulseaudio.
 | |
|   - Increase the maxlength size to at least 4 times the fragsize to avoid
 | |
|     xruns.
 | |
|   - Fix a race when setting default devices.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - The source was rewritten to use a ringbuffer. This avoids regressions
 | |
|     caused by audioconvert. 
 | |
| 
 | |
| # PipeWire 0.3.53 (2022-06-30)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - The 44.1KHz samplerate was removed again from the defaults, it caused
 | |
|     all kinds of problems with various hardware.
 | |
|   - The ALSA plugin should now be able to deal with unsupported samplerates
 | |
|     and fall back to the nearest supported one.
 | |
|   - The rlimits performance tuning wiki page was updated. Please check
 | |
|     you limits.conf file, the version on the wiki used to give all
 | |
|     processes a -19 nice level instead of just the pipewire daemon.
 | |
|   - The audioconvert plugin was rewritten to be more maintainable and
 | |
|     faster. It also gained support for control ports and dithering with
 | |
|     optional noise shaping.
 | |
|   - An impossible buffering situation is avoided in pulse-server that would
 | |
|     cause some applications (sunshine, ...) to stutter.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - 44.1KHz was removed from the allowed rates again. It caused all kinds
 | |
|     of regressions due to driver bugs and timing issues on HDMI.
 | |
| 
 | |
| ## modules
 | |
|   - filter-chain now does some more error checking and reporting to
 | |
|     avoid some crashes.
 | |
|   - filter-chain now supports more channel layouts for input and output
 | |
|     that does not need to match the plugin layout.
 | |
|   - Format parsing is now more consistent in the modules.
 | |
| 
 | |
| ## Tools
 | |
|   - pw-cli can now also work without readline support.
 | |
|   - pw-cat can now also read multichannel ulaw/alaw/u8/s8.
 | |
| 
 | |
| ## SPA
 | |
|   - The audioconvert plugin was rewritten. This should make it more
 | |
|     maintainable. It also fixed some issues such as CPU spikes in some
 | |
|     cases and crashes in others. The old plugins were removed, for a
 | |
|     code reduction of some 6000 lines.
 | |
|   - The audioconvert plugin now supports control ports, which can be
 | |
|     enabled on nodes in the session manager. This makes it possible to
 | |
|     control audioconvert properties using timed events or midi.
 | |
|   - NoteOn 0-velocity MIDI events are no longer filtered out. This is
 | |
|     a valid event, nodes that can't deal with it should fix it up
 | |
|     themselves. The JACK layer still filters out these events by default
 | |
|     but this can now be configured with a per-client property.
 | |
|   - The running status on midi events is now disabled to match what
 | |
|     JACK does.
 | |
|   - The ALSA plugin will now deal with driver bugs when a driver announces
 | |
|     support for a samplerate but then refuses to use it later.
 | |
|   - The ALSA plugin has been optimized a little for sample IO.
 | |
|   - V4L2 now doesn't error when there are no controls.
 | |
|   - Error handling was improved in the audio converter.
 | |
|   - The audioconvert plugin now supports rectangular dithering and
 | |
|     noise shaping.
 | |
|   - The audioconvert plugin can now insert additional inaudible noise
 | |
|     that can be used to keep some amplifiers alive. (#705)
 | |
|   - The audioconvert format conversion was changed so that it now produces
 | |
|     the full 32 bits range in the C fallback conversion code as well.
 | |
|   - The resampler window function was changed to a cosh() window
 | |
|     function. (#2483)
 | |
|   - Vendor and device id are now in hex.
 | |
| 
 | |
| ## pulse-server
 | |
|   - Tweak the record buffer attributes some more and make sure we don't
 | |
|     end up in impossible buffering situations. Fixes an issue with
 | |
|     distorted sound in sunshine. (#2447)
 | |
|   - Fix a potential crash when updating the client property list.
 | |
|   - Some properties on cards were aligned with pulseaudio.
 | |
| 
 | |
| ## Wiki
 | |
|   - Change "priority" to "nice" in the example limits.conf file. It was
 | |
|     giving a -19 nice level to all processes, not just the pipewire
 | |
|     daemon.
 | |
| 
 | |
| # PipeWire 0.3.52 (2022-06-09)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Add 44.1KHz to allowed samplerates. The server can now switch by
 | |
|     default between 48KHz and 44.1KHz.
 | |
|   - Streams now allocate less resources.
 | |
|   - Fix some bugs that could make the server crash.
 | |
|   - Bluetooth now supports the LC3plus vendor codec.
 | |
|   - Many bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Add 44.1KHz to allowed samplerates.
 | |
|   - Avoid setting the locale.
 | |
|   - Avoid use-after-free when destroying a node from spa-node-factory.
 | |
|   - Avoid using reallocarray when not available.
 | |
|   - Set port alias is not otherwise set.
 | |
| 
 | |
| ## Modules
 | |
|   - Improve filter-chain parsing and error reporting. Handle empty
 | |
|     nodes. (#1950)
 | |
|   - Handle destroy of globals and factory in most modules. (#565)
 | |
|   - Add refcounts to client and resources to handle destroy of the
 | |
|     protocol. (#565)
 | |
|   - Handle global node.name in filter-chain and loopback again, use
 | |
|     it to construct unique stream names.
 | |
|   - Avoid a wrapped pw-node in the adapter. This reduces resources
 | |
|     allocated for streams.
 | |
|   - Fix a crash when module-x11-bell was unloaded. (#2392)
 | |
|   - Add a new module-pipe-tunnel that can write/read data from a
 | |
|     UNIX pipe.
 | |
| 
 | |
| ## Tools
 | |
|   - Fix DSD playback again in pw-cat.
 | |
|   - Add -n option to pw-loopback to set node names.
 | |
|   - Add -P option to pw-cat to pass properties to the stream.
 | |
|   - Support stdin/stdout in pw-cat. (#2387)
 | |
|   - pw-dump now also dumps object removal when monitoring. (#2426)
 | |
| 
 | |
| ## SPA
 | |
|   - Avoid duplicate param results in pw-dump for ports.
 | |
|   - Avoid endless loops in audioconvert for badly behaving client.
 | |
|     (#2359)
 | |
|   - Scale max-error in alsa based on quantum and avoid logging a warning
 | |
|     when starting.
 | |
|   - Improve debug of failed format conversion. (#2383)
 | |
|   - Handle offset in the audio dsp mixer inputs and clamp to the max
 | |
|     buffer size.
 | |
|   - Add option to disable locale support for JSON number conversion.
 | |
|   - Add support for Astro A20 Gen2.
 | |
|   - Fix some of the test sources, the flags were not set correctly.
 | |
|   - Add camera location as property in libcamera and let the session manager
 | |
|     Generate a localized description.
 | |
|   - Fix some crashes due to wrong vargar types in v4l2 controls. (#2400)
 | |
|   - Improve ALSA resync behaviour. (#2257)
 | |
|   - Add support for Komplete Audio 6 MK2.
 | |
|   - Improve loop cancel while iterating.
 | |
|   - Try not to mix surround channels and AUX channels. Make card with many
 | |
|     ports look better when not using the Pro Audio profile.
 | |
|   - Vulkan filters were added.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Add LC3plus vendor codec.
 | |
|   - Handle unsupported indicators better.
 | |
|   - Ensure multiple devices on an adapter use different codecs because one
 | |
|     endpoint can only be used by one device at a time.
 | |
|   - Fix bitpool control as a follower.
 | |
|   - Handle bluetooth errors better.
 | |
|   - Speed up bluetooth connection by only waiting for the profiles
 | |
|     supported by the adapter.
 | |
|   - The dummy AVRCP player is disabled by default because it seems to break
 | |
|     more devices than it fixes.
 | |
| 
 | |
| ## pulse-server
 | |
|   - Add initial stream latency property so that devices can be started
 | |
|     with a reasonably accurate latency.
 | |
|   - Fix ringbuffer underrun case. (#2366)
 | |
|   - module-native-protocol-tcp now has a auth-anonymous option to give
 | |
|     full access to the clients.
 | |
|   - Report a node as being moved when it is still moving. This improves
 | |
|     compatibility with pasystray.
 | |
|   - Avoid overallocating message memory.
 | |
|   - Don't export NETWORK nodes in zeroconf. (#2384)
 | |
|   - Fix stride for TrueHD and DTSHD passthrough. (#2284)
 | |
|   - Make sure we don't send too small audio fragments. Fixes capture
 | |
|     from multiple tabs in Chrome. (#2418)
 | |
|   - Rework module handling some more.
 | |
|   - Use the new native module-pipe-tunnel for pipe-sink and pipe-source.
 | |
|   - Implement the STREAM_MOVED message when a stream got moved. (#2407)
 | |
|   - Fix a potential segfault when stopping the server and a TCP module
 | |
|     as still loaded.
 | |
| 
 | |
| ## ALSA
 | |
|   - Add support for updating sw_params at runtime, mostly the min-avail
 | |
|     param.
 | |
|   - Capture and playback nodes are now assumed to use a different clock and
 | |
|     will activate the adaptive resampler when linked. This assumption is
 | |
|     removed in Pro Audio mode. This provide a better experience out of the
 | |
|     box with most devices.
 | |
| 
 | |
| ## JACK
 | |
|   - Fix setting properties with PIPEWIRE_PROPS again.
 | |
|   - Don't use 64 bits atomic operations for sync_timeout. (#1867)
 | |
|   - Cleanup in error cases was improved, avoiding some crashes. (#2394)
 | |
| 
 | |
| ## GStreamer
 | |
|   - Fix pipewiresink in mode=provide. (#1980)
 | |
|   - Share memory into a new buffer in pipewiresrc to avoid buffer corruption.
 | |
|   - Fixes to the source and fd use.
 | |
|   - It is now possible to set client properties as well. (#1573)
 | |
| 
 | |
| # PipeWire 0.3.51 (2022-04-28)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Improved graph reconfiguration.
 | |
|   - Extra configuration options for streams and filters with config
 | |
|     rules and environment variable.
 | |
|   - Improve module-pulse-tunnel latency, stability and error recovery.
 | |
|   - pw-top, pw-cli and pw-link improvements.
 | |
|   - Fix a channelmixer upmixing clipping issue.
 | |
|   - The ROC module has seen many improvements.
 | |
|   - Many more bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - The graph reconfiguration code was reworked:
 | |
|     * Moved nodes will update the new driver quantum correctly. (#2293)
 | |
|     * Inactive nodes are ignored more.
 | |
|     * Nodes that require a driver are now not scheduled anymore when
 | |
|       they are passive (unused). (#2309)
 | |
|     * Improved performance, the graph is reconfigured with a minimal
 | |
|       amount of changes.
 | |
|   - Method and event argument names were improved.
 | |
|   - A linker garbage collection problem was fixed. (#2292)
 | |
|   - Properties on threads are now implemented. Use common code to
 | |
|     set thread name and add an option to set stack-size.
 | |
|   - Streams and filters always want a driver now. This makes it possible
 | |
|     to just link a playback stream to a capture stream without a driver
 | |
|     and have it work. (#1761).
 | |
|   - Streams and filters can now also have rules in the config file.
 | |
|   - Streams, filters, JACK, ALSA and v4l2 now support PIPEWIRE_PROPS
 | |
|     environment variable to override node properties.
 | |
|   - Add config section extensions. This provides a way for modules to
 | |
|     have specific config to override the default config.
 | |
|   - Handle realloc errors better.
 | |
|   - Improve stream and filter property updates.
 | |
| 
 | |
| ## Modules
 | |
|   - The pulse-tunnel modules has improved latency management and should
 | |
|     now work a lot better. (#2230)
 | |
|   - Module-loopback, module-echo-cancel, module-filter-chain unload the
 | |
|     module when a stream is destroyed. (#1754)
 | |
|   - Biquads in filter-chain now can have more gain (5->20 dB).
 | |
|   - Documentation updates. Most Wiki content was moved to the source code
 | |
|     inline comments.
 | |
|   - Filter-chain now has a builtin delay line filter. (#2320)
 | |
|   - Filter-chain can now parse the config key correctly in all cases.
 | |
|   - The ROC sink and source saw many improvements. roc-source is now a stream
 | |
|     by default that connects to the default sink. Both modules will try to set
 | |
|     a graph rate. Both modules have an option to select the FEC mode.
 | |
|     The ROC source has lower latency now. (#2331)
 | |
|   - Handle realloc errors better.
 | |
| 
 | |
| ## tools
 | |
|   - pw-cat does not have --list-targets anymore, use one of the more
 | |
|     advanced and less buggy tools such as wpctl or pw-cli to list
 | |
|     sinks and sources.
 | |
|   - pw-top has seen many improvements.
 | |
|     * It now has some timeouts to reset the node values to their default
 | |
|       state when unused.
 | |
|     * The man page was improved.
 | |
|     * Invalid timings and errors are displayed in a better way.
 | |
|   - pw-cli and pw-link can now create links between all ports of given nodes.
 | |
|   - pw-cat can now save to other file formats than wav, based on the extension
 | |
|     of the filename.
 | |
| 
 | |
| ## SPA
 | |
|   - The resampler now uses a different internal method for draining. It can
 | |
|     now also handle 0 size buffers as input without draining.
 | |
|   - The channelmixer now uses the front channel averages for FC and LFE.
 | |
|     This avoids clipping and results in much better upmixing.
 | |
|   - ALSA should now work again on 32 bits. (#2271)
 | |
|   - The JSON parser now converts escaped unicode correctly to UTF8.
 | |
| 
 | |
| ## bluetooth
 | |
|   - Codec switch improvements when the device is disconnected. (#2334)
 | |
| 
 | |
| ## pulse-server
 | |
|   - There is a new module-roc-sink-input module, the the PulseAudio equivalent.
 | |
|   - The ROC source and sink-input module now have a much lower latency.
 | |
|   - The ROC module now has an option to select FEC mode.
 | |
|   - Playback and record rate adjustments should work now. (#1159)
 | |
| 
 | |
| ## JACK
 | |
|   - Remove some useless pthread attributes. This makes JACK work in QEMU with
 | |
|     sandboxing enabled. (#2297)
 | |
|   - The buffer_size callback is now only called when something has changed
 | |
|     since the last process() callback or get_buffer_size() method. This
 | |
|     fixes a GStreamer issue and is more in line with what JACK does. (#2324)
 | |
|   - Fix a potential deadlock when the process thread is doing IPC and the
 | |
|     IPC thread is blocking on the data thread.
 | |
|   - Allocation errors in metadata are handled better.
 | |
| 
 | |
| # PipeWire 0.3.50 (2022-04-13)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - pw-stream can now report more timing information and can suggest
 | |
|     the optimal number of samples to queue for playback.
 | |
|   - pw-dot now works again..
 | |
|   - module-pulse-tunnel latency was improved.
 | |
|   - WINE applications using the JACK backend should no longer crash.
 | |
|   - The channelmixer defaults are improved and the muffled sound when
 | |
|     playing back 5.1 and 7.1 material has been fixed.
 | |
|   - Many fixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - pw-stream now places a suggested amount of samples in the pw-buffer
 | |
|     for playback. This allows you to remove some places where
 | |
|     spa_io_rate_match was needed to get this information.
 | |
|   - pw-stream has new API to request a timing update. New fields are
 | |
|     added in the timing info, such as number of buffered samples in
 | |
|     the resampler and the number of queued and dequeued buffers.
 | |
|   - pw-stream has support for double controls now. More controls are
 | |
|     exposed such as the Rate control to do adaptive resampling.
 | |
|   - The thread-utils object was moved to the context to avoid some
 | |
|     concurrent use cases that caused crashes. (#2252)
 | |
|   - Deactivating an exported node/stream will now remove the node from
 | |
|     the data-thread immediately so that the process function will not
 | |
|     be called anymore and resources can be safely freed. This could
 | |
|     fix some of the last remaining crashes when streams are stopped.
 | |
|   - PipeWire will now fail to load a module that tries to register
 | |
|     the same export type twice instead of silently doing the wrong
 | |
|     thing. (#2281)
 | |
| 
 | |
| ## Modules
 | |
|   - Many modules now use the NODE_WANT_DRIVER instead of the
 | |
|     pipewire.dummy NODE_GROUP property. This makes it possible to use
 | |
|     them with any other driver and can avoid resampling in some
 | |
|     cases.
 | |
|   - module-pulse-tunnel now uses an adaptive resampler to keep the
 | |
|     latency under control. Latency should be much better than before
 | |
|     and stay constant even when there are network delays.
 | |
|   - There is now an option for packages to disable building the RTKit
 | |
|     module, which is still built by default for backwards compatibility
 | |
|     reasons.
 | |
|   - A leak was fixed in filter-chain. (#2220)
 | |
|   - Module node names are now made more unique with the pid.
 | |
| 
 | |
| ## tools
 | |
|   - pw-cat verbose output has been improved.
 | |
|   - pw-link now has a man page. (#2263)
 | |
|   - pw-reserve now has an -r option to make it issue a RequestRelease
 | |
|     command on the owner of the device. This makes it possible to ask
 | |
|     WirePlumber to close and release a device.
 | |
|   - Fix pw-dot again. It didn't work anymore because of stray done
 | |
|     events that were emitted to notify the client of object serials.
 | |
|     (#2253)
 | |
| 
 | |
| ## SPA
 | |
|   - The channelmixer now has PSD upmixing enabled again. We used the
 | |
|     simple upmixing in the previous release but that just sounds too
 | |
|     awful to be a good default. (#861) and (#2219)
 | |
|   - The channelmixer will not upmix FC and LFE anymore when upmixing is
 | |
|     explicitly disabled. (#2266)
 | |
|   - The channelmixer will only lowpass filter FC and LFE channels when
 | |
|     they were upmixed. (#2280)
 | |
|   - The defaults of the channelmixer were tweaked a little. There is now
 | |
|     a little bit more bass in the LFE channel and more high frequencies
 | |
|     in the FC channel when upmixing. Also the channel widening has been
 | |
|     disabled by default.
 | |
|   - Locale independent float parsing now uses a more portable solution
 | |
|     with uselocale.
 | |
|   - ALSA will now only allocate a buffer size big enough to hold 4
 | |
|     times the quantum limit instead of as large as possible.
 | |
| 
 | |
| ## pulse-server
 | |
|   - Internal cleanups in handling of modules.
 | |
|   - A quirk to force s16 sample formats for teams-insider has been added.
 | |
| 
 | |
| ## JACK
 | |
|   - The data-loop is now started in activate and stopped in deactivate.
 | |
|     This makes the data-loop respect any custom thread functions you
 | |
|     configure. This also makes WINE apps using the JACK backend work.
 | |
|     (#1495).
 | |
|   - Port sorting was improved/fixed. (#2260)
 | |
| 
 | |
| # PipeWire 0.3.49 (2022-03-29)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Sample rate switching should work again.
 | |
|   - pw-dot can now use the output of pw-dump to render a graph.
 | |
|   - Bluetooth A2DP streaming was improved that would reduce stuttering on
 | |
|     some devices.
 | |
|   - A JACK bug was fixed that would sometimes make it impossible to add more
 | |
|     tracks in Ardour. (#1714)
 | |
|   - Many bugfixes and improvements.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Fix a potential crash when NULL params were configured.
 | |
|   - Add some simple functional tests to avoid some recent regressions. Improve
 | |
|     the test framework for this as well.
 | |
|   - Improvements to the poll loop to avoid some use-after-free scenarios.
 | |
|   - Fix samplerate switching again.
 | |
|   - setlocale is not called anymore from the pipewire library. This should be
 | |
|     called by the application. (#2223)
 | |
|   - pw_init() and pw_deinit() can now be nested and called multiple times.
 | |
|   - pw_stream will now report the resampler delay in the pw_time.queued field.
 | |
| 
 | |
| ## modules
 | |
|   - module-filter-chain now supports arbitrary many properties and will use
 | |
|     property hints to assign them the right type.
 | |
|   - The ROC modules now accept a sink/source_properties parameter.
 | |
|   - The module-rt can now also be built without RT-Kit support.
 | |
|   - module-echo-cancel can now use a fraction to specify the delay for more
 | |
|     precise control.
 | |
| 
 | |
| ## SPA
 | |
|   - The channelmixer will now do upmixing by default and will not use
 | |
|     normalization. It will also use a simple upmixing algorithm that duplicates
 | |
|     channels by default. A more interesting upmix method is also available (PSD)
 | |
|     but needs to be enabled manually. (#861)
 | |
|   - Add SSE optimized (de)interleave functions for 32 bits samples with and
 | |
|     without byteswap.
 | |
|   - JSON parsing of empty strings will now give an invalid number instead of
 | |
|     0.
 | |
|   - JSON numbers are now parsed and serialized in a locale independent way so
 | |
|     that , and . are not mixed up.
 | |
|   - The resampler will now report the resample delay and queued samples as the
 | |
|     extra delay.
 | |
| 
 | |
| ## tools
 | |
|   - pw-cat will read more dsf files correctly and will not crash at the end.
 | |
|   - pw-top now has a man page.
 | |
|   - pw-dot can now use the output of pw-dump to render a graph.
 | |
| 
 | |
| ## bluetooth
 | |
|   - Improve interactions with oFono.
 | |
|   - Fix recovery with slow connections.
 | |
|   - Improve frame size of AptX-ll.
 | |
|   - A2DP can now use any quantum and will flush packets in smaller chunks
 | |
|     when needed to adapt. This improves stuttering in some cases.
 | |
| 
 | |
| ## pulse-server
 | |
|   - The server configuration can now be placed in pulse.properties section,
 | |
|     which also makes it possible to have custom overrides.
 | |
|   - Implement FIX_ flags for capture as well.
 | |
|   - Small fixes and improvements in module loading.
 | |
| 
 | |
| ## JACK
 | |
|   - Clear the last error before executing a new action or else we could end up
 | |
|     with error from a previous action. This causes some problems in Ardour where
 | |
|     adding a track would fail after some time. (#1714)
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.48 (2022-03-03)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix IEC958 passthrough again.
 | |
|   - Fix pulse-server crashes when playing a sample.
 | |
|   - Support for more a more advanced upmixing algorithm.
 | |
|   - filter-chain now supports arbitrary many ports.
 | |
|   - Fix multichannel support in WINE. (with new WirePlumber).
 | |
|   - Many bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - The work queue is now created in the context so we can fail early and
 | |
|     avoid further error checking in various places.
 | |
|   - Fix a potential use after free with threaded loops.
 | |
|   - The protocol now has a message footer. This is used to pass around
 | |
|     global state such as the last registered object serial number. This can
 | |
|     be used to detect when a client tries to bind to old (but reused)
 | |
|     object ids. This avoids some races in the session manager but also
 | |
|     when binding objects.
 | |
|   - The zero-denormals CPU flag is now not touched anymore unless explicitly
 | |
|     selected by the user. Denormals are avoided in filter-chain now in
 | |
|     software. If the zero-denormals are now only configured in the data
 | |
|     thread. This should fix issues with luajit. (#2160)
 | |
|   - Configuration parsing will not actually fail on errors.
 | |
|   - pw-top now correctly clips unicode characters.
 | |
|   - Many places now use a dynamic POD builder to support arbitrary large
 | |
|     property sets.
 | |
|   - pw-stream now support PropInfo parameters so that they can announce
 | |
|     custom properties.
 | |
|   - Serial number are now also set on metadata and session-manager objects.
 | |
| 
 | |
| ## SPA
 | |
|   - audioadapter is now smarter when trying to fixate the format. It will
 | |
|     use the PortConfig format to fill in any wildcards. This results in
 | |
|     the least amount of conversions when the stream can handle it. It also
 | |
|     is part of a fix (also requires a session manager fix) for WINE
 | |
|     multichannel support. (#876).
 | |
|   - Fix 5.1 to 2 channels mixing. It was using the volume of the stereo
 | |
|     pair on all channels.
 | |
|   - Fix some weird volume issues when a source is capturing and
 | |
|     channelmixing.
 | |
|   - Add stereo to 7.1 upmixing.
 | |
|   - The channelmix parameters can be changed at runtime now.
 | |
|   - Many improvements to the upmixing algorithms. Rear channels are now
 | |
|     constructed from the ambient sound and can have delay and phase shift
 | |
|     applied to them to improve specialization. The stereo channels can
 | |
|     be filtered so that the dialog is more concentrated in the center
 | |
|     channel. (#861)
 | |
| 
 | |
| ## modules
 | |
|   - Module X11 bell received cleanups and improvements.
 | |
|   - The module now has a private method to schedule unload later. This
 | |
|     simplifies cleanup in many modules.
 | |
|   - module-filter-chain now handles arbitrary many ports and control
 | |
|     ports. (#2179)
 | |
|   - Fix a bug in RAOP where it was reading from the wrong port. (#2183)
 | |
| 
 | |
| ## pulse-server
 | |
|   - Nodes with the DONT_MOVE property should fail with -EINVAL when
 | |
|     they are moved.
 | |
|   - Fix a segfault when playing a sample. (#2151)
 | |
|   - The _FIX flags in pulse-server also now ignore the configured
 | |
|     sample format, just like pulseaudio does. (#876)
 | |
|   - Fix IEC958 passthrough again. It got accidentally broken since
 | |
|     0.3.45 with a fix for another issue. (#1442)
 | |
|   - Fix module-null-sink device.description. (#2166)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Don't try to connect HSP/HFP when no backend is available.
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.47 (2022-02-18)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| This is a quick emergency release to fix some severe
 | |
| problems with the previous release.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fixes a bug in pulse-server that caused cached notifications
 | |
|     to play multiple times. (#2142)
 | |
|   - Removed check and warnings to catch leaked listeners on the
 | |
|     proxy. This might access invalid memory and cause infinite
 | |
|     loops in older wireplumber.
 | |
| 
 | |
| # PipeWire 0.3.46 (2022-02-17)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fix a critical bug in pipewire-pulse buffer size handling that made some
 | |
|     apps (MuseScore, ... ) stutter.
 | |
|   - Fix a critical bug where devices would not show when the kernel was
 | |
|     compiled without VERBOSE_PROCSFS.
 | |
|   - JACK clients will now use lock-quantum by default. This makes sure that
 | |
|     all dynamic quantum changes are disabled while a JACK app is running.
 | |
|     The only way to force a quantum chance is through a JACK app or with
 | |
|     the metadata.
 | |
|   - Almost all limits on number of ports, clients and nodes are removed.
 | |
|   - A Dummy fallback sink is now automatically created when there are no
 | |
|     other sinks. This avoids stalling browsers.
 | |
|   - Sound sharing with Zoom should work better. A new WirePlumber release
 | |
|     might be required.
 | |
|   - Many more fixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Update docs with new config overrides.
 | |
|   - The rule matching logic was moved to config and code is now shared with
 | |
|     pulse-server and JACK.
 | |
|   - Add new Romanian translation.
 | |
|   - When a quantum is forced with metadata, any node that asked to lock-quantum
 | |
|     is ignored so that the quantum change can happen.
 | |
|   - Fix a bug where a mixer was removed twice, leading to potential memory
 | |
|     corruption.
 | |
|   - The port limits on nodes and filters are now removed. Some code was
 | |
|     simplified.
 | |
|   - Fix a potential leak because listeners where removed while they could be
 | |
|     emitted.
 | |
|   - Improve context.exec and avoid zombie processes.
 | |
| 
 | |
| ## Modules
 | |
|   - The RAOP module now has a default latency of 2 seconds, like PulseAudio.
 | |
|   - The echo-cancel module now uses the plugin loader to load the backends.
 | |
|     This makes it possible to add custom, out of tree, echo cancel plugins.
 | |
| 
 | |
| ## Tools
 | |
|   - Improve help of pw-link.
 | |
|   - Output to stdout and error to stderr. Use setlinebuf for stdout to improve
 | |
|     piping between apps. (#2110)
 | |
| 
 | |
| ## SPA
 | |
|   - Improve removing sources when dispatching. Also improve performance now
 | |
|     that a destroy loop can be removed. (#2114)
 | |
|   - Fix an fd leak in the logger when logging to a file.
 | |
|   - Improve loop enter/leave checks and support recursive loops.
 | |
| 
 | |
| ## pulse-server
 | |
|   - Clamp various buffer attributes to the max length. Fixes some issues
 | |
|     with various applications. (#2100)
 | |
|   - Module properties are now remapped correctly from their pulseaudio variant
 | |
|     to the PipeWire ones.
 | |
|   - Fix module index in introspect. Use the right index when loaded from our
 | |
|     internal modules. (#2101)
 | |
|   - Improve argument parsing and node.description. (#2086)
 | |
|   - The sink-index should now be filled in correctly when playing a sample.
 | |
|     (#2129)
 | |
|   - module-always-sink is now implemented and loaded by default. (#1838)
 | |
|   - Add support for loading some modules only once.
 | |
|   - Module load and unload now does extra sync to make it appear synchronous,
 | |
|     like in PulseAudio. This improves sounds sharing in Zoom.
 | |
| 
 | |
| ## ALSA
 | |
|   - Fix critial bug where alsa devices would not show when the kernel was
 | |
|     compiled without VERBOSE_PROCFS.
 | |
|   - Some corner cases were fixed in the ALSA timing code. When the capture node
 | |
|     is follower, it will now not try to read too much data and xrun but it will
 | |
|     instead produce a cycle of silence.
 | |
|   - Various fixes and improvements to make ALSA devices resync to the driver
 | |
|     more quickly and accurately.
 | |
| 
 | |
| ## JACK
 | |
|   - Add an option to name the default device as `system` to improve
 | |
|     compatibility with some applications,
 | |
|   - Use lock-quantum by default. This makes sure that all dynamic quantum
 | |
|     changes are disabled while a JACK app is running. The only way to force
 | |
|     a quantum chance is through a JACK app or with the metadata.
 | |
|   - It is now possible to do IPC calls from the data thread. Note that this
 | |
|     is a very bad idea but required for compatibility with JACK2.
 | |
| 
 | |
| ## GStreamer
 | |
|   - GStreamer sink will now set a default channelmap to make it possible to 
 | |
|     remap to the channel layout of the device.
 | |
| 
 | |
| # PipeWire 0.3.45 (2022-02-03)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Zoom, telegram and other apps should be able to play sound again.
 | |
|   - Implement a better way to force and lock JACK buffersize.
 | |
|   - Default sink and source names and properties are improved.
 | |
|   - The config loader can now load and merge fragments in conf.d directories
 | |
|     for easier user configuration of config files.
 | |
|   - Many small bug fixes and improvements.
 | |
| 
 | |
| ## PipeWire
 | |
|   - pw-cli can now also send Commands to nodes. This can be used to Suspend
 | |
|     a device, for example.
 | |
|   - The eventfd was removed from loops and invoke is now used to stop the loop,
 | |
|     this saves an fd.
 | |
|   - New Alpine CI target to test musl builds, various build fixes.
 | |
|   - Add force-quantum and force-rate properties.
 | |
|   - The config loader can now load and merge fragments in conf.d directories.
 | |
|     (#207)
 | |
|   - resource error methods can be called without a resource and then just
 | |
|     log an error message.
 | |
|   - link-factory can now also work from the config. (#2095)
 | |
| 
 | |
| ## modules
 | |
|   - module-simple-protocol has better argument parsing and can handle
 | |
|     channelmap now. (#2068) It's also possible to configure latency and
 | |
|     rate.
 | |
|   - The native protocol now does extra checks for invalid data. (#2070)
 | |
| 
 | |
| ## ALSA
 | |
|   - TI2902 chips as found in various Behringer cards should have inputs
 | |
|     again.
 | |
|   - Better handling of busy devices in udev, retry when the inotify close
 | |
|     event is emitted.
 | |
| 
 | |
| ## SPA
 | |
|   - plugins now handle alignment properly and only expect the max alignment
 | |
|     required for the CPU. (#2074)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - SBC-XQ is now enabled for the JBL Endurance RUN BT headset.
 | |
|   - Support for non-hexadecimal XAPL version strings to improve compatibility.
 | |
|   - Use HCI commands again to probe the adapter msbc capability. This improves
 | |
|     compatibility with some adapters. (#2030)
 | |
|   - Set the right startup volume.
 | |
|   - Better A2DP source idle handling.
 | |
|   - Fix a timer bug in SCO sink that could cause busy looping.
 | |
| 
 | |
| ## pulse-server
 | |
|   - A playback issue when the tlength > maxlength was fixed. (#2069) This
 | |
|     affected Zoom and other applications.
 | |
|   - The STREAM_BUFFER_ATTR command is now implemented.
 | |
|   - Module names are improved. (#2076)
 | |
|   - Many small fixes and improvements.
 | |
|   - Fix a pavucontrol crash with invalid channels. (#1442)
 | |
| 
 | |
| ## JACK
 | |
|   - Use the new force-quantum and force-rate properties in the JACK API to
 | |
|     switch quantum and ensure it can't change for the lifetime of the JACK
 | |
|     app. (#2079)
 | |
| 
 | |
| # PipeWire 0.3.44 (2022-01-27)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - It is now possible to run a minimal PipeWire server without a session
 | |
|     manager, enough to run JACK clients.
 | |
|   - The maximum buffer size is now configurable and can be larger than
 | |
|     the previously hardcoded limit of 8192 samples. When using high sample
 | |
|     rates, the larger buffer size can avoid xruns.
 | |
|   - The default maximum latency was reduced from 170ms to 42ms. This should
 | |
|     improve overall latency for application that ask for a large latency,
 | |
|     such as notifications.
 | |
|   - Better JACK compatibility. Patchbays should now get less confused about
 | |
|     ports appearing and disappearing.
 | |
|   - Fix some bluetooth crashes.
 | |
|   - Fix some races in ALSA device detection.
 | |
|   - Many bug fixes and improvements all over the place.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Bump the meson requirement to 0.59.0.
 | |
|   - pw-top now reports correct times for filter-chain and loopback.
 | |
|   - max-quantum is now also scaled with the rate. A new quantum-limit
 | |
|     property was added as a hard limit for the quantum. This makes it
 | |
|     possible to configure for larger than 8192 buffer sizes. Note
 | |
|     than many JACK applications have a hardcoded 8192 limit. (#1931)
 | |
|   - The max-quantum was reduced to 2048, This gives a 42ms default
 | |
|     latency. (#1908)
 | |
|   - pw-filter can now return a NULL buffer from _get_dsp_buffer().
 | |
|   - Add a PIPEWIRE_RATE and PIPEWIRE_QUANTUM env variable to set the
 | |
|     graph rate and the graph quantum and rate respectively.
 | |
|   - Fix a potential file descriptor leak in the connection.
 | |
|   - A new minimal.conf file was added to demonstrate a static setup
 | |
|     of a daemon that doesn't require a session manager and is able to
 | |
|     run JACK applications.
 | |
|   - Nice levels are now only changed on the servers, not the clients.
 | |
|   - Add an option to suspend nodes when idle.
 | |
|   - Make it possible to avoid quantum and rate changes with
 | |
|     pw-metadata. This is essential in a locked down system.
 | |
|   - Handle mixer port errors better and fail to create the link instead
 | |
|     of silently not working.
 | |
|   - Nodes that are moved to a driver now have all the linked nodes moved
 | |
|     as well. This makes it possible to run some graphs without a
 | |
|     driver, such as paplay -> zita-j2n.
 | |
|   - pw-cli and pw-dump can now also list objects by name, serial and
 | |
|     object.path using glob style pattern matching.
 | |
| 
 | |
| 
 | |
| ## modules
 | |
|   - filter-chain can now also configure parameters by index.
 | |
|   - Fix the client name of module-protocol-simple. (#2017)
 | |
|   - module-rtkit was merged into module-rt. This makes it easier to
 | |
|     ship a default config that works on more systems by default.
 | |
|   - module-adapter can now configure the adapter node from the config.
 | |
|     Previously, this was a task only performed by the session manager.
 | |
|   - module-metadata can now also create metadata object from the
 | |
|     config file.
 | |
|   - The ROC module should now work again. (#2045)
 | |
|   - An X11-bell module was added to handle X11 bell events. (#1668)
 | |
|   - filter-chain and loopback modules now have better unique default
 | |
|     names for the streams, which makes it possible to save and restore
 | |
|     their volumes independently. (#1983)
 | |
|   - module-echo-cancel now has properties to control the delay and
 | |
|     buffer size.
 | |
| 
 | |
| ## ALSA
 | |
|   - The monitor names are now correctly parsed.
 | |
|   - The default period size for batch devices is limited now to avoid
 | |
|     large latency.
 | |
|   - The unused min/max-latency properties were removed.
 | |
|   - Internal latency is now also configurable with params at runtime.
 | |
|   - The udev rule for TI2902 was removed because it causes problems.
 | |
|   - Fix a race where some devices would sometimes be missing. (#2046)
 | |
|   - Add some more timeouts to work around a race in udev device
 | |
|     permission changes when switching VTs.
 | |
| 
 | |
| ## SPA
 | |
|   - Fix potential infinite loop in audioconvert.
 | |
|   - The spa-resample tools can now also use optimized implementations.
 | |
|   - Fix a potential crash in resampler. (#1994)
 | |
|   - audioconvert can now also handle F64 formats. (#1990)
 | |
|   - The channelmixer now does normalization by default to avoid clipping
 | |
|     when downmixing is active.
 | |
|   - The channelmixer will now generate LFE channels when the lfe_cutoff
 | |
|     frequency is set, even when upmix is disabled.
 | |
|   - The channelmixer will now always generate FC when the target has it.
 | |
|   - Adapter now reports latency correctly, even after linking the monitor
 | |
|     ports.
 | |
|   - Reduce memory usage and preallocated memory in some of the
 | |
|     audioconvert nodes.
 | |
|   - Many properties are now exposed in adapter, such as the resample
 | |
|     quality.
 | |
|   - The resampler and channelmixer can now be disabled.
 | |
| 
 | |
| ## V4L2
 | |
|   - pw-v4l2 now also works for ffplay. (#2029)
 | |
|   - Take product names from udev now that the kernel returns a generic
 | |
|     name.
 | |
| 
 | |
| ## JACK
 | |
|   - The jack pkgconfig file now has the `jack_implementation=pipewire`
 | |
|     variable to be able to distinguish jack implementations. (#1666)
 | |
|   - jconvolver now starts correctly again. (#1989)
 | |
|   - The object.serial is now used for the port_id. This makes it easier
 | |
|     to track old objects in the cache.
 | |
|   - Add a dummy jacknet implementation. (#2043)
 | |
|   - A bug in the port allocation was fixed that would make it impossible
 | |
|     to allocate ports at some point. (#1714)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Bluetooth profiles are now saved properly by the session manager.
 | |
|   - Improved profile detections, increased timeouts for slow devices.
 | |
|   - Implement HFP call indicator for improved compatibility.
 | |
|   - Handle the case where bluez does not set the adapter or address
 | |
|     properties on the device instead of crashing.
 | |
|   - Improved support for setting the profile from the session manager.
 | |
| 
 | |
| ## pulse-server
 | |
|   - Monitor sources now have the device.class=monitor for better
 | |
|     compatibility.
 | |
|   - Behaviour after seeking is improved. The algorithm for requesting
 | |
|     bytes from the client was simplified and improved. (#1981)
 | |
|   - module-ladspa-sink implements the control argument now. (#1987)
 | |
|   - A potential memory leak in the message queue was fixed. (#1840)
 | |
|   - Use the object.serial for the pulseaudio object index. The index is
 | |
|     not supposed to be reused and this would cause problems with some
 | |
|     clients.
 | |
|   - Servers should now again be able to listen in IPv4. (#2047)
 | |
|   - module-x11-bell was added. (#1668)
 | |
|   - There is now support for per-application quirks and properties in
 | |
|     the pipewire-pulse.conf file. Per-application latency and buffering
 | |
|     properties can also be configured.
 | |
|   - Fix a regression in telegram sounds not playing.
 | |
| 
 | |
| # PipeWire 0.3.43 (2022-01-05)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Flatpak apps such as Ardour can now remove links again.
 | |
|   - Many fixes to pulse-server. Memory usage should be improved. Some
 | |
|     crashes are fixed. Underrun handling should work better. Better
 | |
|     compatibility with GStreamer based applications after seeking.
 | |
|   - Many of the samplerate and quantum changes bugs in previous releases
 | |
|     were fixed. This fixes some issues where the microphone would fail
 | |
|     to work.
 | |
|   - Many more small fixes and improvements all over the place.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Quantum and rate changes are now applied immediately when the driver
 | |
|     is idle. This avoids setting the driver in the previous samplerate.
 | |
|     (#1913)
 | |
|   - Object destruction now does not need write permissions anymore. This
 | |
|     restriction needs some more work. (#1920)
 | |
|   - When we reposition, start a sync operation. This fixes a problem
 | |
|     in Ardour when seeking. (#1907)
 | |
|   - Require meson 0.56.0
 | |
|   - Make the align property in BUFFER_PARAM optional. We now only set this
 | |
|     if the plugin has specific requirements and we default to the CPU
 | |
|     largest alignment requirement.
 | |
|   - pw-record will now also list monitors and streams as possible targets.
 | |
| 
 | |
| ## modules
 | |
|   - Improve LV2 plugin support in filter-chain. Add support for Worker and
 | |
|     Options.
 | |
|   - The loopback module now has a unique media.name to make it possible
 | |
|     for the session manager to restore unique volume settings.
 | |
| 
 | |
| ## SPA
 | |
|   - Improve sample rate for EAC3 streams, some clients scale it while
 | |
|     others don't so use some heuristics to make things work better.
 | |
|     (#1902)
 | |
|   - Allocate ports dynamically in audioconvert. This avoids using larger
 | |
|     memory blocks of preallocated memory that confuses the allocator.
 | |
|     (#1840)
 | |
| 
 | |
| ## ALSA
 | |
|   - Merge the latest pulseaudio UCM improvements. (#1849)
 | |
|   - Fixes for selecting the sample rate. (#1892)
 | |
|   - Improve latency on USB devices by scaling the period size based on
 | |
|     the desired quantum when the device is opened.
 | |
|   - Add api.alsa.period-num to configure the amount of periods to use
 | |
|     in the device. Some devices have lower latency when a small value
 | |
|     is forced. (#1473)
 | |
|   - Allow multi-rate by default. In previous versions cards could only
 | |
|     be opened in one samplerate to avoid bugs in pre 5.16 kernels. This
 | |
|     however caused other problems so the default was removed.
 | |
|   - Fix a bug where a card was not freed correctly.
 | |
|   - Fix a bug in the alsa boundary check that could hang the alsa-plugin
 | |
|     for a long time.
 | |
|   - The ALSA plugin now has a parameter to configure the allowed
 | |
|     samplerates.
 | |
| 
 | |
| ## JACK
 | |
|   - Improve handling of monitor nodes.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Codecs now have a priority. This should improve codec selection.
 | |
| 
 | |
| ## pulse-server
 | |
|   - The stream FIX_ flags are now implemented. (#1912)
 | |
|   - Improve flushing and draining behaviour. Short samples will now
 | |
|     play correctly. (#1549)
 | |
|   - Fix a crash when enumerating the formats. (#1928)
 | |
|   - Track quantum changes and update the amount of required buffering
 | |
|     accordingly. This improves forced quantum handling. (#1930)
 | |
|   - Improve handling of channels > 32.
 | |
|   - Handle the case where a module is destroyed before it could be
 | |
|     completely loaded.
 | |
|   - Fixes some issues when samples were removed while they were playing.
 | |
|     (#1953)
 | |
|   - Fix some issues in module-zeroconf-publish.
 | |
|   - Fix some memory leaks in module-roc.
 | |
|   - Add command access control. This avoids execution of commands without
 | |
|     proper authentication.
 | |
| 
 | |
| # PipeWire 0.3.42 (2021-12-16)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| This is a quick emergency release to fix some severe
 | |
| problems with the previous release.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fixes a bug in pulse-server underrun handling that broke qemu
 | |
|     and orca.
 | |
|   - A fix was added to pulse-server to handle quantum changes
 | |
|     gracefully.
 | |
|   - Fix module-echo-cancel again.
 | |
|   - Fix a bug where the bluetooth headset capture was producing
 | |
|     noise.
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.41 (2021-12-13)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Improved compatibility for flatpaks. Flatpaks with newer PipeWire
 | |
|     version can connect to an older server in all cases.
 | |
|   - A new RAOP module was added to stream to Apple Airplay devices.
 | |
|   - OBS can now capture from the monitor devices again when using
 | |
|     WirePlumber.
 | |
|   - Improved JACK compatibility. Improved stability in Carla and Ardour
 | |
|     when changing buffer size. Improved latency calculations and
 | |
|     playback latency in Ardour.
 | |
|   - Improved pulse-server handling of underruns and buffer size changes.
 | |
|   - Many bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - The systemd service files now have better names.
 | |
|   - client.access permission checks are improved.
 | |
|   - Fix some memory leaks in error paths.
 | |
|   - Objects now have a global serial number that is unique for the
 | |
|     lifetime of the server.
 | |
|   - Make clock.rate, clock.allowed-rates and clock.quantum
 | |
|     runtime tunable parameters with the settings metadata.
 | |
|   - Add some additional memory checks in client-node to avoid
 | |
|     sending invalid memory to clients. (#1859)
 | |
|   - Improve buffer memory allocation. If one of the nodes is a
 | |
|     remote node, ensure we only use memory that can be shared.
 | |
|   - Version checks when binding to objects is removed. This means
 | |
|     that newer clients can now bind to older servers, which is
 | |
|     a typical case for a flatpak.
 | |
|   - A bug in the latency calculations was fixed where it would in
 | |
|     some cases report the wrong minimum latency.
 | |
| 
 | |
| ## modules
 | |
|   - module-echo-cancel has voice-detection enabled now.
 | |
|   - module-raop-sink and module-raop-discover to stream audio to
 | |
|     an Apple Airplay device.
 | |
|   - module-filter-chain now has preliminary support for LV2
 | |
|     plugins.
 | |
| 
 | |
| ## SPA
 | |
|   - The audio resampler now has improved buffer size calculations.
 | |
|     In some cases it was too small and would cause distortions.
 | |
|   - More checks are done when doing volume changes so that the
 | |
|     channelmap is correct.
 | |
|   - Audioadapter now exposes most config options with params so that
 | |
|     they can be adjusted at runtime.
 | |
|   - The resampler can now calculate the expected input buffer size
 | |
|     before receiving the first buffer, which avoids some confusion
 | |
|     when starting streams.
 | |
|   - Support was added for some 10bit video formats.
 | |
|   - MONO channel handling was improved.
 | |
|   - Most plugins now set a clock name and this is configurable where
 | |
|     it makes sense. The clock.system.monotonic clock name is used
 | |
|     for most plugins that use the system clock for timing.
 | |
| 
 | |
| ## pulse-server
 | |
|   - implement module-raop-discover
 | |
|   - Use STREAM_CAPTURE_SINK property when capturing from a monitor
 | |
|     source to better inform the session manager. This fixes some
 | |
|     issues where OBS would capture from the microphone instead of
 | |
|     the output monitor.
 | |
|   - Limit the amount of cache messages to 16MB and don't add large
 | |
|     memory blocks to the cache. This should fix some excessive
 | |
|     memory usage that people reported.
 | |
|   - Fix a potential memory leak when cleaning up a client.
 | |
|   - Do some additional checks to avoid buffer overruns.
 | |
|   - Improve recovery from underruns better. (#1857) This improves
 | |
|     seeking in gnome-music.
 | |
|   - Improve recovery when the quantum is forced larger that the
 | |
|     stream configured latency.
 | |
|   - The prebuf state is now handled correctly.
 | |
| 
 | |
| ## JACK
 | |
|   - A per type object cache is now implemented. This ensures that
 | |
|     port objects remain valid for a longer time because many
 | |
|     JACK applications inspect objects after they are destroyed.
 | |
|     This improves catia/carla compatibility.
 | |
|   - Recompute the latencies when the buffer-size changes. Fix some
 | |
|     cases where we would end up with negative latencies.
 | |
|   - Handle regcomp errors to avoid some crashes later.
 | |
|   - Latency calculations are improved a lot.
 | |
|   - More care is taken to not call a process callback while a buffer
 | |
|     size change is pending. This fixes some crashes in Carla, which
 | |
|     expect that all clients are paused when one handles the buffersize
 | |
|     callback.
 | |
|   - Loopback links to a client are now handled correctly and without
 | |
|     latency. This fixes playback latency in ardour6 (#1839)
 | |
| 
 | |
| ## ALSA
 | |
|   - ALSA devices now keep track of the samplerate of the card and
 | |
|     ensure that all PCM use the same rate. This is a workaround for
 | |
|     a kernel bug that is fixed in 5.16.
 | |
|   - Refactor the ALSA plugin a little.
 | |
|   - The ALSA plugin now reports correct delay for a capture PCM. (#1697)
 | |
|   - The ALSA nodes now expose all config options with params that can be
 | |
|     changed at runtime.
 | |
|   - The ALSA node has a configurable clock name. Adaptive resampling to
 | |
|     match clock rates is avoided when the driver has the same clock
 | |
|     name as the ALSA node. This can be used to link alsa devices together
 | |
|     with a word clock.
 | |
| 
 | |
| # PipeWire 0.3.40 (2021-11-11)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Producers and consumers can now incrementally negotiate a format
 | |
|     by narrowing down the options. This can be used to select an optimal
 | |
|     combination of format and modifiers.
 | |
|   - Driver nodes such as the consumer of a headless compositor can now
 | |
|     throttle the speed based on a new trigger_done event.
 | |
|   - Headless compositors can now signal a damage event to consumers
 | |
|     to start the processing of the graph.
 | |
|   - Compatibility improvements in JACK.
 | |
|   - Draining and resuming is now working correctly in pulse and alsa.
 | |
|   - Many bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Many BSD fixes.
 | |
|   - clang compilation fixes.
 | |
|   - Fix map implementation on big-endian machines.
 | |
|   - Improve tracking of param changes in pw-stream.
 | |
|   - Add support for renegotiation. With this change, producer and
 | |
|     consumer can incrementally renegotiate a format until it is fixed.
 | |
|     This will be used to do complex negotiation of DRM modifiers.
 | |
|     (#1732).
 | |
|   - Add a trigger-done event in the stream. This can be used to know
 | |
|     when processing of the complete graph has finished after issuing
 | |
|     a trigger_process() and it can be used to throttle processing.
 | |
|   - Add a RequestProcess node event and command. This can be used by
 | |
|     non-driver nodes to suggest to a driver to start processing. One
 | |
|     case is where a compositor can emit this event as a result of a
 | |
|     screen update to let the headless compositor start an update.
 | |
|   - Fix zeroconf sample format.
 | |
|   - pw-mon outputs to stderr now and has colors.
 | |
| 
 | |
| ## SPA
 | |
|   - Fix compilation on ppc and armv7.
 | |
|   - Fix port type check for ALSA seq midi ports so that they are not
 | |
|     falsely listed as hardware.
 | |
|   - Fix crash when running SSE code on unsupported HW. (#1775)
 | |
|   - The libcamera plugin was rewritten. It now supports hotplug,
 | |
|     format enumeration and an easier to read codebase.
 | |
|   - Fix compatibility some more for cards with 64 channels.
 | |
| 
 | |
| ## pulse-server
 | |
|   - Flush data in pause in combine-sink to avoid stray audio fragments.
 | |
|   - Fix a race where not all objects were removed correctly.
 | |
|   - The latency calculations and setup was improved to more closely
 | |
|     match pulseaudio behaviour. PULSE_LATENCY_MSEC should now resemble
 | |
|     pulseaudio more closely. (#1769)
 | |
|   - The drained reply is now sent only once and new data will be
 | |
|     accepted once the drain completes.
 | |
|   - Fix a potential crasher bug where the stream started processing
 | |
|     before the setup was completed.
 | |
|   - The server will now drop the client connections when the pipewire
 | |
|     connection is lost.
 | |
| 
 | |
| ## JACK
 | |
|   - Rework the jack_port_get_buffer() method to return the same memory
 | |
|     when called multiple times during the process() callback. This makes
 | |
|     things work on a new Hydrogen. (#1748)
 | |
|   - Add an option to disable showing the monitor ports.
 | |
|   - JACK ports are now sorted per node/client and port_id. This should
 | |
|     more closely match JACK behaviour and avoid random port order.
 | |
|     (#1780)
 | |
| 
 | |
| ## v4l2
 | |
|   - Fix v4l2 LD_PRELOAD script.
 | |
|   - Make sure we destroy the proxy when the global is destroyed.
 | |
| 
 | |
| ## ALSA
 | |
|   - _prepare should exit the draining state. (#1467)
 | |
|   - Fix the precision of the _delay function by taking into account
 | |
|     the amount of queued samples are the correct samplerate.
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.39 (2021-10-21)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible with previous
 | |
| 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - media-session is now moved into a separate module to speed up its
 | |
|     deprecation in favour of WirePlumber.
 | |
|   - There is now an LD_PRELOAD v4l2 emulation library to run some existing
 | |
|     v4l2 applications on top of PipeWire.
 | |
|   - Filter-chains should now flush out remaining samples when paused. There
 | |
|     is now also the option to let a filter-chain drain so that long filters
 | |
|     such as reverbs can fade out properly.
 | |
|   - Stability and compatibility improvements in JACK apps.
 | |
|   - Better Bluetooth compatibility with more devices.
 | |
|   - libcamera plugin improvements.
 | |
|   - Many bugfixes and improvements all over the map.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Fix compilation on ARM.
 | |
|   - Log topics are added to most modules.
 | |
|   - Documentation updates. Many improvements to the layout. Reorganisation
 | |
|     of the modules and groups.
 | |
|   - Share a work queue for all links and nodes. This removes the need for
 | |
|     a separate eventfd per link and per node.
 | |
|   - Catch errors in the map implementation.
 | |
|   - Add option to compile without dbus support.
 | |
|   - Fix biquad frequency. It was using the wrong sample rate.
 | |
|   - Fix a potential crash when destroying nodes, in some cases the node
 | |
|     would not be deactivated properly.
 | |
|   - Add some more helpers for dealing with properties and their values.
 | |
|   - Implement flush and reset on virtual sinks/sources.
 | |
|   - Make it possible to let virtual sinks/filter-chains run and drain
 | |
|     after being idle.
 | |
|   - Fix a bug where the quantum could exceed the maximum because it was
 | |
|     scaled with the sample rate.
 | |
|   - Fix channel_map parsing in module-zeroconf-discover so that the remote
 | |
|     channel map is used.
 | |
|   - pw-stream errors emitted on the proxy are reported but not fatal
 | |
|     any more. They are usually used by the session manager to signal status
 | |
|     to the client but otherwise does not really cause an error on the
 | |
|     client.
 | |
|   - Links now also store the output and input node id in the global
 | |
|     properties so that applications can parse and use them regardless of
 | |
|     how the link was made. (#1723)
 | |
|   - pw-stream and pw-filter now have an event to notify commands.
 | |
|   - The echo-cancel module can now operate on larger quantums.
 | |
|   - pw-cat now uses the right metadata to find the default devices in
 | |
|     --list-targets.
 | |
| 
 | |
| ## media-session
 | |
|   - Don't try to remix unpositioned streams when linking. This ensures
 | |
|     that linking to Pro-Audio nodes does not remix the stream channels
 | |
|     but links them as they are, one by one.
 | |
|   - media-session is now moved to a separate module to accelerate its
 | |
|     deprecation in favour of WirePlumber.
 | |
| 
 | |
| ## SPA
 | |
|   - Many libcamera improvements, handle MemFd buffers, handle errors
 | |
|     gracefully.
 | |
|   - Small improvements to make interface fall-backs easier to implement.
 | |
|   - Add support to enable flush-to-zero and denormals-are-zero to avoid
 | |
|     high CPU usage when dealing with denormals.
 | |
|   - AUX13 channels are no longer reported as AUX12. (#1727)
 | |
|   - Devices with more than 32 channels in Pro-Audio mode now only
 | |
|     uses AUX channels.
 | |
|   - Improve windowing function of the resampler to reduce aliasing and
 | |
|     improve the quality.
 | |
| 
 | |
| ## JACK
 | |
|   - Port connect callbacks will not only be emitted after the port
 | |
|     has negotiated buffers, which improves compatibility with
 | |
|     applications that try to use the port right after the callback
 | |
|     (jack_midi_latency_test).
 | |
|   - Fix crash when midi ports were removed and being monitored, like
 | |
|     in Ardour.
 | |
| 
 | |
| ## pulse-server
 | |
|   - The pulse tunnel will now use the specified format/rate/channels.
 | |
|   - Improve lookup of default source and fall back to the monitors when
 | |
|     no sources are available.
 | |
|   - Mark some nodes as network nodes so that we can set the NETWORK flag
 | |
|     correctly.
 | |
| 
 | |
| ## GStreamer
 | |
|   - The GStreamer element not releases the buffers in the stream again in
 | |
|     all cases so that they can be reused by other streams.
 | |
| 
 | |
| ## v4l2
 | |
|   - Add a v4l2 LD_PRELOAD library to emulate v4l2 system calls on top of
 | |
|     PipeWire. This is tested with firefox and GStreamer and is known to
 | |
|     not work with Chrome.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - AAC compatibility improvements.
 | |
|   - Disable hardware volume for "Tribit MAXSound Plus" and
 | |
|     "SoundCore mini".
 | |
|   - Add quirk to disable faststream. Disable faststream on "FiiO BTR3".
 | |
|   - Add a dummy AVRCP player to improve compatibility with some devices.
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.38 (2021-09-30)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Topic based logging was added to improve debugging.
 | |
|   - An off-by-one error was fixed in the audio resampler that could
 | |
|     cause distortion when downsampling.
 | |
|   - Various bluetooth compatibility improvements.
 | |
|   - More fixes and improvements.
 | |
| 
 | |
| ## PipeWire
 | |
|   - module-pulse-tunnel now has better default latency to make it work
 | |
|     better in more cases. There is also an option to configure the
 | |
|     desired latency.
 | |
|   - pw-cli now has readline support.
 | |
|   - Topic based logging was added. Log lines can now be filtered by
 | |
|     topic using wildcards. This should improve debugging.
 | |
|   - The systemd service files should now have better descriptions.
 | |
|   - Fix a crash in module-zeroconf-discover when unloading.
 | |
|   - Fix a crash in filter-chain when using unaligned memory.
 | |
| 
 | |
| ## ALSA
 | |
|   - Sync the udev rules and profiles with pulseaudio.
 | |
|   - Fix a memory leak.
 | |
| 
 | |
| ## SPA plugins
 | |
|   - An off-by-one error was fixed in the resampler that could cause
 | |
|     distortion when downsampling. (#1646)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Avoid probing the native backend because it might block for DBus
 | |
|     activation. This fixes some long startup times.
 | |
|   - Fix the kernel version check, 5.14.x kernels should also support
 | |
|     mSBC.
 | |
|   - Fix FastStream microphone support in more cases.
 | |
|   - Add workaround for Intel AX200.
 | |
|   - SCO sink should now also work in follower mode.
 | |
| 
 | |
| ## PulseAudio server
 | |
|   - Make the service file require a session manager.
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.37 (2021-09-23)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Capture and playback is now avoided even more on unavailable
 | |
|     devices. This should fix some issues where an unusable microphone
 | |
|     was selected by default. It should now also again be possible
 | |
|     to select an unavailable device as the default.
 | |
|   - Native DSD audio playback is now supported. pw-cat can now also
 | |
|     play DSF files with the -d option.
 | |
|   - JACK stability improvements with buffer-size and samplerate
 | |
|     changes in some apps.
 | |
|   - Many cleanups and bugfixes all over the place.
 | |
| 
 | |
| ## PipeWire
 | |
|   - pw-metadata -d does not cause an infinite loop anymore. (#1622)
 | |
|   - Increase some plugin buffer sizes to fix some issues with many
 | |
|     channels. (#1620)
 | |
|   - Protect the global plugin list with a lock. Make sure pw_init()
 | |
|     is locked. Fixes some issues with concurrent ALSA plugin usage.
 | |
| 
 | |
| ## media-session
 | |
|   - Unavailable devices can be set as the default again. (#1624)
 | |
|   - Do a better check if a device has available routes and avoid
 | |
|     selecting devices with unavailable routes as default.
 | |
|   - Media-session was moved to its own directory. It used to live
 | |
|     in examples but it is past the example stage and it interferes
 | |
|     with the build options for the real examples.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - The hardware quirk database is now loaded by the plugin instead of
 | |
|     the session manager. This makes it also work with wireplumber.
 | |
| 
 | |
| ## ALSA
 | |
|   - The ALSA mixer now handles device removal much better. (#1627)
 | |
| 
 | |
| ## libcamera
 | |
|   - Many fixes and improvement to the libcamera plugin. (#1513)
 | |
| 
 | |
| ## pulse-server
 | |
|   - Improve compatibility with pulseaudio module arguments.
 | |
|   - Parse channel_map arguments in module-loopback. (#1486)
 | |
| 
 | |
| ## JACK
 | |
|   - Delay emitting the samplerate and buffersize callbacks until the
 | |
|     client is active. This fixes some crashes with Carla and other
 | |
|     JACK apps.
 | |
| 
 | |
| # PipeWire 0.3.36 (2021-09-16)
 | |
| 
 | |
| This is a quick bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - A quick update with mostly only bugfixes and small improvements.
 | |
|   - Capture and playback is now avoided on unavailable devices. This
 | |
|     should fix some issues where an unusable microphone was selected
 | |
|     by default.
 | |
|   - MIDI output should not stop randomly now.
 | |
|   - The GStreamer elements are much improved, cheese should work
 | |
|     a lot better now.
 | |
|   - Virtual sinks and sources should now always show up immediately.
 | |
|   - JACK processing is now delayed until buffersize and samplerate
 | |
|     are emitted. This should improve stability of many JACK apps.
 | |
|   - JACK transport sync is now implemented correctly so that preroll
 | |
|     in bitwig works.
 | |
| 
 | |
| ## PipeWire
 | |
|   - The module dir environment variable can now contain multiple paths.
 | |
|   - Documentation now contains dot graphs of dependencies. (#1585)
 | |
|   - config min/max/default quantum values are now scaled with the
 | |
|     samplerate.
 | |
|   - A potential crash was fixed where destroyed memory was still used
 | |
|     by a node. This could cause crashes in cheese.
 | |
| 
 | |
| ## pipewire-media-session
 | |
|   - Only allow passthrough for passthrough formats (S/PDIF) for
 | |
|     now. (#1587)
 | |
|   - Improve bluetooth profile autoswitch.
 | |
|   - Don't try to route audio to nodes with unavailable routes.
 | |
| 
 | |
| ## ALSA
 | |
|   - Pass the right AES bits to the alsa device when opening an
 | |
|     S/PDIF stream.
 | |
|   - Fix a bug in the MIDI bridge port management logic. When a port
 | |
|     was added and immediately removed, output would stop.
 | |
| 
 | |
| ## GStreamer
 | |
|   - The GStreamer source now handles the flushing state correctly.
 | |
|   - All blocking operations now have a 30 seconds timeout, to avoid
 | |
|     infinite locks.
 | |
| 
 | |
| ## Plugins
 | |
|   - V4l2 Device formats and controls are now passed on the node, just
 | |
|     like with audio devices.
 | |
|   - audioconvert now also exposes the softMute property.
 | |
| 
 | |
| ## JACK
 | |
|   - Improve stability when changing buffer size and sample rate
 | |
|     dynamically by pausing the processing until the application has
 | |
|     handled the callback.
 | |
|   - Improve handling of timebase master. When the master was moved to
 | |
|     another driver, it did not attempt to become a new timebase
 | |
|     master on the new driver. (#1589)
 | |
|   - Implement transport sync to make preroll in bitwig work. (#1589)
 | |
| 
 | |
| ## pulse-server
 | |
|   - Fix an issue where virtual sinks/sources would not show up
 | |
|     immediately. (#1588)
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.35 (2021-09-09)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - S/PDIF passthrough over optical or HDMI is now implemented.
 | |
|   - Some critical fixes to MIDI, draining of streams and various
 | |
|     modules.
 | |
|   - skypeforlinux should work better now after adding it to the
 | |
|     quirks database.
 | |
|   - Bluetooth codecs are now in separate plugins to make it easier
 | |
|     to ship them.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Drain was fixed in pw-stream. In some cases it would not clear
 | |
|     the drain state correctly. Fixes the issue where speaker-test would
 | |
|     only play one channel.
 | |
|   - Loopback connections to a driver will now activate the driver. This
 | |
|     fixes an issue where MIDI connections between devices or some
 | |
|     applications (puredata) would not get any MIDI messages. (#1559)
 | |
|   - The audiomixer can now mix more formats. Together with the passthrough
 | |
|     improvements this can be used to avoid conversions to/from the DSP
 | |
|     format in some cases.
 | |
|   - Make sure we idle drivers when removing a node from it in all cases.
 | |
|     JACK clients could keep a driver node busy.
 | |
|   - Add new methods to accumulate object info. The old one was difficult
 | |
|     to use when applications need to accumulate multiple changes.
 | |
|   - A new interface to load modules has been added. Plugins can use this
 | |
|     to ask the host (PipeWire) to load spa plugins.
 | |
|   - Increase param buffer size to handle larger params. Nodes with a large
 | |
|     number of channels would sometimes not have properties. (#1574)
 | |
|   - Concurrent link negotiation that caused some links to not work,
 | |
|     is now avoided. This fixes monitor ports in Ardour6.
 | |
|   - Small tweaks to how the quantum and rate are handled when nodes move
 | |
|     between drivers. Make node.lock-quantum work with node.latency
 | |
| 
 | |
| ## PipeWire modules
 | |
|   - The convolver plugin in filter-chain has been optimized some more.
 | |
|   - The echo-cancel stream properties were improved so that it actually
 | |
|     can remember the streams it links to. (#1557)
 | |
|   - module-pulse-tunnel had the buffer attributes wrong and would cause
 | |
|     high latency with older pulseaudio servers. (#1434)
 | |
|   - module-roc had the properties configured wrongly, which would cause
 | |
|     it to not work at all in most cases. (#1538)
 | |
|   - There is now an example of a 7.1 virtual surround sink using the
 | |
|     hesuvi impulse responses.
 | |
|   - The convolver now supports dirac pulses as the IR.
 | |
| 
 | |
| ## ALSA
 | |
|   - UCM config is now cached per device, using up less memory. It also
 | |
|     temporarily works around a problem in alsa-lib that is now being
 | |
|     patched and rolled out. Should stop devices from disappearing when
 | |
|     logging out and back in. (#1553)
 | |
|   - Fix the MIDI clock rate matching. It was too sensitive to small
 | |
|     changes and would spiral out of control and break MIDI rather
 | |
|     quickly.
 | |
| 
 | |
| ## pipewire-media-session
 | |
|   - The media session can now save and restore IEC958 (S/PDIF) codecs
 | |
|     for the sinks.
 | |
|   - Passthrough of IEC958 (S/PDIF) content is now possible. If the client
 | |
|     and the sink contain a compatible set of codecs, an exclusive
 | |
|     connection can be made between client and sink to pass the encoded
 | |
|     S/PDIF content directly to the device.
 | |
|   - Use new introspection info update methods to suspend nodes in all
 | |
|     cases. Sometimes, nodes would fail to suspend because the state info
 | |
|     was not evaluated.
 | |
|   - The media session can now work in non-DSP mode, which will try to
 | |
|     avoid any audio conversions between client and device when possible.
 | |
|     But, this will also disable compatibility with JACK applications.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Bluetooth codecs are now compiled into separate plugins which are
 | |
|     dynamically loaded. This makes it possible to change the plugin
 | |
|     implementation or ship plugins separately without having to recompile
 | |
|     the bluetooth module.
 | |
| 
 | |
| ## PulseAudio server
 | |
|   - Delay stream create reply until the stream is linked to a sink/source.
 | |
|   - The device-restore extension is now implemented. This makes it possible
 | |
|     to configure the IEC958 (S/PDIF) codecs supported by the sink with
 | |
|     pavucontrol.
 | |
|   - skypeforlinux now uses the same quirks as teams to make the sinks
 | |
|     show up in all cases. This fixes the issue of not being able to hear
 | |
|     the remote end in skypeforlinux.
 | |
| 
 | |
| ## JACK
 | |
|   - Improve catia and carla compatibility by caching objects a little longer
 | |
|     after being removed. (#1531)
 | |
|   - JACK ports now notify the negotiated format correctly.
 | |
|   - A potential deadlock was fixed when multiple threads would perform a
 | |
|     call that would require a roundtrip.
 | |
|   - Improve bufsize callback, it should not be called right after doing
 | |
|     activate() but only when the buffersize changes later.
 | |
|   - Add tweak to disable the process lock. Some older apps might not
 | |
|     expect it. (#1576)
 | |
| 
 | |
| ## Docs
 | |
|   - man pages are now generated with rst2man.
 | |
|   - DMA-BUF docs were updated.
 | |
|   - Documentation updates.
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.34 (2021-08-26)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| 
 | |
| ## Highlights
 | |
|   - Fixes some critical issues with previous release. Such as
 | |
|     devices not showing up and default devices being lost.
 | |
|   - Support for consumer driver streams to make the producer v-sync
 | |
|     to the consumer monitor in a headless compositor setup.
 | |
|   - Improvements to routing of streams.
 | |
|   - Bluetooth battery status support for head-set profile and
 | |
|     using Apple extensions. aptX-LL and FastStream codec support
 | |
|     was added.
 | |
|   - Internal latency of ALSA devices can now be configured.
 | |
|   - A fast convolver was added to the filter-chain to implement
 | |
|     virtual surround sinks or reverbs.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Add support for streams that are driver nodes for the graph.
 | |
|     This was already possible for source streams but it is now
 | |
|     also possible for playback streams. This can be used to let
 | |
|     a producer v-sync to the consumer monitor in a headless
 | |
|     compositor setup. (#1484)
 | |
|   - State files are now stored in XDG_STATE_HOME instead of
 | |
|     XDG_CONFIG_HOME. They will still be loaded from the config home
 | |
|     if they are not in the new state home, to ease migration.
 | |
|   - Set a driver on inactive nodes to make transport work in xjadeo.
 | |
|     (#1491)
 | |
|   - Fix parsing of filter-chain controls.
 | |
|   - A new FFT based convolver was added to module-filter-chain. It
 | |
|     uses a 0-latency 2 stage convolver with small FFT for the head
 | |
|     and a large FFT for the tail of the convolution. A convolution
 | |
|     can be used to implement IR based reverbs, HRIR surround sound
 | |
|     or other convolution based operations. An example HRIR
 | |
|     virtual surround sound sink has been added as well.
 | |
|   - module-filter-chain was reworked a bit to support more config
 | |
|     options for the plugins.
 | |
|   - Endian conversion and alaw/ulaw formats are now supported for
 | |
|     streams.
 | |
|   - pw-cat will now suggest a samplerate for the graph.
 | |
|   - SPA_PLUGIN_DIR can now search in multiple paths separated with
 | |
|     a ':'.
 | |
|   - Passthrough mode has been worked on and has been partially
 | |
|     merged. S/PDIF definitions have been added and ALSA devices
 | |
|     updated to report and configure S/PDIF formats. The session
 | |
|     manager changes to fully configure and enable passthrough mode
 | |
|     will hopefully be merged next time.
 | |
|   - Fix a race in pw-stream where it would not always emit the
 | |
|     right events.
 | |
| 
 | |
| ## ALSA
 | |
|   - Fix volume changed check. It was checking against the wrong
 | |
|     value and this could cause rounding errors.
 | |
|   - The ALSA plugin now also uses RT scheduling.
 | |
|   - Fix the behringer UMC202 usb device id, it was using a generic
 | |
|     TI chip ID that caused problems.
 | |
|   - Fix USB devices that don't show up anymore. Use an ALSA
 | |
|     workaround to fix this. (#1478)
 | |
|   - Add a rule for the new firmware of Sennheiser GSX 1200.
 | |
|   - ALSA sink and source can now use ProcessLatency param to configure
 | |
|     the internal latency. The latencyOffsetNsec property is also
 | |
|     exposed so that the latency can be adjusted in pavucontrol as
 | |
|     well.
 | |
| 
 | |
| ## media-session
 | |
|   - Fix a critical issue where the default device was not remembered
 | |
|     anymore when it was removed.
 | |
|   - Fix the issue where some apps need to be restarted when nodes go
 | |
|     away and reappear.
 | |
|   - Improve routing of streams. Streams that have a specific target
 | |
|     set will now be moved to the target when it appears instead of
 | |
|     staying on the fallback.
 | |
|   - Small memory leak fixes.
 | |
|   - Try to switch back to the user selected profile after finishing a
 | |
|     Bluetooth recording.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Add support for HF indicator 2 battery status.
 | |
|   - Add support for XAPL battery status.
 | |
|   - Set the Communication intended role for HFP profile.
 | |
|   - Enable SBC-XQ by default if not disabled by quirks.
 | |
|   - Fix some potential crashes due to excessive polling.
 | |
|   - Add aptx-LL codec and enable duplex for aptx-LL devices.
 | |
|   - Add FastStream codec. This is a codec that can use a
 | |
|     duplex SBC channel.
 | |
| 
 | |
| ## PulseAudio server
 | |
|   - Suggests a samplerate for the graph.
 | |
|   - Support for handling S/PDIF (IEC958) formats was added. This will
 | |
|     start working when the session manager supports configuring streams
 | |
|     and nodes in passthrough mode.
 | |
|   - Be smarter when handling devices without a negotiated format
 | |
|     yet so that they are visible as well. This makes virtual
 | |
|     devices show up immediately.
 | |
| 
 | |
| ## ALSA plugin
 | |
|   - Now suggests a samplerate for the graph.
 | |
| 
 | |
| ## JACK
 | |
|   - The jack.pc file can only be generated with meson >= 0.59.0. When
 | |
|     the jack-devel option is enabled, it will generate an error with
 | |
|     older meson.
 | |
|   - Small stability improvements when connecting/disconnecting in
 | |
|     Ardour.
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.33 (2021-08-05)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Better support for virtual sinks/sources for Pro Audio
 | |
|     profile.
 | |
|   - Better DMA-BUF format modifier negotiation.
 | |
|   - Support multiple sample rates in the graph. Not enabled
 | |
|     by default yet.
 | |
|   - Bluetooth can now automatically switch between headset
 | |
|     and audio profile.
 | |
|   - Documentation updates.
 | |
|   - Many improvements and crasher fixes.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Make AUX channels an official channel map, use this for the
 | |
|     PRO audio profile so that we can name the channels. This
 | |
|     make it possible to define virtual sources and sinks for
 | |
|     Pro Audio devices in a more reliable way.
 | |
|   - Fix scheduling of some virtual sinks/sources. (#1407)
 | |
|   - Fix potential corruption of ringbuffer because of multiple
 | |
|     concurrent writers. This might be the cause for many reported
 | |
|     crashes. (#1451)
 | |
|   - Don't place sockets in $HOME. (#1443)
 | |
|   - Improve DMA-BUF negotiation. Add a flag to avoid fixation
 | |
|     of a property so that producers can negotiate more
 | |
|     efficiently. This is used to negotiate DMA-BUF modifiers,
 | |
|     which should make more efficient use of the GPU. (#1084)
 | |
|   - Add support for multiple sample rates. The graph can switch
 | |
|     when IDLE to one of the supported rates. Add an option to
 | |
|     lock the rate as well. This is not enabled by default yet
 | |
|     because of driver bugs that need to be worked around first.
 | |
|   - Add node.lock-quantum property that can be used to lock the
 | |
|     quantum in place.
 | |
|   - Improve latency reporting in the loopback module.
 | |
|   - Make new client-node method to send the peer port id to the
 | |
|     mixer. This can be used to know where the buffers entering the
 | |
|     mixer are coming from. (#1471)
 | |
| 
 | |
| ## Tools
 | |
|   - pw-top should now also correctly show bluetooth devices. (#1540)
 | |
| 
 | |
| ## media-session
 | |
|   - Handle unset of the default node.
 | |
|   - Added a module that can switch the bluetooth profile to headset
 | |
|     profile when a stream wants to record from it.
 | |
| 
 | |
| ## JACK
 | |
|   - Only call the jack callbacks when the client is active. Some
 | |
|     JACK applications don't expect callbacks before the client is
 | |
|     active and crash (x42-dpl). (#1461)
 | |
|   - Emit client unregister event.
 | |
|   - Add per-client match rules in the config file to set app
 | |
|     specific configuration and tweaks. (#1456)
 | |
|   - Use peer_id to implement jack_port_get_buffer() from one of
 | |
|     our peer ports to get the data before it enters the mixer.
 | |
|     Makes the capture monitors work in Ardour6.8. (#1471)
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Add some broken kernel versions to the mSBC blocklist
 | |
|   - Avoid looping and consuming CPU when we can't write to the
 | |
|     BT socket.
 | |
|   - Use libfreeaptx instead of libopenaptx.
 | |
|   - Fix rounding errors in HW volume conversion.
 | |
| 
 | |
| ## PulseAudio server
 | |
|   - implement module-switch-on-connect to emulate pulseaudio
 | |
|     behaviour of new devices. Some desktop environments expect
 | |
|     this behaviour and break otherwise.
 | |
|   - Fix stream cleanup, make sure the stream is stopped before
 | |
|     destroying it. Might be cause for some of the reported
 | |
|     crashes.
 | |
|   - Update message API to use the JSON format.
 | |
| 
 | |
| ## Other
 | |
|   - Many documentation updates.
 | |
|   - Many cleanups and small improvements.
 | |
|   - Support the latest libcamera version. (#1435)
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.32 (2021-07-20)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Real-time priority handling for threads was reworked. Freewheeling
 | |
|     will now drop RT priorities to avoid being killed.
 | |
|   - Problems with filter chains and echo-cancel being linked in a loop
 | |
|     was fixed.
 | |
|   - alsamixer should now be able to see the mixer controls again.
 | |
|   - JACK has seen some latency reporting improvements that make Ardour
 | |
|     report latencies correctly.
 | |
|   - Many bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Fix a bug in the neon audio resampler code.
 | |
|   - There is now a node.link-group property to relate linked streams.
 | |
|     this can be used to track the dataflow with coupled streams.
 | |
|   - Fix a crash when recalculating latency on a destroyed port. (#1371)
 | |
|   - Filter chains and other modules that create streams can now also
 | |
|     be added to the daemon config itself. (#1309)
 | |
|   - Fix some potential deadlocks in timerfd. (#1377)
 | |
|   - Feedback links are skipped when recalculating latency to avoid
 | |
|     loops.
 | |
|   - The dummy driver and null-sink now stop the timerfd when following
 | |
|     another driver instead of generating useless graph wakeups.
 | |
|   - rt.limit was increased to 2 seconds. Some applications got killed
 | |
|     because they run lengthy code in the Real-Time thread. (#1344)
 | |
|   - Fix s24_32 to float, it was not sign extending properly. (#1393)
 | |
|   - The performance of the feedback loop check algorithm was improved
 | |
|     a lot, making complex graphs start much much faster.
 | |
|   - The zeroconf publish module now doesn't republish nodes every time
 | |
|     the volume changes. (#1406)
 | |
|   - A potential memory corruption error has been fixed in the loop
 | |
|     that could cause random crashes.
 | |
|   - Mempools can now be created from multiple threads at the same
 | |
|     time.
 | |
| 
 | |
| ## media-session
 | |
|   - Loops in coupled streams are now avoided. (#1394)
 | |
|   - Port changes for inactive profiles are ignored now by the
 | |
|     default-route module. (#1403)
 | |
| 
 | |
| ## ALSA
 | |
|   - Make sure that alibpref is not part of the device node name because
 | |
|     it is random. (#1362)
 | |
|   - Fixed an off-by-one that could cause midi events to end up with a
 | |
|     wrong timestamp and thus being discarded by some apps. (#1395)
 | |
|   - Fix some memory leaks when destroying a card object.
 | |
| 
 | |
| ## JACK
 | |
|   - Fix some invalid cycle wakeups that could cause JACK application to
 | |
|     run with a 0 buffer size. (#1386)
 | |
|   - JACK can now use rtkit to manage realtime priorities on threads.
 | |
|   - The Real-time priority is dropped when entering freewheel mode to
 | |
|     make sure we don't get killed when using too much CPU.
 | |
|   - jack_recompute_total_latencies() is now implemented, fixing the
 | |
|     latency reporting in Ardour. (#1388)
 | |
|   - Fix some overflows in time calculations.
 | |
|   - Ensure frame_rate in position is never 0.
 | |
|   - Graph callbacks are now emitted as well.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - RTP payload type is now set correctly for aptX, LDAC and SBC, which
 | |
|     should improve compatibility with devices that care about this.
 | |
| 
 | |
| ## PulseAudio server
 | |
|   - There is now a quirks database to deal with bad clients. The database
 | |
|     is builtin but can be made external later.
 | |
|     - Teams is now lied to and told all sink/sources use s16 samples to make
 | |
|       it show all sinks/sources.
 | |
|     - Firefox is forced to remove the DONT_MOVE flag on capture streams so
 | |
|       that you can move firefox streams with other tools.
 | |
|   - The UNDERFLOW warnings are now made into info log messages to not
 | |
|     spam the log too much. Many application just let things underrun
 | |
|     and PulseAudio did not warn about this either. (#910)
 | |
| 
 | |
| ## ALSA plugin
 | |
|   - The alsa plugin now uses the right metadata for finding the default
 | |
|     source and sink, which makes the volume controls reappear. (#1384)
 | |
| 
 | |
| ## Other
 | |
|   - Cleanups in pulse-server and pipewire.
 | |
|   - Documentation additions.
 | |
| 
 | |
| # PipeWire 0.3.31 (2021-06-28)
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Fixes for alsa-lib 1.2.5
 | |
|   - New pulseaudio modules: module-avahi-zeroconf,
 | |
|     module-pipe-source, module-roc-sink, module-roc-source.
 | |
|   - JACK has seen massive stability improvements. Locking
 | |
|     and correctness wrt to callbacks has been reworked. Also
 | |
|     thread priorities have improved.
 | |
|   - Handle various crashes and lockups when running out of file
 | |
|     descriptors.
 | |
|   - Bluetooth now uses a hardware database to disable
 | |
|     non-working features on listed devices.
 | |
|   - Scheduling quantum and rate can now be changed dynamically
 | |
|     with pw-metadata.
 | |
|   - Many bugfixes and improvements.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Improve cleanup of context in error cases.
 | |
|   - There is now a pw-test framework for improved unit tests.
 | |
|   - Improve property serialization to valid JSON.
 | |
|   - Fix some macros to work with better with coverity.
 | |
|   - Metadata permissions are checked now. Clients need the
 | |
|     M permission on an object to be able to set metadata for
 | |
|     it.
 | |
|   - The core metadata object will now remove metadata for
 | |
|     removed objects, the implementor does not need to worry
 | |
|     about that anymore.
 | |
|   - Audioadapter will now follow the rate of the graph with
 | |
|     the resampler adjusting itself dynamically.
 | |
|   - Core now has a metadata implementation helper. A context
 | |
|     will expose a metadata with settings that can be changed
 | |
|     at runtime. This can be used to change the loglevel or
 | |
|     graph quantum and samplerate on the fly.
 | |
|   - An infinite loop was fixed in the audio converter.
 | |
|   - Handle out-of-fds more gracefully. Handle truncated
 | |
|     control data by dropping the client connection.
 | |
|   - Fix profiler crash with many streams.
 | |
|   - Improve latency handling in pw-filter. There is now a
 | |
|     default handler and a ProcessLatency parameter to simplify
 | |
|     latency reporting.
 | |
|   - Latency reporting was improved in devices and streams.
 | |
|   - And example sink/source was added.
 | |
| 
 | |
| ## ALSA
 | |
|   - hardware mute and volume are now properties on the
 | |
|     Route param to make things easier.
 | |
|   - More fixes for alsa-ucm 1.2.5.
 | |
| 
 | |
| ## Tools
 | |
|   - spa-json-dump now properly encodes string and keys.
 | |
|   - pw-dump now shows the correct subject of the metadata.
 | |
| 
 | |
| 
 | |
| ## PulseAudio server
 | |
|   - Ensure the node.description is set, some applications
 | |
|     crash otherwise (TeamSpeak).
 | |
|   - Module loading and unloading was improved.
 | |
|   - module-avahi-zeroconf was implemented.
 | |
|   - module-pipe-source was implemented
 | |
|   - module-roc-sink and module-roc-source was implemented.
 | |
|   - The maximum amount of connections has been limited to 64,
 | |
|     like pulseaudio.
 | |
|   - Handle out-of-fds more gracefully.
 | |
|   - Fix overflow of read/write pointers.
 | |
|   - Source and sink state are now decoupled from the monitor
 | |
|     state and will report IDLE when not playing anything.
 | |
| 
 | |
| ## media-session
 | |
|   - Port switching should now happen to/from the port that
 | |
|     actually changed.
 | |
| 
 | |
| ## JACK
 | |
|   - The locking was reviewed. All callbacks are now emitted
 | |
|     from the PipeWire thread with the lock released and
 | |
|     the process function will be disabled for the duration
 | |
|     of the callback. This ensures that no two callbacks are
 | |
|     called at the same time.
 | |
|   - Improve internal consistency and try to never call callbacks
 | |
|     with invalid objects.
 | |
|   - Monitor port can now be accessed with system:monitor_%d
 | |
|   - client threads are now created with SCHED_FIFO and module-rt
 | |
|     is used to create the other RT threads. This should avoid
 | |
|     SIGKILL from RTKit in some cases.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Various bugfixes to improve connections to devices.
 | |
|   - Handle delayed UUID connection.
 | |
|   - There is now a hardware database that can disable features
 | |
|     in listed devices.
 | |
|   - Use libusb to detect availability of mSBC.
 | |
| 
 | |
| ## ALSA
 | |
|   - The virtual device name can now also contain a media role.
 | |
| 
 | |
| 
 | |
| # PipeWire 0.3.30
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| This is a quick emergency release to fix some severe
 | |
| problems with the previous release.
 | |
| 
 | |
| ## Highlights
 | |
|   - Recording from a monitor port should work again.
 | |
|   - JACK applications should now be more stable again.
 | |
|   - Freewheeling should not lock up anymore.
 | |
|   - Fix lockups in many pulseaudio apps.
 | |
|   - module-echo-cancel was implemented in pipewire-pulse
 | |
|   - Many other stability fixes.
 | |
| 
 | |
| ## PipeWire
 | |
|   - Improve module path logic.
 | |
|   - Improve logger formatting
 | |
| 
 | |
| ## PulseAudio server
 | |
|   - Make sure to pass 64 bits values for time on ARM 32 bits to
 | |
|     avoid protocol errors.
 | |
|   - Avoid a crash when unloading module-combine-sink.
 | |
|   - Avoid overflow in requested bytes, resulting in stalled
 | |
|     audio.
 | |
|   - Implement module-echo-cancel.
 | |
| 
 | |
| ## Bluetooth
 | |
|   - Handle latency parameters instead of failing.
 | |
| 
 | |
| ## JACK
 | |
|   - Fix locking in many places to avoid deadlocks and crashes.
 | |
|   - Fix port rename.
 | |
|   - Stop freewheeling correctly instead of deadlocking.
 | |
| 
 | |
| # PipeWire 0.3.29
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Latency reporting is now implemented.
 | |
|   - Many documentation updates and cleanups.
 | |
|   - module-combine-sink was added to PulseAudio server.
 | |
|   - Better handling of multichannel input profiles.
 | |
|   - Fix 100% volume issue when monitor suspends or profile
 | |
|     changes in some cases.
 | |
|   - Bugfixes and crashes
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - A new module-rt was added to acquire real-time scheduling
 | |
|     privileges without using RTKit.
 | |
|   - Documentation fixes and updates. Docs are now using a
 | |
|     custom theme.
 | |
|   - There is now a MANDATORY flag on properties that influence
 | |
|     how properties are filtered.
 | |
|   - Filter-chain now parses the LADSPA_PATH correctly when it
 | |
|     contains a colon separated list.
 | |
|   - Move `#pipewire` IRC channel to oftc.net.
 | |
|   - Fix an error where param changes were not emitted in all
 | |
|     cases.
 | |
|   - Implement Latency reporting. Latency values are propagated
 | |
|     through the graph so that each node knows the latency to
 | |
|     the output/input device. Synchronization in pw-stream has
 | |
|     been updated to use this.
 | |
|   - Some more upmix cases are added so that LFE, SIDE and REAR
 | |
|     can be generated from a mono channel as well.
 | |
|   - pw-stream and pw-filter will now emit the process event from
 | |
|     the real-time thread in a safe way, potentially avoiding some
 | |
|     of the harder to debug crashes.
 | |
|   - Fix potential stack overflow with serialize_dict.
 | |
|   - Add PIPEWIRE_NO_CONFIG to run without custom config files.
 | |
|   - The WebRTC echo canceler was added. Next versions will
 | |
|     integrate this better.
 | |
| 
 | |
| ## PulseAudio server
 | |
|   - module-combine-sink was implemented.
 | |
|   - Fix some segfaults when DBus connections fail.
 | |
|   - Support for listening on IPv6 was added.
 | |
|   - Fix a bug where many flushes could result in requests for too
 | |
|     much data from the client, causing sync, latency and garbled
 | |
|     sound problems after many seeks.
 | |
| 
 | |
| ## ALSA
 | |
|   - Also probe input paths for multichannel mappings. This makes
 | |
|     multichannel input ports show up in more cases.
 | |
|   - Fix headphones/front volume issue on some cards.
 | |
|   - Fix max volume issue when profile changes.
 | |
|   - Fix issue with UCM local config that was not available when the
 | |
|     device was opened in the server but the UCM was opened by the
 | |
|     session manager. Fixes alsa 1.2.5 compatibility.
 | |
| 
 | |
| ## JACK
 | |
|   - Implement latency reporting with the new Latency params.
 | |
| 
 | |
| # PipeWire 0.3.28
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| ## Highlights
 | |
|   - Freewheeling was implemented. This makes it possible to
 | |
|     export projects in ardour.
 | |
|   - A new powerful filter-chain module was added that can
 | |
|     be used to created all kinds of filter-chains from ladspa
 | |
|     and builtin plugins.
 | |
|   - Many more pulseaudio modules are now implemented:
 | |
|     module-ladspa-sink, module-ladspa-source, module-pipe-sink,
 | |
|     module-tunnel-sink, module-tunnel-source,
 | |
|     module-zeroconf-discover
 | |
|   - Fix a bug where devices would not appear after logout/login.
 | |
|   - Fix a bug where the volume was reset to 0 and devices would
 | |
|     have no audio.
 | |
|   - Config files are now installed in the data dir, system
 | |
|     overrides in /etc/pipewire and $HOME are checked first.
 | |
| 
 | |
| 
 | |
| ## PipeWire
 | |
|   - Implement freewheeling for JACK clients
 | |
|   - Add filter-chain module that can be used to construct
 | |
|     arbitrary graphs from ladspa and builtin plugins.
 | |
|   - Add new property to easily set algorithm params
 | |
|   - Add module-pulse-tunnel to tunnel audio to and from
 | |
|     a PulseAudio compatible server.
 | |
|   - Add a avahi zeroconf discover module, create pulse-tunnel
 | |
|     when PulseAudio devices are announced.
 | |
|   - Config files are now installed in the data dir, system
 | |
|     overrides in /etc/pipewire and $HOME are checked first.
 | |
|   - Applications now have their monitor ports named with the
 | |
|     "monitor" prefix to avoid confusion with the output ports.
 | |
|   - LICENSE clarifications.
 | |
| 
 | |
| ## GStreamer
 | |
|   - fixes to the pipewiresink plugin.
 | |
| 
 | |
| ## SPA plugins
 | |
|   - Fix a bug where the volume was reset to 0
 | |
|   - Add events to dbus plugin. This can be used to detect dbus
 | |
|     disconnects.
 | |
| 
 | |
| ## Media-session
 | |
|   - Handle dbus disconnect.
 | |
|   - Handle device reservation errors.
 | |
| 
 | |
| ## PulseAudio server
 | |
|   - Implement module-ladspa-sink and a new PipeWire-only
 | |
|     module-ladspa-source
 | |
|   - Implement module-pipe-sink
 | |
|   - Implement module-tunnel-sink and module-tunnel-source
 | |
|   - Fix a bug with module argument parsing
 | |
|   - Implement module-zeroconf-discover
 | |
| 
 | |
| ## ALSA plugin
 | |
|   - improve error handling
 | |
| 
 | |
| PipeWire 0.3.27
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Fix bug that caused bluetooth devices to stop working.
 | |
|   - Fix session-manager crash when switching users caused by
 | |
|     the DBus plugin cleanup errors.
 | |
|   - Improve volume handling of monitor ports.
 | |
|   - Fix GStreamer v4l2 support.
 | |
|   - Implement module-remap-sink and module-remap-source in
 | |
|     pipewire-pulse.
 | |
|   - More fixes and improvements.
 | |
| 
 | |
| 
 | |
| - PipeWire
 | |
|   - Move the loopback code into a module. Use this in pw-loopback
 | |
|     and pipewire-pulse. Fix some cleanup crashes.
 | |
|   - A dummy echo-cancel module was added. Later versions will
 | |
|     include the webrtc echo-canceler.
 | |
|   - State files don't have the X permission anymore.
 | |
|   - Move i18n core into a private header file.
 | |
|   - Stream can now advertise properties and receive property
 | |
|     updates.
 | |
|   - Fix an issue where the wrong index was used to address a port.
 | |
|     It caused Bluetooth devices to stop working.
 | |
| 
 | |
| - SPA plugins
 | |
|   - Only do LFE filtering on channels we created.
 | |
|   - Improve name and description of devices.
 | |
|   - Improve cleanup in DBus connections and sources to avoid crash
 | |
|     when destroying.
 | |
|   - Improved volume handling. Hardware, Software and Monitor
 | |
|     volumes are now properly separated and handled.
 | |
|   - Support for S8 and S8P formats was added.
 | |
| 
 | |
| - Tools
 | |
|   - pw-cli can now also create Struct from JSON arrays.
 | |
| 
 | |
| - Session-manager
 | |
|   - The session manager can now also create passive links. This
 | |
|     makes is possible to suspend effect chains together with the
 | |
|     sinks when not in use.
 | |
|   - Match rules now check the complete property value instead of
 | |
|     only the start.
 | |
|   - Handle multiple pending param enumerations, take only last
 | |
|     result. This fixes some volume update issues.
 | |
| 
 | |
| - GStreamer plugins
 | |
|   - GStreamer plugins now advertise handling DMABUF explicitly. This
 | |
|     is currently the only way to avoid a memcpy for v4l2 devices.
 | |
| 
 | |
| - Device support
 | |
|   - sync ACP with pulseaudio, merge upstream patch instead of our
 | |
|     hack to workaround missing duplex devices.
 | |
|   - V4l2 devices don't expose their fd anymore. Previously the fd
 | |
|     and mmap offsets were passed to the client to access the buffer
 | |
|     memory but that could create security issues.
 | |
| 
 | |
| - Bluetooth
 | |
|   - Don't unregister the profiles on shutdown because this can cause
 | |
|     delay, just close the dbus connection.
 | |
|   - Bluetooth devices now try to use the global samplerate from the
 | |
|     graph.
 | |
| 
 | |
| - PulseAudio server
 | |
|   - Implement remap-sink and remap-source modules using the
 | |
|     new loopback module.
 | |
| 
 | |
| PipeWire 0.3.26
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - I18n support, with translations merged from PulseAudio.
 | |
|   - New pw-link tool.
 | |
|   - Many Bluetooth improvements, support for hardware volumes.
 | |
|   - Support for 64 channel devices.
 | |
|   - Stability fixes and improvements.
 | |
| 
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - The link factory can now also make links between nodes and
 | |
|     ports by name so that it can be used in scripts.
 | |
|   - Add module-protocol-simple that can stream raw audio on a
 | |
|     socket.
 | |
|   - Added i18n support. Merge PulseAudio translations for the ACP
 | |
|     library so that we don't cause regressions.
 | |
|   - Support more than 19 channels in the channel mixer.
 | |
|     This makes all channels usable on 32 and 64 channel cards.
 | |
|   - Detect if we're running in a VM and allow for tweaking some
 | |
|     settings such as the max-quantum to make things work better in
 | |
|     VMs.
 | |
|   - Fix a potential crash when connecting a client and updating
 | |
|     permissions.
 | |
|   - Fix a potential crash when trying to link incompatible ports.
 | |
|   - Lingering links in error will now be destroyed automatically.
 | |
| 
 | |
| - Tools
 | |
|   - Added new pw-link tool to list and monitor ports and to
 | |
|     list, monitor, create and destroy links between them.
 | |
|   - pw-cli can now also list params by name.
 | |
|   - pw-dump now outputs Spa:String:JSON types in metadata as properly
 | |
|     parsed and formatted JSON so that tools can parse the
 | |
|     metadata values using a JSON parser.
 | |
| 
 | |
| - Session-manager
 | |
|   - Add logind support. The bluetooth monitor can only be started
 | |
|     for one user at the time, so use logind detect active seats.
 | |
|   - ALSA icon names were improved to match what PulseAudio does.
 | |
|   - Improve the bluetooth icon name. Also use the device alias
 | |
|     as the device description, like PulseAudio.
 | |
| 
 | |
| - Device support
 | |
|   - When devices become inaccessible, they are now removed from
 | |
|     the PipeWire graph.
 | |
|   - Fix datatype selection for buffers in v4l2 and libcamera.
 | |
| 
 | |
| - Bluetooth
 | |
|   - Various memory leaks and crashes are fixed.
 | |
|   - Added support for AVRCP hardware volume.
 | |
|   - Added support for HSP/HFP hardware volume.
 | |
| 
 | |
| - PulseAudio server
 | |
|   - Fix module-loopback connections to monitor ports.
 | |
|   - Implement module-native-protocol-tcp.
 | |
|   - Handle nodes and streams with > 32 channels. The PulseAudio
 | |
|     API only supports up to 32 channels so only make those 32
 | |
|     first channels available with the PA API.
 | |
|   - Implement module-simple-protocol-tcp.
 | |
|   - Improve events emitted by the server.
 | |
|   - Improvements to channels and channel_map properties on
 | |
|     modules. one can imply the other and they should match when
 | |
|     both given.
 | |
|   - null-sink will now have their volume work correctly by
 | |
|     default.
 | |
| 
 | |
| - JACK
 | |
|   - JACK development files can now optionally be installed.
 | |
| 
 | |
| PipeWire 0.3.25
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Many stability improvements.
 | |
|   - Plug fd leak in flatpak detection
 | |
|   - add pw-loopback tool and support module-loopback
 | |
|   - volume restore for virtual sinks/sources or other sink/sources
 | |
|     without hardware volume.
 | |
|   - Fix cracks and pops in audio capture.
 | |
|   - Many bluetooth improvements and compatibility fixes.
 | |
| 
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Hex encode invalid SEC_LABEL properties to avoid generating
 | |
|     invalid json.
 | |
|   - Small fixes to how nodes are started to avoid crashes.
 | |
|   - Make sure ports are only scheduled after being fully
 | |
|     negotiated to avoid crashes.
 | |
|   - Implement coverity into CI, fix some bugs detected by
 | |
|     coverity.
 | |
|   - Plug leak in flatpak detection.
 | |
|   - Fix crash when removing globals in some cases.
 | |
|   - Fix crash because the mixer info was not removed from a
 | |
|     port in all cases.
 | |
|   - Add PIPEWIRE_AUTOCONNECT environment variable to disable
 | |
|     stream autoconnect. Also add a config option to disable
 | |
|     autoconnect.
 | |
|   - Improve wildcard in format helpers.
 | |
|   - Add env variable to disable journald logging.
 | |
| 
 | |
| - Tools
 | |
|   - Add a new pw-loopback tool to loop a capture device to a
 | |
|     playback device.
 | |
|   - Display localized strings correctly in pw-top
 | |
|   - Add some more options to pw-dot
 | |
| 
 | |
| - Session-manager
 | |
|   - When a new node is configured and some stream have this
 | |
|     as the default target, move them to it.
 | |
|   - Fix some crashes.
 | |
|   - Implement volume restore on nodes without routes. This makes
 | |
|     it possible to restore volume on purely software nodes like
 | |
|     null-sinks.
 | |
|   - Also try to suspend errored nodes so that they may leave the
 | |
|     error state and be reused again.
 | |
|   - Break endless link loops when something went wrong.
 | |
| 
 | |
| - Device support
 | |
|   - Fix monitor volumes, they are now separate from the hardware
 | |
|     volume.
 | |
|   - Fix cracks and pops in alsa capture caused by mismatch between
 | |
|     resampler and capture source.
 | |
|   - Add start-delay config option to alsa sink.
 | |
|   - Ensure the PipeWire midi ports start from a higher number so
 | |
|     that the lower port numbers are available to apps as before.
 | |
| 
 | |
| - Bluetooth
 | |
|   - source devices are now removed when idle
 | |
|   - Support using pipewire as Audio Gateway.
 | |
|   - LDAC encoding quality can be configured now
 | |
|   - Implement codec switching for HFP
 | |
|   - Implement codec switching with new device property.
 | |
|   - Improved stability and compatibility
 | |
|   - Autoconnect device profiles at startup
 | |
|   - Add AAC bitrate mode configuration
 | |
|   - Make it possible to use an A2DP source as an input device. You
 | |
|     can then use your phone as an A2DP microphone, for example.
 | |
|   - Remove battery reporting when RFCOMM connections is closed.
 | |
| 
 | |
| - PulseAudio server
 | |
|   - Add some workarounds for Blueman
 | |
|   - Set correct errno values, fixes a hang in load-module of a
 | |
|     non-existing module
 | |
|   - Try to not send inconsistent information to clients.
 | |
|   - Fix some crashes.
 | |
|   - Add support for the new send-message API, use this to
 | |
|     switch bluetooth codecs.
 | |
|   - Fix draining by making sure we are started.
 | |
|   - Handle 0 sink and source as the default sink/source.
 | |
|   - Implement module-loopback
 | |
| 
 | |
| - JACK
 | |
|   - Fix some memory leaks when closing a client
 | |
|   - Add self-connect config option to limit where clients
 | |
|     can connect themselves.
 | |
|   - Don't crash when apps call _port_get_buffer() on a
 | |
|     port that is not their own but simply return NULL.
 | |
|     This fixes a crash in Ardour6.
 | |
|   - Improve client added/removed callbacks. Sometimes it would
 | |
|     emit a client remove when there were still ports for the
 | |
|     client.
 | |
|   - make sure midi port names are stable across reboots.
 | |
| 
 | |
| PipeWire 0.3.24
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Many JACK midi improvements and device support.
 | |
|   - Fixes in gnome-control-center default sink/source handling.
 | |
|   - Many small performance improvements in alsa device handling
 | |
|     and latency. There should also be less cracks/pops and xruns
 | |
|     now.
 | |
|   - Fixes for gnome-control-center default sink/source handling.
 | |
|   - More bluetooth compatibility improvements.
 | |
| 
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Implement simple upmixing.
 | |
|   - Disable the resampler when not used. This improves latency
 | |
|     and CPU usage.
 | |
|   - Handle max-quantum on devices and try to not make the quantum
 | |
|     larger than the device buffer size.
 | |
|   - Improvements to how nodes and links are activated. It should
 | |
|     now result in less xruns and cracks/pops.
 | |
|   - meson uses the feature options everywhere now.
 | |
|   - Handle volume remap in the channelmixer. This fixes the channels
 | |
|     on multichannel devices.
 | |
|   - Try to escape invalid JSON string characters.
 | |
|   - Keep better track of changed parameters in audioconvert.
 | |
|   - Improve config files, make arrays where needed.
 | |
|   - Respect NO_COLOR where possible
 | |
|   - Support in-place config file parsing to avoid allocations and
 | |
|     improve startup performance.
 | |
|   - There is now a config option to enable non-power-of-two quantums.
 | |
|   - Preliminary support for upmixing and generating LFE channels.
 | |
| 
 | |
| - Session-manager
 | |
|   - Default nodes are not stored as JSON in the metadata. This
 | |
|     is more readable and introspectable.
 | |
|   - More default-nodes and default-routes improvements. Port
 | |
|     switching should work better now.
 | |
|   - Wait until all devices are scanned before linking clients.
 | |
|   - Fixes some crashes.
 | |
|   - Sinks (monitors) can now be set as default sources.
 | |
| 
 | |
| - Device support
 | |
|   - Fix startup timers for alsa devices.
 | |
|   - Improve timers in alsa when quantum changes. It should cause
 | |
|     less xruns and cracks.
 | |
|   - Fix UCM setup of capture devices.
 | |
|   - Only disable IRQ in alsa when not batch. For batch devices the
 | |
|     hw pointers are updated each IRQ so we need to keep them enabled.
 | |
|     This massively improves latency on USB batch devices to the same
 | |
|     level as JACK (with small enough period size).
 | |
| 
 | |
| - Bluetooth
 | |
|   - Improvements to profile switches.
 | |
|   - Improvements to volume handling.
 | |
|   - Fixes for A2DP sources
 | |
|   - Add support for battery status when available.
 | |
|   - Many other small improvements.
 | |
| 
 | |
| - PulseAudio server
 | |
|   - Handle NULL in set_default_sink/source to clear the default.
 | |
|   - Implement a workaround for gnome-control-center when setting
 | |
|     the default sink/source. It also sets the target in
 | |
|     stream-restore to the new default. This fixes moving streams
 | |
|     in gnome-control-center.
 | |
|   - Fix some races by replying to some requests after the operation
 | |
|     completed.
 | |
|   - Prefer formats of the extended format API.
 | |
|   - Create a pid file on startup to improve compatibility with apps
 | |
|     that look for it.
 | |
|   - Capture streams can now be moved to monitors with pavucontrol.
 | |
|   - Fixes for crashes.
 | |
| 
 | |
| - JACK
 | |
|   - jack clients can now connect to the 'default' server.
 | |
|   - Move midi ports back to the midi client.
 | |
|   - Only mark midi hardware ports as terminal/physical.
 | |
|   - Use the same midi names as a2jmidid.
 | |
|   - match system ports in get_ports.
 | |
|   - Improve compatibility with some apps that require a
 | |
|     fixed latency.
 | |
|   - Beginnings of the libjackserver implementation.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.23
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Fixes for some critical bugs in last release.
 | |
|   - Fix bug where audio was not drained properly at the end of
 | |
|     playback, causing repeating sound.
 | |
|   - Profile and route switching was improved and should mimic
 | |
|     more what pulseaudio did.
 | |
|   - Various fixes for xruns in capture and playback.
 | |
|   - Bluetooth now supports delay adjustment and various other
 | |
|     improvements.
 | |
|   - The pulseaudio server now correctly identifies AC3 and DTS
 | |
|     streams and returns a not supported error instead of playing
 | |
|     static.
 | |
|   - Multichannel support was improved in the alsa plugin and
 | |
|     the channel mixer. Channels should now play on the right
 | |
|     speakers in all cases.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Small fixes and improvements in JSON parsing and encoding.
 | |
|   - Improvements to param handling in audioconverter. It would
 | |
|     previously not always notify of changes.
 | |
|   - Avoid updating some properties that we use internally such
 | |
|     as the object id and the node.id.
 | |
|   - log.level in the config files is now actually used.
 | |
|   - the PIPEWIRE_LATENCY env variable should always override
 | |
|     any application settings in filter/stream/jack.
 | |
|   - The config file can now contain filer and stream properties
 | |
|     to, for example, control the resampler, mixer and latency.
 | |
|   - Add sandboxing to the systemd services
 | |
|   - Various FreeBSD fixes.
 | |
|   - Improve draining and a way to exit the drain state as well.
 | |
|   - Many multichannel fixes. Channel remapping should now be
 | |
|     correct.
 | |
|   - Fix bug with repeating audio at the end of playback because
 | |
|     the drain in the resampler was not draining all channels.
 | |
|   - RTKit default rt.prio has been increased to 88. This will
 | |
|     likely still be clamped to 20 until distros increase the
 | |
|     max priority.
 | |
| 
 | |
| - Session-manager
 | |
|   - Don't try to switch to Pro Audio profile, this should be
 | |
|     a user choice only.
 | |
|   - Don't crash when metadata was disabled such as when not
 | |
|     using the audio features of pipewire.
 | |
|   - Rework the profile and route handling.
 | |
|   - Add systemd unit files for the media-session
 | |
|   - Device names should now also have sane names so that tab
 | |
|     pactl completion works on them.
 | |
| 
 | |
| - Device support
 | |
|   - Fix ALSA format enumeration in more cases. Use the channels
 | |
|     and rate as a filter.
 | |
|   - Make sure the graph doesn't ever use buffers larger than
 | |
|     the alsa device buffer size or we get xruns.
 | |
|   - Tuning of the alsa device timeout handling and dynamic
 | |
|     resampler. There should now not be any xruns when streams
 | |
|     appear and disappear or when the quantum changes.
 | |
|   - Fix bug in alsa device when reassigning to a new driver,
 | |
|     in some cases the dynamic resampler was not activated and
 | |
|     things would drift out of sync and fail.
 | |
|   - Fixes in quantum changes for ALSA capture and how the
 | |
|     resampler is drained and fed with the new samples.
 | |
| 
 | |
| - Bluetooth
 | |
|   - Delay adjustment has been implemented now. Bluetooth
 | |
|     devices should now be more synchronized with video due
 | |
|     to proper delay reporting. Because BT delays can be
 | |
|     large, it can cause hickups in some players.
 | |
|   - Fix volume in bluetooth devices.
 | |
|   - Codec switch improvements.
 | |
| 
 | |
| - PulseAudio server
 | |
|   - Latency offset adjustment is now implemented and functional
 | |
|     for bluetooth devices. It is not working for alsa devices
 | |
|     yet.
 | |
|   - Handle unsupported formats. Previously we would accept encoded
 | |
|     formats and play noise. This fixes AC3 playback in vlc.
 | |
|   - Move some of the configurable parameters to the config file.
 | |
|   - Fix a fatal use after free when playing samples
 | |
|   - Improve module handling. loaded modules now show up in the
 | |
|     list of modules and can be unloaded. This also prepares the
 | |
|     core for more module implementations later.
 | |
| 
 | |
| - ALSA plugin
 | |
|   - Fix drain with very large buffers, we need to manually start
 | |
|     the stream before draining.
 | |
|   - Fix the channel layout handling.
 | |
|   - Improve compatibility with apps that expect the poll to only
 | |
|     return when there is activity.
 | |
|   - Fix drain for capture
 | |
| 
 | |
| - JACK
 | |
|   - Add a config option to shorten and filter client names
 | |
|   - Increase the length of the client name size and make sure
 | |
|     we don't exceed the allocated size.
 | |
|   - We now include our own jack header files so we can build
 | |
|     without depending on another jack-devel package. We don't
 | |
|     yet install the headers or provide pkgconfig files.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.22
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Per client config files replace the module-profiles. It's
 | |
|     now possible to tweak settings and load custom modules.
 | |
|   - Pro Audio card profile support. You can now select the
 | |
|     Pro Audio profile and have raw device access with the
 | |
|     maximum number of channels and no mixer controls. This is
 | |
|     the usual setup for managing high end Pro Audio cards.
 | |
|   - Many fixes and improvements in the JACK library to make
 | |
|     devices look and integrate better.
 | |
|   - Many bluetooth improvements. Playback should be more
 | |
|     reliable and better synchronized. Support for the HFP HF
 | |
|     profile.
 | |
|   - Small fixes and improvements all over the map.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Add support for restrictions requested by a client. This
 | |
|     makes it possible to implement Flatpak policy for emulated
 | |
|     PulseAudio clients as well.
 | |
|   - Fix removal of params in objects. Previously they would not
 | |
|     be removed from the cache.
 | |
|   - Remove mlock warnings by default. There is an option to enable
 | |
|     them again if you want to check if your system is optimized.
 | |
|   - Remove LimitMEMLOCK lines from the service files. They can
 | |
|     only lower the system settings and are thus not useful.
 | |
|   - Implement per-client config files. Each pipewire client will
 | |
|     now read a config file that you can use to configure the
 | |
|     context of the client.
 | |
|   - Implement state and config load/save in pipewire. This is used
 | |
|     by the session manager or other apps.
 | |
|   - Make an option to disable dbus support.
 | |
|   - Add tool to convert pipewire config to JSON.
 | |
| 
 | |
| - Session-manager
 | |
|   - Give all permissions to Manager flatpak apps. In the future
 | |
|     we will use the Permission store to remember user settings.
 | |
|   - Improvements to default audio/sink handling.
 | |
|   - Add option to configure device suspend time.
 | |
|   - Small fixes in route handling.
 | |
| 
 | |
| - Device support
 | |
|   - Complain when ACP profile files are not found and use
 | |
|     a fallback in order to get something working.
 | |
|   - Add volume support to monitor ports.
 | |
|   - Fix resume from suspend for ALSA in more cases.
 | |
|   - ALSA ACP cards now have a Pro Audio profile that exposes
 | |
|     the raw card devices.
 | |
| 
 | |
| - Bluetooth
 | |
|   - Enable A2DP delay reporting. This improves audio/video sync
 | |
|     when playing audio over bluetooth.
 | |
|   - Fix stuttering in A2DP source
 | |
|   - Tweak buffer size and latency settings to avoid stuttering
 | |
|   - More work on HSP and HFP support
 | |
|   - Fix initial profile configuration
 | |
|   - Add HFP HF support
 | |
| 
 | |
| - PulseAudio server
 | |
|   - Small tweaks in capture packet size to avoid crashes in some
 | |
|     apps.
 | |
|   - Detect Flatpak apps and requests the flatpak permissions from
 | |
|     the session manager. This means that Flatpak pulseaudio apps
 | |
|     will now run with reduced permissions.
 | |
| 
 | |
| - ALSA plugin
 | |
|   - Reduce min buffer size in the plugin for lower possible
 | |
|     latency.
 | |
| 
 | |
| - JACK
 | |
|   - implement some missing methods to make qjackctl work again.
 | |
|   - Use the context data thread instead of making our own. This
 | |
|     fixes the issue where the data thread was not given RT
 | |
|     priority correctly.
 | |
|   - Pass extra jack flags around in port properties. This makes
 | |
|     CV ports in carla work.
 | |
|   - Many tweaks to the port names and aliases. Unwanted characters
 | |
|     are filtered out, giving better names to jack apps. Default
 | |
|     device names are now equal to those seen in pulseaudio apps.
 | |
|   - Add an option to make a separate client for the monitor ports
 | |
|     of a device. This makes it more usable in apps.
 | |
|   - add support for system:playback_N and system:capture_N port
 | |
|     names for apps that hardcode these port names.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.21
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Many PulseAudio compatibility fixes. Handling of corked
 | |
|     streams, the prebuf setting, seek modes and stream flags
 | |
|     are now implemented correctly.
 | |
|   - Ports and Profiles are now managed by the session manager
 | |
|     and can save and restore previous settings.
 | |
|   - ALSA device handling has been tweaked for maximum
 | |
|     compatibility at the expense of latency. There are tuning
 | |
|     options in the config file.
 | |
|   - Improved Bluetooth support. HSP is disabled by default
 | |
|     because it is old and deprecated and in some cases causes
 | |
|     conflicts with the newer HFP profile. Codec switching is
 | |
|     now implemented as well.
 | |
|   - PipeWire accepts donations with liberapay now.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Improve draining in pw-stream.
 | |
|   - pw-stream now uses busy metadata by default. This makes sure
 | |
|     that no writer can write to buffers when readers are still
 | |
|     busy.
 | |
|   - Fix handling of empty array/choice instead of failing.
 | |
|   - Fix crashes when creating properties from empty strings.
 | |
|   - Make it possible to pass an array to module-access
 | |
|     access.allowed variables
 | |
|   - Fix small bug in argument parsing in pw-cat
 | |
| 
 | |
| - Session-manager
 | |
|   - Restore route volumes in all cases, also when switching
 | |
|     routes.
 | |
|   - Use a default route volume for unknown routes instead of
 | |
|     letting the system decide on a default.
 | |
|   - Improve profile handling. Don't try to restore unavailable
 | |
|     profiles. Implement the profile switching in the session
 | |
|     manager now.
 | |
|   - Fix handling of Virtual sources as defaults.
 | |
|   - Handle port switching in the session manager. Implement
 | |
|     save and restore of default ports per profile.
 | |
| 
 | |
| - GStreamer
 | |
|   - Fix a crash with zero SPA_PARAM_BUFFERS_size
 | |
| 
 | |
| - Device support
 | |
|   - v4l2-source will now respect the requested memory types.
 | |
|   - ALSA buffering has been tweaked. USB devices should have
 | |
|     less XRuns by default. Parameters can be tweaked to
 | |
|     decrease the latency on capable devices. Also fix a case
 | |
|     where a quantum change would cause an xrun.
 | |
|   - Fix mute in bluetooth devices
 | |
|   - bluetooth devices are not paused in idle anymore for
 | |
|     improved compatibility.
 | |
|   - Codec switching for bluetooth is implemented along with
 | |
|     config options to select the codecs manually.
 | |
|   - HSP for bluetooth is now disabled by default. Most devices
 | |
|     support the newer HFP profile and some devices fail when
 | |
|     both are available.
 | |
|   - Reduce the amount of events the ALSA plugins emit by bundling
 | |
|     them.
 | |
| 
 | |
| - PulseAudio server
 | |
|   - Implement the suspend command
 | |
|   - Fixes volume in sample info
 | |
|   - Fix playback of samples, sometimes samples would be clipped
 | |
|     short. Also implement the target sink for the sample.
 | |
|   - Use rate match to feed samples. This way the latency can
 | |
|     be kept to a minimum.
 | |
|   - Latency has been tuned some more, more closely emulating
 | |
|     pulseaudio behaviour.
 | |
|   - Improve default sink/source handling. Make sure all events
 | |
|     are sent correctly when defaults change.
 | |
|   - Handle underrun better without causing sync issues. Make sure
 | |
|     to pause in corked state.
 | |
|   - Implement rewind due to seeks, fixes GStreamer seeking.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.20
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Latency was reduced in ALSA and PulseAudio and time
 | |
|     reporting has improved a lot.
 | |
|   - Bluetooth now has a native HFP backed, SBC XQ and
 | |
|     mSBC support.
 | |
|   - Many bugfixes and improvements, improved device
 | |
|     support.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - pw-dump can now dump all objects such as Endpoints
 | |
|   - pw-dump has a -m option to monitor changes
 | |
|   - pw-dump can now dump metadata
 | |
|   - pw-stream can now use the rate-match io to exactly
 | |
|     produce the required number of samples for the
 | |
|     current cycle. When using this feature, a stream can
 | |
|     achieve the same low-latency as pw-filter.
 | |
|   - spa-acp-tool can now load a custom profile-set and
 | |
|     correctly parses the volume updates
 | |
|   - There is now a nofail option when loading modules
 | |
|   - The connection has been made reentrant to fix some
 | |
|     strange random problems with metadata.
 | |
|   - Turn some errors into warnings or simply info.
 | |
|   - Executables are now built with PIE
 | |
|   - S24OE formats should work now (MAudio FastTrack Pro)
 | |
|   - Remove mlock warnings. Add support for mlockall with
 | |
|     a config option.
 | |
| 
 | |
| - Session-manager
 | |
|   - There are now config files for bluez and v4l2 modules
 | |
|   - Improve ALSA device and node properties
 | |
|   - Bluetooth devices have better properties now.
 | |
|   - The default device routing has been improved.
 | |
| 
 | |
| - Device support
 | |
|   - Port priorities are updated for UCM devices
 | |
|   - ACP devices notify change in routes in all cases
 | |
|   - There is now RW support in ALSA devices to increase
 | |
|     compatibility.
 | |
|   - Many improvements to Bluetooth. SBC XQ support can now
 | |
|     be enabled with a config option. mSBC can be enabled
 | |
|     with an option.
 | |
|   - Bluetooth devices not expose Routes so that they look
 | |
|     more like how PulseAudio handles them
 | |
|   - Gracefully handle missing profile-sets
 | |
|   - There is now a native HFP backend
 | |
|   - Improve card names in some cases.
 | |
|   - pause-on-idle is now disabled for ALSA devices. This can
 | |
|     reduce pops and clicks when the device is stopped.
 | |
| 
 | |
| - ALSA plugin
 | |
|   - Use rate-match to reduce the latency
 | |
|   - Implement a _delay() function to get smoother timestamps.
 | |
|   - Fix property parsing. Fixes volume changes in alsamixer.
 | |
| 
 | |
| - PulseAudio server
 | |
|   - Use rate-match to reduce the latency. This also reduces
 | |
|     the buffering in audioconvert and improves timestamp
 | |
|     reporting.
 | |
|   - Implement rate changes now that we have rate-match
 | |
|     support.
 | |
|   - pactl stats will now work
 | |
|   - Fix excessive memory usage when a capture client doesn't
 | |
|     read fast enough.
 | |
| 
 | |
| PipeWire 0.3.19
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Startup after login should be fixed now with inotify
 | |
|     used to wait for permissions.
 | |
|   - Channels should be mapped correctly now.
 | |
|   - Many bluetooth improvements in LDAC, AptX-HD. AAC was
 | |
|     also added. Headsets should work better now.
 | |
|   - pipewire-libpulse was removed. It is now completely
 | |
|     replaced by pipewire-pulse.
 | |
|   - Fix a crasher bug in pipewire-pulse and some memory leaks.
 | |
|   - Fix a bug with feedback loop that would cause 100% CPU.
 | |
|   - A new pw-top tool to display real-time graph performance.
 | |
|   - The example session manager now has config files.
 | |
|   - The config file format was changed to use the SPA JSON
 | |
|     tokenizer. This makes it more flexible and extensible.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Fix debug of id in format channels
 | |
|   - Audioconvert should now remap channels correctly in all
 | |
|     cases.
 | |
|   - Feedback loops were not scheduled correctly and would
 | |
|     cause 100% CPU usage.
 | |
|   - Small improvements to the profiler to also log incomplete
 | |
|     graph status.
 | |
|   - a new tool pw-top was added that prints real-time performance
 | |
|     stats of the graph.
 | |
|   - the rtkit module now sets the nice level to -11
 | |
| 
 | |
| - Session-manager
 | |
|   - The session manager would sometimes link dont-reconnect
 | |
|     nodes to another node, which would leak monitor streams in
 | |
|     pipewire-pulse.
 | |
|   - The session manager now has configuration files. Config files
 | |
|     can also be placed in the user home directory to make custom
 | |
|     configurations.
 | |
|   - The session managers now creates unique device and node
 | |
|     names for alsa and v4l2 devices.
 | |
| 
 | |
| - Device support
 | |
|   - Many improvements in Bluetooth codecs, LDAC stuttering,
 | |
|     AptX-HD negotiation, LDAC ABR support
 | |
|   - Bluetooth supports AAC audio now.
 | |
|   - Many fixes to Bluetooth SCO transport used in headsets.
 | |
|   - inotify support in device monitors
 | |
|   - ACP was synced with the latest pulseaudio code
 | |
|   - Fix a bug in enumeration of device ports.
 | |
| 
 | |
| - PulseAudio server
 | |
|   - seek flags and offset are now supported, making gstreamer
 | |
|     pulse elements work better.
 | |
|   - Fix a crasher bug in pipewire-pulse, we sometimes would
 | |
|     write too much to the ringbuffer
 | |
|   - Fix some memory leaks in error cases.
 | |
|   - Fix handling of NULL string to locate default sink/source
 | |
| 
 | |
| - JACK layer
 | |
|   - Ports can also be found with the aliases now, making
 | |
|     qjackctl work in more cases.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.18
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - More work in the PulseAudio server. It should be compatible
 | |
|     with more applications.
 | |
|   - Bluetooth now support extra codecs such as AptX/HD and LDAC.
 | |
|   - Support for virtual sources and sink was improved a lot.
 | |
|   - Added a new pw-dump tool to dump the objects in JSON formats
 | |
|     and for filtering them with tools like jq.
 | |
|   - Many more stability fixes and improvements.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Silence some harmless warnings
 | |
|   - pw-cli can now be used to set parameters.
 | |
|   - Streams now perform the correct channel mapping when linked
 | |
|     to non-standard multichannel devices. Previously channels
 | |
|     would get swapped.
 | |
|   - port, node and device params are now cached in the server.
 | |
|     This avoids opening and closing devices whenever some client
 | |
|     enumerates formats, which improves performance a lot,
 | |
|     especially in cases where opening a device is slow.
 | |
|   - Add a command to keep a device open during negotiation. This
 | |
|     is used to enumerate and set a format while opening the
 | |
|     device just once, improving performance.
 | |
|   - The null-sink scheduling was fixed.
 | |
|   - A memory corruption bug was fixed in format conversion, this
 | |
|     could cause crashes, silent channels or other undefined
 | |
|     behaviour.
 | |
|   - There is now a simple JSON parser.
 | |
| 
 | |
| - Session-manager
 | |
|   - Settings files are now stored in JSON. With the json parser
 | |
|     this is easier to parse and extend
 | |
| 
 | |
| - Device support
 | |
|   - Bluetooth now supports additional codecs: LDAC, AptX and
 | |
|     AptX HD. LDAC is known to not work very well yet.
 | |
|   - ALSA devices will now default to the max supported channels
 | |
|     if nothing else is specified. This makes it possible to use
 | |
|     8+ channel cards with the alsa-pcm module, which is not
 | |
|     supported with the default alsa-acp module.
 | |
|   - Enable mSBC support in oFono.
 | |
|   - Add an option to disable hardware mixers
 | |
|   - ALSA now improves support for batch devices.
 | |
|   - The udev rules had references to Pulseaudio removed in order
 | |
|     to not create conflicts.
 | |
|   - Fix a potential crash in bluetooth devices when
 | |
|     disconnecting.
 | |
|   - UCM cards now use HW volume when possible.
 | |
| 
 | |
| - PulseAudio server
 | |
|   - The id can now be used as the name to locate cards and
 | |
|     devices
 | |
|   - Report streams with planar formats as well
 | |
|   - Better error reporting when stream create fails
 | |
|   - module-null-sink can now handle channels, rate and
 | |
|     channel_map properties
 | |
|   - Add support for 3 types of virtual devices: source,
 | |
|     sink and duplex.
 | |
|   - set-port was fixed
 | |
|   - Some buffer parameters were tweaked to improve
 | |
|     performance, compatibility and stuttering with lower
 | |
|     latency.
 | |
|   - NULL can be used as a name for the device sink/source
 | |
|   - Support lookup of monitor names
 | |
|   - Set properties more like pulseaudio so that some
 | |
|     clients (Teamspeak) don't crash anymore
 | |
| 
 | |
| PipeWire 0.3.17
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Fix crasher bug for kwin when screensharing stopped.
 | |
|   - Massive improvements and compatibility fixes in the
 | |
|     PulseAudio server.
 | |
|   - The session manager now has a config directory in
 | |
|     /etc/pipewire/media-session.d/ It will look for files there
 | |
|     to activate session manager modules. Packagers can use
 | |
|     this to only activate the audio modules when the PulseAudio
 | |
|     server, libjack.so or the alsa modules are installed.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - We now clear hooks before adding them. Some application
 | |
|     did not clear them and had random data for the destroy
 | |
|     callback.
 | |
|   - Return -ENOENT from unknown resources so apps can handle
 | |
|     this better. It's a common problem when an app tries to
 | |
|     introspect and object but it disappeared before the message
 | |
|     reached the server. Apps should ignore this.
 | |
|   - channelmap information is now passed with the volume
 | |
|     settings.
 | |
|   - DMABuf is not mmapp()ed anymore with the FLAG_MAP_BUFFERS in
 | |
|     the stream or filter. This is because DMABuf usually
 | |
|     requires more that just a simple mmap and is better left
 | |
|     for the application.
 | |
|   - increase the maximum number of ports for a client-node.
 | |
|   - adapter and node-factory now support the linger option to
 | |
|     keep the objects alive after the creating client disconnected.
 | |
| 
 | |
| - Device support
 | |
|   - ALSA now handles error in close(), like when unplugging a
 | |
|     USB device.
 | |
| 
 | |
| - Session-manager
 | |
|   - The session manager is now handling DONT_RECONNECT streams
 | |
|     without a target node. They get connected to a default node
 | |
|     once and then fail to reconnect.
 | |
|   - The session manager now exposes the stream setting as
 | |
|     metadata. This makes it possible for other components, such
 | |
|     as pulse-server to use this information. Information is stored
 | |
|     as a json object for easier consumption.
 | |
|   - The session manager now has a config directory in
 | |
|     /etc/pipewire/media-session.d/ packagers can use this
 | |
| 
 | |
| - PulseAudio server
 | |
|   - Pulse server now acquire the dbus name.
 | |
|   - Improvements in timing and compatibility with many apps.
 | |
|   - The stream-restore extension is now implemented so that
 | |
|     the event volume can be configured.
 | |
|   - Many stability fixes and improvements.
 | |
|   - Fix some issues with module-load/unload
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.16
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - Fix screensharing for old 0.2 clients
 | |
|   - Many pulse-server improvements. There is now a
 | |
|     pipewire-pulse binary that is the preferred solution for
 | |
|     PulseAudio compatibility. The replacement libpulse
 | |
|     libraries are now deprecated. This also makes audio in
 | |
|     Flatpak work.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Fix cleanup of listeners everywhere. Force remove of
 | |
|     listeners in _destroy to avoid crashes.
 | |
|   - Add support for a journald logger module.
 | |
|   - Various memory leak fixes
 | |
|   - Silence some warnings that spammed the logs.
 | |
|   - Fix flush in pw_stream. This fixes small glitches when
 | |
|     switching streams in music players.
 | |
|   - Various FreeBSD fixes and improvements.
 | |
|   - Fix some crashes when destroying objects.
 | |
| 
 | |
| - Device support
 | |
|   - Reload the ALSA configuration when creating a node so that
 | |
|     hotplugged devices work in all cases.
 | |
|   - Fix memory leaks in ACP library. This also fixes issues
 | |
|     where the mixer device was not closed.
 | |
|   - Bluetooth now has support for the mSBC codec for SCO
 | |
|     source and sink.
 | |
| 
 | |
| - pulse-server
 | |
|   - Many introspection and compatibility improvements. It should
 | |
|     now be as good or better than the replacement library.
 | |
|   - Implement sample cache to make notification events work.
 | |
| 
 | |
| - JACK layer
 | |
|   - handle errors when linking, fixes jack_connect hang when
 | |
|     the ports were already linked.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.15
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - This is a quick update to fix critical issues with the
 | |
|     0.3.14 update, which broke screen sharing and accidentally
 | |
|     enabled the experimental pulse-server.
 | |
|   - Fix some compatibility issues in pulse-server with
 | |
|     pavucontrol and fix an issue that would block the complete
 | |
|     server.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Permission checks for new clients are now done from a
 | |
|     global context, which makes it possible to assign initial
 | |
|     permissions to objects.
 | |
|   - Handle EINTR everywhere
 | |
|   - Fix an issue with the node state changes where a quick
 | |
|     pause/play would hang a client.
 | |
| 
 | |
| - Session manager improvements
 | |
|   - Disable the bluez5 and pulse-bridge modules by default because
 | |
|     they interfere with pulseaudio. These options should only be
 | |
|     enabled if pulseaudio is removed or disabled in the system.
 | |
|   - Fix an issue where the session manager could end up in
 | |
|     infinite recursion while scanning for things to do.
 | |
|   - The session manager will now always configure nodes to remix
 | |
|     to the channel configuration of the device. This fixes the case
 | |
|     where mono streams would only end up on one channel of a stereo
 | |
|     device.
 | |
| 
 | |
| - Device support
 | |
|   - Initial merge of A2DP extra codec support using the new bluez5
 | |
|     API.
 | |
| 
 | |
| - pulse-server
 | |
|   - Create the runtime directory when it doesn't exist.
 | |
|   - Don't ever block the server, use non-blocking IO everywhere.
 | |
|   - Fill description of profiles with the name if not otherwise set,
 | |
|     this fixes a crash in pavucontrol.
 | |
|   - the connection debug category will now also debug pulse
 | |
|     messages.
 | |
|   - Respect the no_remix flag to make the control panel channel
 | |
|     check work.
 | |
| 
 | |
| - ALSA plugin
 | |
|   - implement pause
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.14
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Highlights
 | |
|   - This release focuses on bugfixes and stability
 | |
|     improvements.
 | |
|   - A new experimental pulse-server module was added. This
 | |
|     module implements the pulseaudio protocol on top of
 | |
|     PipeWire and can be used to make flatpaks work with
 | |
|     PipeWire. It looks like this might be a better way
 | |
|     forward compared to the libpulse.so replacement library.
 | |
|   - A2DP bluetooth was reworked. Playback should work a lot
 | |
|     better now. Support was also added to automatically link
 | |
|     an A2DP source to a playback device, which makes it possible
 | |
|     to use PipeWire as a bluetooth receiver as well.
 | |
|   - Improvements to the routing and volume restore features
 | |
|     of the session manager.
 | |
| 
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - The channelmixer does not normalize volumes anymore. Volumes
 | |
|     are only normalized for monitoring streams now.
 | |
|   - Streams can actually start in the inactive state now.
 | |
|   - The channelmixer can now also convert volume updates from one
 | |
|     channel layout to another. This makes saved volumes work
 | |
|     even when streams have different channel layouts.
 | |
|   - Clients are only registered after the properties have been
 | |
|     updated.
 | |
|   - Links now have a new active state.
 | |
|   - Drivers can now also specify a minimum quantum. This makes it
 | |
|     possible for bluetooth devices to specify an optimum quantum
 | |
|     for the given codec settings and MTU.
 | |
|   - The amount of data sent over the socket was reduced by only
 | |
|     sending the data that changed.
 | |
|   - Client objects are now exposed after they uploaded their
 | |
|     properties, which makes the new object more useful.
 | |
| 
 | |
| - Tools improvements
 | |
|   - pw-cat will now add metadata to the PipeWire streams.
 | |
| 
 | |
| - Session manager improvements
 | |
|   - Fix crashes when reading bad data in stored settings.
 | |
|   - volume and routing is improved. Settings are now remembered
 | |
|     per application or media-role.
 | |
|   - The session manager remembers the last device used per stream
 | |
|   - Fix a bug when moving streams where it could sometimes end
 | |
|     up with linking a stream to multiple devices.
 | |
|   - Use RTKit to set realtime priority on the data thread in the
 | |
|     session manager. This improves performance of the pulse-server
 | |
|     and bluetooth devices.
 | |
|   - Add a new property to mark streams that want to capture from
 | |
|     the monitor of the default sink.
 | |
|   - NODE_TARGET can now also contain the node name. This avoids
 | |
|     some lookups in the pulseaudio layer when selecting target
 | |
|     nodes by name.
 | |
|   - the -e and -d options are more usable now and can be used to
 | |
|     add and remove modules from the default list of modules.
 | |
| 
 | |
| - Device support
 | |
|   - v4l2: add some workarounds for buggy drivers. Add Limited
 | |
|     support for droidcam.
 | |
|   - ACP: improve selection of default port and profiles.
 | |
|   - ACP: add support for using the hardware mixer for more than
 | |
|     8 channel streams.
 | |
|   - ACP: support the new port type and availability group found
 | |
|     in PulseAudio.
 | |
|   - A2DP bluetooth timings were reworked. Automatic linking of
 | |
|     A2DP sources was added to make it possible for PipeWire to
 | |
|     act as a bluetooth receiver. The code was reworked to allow
 | |
|     other codecs such as APTX and LDAC in the future.
 | |
|   - Try harder to recover from ALSA errors.
 | |
| 
 | |
| - GStreamer improvements
 | |
|   - Fix some crashes in the monitor that cause
 | |
|     gnome-initial-setup to crash.
 | |
| 
 | |
| - PulseAudio layer improvements
 | |
|   - Many compatibility improvements. Improved playback in
 | |
|     chrome. Fix a crash in firefox when the daemon is stopped.
 | |
|   - Fix a leak in the formats.
 | |
|   - Fix !ADJUST_LATENCY streams like paplay.
 | |
|   - Make the device option in paplay work.
 | |
|   - Fix volume/mute notifications, this makes plasma volume updates
 | |
|     work again.
 | |
|   - Do the conversion between PulseAudio cubic volumes and PipeWire
 | |
|     linear volumes. Volume levels should behave now like they did
 | |
|     with PulseAudio.
 | |
| 
 | |
| - JACK layer improvements
 | |
|   - Return an error when we run out of midi events. Some application
 | |
|     rely on this behaviour.
 | |
| 
 | |
| - ALSA plugin improvements
 | |
|   - The ALSA plugin now also supports the node name in the
 | |
|     playback_node and capture_node properties.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.13
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   - Add pw-reserve tool to reserve or monitor a device on DBus.
 | |
|   - Install spa-resample, a tool to resample a file.
 | |
|   - Install spa-acp-tool, a tool to inspect the card profile.
 | |
|   - Various fixes and improvements
 | |
|   - Fix a bug in pw-stream where a capture stream could run out
 | |
|     of buffers and become silent.
 | |
|   - Rework the processing loops in the adapter and stream. There
 | |
|     is now less latency in PulseAudio and ALSA layers.
 | |
| 
 | |
| - Session manager improvements
 | |
|   - Improve the device reservation code. We now try to acquire
 | |
|     the device using the dbus device reservation API before we
 | |
|     probe the device. This avoids conflicts with a running
 | |
|     PulseAudio where devices would disappear (because they were
 | |
|     locked by the other process).
 | |
|   - Don't fail on invalid input from the config files.
 | |
|   - Audio devices now have the same name as what PulseAudio
 | |
|     would assign.
 | |
| 
 | |
| - Device support
 | |
|   - v4l2: try to use the format before enumerating the size and
 | |
|     framerate. Some drivers don't check the format and might now
 | |
|     work better.
 | |
|   - v4l2: Fall back to MMAP when EXPBUF fails. Fix MMAP access,
 | |
|     just export the fd and the mapoffset. This should make more
 | |
|     devices work.
 | |
|   - Fix crash in ALSA Card Profile (ACP) code.
 | |
|   - ACP: fix selection of default profile. Prefer any possibly
 | |
|     available profile over 'Off'. This makes some card at least
 | |
|     start with something.
 | |
|   - Fix soft volume. After setting the volume to 0, it would stay
 | |
|     at 0 until pushed over the max volume. This should fix
 | |
|     various volume related issues.
 | |
| 
 | |
| - PulseAudio layer improvements
 | |
|   - Rework the buffering and latency measurements and tweak the
 | |
|     buffer attributes. This should make browsers and media
 | |
|     players work better. This should also improve speechd
 | |
|     performance.
 | |
| 
 | |
| - JACK layer improvements
 | |
|   - Fix compilation against newer JACK.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.12
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   * the channelmap converter now handles unknown and strange
 | |
|     channellayouts much better.
 | |
|   * the resampler is now cleared correctly, avoiding clicks and
 | |
|     pops at the start of sound.
 | |
|   * Fixes for various crasher bugs. (paplay drain, vlc shutdown,
 | |
|     pactl info, ...)
 | |
|   * Fix a race condition in the node state changes that caused
 | |
|     all kinds of sync and other issues (vlc, mpv, ...)
 | |
|   * Improve the binary name property of applications
 | |
|   * Fix the scheduling again of nodes that always need a driver
 | |
|     such as the jack clients.
 | |
| 
 | |
| - Session manager improvements
 | |
|   * fix routing to default nodes. Sometimes nodes were not routed to
 | |
|     the default node (bluetooth)
 | |
| 
 | |
| - Device support
 | |
|   * disable channelmap from ALSA by default. This is what PulseAudio
 | |
|     does and thus provides better compatibility.
 | |
|   * fix a bug in how the resampler was used in the ALSA source,
 | |
|     causing distortion and errors when using low latency capture
 | |
|     clients. (Discord, webrtc, ...)
 | |
|   * Small bluetooth improvements. More work is needed for reliable
 | |
|     bluetooth playback.
 | |
| 
 | |
| - GStreamer plugins
 | |
|   * the device provider now stops the processing loop before shutting
 | |
|     down, which avoids crashes (gnome-initial-setup).
 | |
| 
 | |
| - PulseAudio layer improvements
 | |
|   * the buffer attributes were reworked to ensure compatibility with
 | |
|     many more applications such as mpv and audacious.
 | |
|   * the pulseaudio layer will now try hard to not hand out invalid
 | |
|     channel maps to the application. (avoids crashes in
 | |
|     gnome-volume-control). The channel map will now also look more
 | |
|     like what PulseAudio does.
 | |
|   * the @DEFAULT_SINK/SOURCE/MONITOR@ wildcards now work. This
 | |
|     fixes the problem with volume keys when they are bound to
 | |
|     scripts using pactl and the default sink/source wildcards.
 | |
|   * the PIPEWIRE_LATENCY environment variable now works again
 | |
|   * Fix some leaks of ports and port info. Also fix the leak of the
 | |
|     context when the mainloop is stopped.
 | |
|   * The sink/source format_info array is now filled up completely,
 | |
|     this is actually not implemented yet in the real PulseAudio.
 | |
| 
 | |
| - JACK layer improvements
 | |
|   * jack now returns version 3.0.0 and has PipeWire in the version
 | |
|     string so that apps can report this.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.11
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - PipeWire improvements
 | |
|   * Properly cleanup the mixer structures when a port is removed,
 | |
|     this should fix client crashes related to port config changes
 | |
|     and other random crashes.
 | |
|   * Optimize the preferred formats in the audio converter. Higher
 | |
|     quality formats with higher performance are chosen first.
 | |
|   * Make sure the time reported by pw_stream is always increasing,
 | |
|     even when the driver and clock changes.
 | |
|   * There is now also a system service and socket that can be used
 | |
|     to enable PipeWire systemwide. This is however not recommended
 | |
|     and disabled by default.
 | |
|   * Fix channelmixer 5.1 to stereo mix matrix. It was not reading
 | |
|     the conversion matrix correctly and cause channels to be
 | |
|     dropped. The channelmixer will now also normalize the volume,
 | |
|     like what pulseaudio does.
 | |
|   * The channelmixer will now just copy channels when no layout
 | |
|     has been given. It has also optimized paths for this. This
 | |
|     makes it possible for apps to request > 8 channels from the
 | |
|     alsa plugin (ardour).
 | |
|   * Port, Node and Link will now also emit an error on the
 | |
|     resources in addition to updating the error in the info. This
 | |
|     would make it easier to track negotiation errors in the session
 | |
|     manager later.
 | |
|   * many small fixes and cleanups.
 | |
|   * Fix compatibility:
 | |
| 	+ DOSBox: fix crash because of double free in pw_stream
 | |
| 
 | |
| - Session manager improvements
 | |
|   * The session manager will now try to configure the client to
 | |
|     the channel configuration of the sink/source. It will only
 | |
|     do this for downmixing, never for upmixing and also never
 | |
|     when the client has the dont-remix property set. It will
 | |
|     also renegotiate the channel layout when moving a stream to
 | |
|     a new sink/source.
 | |
|   * Configuration state is now saved in XDG_CONFIG_HOME.
 | |
|     Previously it was saved in $HOME/.pipewire-media-session/
 | |
|     You can migrate the state by moving the files to
 | |
|     $XDG_CONFIG_HOME/pipewire-media-session (or
 | |
|     $HOME/.config/pipewire-media-session as a fallback when
 | |
|     XDG_CONFIG_HOME is not set).
 | |
| 
 | |
| - Device support
 | |
|   * Bluetooth sources and sinks should work better now.
 | |
|   * There is now also a new bluetooth backend using hsphfpd.
 | |
|   * fix the ALSA UCM Off profile for alsa pcm devices
 | |
|   * improve ALSA port and profile switching. The ACP device will
 | |
|     now switch to the best port and profile when availability
 | |
|     changes.
 | |
| 
 | |
| - PulseAudio layer improvements
 | |
|   * Implement some more callbacks. The pulse layer will now also
 | |
|     notify applications of stream moved, started and latency
 | |
|     changes.
 | |
|   * Fix error code when an object was not found. We now return
 | |
|     PA_ERR_NOENTITY instead of PA_ERR_INVALID.
 | |
|   * Add some support for loading new null sinks. Applications such
 | |
|     as pulseeffects use this. Note that pulseeffects does not yet
 | |
|     work reliably but can start now.
 | |
|   * Improve handling of profile and port updates, it should work
 | |
|     much more reliable now. Apps should now also again receive
 | |
|     volume updates from sinks/sources.
 | |
|   * Fix compatibility:
 | |
| 	+ openal-soft 1.20
 | |
| 	+ pavucontrol (checks PA_ERR_NOENTITY)
 | |
| 
 | |
| - JACK layer improvements
 | |
|   * improve default source and sink handling. It was not updated
 | |
|     correctly in all cases.
 | |
|   * add samplerate and period to the pw-jack wrapper to easily
 | |
|     configure the desired samplerate and period for the app.
 | |
| 
 | |
| - ALSA plugin improvements
 | |
|   * Add a mixer entry in the alsa config file.
 | |
|   * Implement support for planar types, rework the processing
 | |
|     function to make it more robust.
 | |
|   * refuse to load the alsa plugin when linked against 0.2. This
 | |
|     catches some old apps linked against 0.2 that want to use the
 | |
|     alsa plugin.
 | |
|   * Fix compatibility:
 | |
| 	+ linphone (ALSA SIGFPE when _status() is called
 | |
| 	  before _prepare()).
 | |
| 
 | |
| PipeWire 0.3.10
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Many improvements to the pulse layer.
 | |
|   * GStreamer pulsesink element now works.
 | |
|   * Fixes some segfaults.
 | |
|   * Enable rtkit for client threads.
 | |
|   * fixes capture of monitor stream by name
 | |
|   * implement some more extensions, this makes paman
 | |
|     work and removes some warnings.
 | |
| 
 | |
| - Many improvements to the GStreamer elements
 | |
|   * negotiation rework, avoid calling GStreamer methods from
 | |
|     the PipeWire callbacks because they might block and cause
 | |
|     deadlocks.
 | |
|   * Add support for non-string property values.
 | |
|   * improve stability after buffer and format
 | |
|     renegotiation.
 | |
|   * Rework the device provider.
 | |
|   * pipewiresink can now provide a stream that can
 | |
|     be consumed by apps like cheese.
 | |
| 
 | |
| - Many improvements to the JACK layer:
 | |
|   * Rework the buffer_size callbacks. Make sure we call
 | |
|     the callback from a 'safe' thread and that we don't
 | |
|     call the process callback while the application is
 | |
|     handling the callback. This improves stability in
 | |
|     apps like Carla when PipeWire dynamically changes
 | |
|     the buffer size.
 | |
|   * Improve compatibility with apps that call
 | |
|     get_buffer_frames() with a 0 size (calfjackrack)
 | |
|   * JACK can now create nodes that can be set as a
 | |
|     sink/source in PulseAudio/ALSA apps (you can make an
 | |
|     effects rack and set that as default sink for
 | |
|     apps).
 | |
| 
 | |
| - Added a group id property for nodes. This makes it
 | |
|   possible to schedule nodes with the same driver even
 | |
|   when they are otherwise not linked together. To make
 | |
|   this work well a new flag needed to be added to nodes
 | |
|   to signal when they are ready for processing.
 | |
| 
 | |
|   Together with the GStreamer fixes, this makes things
 | |
|   like:
 | |
| 
 | |
|    gst-launch-1.0 -v pipewiresrc path=51 stream-properties="props,node.group=1" !
 | |
|          audio/x-raw ! pipewiresink stream-properties="props,node.group=1"
 | |
| 
 | |
|   work as expected with PipeWire managing the resampling
 | |
|   to keep the clocks of the devices in sync.
 | |
| 
 | |
|   This can later also be used to force devices to be grouped
 | |
|   together to create a JACK-like scheduling group.
 | |
| 
 | |
| - Streams and filter now use PIPEWIRE_NODE and
 | |
|   PIPEWIRE_LATENCY env variables as fallback.
 | |
| 
 | |
| - ACP add per device port list. This makes UCM devices
 | |
|   expose the right ports.
 | |
| 
 | |
| - Fix some segfaults in ACP and UCM.
 | |
| 
 | |
| - make pw-cat use the metadata to find default devices.
 | |
| 
 | |
| - The media session can now save and load audio device
 | |
|   Profiles and Routes (volumes), stream volumes and
 | |
|   the default sink and sources.
 | |
| 
 | |
| PipeWire 0.3.9
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Fix bad audio in chrome
 | |
| 
 | |
| - Remove some errors that are not real errors.
 | |
| 
 | |
| - Fix 100% cpu when disconnecting devices.
 | |
| 
 | |
| - Improve pulseaudio introspection of formats
 | |
| 
 | |
| - Fix JACK metadata handling, carla can now monitor the
 | |
|   port it creates and insert midi.
 | |
| 
 | |
| - Add a new permission bit (M) that is needed to be able
 | |
|   to configure metadata on an object. Improve security of
 | |
|   metadata some more, only allow metadata on objects that
 | |
|   are visible to the client setting the metadata.
 | |
| 
 | |
| - Add support for videocrop in the GStreamer elements.
 | |
| 
 | |
| - Improve handling of the runtime directory for the
 | |
|   server sockets. Add some reasonable fallback when
 | |
|   XDG_RUNTIME_DIR is not set, as suggested in the spec.
 | |
| 
 | |
| - Improve ALSA device names from ACP.
 | |
| 
 | |
| - Fix various crasher bugs. One in the pulse layer, one in
 | |
|   the session manager.
 | |
| 
 | |
| - Make alsa plugin respect the PIPEWIRE_REMOTE env variable.
 | |
| 
 | |
| - Various compile fixes.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.8
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Fix an embarrassing crasher in the JACK layer when
 | |
|   metadata keys were removed.
 | |
| 
 | |
| - Make it possible to add properties to jack clients with
 | |
|   a PIPEWIRE_PROPS env variable. This can be used to make
 | |
|   JACK nodes look like a device (like an effects rack).
 | |
| 
 | |
| - Improvements in the session manager in how it links
 | |
|   ports. Now it will try to link matching channels first
 | |
|   and be more intelligent otherwise. The session manager
 | |
|   will also configure the stream to the device port
 | |
|   configuration when needed.
 | |
| 
 | |
| - Add ofono backend for Bluetooth HeadSet support.
 | |
| 
 | |
| - Improve default source and sink handling. They are now
 | |
|   stored with their id, instead of name, in the metadata.
 | |
|   This makes it work better with JACK because of JACK's
 | |
|   limited name length.
 | |
| 
 | |
| - Improve environment variables to make it possible to
 | |
|   create and connect to servers other than "pipewire-0".
 | |
|   Implement this in pulseaudio, JACK and alsa layers.
 | |
| 
 | |
| - Add an alsa mixer plugin so that alsamixer works with
 | |
|   PipeWire. It will configure the default source/sink
 | |
|   volumes.
 | |
| 
 | |
| - Fix capture devices. There was something wrong with how
 | |
|   the resampler was used that caused corruption in the
 | |
|   signal when the resampler was active.
 | |
| 
 | |
| - We now ship alsa card paths, profile-sets configuration
 | |
|   files and udev rules so that we don't have to rely on
 | |
|   the pulseaudio ones.
 | |
| 
 | |
| - Many build and stability fixes.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.7
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Improved PulseAudio compatibility. The alsa card profile
 | |
|   code was reused from PulseAudio. Devices now support
 | |
|   all profiles, ports, jack detection, UCM and hardware
 | |
|   mixers that PulseAudio implements. There should not
 | |
|   be (almost) any difference between PipeWire and PulseAudio
 | |
|   in how it presents and manages devices.
 | |
|   Other missing API pieces such as the default sink/source
 | |
|   and move_stream are implemented now.  At this point
 | |
|   it should be possible to replace PulseAudio with the
 | |
|   compatibility layer for those who want to try.
 | |
| 
 | |
| - Many fixes and improvements to the GStreamer elements.
 | |
|   pipewiresrc now has the ability to periodically resend
 | |
|   the last frame. This makes it possible for use-cases like
 | |
|   screensharing to only update the screen on changes while
 | |
|   still keeping the client side encoder busy. PipeWire
 | |
|   elements can now also share a connection between them.
 | |
| 
 | |
| - Improvements to the bluetooth nodes. Dynamically adding
 | |
|   and removing devices should work much smoother now. Many
 | |
|   fixes and improvements to a2dp and sco nodes.
 | |
| 
 | |
| - Reduced memory usage by using less pre-allocated memory
 | |
|   where possible. JACK clients are especially using less
 | |
|   memory.
 | |
| 
 | |
| - Support for passive links is added again. These are links
 | |
|   that don't cause the associated driver to become active.
 | |
|   This makes it possible to have blocks of effects+sinks go
 | |
|   to suspend as a group when not in use.
 | |
| 
 | |
| - Both consumers and producers can now ask to renegotiate
 | |
|   the format. This required some cleanups and improvements
 | |
|   to how links and node states were handled. More work is
 | |
|   needed to implement more use cases.
 | |
| 
 | |
| - Important fixes to how memory is shared with clients. Memory
 | |
|   was not correctly freed in all cases, which would result
 | |
|   in reuse of the wrong memory.
 | |
| 
 | |
| - Support for planar formats for audio and video was added.
 | |
| 
 | |
| - Improved error handling in the session manager.
 | |
| 
 | |
| - Metadata is now used to manage default audio source and
 | |
|   sink devices. The session manager will try to link streams
 | |
|   to the default device. Changing the default device will
 | |
|   move streams to the new device. PulseAudio and JACK layers
 | |
|   respect the default source/sinks.
 | |
| 
 | |
| - Metadata is used to tag the desired output device for
 | |
|   a stream and the session manager will move streams when
 | |
|   the metadata changes. The PulseAudio layer uses this to
 | |
|   implement the move_stream feature.
 | |
| 
 | |
| - Many fixes to the security modules. The session manager now
 | |
|   has a flatpak module that grants permissions to flatpak
 | |
|   apps. The PulseAudio layer now respects the permissions of
 | |
|   objects. Security related properties are made read-only
 | |
|   now. Different access modules can now coexist.
 | |
| 
 | |
| - The portal module has been split up in 2 parts:
 | |
|    1) a part living in the daemon that monitors the portal
 | |
|       dbus owner and tags all clients from this PID. This
 | |
|       part has to run in the daemon in order to securely
 | |
|       tag the clients.
 | |
|    2) a part in the session manager that uses the permission
 | |
|       store to manage the permissions of portal managed
 | |
|       clients.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.6
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Extensive memory leak fixing and stress testing was done.
 | |
|   A big leak in screen sharing with DMA-BUF was fixed.
 | |
| - Compile fixes
 | |
| - Stability improvements in jack and pulseaudio layers.
 | |
| - Added the old portal module to make the Camera portal
 | |
|   work again. This will be moved to the session manager in
 | |
|   future versions.
 | |
| - Improvements to the GStreamer source and sink shutdown.
 | |
| - Fix compatibility with v2 clients again when negotiating
 | |
|   buffers.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.5
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Compiler fixes
 | |
| - Add pw-midiplay and pw-midirecord aliases
 | |
| - Add pw-mididump tool
 | |
| - Add pw-metadata tool to inspect, add and remove metadata
 | |
|   for objects.
 | |
| - Docs updates, man pages
 | |
| - install alsa config files
 | |
| - Fix linked sink/source in pulseaudio
 | |
| - ratelimit graph processing warnings
 | |
| - improve buffer handling in GStreamer elements
 | |
| - Fix power usage by removing the queue for the alsa
 | |
|   sequencer system announce messages.
 | |
| - Fix metadata clear() method dispatch.
 | |
| - Improve parameter enumeration, make it possible to detect
 | |
|   missing parameters vs no-compatible parameters so that we
 | |
|   can use defaults in the first case and error in the second
 | |
|   case.
 | |
| - Fix cleanup of proxy objects. Stability improvements on
 | |
|   plug/unplug in session manager.
 | |
| - Make it possible to set log level from config file
 | |
| - improve debug of param negotiation errors. Log the
 | |
|   parameters to stderr/journal.
 | |
| - Make it possible to configure global logger
 | |
|   implementation.
 | |
| - Fix NEON detection
 | |
| - JACK and PulseAudio compatibility improvements
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.4
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - A quick update with some important stability fixes.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.3
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - NEON optimizations for audio conversion (32 and 64 bits)
 | |
| - rework of session manager implementation
 | |
| - Add option to disable modules in the session manager
 | |
| - Release midi hardware devices when suspended
 | |
| - various build fixes
 | |
| - Clean up options of various utils
 | |
| - Stability improvements
 | |
| - Mayor improvements in pulseaudio emulation. Improved
 | |
|   timings and compatibility.
 | |
| - Implementation of drain and flush in pulse and alsa
 | |
|   emulation.
 | |
| - Implement poll on file descriptors.
 | |
| - Improvement of metadata for jack emulation.
 | |
| - Fix memory and thread problems in jack emulation.
 | |
| - Simplification of state changes. Should make more use
 | |
|   cases work in the jack emulation.
 | |
| - Improvements in the gstreamer elements. Removal of
 | |
|   extra internal queue. pipewiresink can now be used to
 | |
|   play audio.
 | |
| - Add pw-jack and pw-pulse scripts to run pulseaudio and
 | |
|   jack applications with the right library path.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.2
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - build fixes
 | |
| - Added support for data type negotiation. This makes it
 | |
|   possible for a client to say that it can handle DMABuf
 | |
|   and MemFd and then let the server select a compatible
 | |
|   format.
 | |
| - Handle errors when enumerating parameters better.
 | |
| - Add support for rate, format, channels and period_bytes
 | |
|   to the alsa config file to restrict what alsa apps can
 | |
|   negotiate.
 | |
| - Fix JACK midi output.
 | |
| - Optimizations in common audio format conversions using
 | |
|   AVX2. Small optimizations to plugins.
 | |
| - Change the vulkan compute example to an MIT licensed
 | |
|   shader.
 | |
| - Remove some hardcoded defaults in the audio and video
 | |
|   processing and use the values from the processing
 | |
|   context. This also fixes the vulkan example.
 | |
| - Correct the documentation and defaults in the daemon
 | |
|   config file.
 | |
| - Fix alsa and v4l2 buffer recycle. A paused client could
 | |
|   cause the server to leak all buffers.
 | |
| - Remove some warnings that should be ignored.
 | |
| - Fix a crash in the bluez5 plugins.
 | |
| - Try to select higher quality formats first when
 | |
|   negotiating a format with an audio device.
 | |
| - Fix an infinite loop in udev detection in some cases.
 | |
| - Add non-interactive mode to pw-cli. You can now just
 | |
|   do "pw-cli ls Port" to get a listing of all ports.
 | |
|   pw-cli will now also connect to the default server by
 | |
|   default and has options to select a different server.
 | |
| - Allow the server to go up to the maximum quantum (8192
 | |
|   samples or ~=180ms) if a client explicitly wants this.
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.1
 | |
| 
 | |
| This is a bugfix release that is API and ABI compatible
 | |
| with previous 0.3.x releases.
 | |
| 
 | |
| - Don't load the rtkit module by default. It can cause a
 | |
|   sigkill, which is not desirable for mutter, for example.
 | |
|   Only enable this for the jack library for now.
 | |
| - Don't use pthread cancel by default because it uses a
 | |
|   signal that might crash some apps. Only use it for
 | |
|   the jack library because jack clients really expect this.
 | |
| - Build fixes for -Werror=suggest-attribute=format
 | |
| - improve error messages, don't report harmless errors and
 | |
|   warnings. Try to send error messages to the proxy that
 | |
|   started the operation or is the owner of the object.
 | |
| - pw-cat: midi improvement, add midi recording and dump
 | |
|   in verbose mode
 | |
| - fix properties when loading spa-nodes from the config
 | |
| - Fix and update some examples
 | |
| - jack: check arguments and don't crash when invalid
 | |
| - Fix buffer memory upload.
 | |
| - jack: fix compatibility with zrythm. Fix timemaster
 | |
|   install, improve sample_rate callback. Fix reposition
 | |
|   handling.
 | |
| - fix crash in port after buffer negotiation error.
 | |
| - add support for control ports in pw_filter
 | |
| - fix cleanup of the metadata module
 | |
| - improve param enumeration.
 | |
| - Clear stream buffers when the format is cleared.
 | |
| - Add create-object command in the config file to create
 | |
|   object from a factory.
 | |
| - Fix crash after the driver was not removed from unassigned
 | |
|   nodes. Also properly pause inactive nodes.
 | |
| - Use "true" and "false" in properties when we are talking
 | |
|   about a boolean.
 | |
| - pulseaudio: improve compatibility
 | |
| 
 | |
| 
 | |
| PipeWire 0.3.0
 | |
| 
 | |
| The 0.3 release is a major milestone in the development of
 | |
| PipeWire. It features a complete redesign of the scheduling
 | |
| mechanisms that make it possible to run a JACK compatibility
 | |
| layer with comparable performance to JACK2.
 | |
| 
 | |
| The API has been reworked and is declared stable now. All
 | |
| development files and runtime paths are versioned so that
 | |
| future incompatible changes can be done without breaking
 | |
| existing applications.
 | |
| 
 | |
| PipeWire 0.3 also includes a (now mandatory) session manager
 | |
| that populates and controls the PipeWire graph. This example
 | |
| session manager is very simple and not configurable. It is
 | |
| expected that future version will either switch to a more
 | |
| flexible session manager (like WirePlumber) or improve the
 | |
| configuration options of the example session manager.
 | |
| 
 | |
| PipeWire 0.3 includes both PulseAudio, JACK and ALSA
 | |
| compatibility libraries that are known to support a wide range
 | |
| of applications. The ALSA library is pretty complete at this
 | |
| point. The JACK and mostly the PulseAudio compatibility
 | |
| libraries need more work. See the Wiki pages for the current
 | |
| compatibility problems. We do not yet encourage people to
 | |
| switch away from their existing audio solutions (PulseAudio
 | |
| or JACK) but we would love to hear from people who try it
 | |
| anyways. Future versions will mostly focus on improving
 | |
| compatibility further to make PipeWire a drop-in replacement.
 | |
| 
 | |
| PipeWire comes with some GStreamer plugins to consume and
 | |
| produce data for PipeWire. The consumer (pipewiresrc) is
 | |
| working well in most cases. The sink (pipewiresink) is known
 | |
| to be somewhat problematic for now.
 | |
| 
 | |
| PipeWire 0.2.97
 | |
| 
 | |
| Eighth pre-release for upcoming 0.3:
 | |
| 
 | |
| - Build fixes
 | |
| - pw-cat improvement: Fix remote name, add midi support
 | |
| - add device subscribe params for completeness
 | |
| - jack and pulseaudio compatibility fixes
 | |
| - Fix a bug in resampler, add quality option, tweaked quality
 | |
|   settings, tested now against https://src.infinitewave.ca/
 | |
|   testsignals and submitted results for publication.
 | |
| - Fix awkwardness in buffer negotiations, the default number of
 | |
|   buffers was 4 and jack could only handle 2, causing
 | |
|   corruption. Also implement negotiation of Step ranges.
 | |
| - Fix device reservation to work together with pulseaudio,
 | |
|   previously we would block pulseaudio.
 | |
| 
 | |
| PipeWire 0.2.96
 | |
| 
 | |
| Seventh pre-release for upcoming 0.3:
 | |
| 
 | |
| - jack: improve compatibility
 | |
| - Fix unit test
 | |
| - Fix license of jack and alsa libs
 | |
| - Make start/stop more threadsafe
 | |
| - Fix rt-kit again, add params to configure things, increase default
 | |
|   soft/hard limits to avoid being killed.
 | |
| - version 0 compatibility improvements, tested with firefox, cheese,
 | |
|   GStreamer and chrome using compat layers.
 | |
| - Fix timing for gstreamer source
 | |
| - Require libspa in pkg-config file
 | |
| - Limit buffers to 16 to support old clients
 | |
| 
 | |
| PipeWire 0.2.95
 | |
| 
 | |
| Sixth pre-release for upcoming 0.3:
 | |
| 
 | |
| - Fix tests for big endian some more
 | |
| - Improve v2 compatibility mode: improve type negotiation and
 | |
|   update_permissions
 | |
| - Workaround for firefox screen sharing
 | |
| 
 | |
| 
 | |
| PipeWire 0.2.94
 | |
| 
 | |
| Fifth pre-release for upcoming 0.3:
 | |
| 
 | |
| - Fix man page names
 | |
| - Fix jack set_sync_timeout
 | |
| - Improve JACK compatibility with apps that cache buffer pointers.
 | |
| - Improve mlock failure warning message, add property to configure
 | |
|   if mlock should be used.
 | |
| - Improve OBJECT_PATH in alsa objects
 | |
| - Install in versioned directory
 | |
| - Add pw-profiler tool
 | |
| - Improve pulseaudio compatibility wrt pa_operations
 | |
| - Thread safety fixes in remote nodes when activating/deactivating
 | |
| - Improve JACK names on duplicates
 | |
| - Add option to ignore failure when loading modules
 | |
| 
 | |
| PipeWire 0.2.93
 | |
| 
 | |
| Fourth pre-release for upcoming 0.3:
 | |
| 
 | |
| - Fix unit tests on 32 bits
 | |
| - Append -pw version to pulse and jack libs. This way we can install
 | |
|   it next to the real libraries and use a symlink to enable it.
 | |
| - Improve jack support by killing threads with pthread_cancel. This
 | |
|   then also remove the eventfd from the data-loop, making it
 | |
|   maybe a little faster.
 | |
| - Fix jack_client_close() compatibility
 | |
| - Fix some segfaults in the session manager
 | |
| - Improve debug of protocol messages
 | |
| - Add examples options
 | |
| - Don't fail when alsa is not found
 | |
| - Fix some compiler warnings with a new spa_aprintf() helper.
 | |
| - Add pw-cat, the simple audio playback/record tool
 | |
| - Rename pipewire tools to pw- prefix
 | |
| - Add improve pw-cli object dump feature
 | |
| 
 | |
| 
 | |
| PipeWire 0.2.92
 | |
| 
 | |
| Third pre-release for upcoming 0.3:
 | |
| 
 | |
| - Improve old version check some more
 | |
| - Fix unit tests on little/big endian
 | |
| - Fix compilation when CPU has no optimisations
 | |
| - Install jack and pulse libraries
 | |
| - Handle -EACCESS in flatpack access module
 | |
| 
 | |
| 
 | |
| PipeWire 0.2.91
 | |
| 
 | |
| It is mostly a bugfix release to make the new version install and
 | |
| run correctly in distros.
 | |
| 
 | |
| - Install session manager, fix path to find the session manager
 | |
| - Fix alsa buffer reuse
 | |
| - Small fixes for crasher bugs
 | |
| - Implement pw_core_set_paused() to suspend/resume even
 | |
|   processing. This can be used when using multiple connections
 | |
|   to a daemon and one needs to pause one connection until the
 | |
|   other one completes an action. Used by session managers.
 | |
| - Improve old version check
 | |
| 
 | |
| 
 | |
| PipeWire 0.2.90
 | |
| 
 | |
| This is the first pre-release of the 0.3 version. It consists of a
 | |
| major rewrite and is not API or ABI compatible with the 0.2
 | |
| branch.
 | |
| 
 | |
| 
 | |
| PipeWire 0.2.7
 | |
| 
 | |
| This is mostly a bugfix release and is API/ABI compatible with
 | |
| previous 0.2 versions.
 | |
| 
 | |
| Work is ongoing in the work branch that features a completely new
 | |
| scheduling method that will enable audio support. Some of these
 | |
| API changes are backported in this branch.
 | |
| 
 | |
| - Add support for alsa-lib 1.1.9 which changed the include path
 | |
| - Improve error checking and reporting in the protocol
 | |
| - deviceprovider: fix probing without starting
 | |
| - add sentinel to some functions
 | |
| - compiler fixes for musl
 | |
| - Revert object tree permission checks that broke things, this is
 | |
|   probably not a good idea (and the tree of objects is going to
 | |
|   be removed later)
 | |
| 
 | |
| 
 | |
| PipeWire 0.2.6
 | |
| 
 | |
| - Improve error checking for threads
 | |
| - Fix some memory and fd leaks
 | |
| - Fix compilation with C++ compilers and clang
 | |
| - DISABLE_RTKIT should now not try to use dbus at all
 | |
| - Camera Portal fixes:
 | |
| 	- add Camera media.role
 | |
| 	- Rename module-flatpak to module-portal
 | |
| 	- Use the portal permissions store for camera checks
 | |
| - Actually use the passed fd in pipewiresrc
 | |
| - Make properties with "pipewire." prefix read-only
 | |
| - Add security label to client object
 | |
| - Enforce link permissions
 | |
| - Permissions of objects are now combined with parent permissions
 | |
| - Remove libv4l2 dependency, it is not used
 | |
| - Improve format negotiation in autolink #146
 | |
| - Try to avoid list corruption with event emission #143
 | |
| - Fix destroy of client-node memory corruption
 | |
| - Various small improvements
 | |
| 
 | |
| PipeWire 0.2.5
 | |
| 
 | |
| - build fixes for systemd
 | |
| - Add cursor and bitmap metadata. This can be used to send a cursor
 | |
|   sprite with the video stream.
 | |
| - permissions were set too strict for non-flatpak clients
 | |
| - Fix crash in loop caused by thread unsafe hook emission
 | |
| - Add more error checking for thread-loop
 | |
| - Small cleanups and bugfixes
 | |
| 
 | |
| PipeWire 0.2.4
 | |
| 
 | |
| - Install man pages in right directory
 | |
| - Add systemd socket activation
 | |
| - Various memory leak and corruption fixes in properties, dbus and
 | |
|   buffer mmapped memory.
 | |
| - Fix v4l2 crash on unplug
 | |
| - improve stream cleanup
 | |
| 
 | |
| PipeWire 0.2.3
 | |
| 
 | |
| - Fix deviceprovider caps introspection
 | |
| - Refcounting fixes in pipewiresrc
 | |
| - Remove clock interpolation from stream
 | |
| - Improve clock in gstreamer elements
 | |
| - Remove spalib
 | |
| - Fix crash with pw_map
 | |
| - Add version number to hook list
 | |
| - Improve driver mode in gstreamer elements
 | |
| - add daemon options
 | |
| - add man pages
 | |
| 
 | |
| PipeWire 0.2.2
 | |
| 
 | |
| - Increment API version and .so version
 | |
| 
 | |
| PipeWire 0.2.1
 | |
| 
 | |
| - Various fixes to memory handling
 | |
| - Fixes for shutdown
 | |
| - v4l2 fix enumeration of frame intervals
 | |
| - Make the daemon stop when the setup commands fail
 | |
| - Improve safety of hooks
 | |
| - Update stream API to more future proof version
 | |
| - Add more options to stream API such as scheduling in the
 | |
|   main thread and automatic mapping of buffers
 | |
| - Add version file and macros to check compile time and
 | |
|   runtime versions of pipewire
 | |
| - Future proof some structs
 | |
| 
 | |
| 
 | |
| PipeWire 0.1.9
 | |
| 
 | |
| - Various build fixes
 | |
| - Do more permission checks
 | |
| - Add support for doing async connections. This can be used to
 | |
|   make connections through the portal later.
 | |
| - Fix device creation from the GStreamer device monitor
 | |
| - v4l2 experiment with controls
 | |
| - move rtkit to a module to avoid dbus dependency
 | |
| - use dmabuf allocator in gstreamer elements
 | |
| - Add DSP module for pro audio cases, remove jack module. The
 | |
|   idea is to make a replacement jack client library that talks
 | |
|   pipewire directly instead of trying to emulate a jack server.
 | |
| - Various memory handling improvements
 | 
