* Wed Sep 18 2024 alarrosa@suse.com
- Make sure the pipewire-libjack package doesn't completely
replace the original jack libraries unless the pipewire-jack
package which installs the ld.so.conf.d file is installed too
(boo#1222253).
- Move modules jack-tunnel and jackdbus-detect to the
pipewire-spa-plugins-0_2-jack since those modules should only
be used when the real jack server is running. This fixes pipewire
starting jackdbus on start.
* Mon May 06 2024 alarrosa@suse.com
- Update to version 1.0.5+git36.60deeb2 to fix several crashes,
NULL checks, format strings and other issues:
* spa: libcamera: fix RGB mappings
* pw-dump: destroy all objects not just those matching the pattern
* pw-dump: fix string memory leak on error
* json: fix high surrogate escapes
* core: handle import errors better
* gst/src: fix crash when current_caps is NULL
* gst/src: Avoid unnecessary renegotiations during streaming
* gst/src: Cleanups for src_negotiate()
* pw-mon: fix type confusion in core event handler
* gst: fix stream params memory leak
* gst: handle some more errors
* treewide: fix errno assignments
* alsa-pcm: don't force quantum for iec958 formats
* journal: prepend code location to messages at debug log levels
* module-rt: fix compiler warning
* filter-chain: fix arguments of calloc
* combine-stream tag forward
* Add album to tag metadata
* impl-node: avoid bitfield races
* treewide: fix some format string issues
* conf: warn when match actions are missing
* module-protocol-simple: handle 'node.name' property
* module-ffado: only start after ports are configured
* context: fill basic properties early
* combine-stream: fix latency-compensate with resample.disabled=true
* profiler: remove unused data-loop
* v4l2: fix printf format
* spa: v4l2: encode device id into a json array
* spa: libcamera: encode device ids into a json array
* impl-port: avoid doing work when the port is destroyed
* impl-port: use 0 size when clearing IO
* stream: log a warning when media.class and direction mismatch
* module-loopback: only enable delay with valid rate and channels
* alsa: fix race when updating the eventfd
* audioconvert: also clamp monitor volume to min/max
* combine-stream: actually make use of resample.disable
* Wed Apr 17 2024 alarrosa@suse.com
- Update to version 1.0.5:
* 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.
* Thu Apr 11 2024 alarrosa@suse.com
- Move the jack spa plugin from the pipewire-spa-plugins-0_2
package to a new pipewire-spa-plugins-0_2-jack package. This
allows to not Suggest the pipewire-libjack package from
pipewire-spa-plugins-0_2 since that's only used to connect
pipewire as a client to a jack server which is not common at all
(boo#1222253).
* Tue Mar 19 2024 rguenther@suse.com
- Avoid %if %{pkg_vcmp gcc < 8}, instead replicate the condition
from the BuildRequires section.
* Wed Mar 13 2024 alarrosa@suse.com
- Update to version 1.0.4:
* 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.
* Tue Mar 12 2024 alarrosa@suse.com
- Update to version 1.0.3+git51.89d8e8b:
* module-ffado: make the event buffer per port
* module-ffado: handle MIDI correctly
* module-ffado: implement MIDI send and receive
* module-ffado: various fixes to make things work
* stream: add pw_stream_get_nsec() to get current time
* jack: fix multiple midi input ports
* pw-top: only check terminal size in non-batch mode
* Specify "Audio" in gstreamer sink/src metadata to fix autodetect
* Add SOC-style jack names to HDMI audio paths
* gst: remove timeouts when autoconnect=false
* audioconvert: handle invalid ports better
* audioconvert: handle port remove
* pw_context_parse_conf_section: use the conf argument instead of the context's conf
* stream: FORCE_RATE should just contain the rate
* jack: FORCE_RATE should just contain the rate
* jack: set global_mix safely
* jack: sync threads by pausing the core
* alsa: Added handle for controlling htimestamp autodisable
* And more
- Remove patch already merged upstream:
* fix-gst-sink.patch
* Tue Mar 12 2024 alarrosa@suse.com
- Require pipewire-pulseaudio from pipewire-alsa so when
pipewire-alsa is installed, pipewire has audio support (or put
in other words, so pipewire-alsa isn't installed with the real
pulseaudio). Fixes boo#1221235.
* Wed Mar 06 2024 alarrosa@suse.com
- Add patch from upstream submitted at glfo#pipewire/pipewire#1932
that fixes selecting the pipewire gstreamer plugins by the
autoaudiosink/autoaudiosrc plugins:
* fix-gst-sink.patch
* Thu Feb 29 2024 dimstar@opensuse.org
- Use %patch -P N instead of deprecated %patchN.
* Wed Feb 21 2024 alarrosa@suse.com
- Force using doxygen-1_10 in SLE where the default doxygen is too
old and generates broken docs (boo#1217886)
* Tue Feb 20 2024 alarrosa@suse.com
- Add a conflict in -pulseaudio with
pipewire-modules-%{apiver} < 1.0.0 since the
libpipewire-module-protocol-pulse.so module was included in
- modules before 1.0.0 so we should avoid a file conflict.
* Sat Feb 03 2024 sor.alexei@meowr.ru
- Update to version 1.0.3:
* 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 ALSA version check. This should allow the alsa plugin to
work again.
* Wed Jan 31 2024 alarrosa@suse.com
- Update to version 1.0.2:
* 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)
- Drop patches already included by upstream:
* 0001-spa-libcamera-use-CameraConfigurationorientation.patch
* 0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch
* Mon Jan 22 2024 alarrosa@suse.com
- Add patches from upstream to fix building the package in Factory
with libcamera 0.2.0:
* 0001-spa-libcamera-use-CameraConfigurationorientation.patch
* 0002-spa-libcamera-bump-minimum-supported-version-to-0.2.0.patch
* Thu Jan 11 2024 alarrosa@suse.com
- Update to version 1.0.1:
* 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.
* Sun Nov 26 2023 alarrosa@suse.com
- Update to version 1.0.0 (El Presidente):
* 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
* Thu Nov 16 2023 alarrosa@suse.com
- Update to version 0.3.85 (1.0RC5):
* 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.
* Thu Nov 02 2023 alarrosa@suse.com
- Update to version 0.3.84 (1.0RC4):
* 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)
* Mon Oct 30 2023 alarrosa@suse.com
- Disable the WebRTC-based echo canceller in big endian
architectures since webrtc-audio-processing is not available
there.
Version: 0.3.64-150500.3.3.1
* Tue Jan 17 2023 alarrosa@suse.com
- Add patch from upstream to avoid division by 0 and other issues
with invalid values (glfo#pipewire/pipewire#2953):
* 0001-alsa-guard-against-some-invalid-values.patch
- Add patch from upstream to fix causing an overflow resulting in
choppy sound in some cases (glfo#pipewire/pipewire#2680):
* 0001-spa-Fix-audioconvert-overflow-when-scaling.patch
* Mon Jan 16 2023 alarrosa@suse.com
- Add patch from upstream to fix a crash on arm:
* 0001-cpu-arm-Fix-incorrect-free.patch
* Fri Jan 13 2023 alarrosa@suse.com
- Update to version 0.3.64:
* 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.
(glfo#pipewire/pipewire#2914)
- Fix a case where nodes that were not supposed to be
suspended, were kept suspended on a rate change.
(glfo#pipewire/pipewire#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. (glfo#pipewire/pipewire#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.
(glfo#pipewire/pipewire#2891)
- The filter-chain now supports an arbitrary number of control
properties. (glfo#pipewire/pipewire#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. (glfo#pipewire/pipewire#2939)
* SPA
- The ACP code now has an option to set the probe samplerate.
(glfo#pipewire/pipewire#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.
(glfo#pipewire/pipewire#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. (glfo#pipewire/pipewire#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.
- Rebase reduce-meson-dependency.patch.
- Remove patches from upstream
* 0001-pulse-server-add-channel-map-in-echo-cancel-module.patch
* 0003-bluez5-backend-native-fix-missing-brace-in-CIND-reply.patch
* 0001-alsa-dont-set--1-as-node.target.patch
* 0001-modules-fix-rate-update.patch
* 0001-alsa-fix-memory-leak-of-properties.patch
* 0001-module-rt-fix-warning-when-xdg-desktop-portal-isnt-running.patch
* 0001-midifile-error-won-invalid-track-size.patch
* 0001-impl-node-move-2-state-variables-to-private.patch
* 0001-context-rename-a-method.patch
* 0002-impl-node-restore-running-state-after-reconfigure.patch
* 0001-context-keep-per-node-quantum-and-rate-settings.patch
* 0001-fix-use_buffers-checks.patch
* 0001-pulse-server-clear-the-drained-state-correctly.patch
* Wed Jan 11 2023 alarrosa@suse.com
- Add several patches from upstream to fix several issues
(glfo#pipewire/pipewire#2925, glfo#pipewire/pipewire#2928,
glfo#pipewire/pipewire#2929):
* 0001-module-rt-fix-warning-when-xdg-desktop-portal-isnt-running.patch
* 0001-midifile-error-won-invalid-track-size.patch
* 0001-impl-node-move-2-state-variables-to-private.patch
* 0001-context-rename-a-method.patch
* 0002-impl-node-restore-running-state-after-reconfigure.patch
* 0001-context-keep-per-node-quantum-and-rate-settings.patch
* 0001-fix-use_buffers-checks.patch
* 0001-pulse-server-clear-the-drained-state-correctly.patch
* Thu Jan 05 2023 bjorn.lie@gmail.com
- Disable ffmpeg support, only needed for pw-play and pw-record.
Break a circular dependency with ffmpeg-5. Do this via disabling
pkgconfig(libavcodec), pkgconfig(libavfilter) and
pkgconfig(libavformat) BuildRequires as well as passing
ffmpeg=disabled to meson.
* Wed Jan 04 2023 alarrosa@suse.com
- Add patch from upstream to fix pulse tunnel getting out of
sync/overruns (glfo#pipewire/pipewire#2891):
* 0001-modules-fix-rate-update.patch
- Add patch from upstream to fix memory leak of properties:
* 0001-alsa-fix-memory-leak-of-properties.patch
* Fri Dec 30 2022 predivan@mts.rs
- Ship only X11 bell module in module-x11 sub-package
* Tue Dec 27 2022 sor.alexei@meowr.ru
- Split the X11 bell implementation into a separate package
(overlaps with implementations in e.g. Marco).
- Add patch from upstream to fix a Bluetooth regression
(glfo#pipewire/pipewire#2898):
* 0003-bluez5-backend-native-fix-missing-brace-in-CIND-reply.patch
* Mon Dec 19 2022 alarrosa@suse.com
- Add patch from upstream to remember last routing after a reboot
(glfo#pipewire/pipewire#2893):
* 0001-alsa-dont-set--1-as-node.target.patch
* Thu Dec 15 2022 sor.alexei@meowr.ru
- Update to version 0.3.63:
* 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.
- 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.
- Remove fallback to default channel map in channelmix.
- Improve sorting of MIDI events, use the same order as Ardour.
- Enable LFE downmixing by default.
- Make IEC958/AC3 and IEC958/DTS work better by enforcing a
fixed minimal buffering for the encoder to avoid stuttering.
* 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.
- Rebase reduce-meson-dependency.patch.
- Add patch to add channel-map in the echo-cancel module:
* 0001-pulse-server-add-channel-map-in-echo-cancel-module.patch
* Sat Dec 10 2022 predivan@mts.rs
- Refresh reduce-meson-dependency.patch
* Fri Dec 09 2022 predivan@mts.rs
- Update to version 0.3.62:
* 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. (glfo#pipewire/pipewire#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. (glfo#pipewire/pipewire#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. (glfo#pipewire/pipewire#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. (glfo#pipewire/pipewire#2880)
* JACK
- Only process valid ports. Could fix some crashes. (glfo#pipewire/pipewire#2863)
* Bluetooth
- Support was added for offloading bluetooth handling. Some hardware can
receive, decode and play the bluetooth audio directly in hardware.
* Sun Dec 04 2022 jengelh@inai.de
- Drop dependency on SDL2; this leads to a build cycle with SDL2
itself, and is only needed for pipewire example code anyway.
* Thu Nov 24 2022 sor.alexei@meowr.ru
- Update to version 0.3.61:
* 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
- Optimise away some useless graph recalculations.
- Increase alternative sample rates from 16 to 32.
- 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.
* Modules
- Set the network property on pulse-tunnel streams so that they
are not exported anymore.
- 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.
- Do ALSA probing in 44100Hz again. Some devices seem to fail
otherwise for some unknown reason.
- Force playback start when the ALSA buffer is full. This fixes
sound in QEMU.
- Support Digital 5.1 AC3 for Asus Xonar SE.
- Improve format renegotiation in audioadapter. This makes the
ALSA plugin work again for deadbeef.
- Fix latency reporting on adapter DSP ports.
* pulse-server
- Fix a bug where openal based applications would hang.
- 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.
* JACK
- Add an option to configure the filter character.
- Fix connect_callbacks. It was only called once for output
ports.
- Add option to set node.passive on jack clients. Make some
quirks for qsynth to make it suspend and fade out better.
- Rebase reduce-meson-dependency.patch.
- Drop patches already included upstream:
* 0001-audioadapter-perform-setup-again-after-a-PortConfig.patch
* 0001-pulse-server-also-advance-read-pointer-in-underrun.patch
* 0002-audioconvert-redo-setup-when-format-changes.patch
* 0003-acp-do-probing-in-44100Hz-again.patch
* 0004-alsa-force-playback-start-when-buffer-is-full.patch
* Thu Nov 17 2022 alarrosa@suse.com
- Add patch from upstream that fixes audio in qemu where the buffer
is very small (glfo#pipewire/pipewire#2830):
* 0004-alsa-force-playback-start-when-buffer-is-full.patch
* Wed Nov 16 2022 alarrosa@suse.com
- Add more patches from upstream to perform setup in more cases:
* 0001-audioadapter-perform-setup-again-after-a-PortConfig.patch
* 0002-audioconvert-redo-setup-when-format-changes.patch
- Renumber patch 0001-acp-do-probing-in-44100Hz-again.patch to
* 0003-acp-do-probing-in-44100Hz-again.patch
* Wed Nov 16 2022 alarrosa@suse.com
- Add patch from upstream to fix some devices that don't seem to
work in 48000Hz:
* 0001-acp-do-probing-in-44100Hz-again.patch
- Require pulseaudio-utils from pipewire-pulseaudio to have pactl
available to load modules.
* Thu Nov 10 2022 sor.alexei@meowr.ru
- Update to version 0.3.60:
* 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 synch 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.
- 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-cancel 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 batery 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 optimisations.
- 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 synch 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.
- 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.
- A new seq field was added to spa_param_info to keep track of
pending param updates.
- Support speaker output only on RealTek ALC4080.
- 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.
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 synch and cause too large requests.
* 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.
- Rebase reduce-meson-dependency.patch.
- Drop patches already included upstream:
* 0001-filter-chain-iterate-the-port-correctly.patch
* 0002-spa-support-the-speakers-output-only-case-in-report_.patch
- Add patch to make Telegram playback work again:
* 0001-pulse-server-also-advance-read-pointer-in-underrun.patch
* Wed Nov 02 2022 tiwai@suse.com
- Fix regression with Dell WD15 Dock and others (bsc#1204719):
0002-spa-support-the-speakers-output-only-case-in-report_.patch
Version: 0.3.49-150400.3.3.1
* Tue Mar 29 2022 alarrosa@suse.com
- Reorder BuildRequires and space conditions a bit better in the
spec file.
* Tue Mar 29 2022 alarrosa@suse.com
- Update to version 0.3.49:
* 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)
- Rebase reduce-meson-dependency.patch.
* Thu Mar 03 2022 sor.alexei@meowr.ru
- Update to version 0.3.48:
* 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.
- 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.
- 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 spacialisation.
The stereo channels can be filtered so that the dialogue is
more concentrated in the centre channel.
* 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.
- Fix a bug in RAOP where it was reading from the wrong port.
* pulse-server
- Nodes with the DONT_MOVE property should fail with -EINVAL
when they are moved.
- Fix a segfault when playing a sample.
- The _FIX flags in pulse-server also now ignore the configured
sample format, just like pulseaudio does.
- Fix IEC958 passthrough again. It got accidentally broken
since 0.3.45 with a fix for another issue.
- Fix module-null-sink device.description.
* Bluetooth
- Don't try to connect HSP/HFP when no backend is available.
- Drop patches already included upstream:
* 0001-revert-loop-remove-destroy-list.patch
* 0002-pulse-server-free-pending-sample-reply.patch
- Rebase reduce-meson-dependency.patch.
- Enable pulseaudio-setup use on openSUSE Leap 15.4.
- Some spec clean-up.
* Mon Feb 21 2022 sor.alexei@meowr.ru
- Add 0001-revert-loop-remove-destroy-list.patch: fix MPD crash.
- Add 0002-pulse-server-free-pending-sample-reply.patch: fix
"fast volume change".
* Fri Feb 18 2022 sor.alexei@meowr.ru
- Update to version 0.3.47:
* Fix a bug in pulse-server that caused cached notifications to
play multiple times.
* Remove a check and warnings to catch leaked listeners on the
proxy. This might access invalid memory and cause infinite
loops in older wireplumber.
- Rebase reduce-meson-dependency.patch.
* Thu Feb 17 2022 alarrosa@suse.com
- Update to version 0.3.46:
* 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 critical 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.
- Update patch for further uses of "new" meson features used by
upstream:
* reduce-meson-dependency.patch
* Tue Feb 15 2022 alois1@gmx-topmail.de
- Run ldconfig for pipewire-libjack-0_3
* The JACK libraries are made available system-wide using
/etc/ld.so.conf.d. Hence, ldconfig should be run to make sure
the dynamic linker picks them up.
* Thu Feb 03 2022 alarrosa@suse.com
- Update to version 0.3.45:
* 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 emited.
* 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)
- Rebase patch:
* reduce-meson-dependency.patch
* Tue Feb 01 2022 dfaggioli@suse.com
- pipewire should be a true dependency, not just recommended (e.g.,
so that any setup that use no-recommends, like MicroOS, also work)
* Thu Jan 27 2022 alarrosa@suse.com
- Add patch to reduce the meson requirement so we can build
pipewire with Leap 15.3. This will be dropped as soon as
Leap 15.4 is released or if it becomes too hard to maintain
(whatever happens before):
* reduce-meson-dependency.patch
* Thu Jan 27 2022 sor.alexei@meowr.ru
- Update to version 0.3.44:
* 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.
- The max-quantum was reduced to 2048, This gives a 42ms
default latency.
- 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 applicaions.
- 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.
- 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.
- An X11-bell module was added to handle X11 bell events.
- 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.
- 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.
- 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 optimised
implementations.
- Fix a potential crash in resampler.
- audioconvert can now also handle F64 formats.
- 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.
- Take product names from udev now that the kernel returns
generic name.
* JACK:
- The jack pkgconfig file now has the
jack_implementation=pipewire variable to be able to
distinguish jack implementations.
- jconvolver now starts correctly again.
- 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.
- A bug in the port allocation was fixed that would make it
impossible to allocate ports at some point.
* 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.
- module-ladspa-sink implements the control argument now.
- A potential memory leak in the message queue was fixed.
- 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.
- module-x11-bell was added.
- 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.
- Drop patches already included upstream:
* 0001-alsa-improve-rate-selection.patch
* 0001-audioconvert-avoid-infinite-loop.patch
* 0001-bluez5-dont-create-device-if-adapter-is-missing.patch
* 0001-bluez5-handle-missing-device-and-adapter-in-quirks.patch
* 0001-jack-remember-last-return-from-jack_get_buffer_size.patch
* 0001-loop-invoke-immediately-when-loop-is-not-running.patch
* 0001-merger-also-reconfigure-when-monitor-changes.patch
* 0001-pulse-server-show-monitor-sources-with-device_class_monitor.patch
* 0001-pw-metadata-handle-NULL-props-from-metadata-object.patch
* 0001-raop-fix-errno-check.patch
* Wed Jan 19 2022 alarrosa@suse.com
- Add several more patches from upstream
- BlueZ may be missing adapter information for devices in some cases.
Ignore devices without specified adapter:
* 0001-bluez5-dont-create-device-if-adapter-is-missing.patch
- Fix a case when pipewwire could never call callbacks or even
block forever when loop is not running:
* 0001-loop-invoke-immediately-when-loop-is-not-running.patch
- Reconfigure when monitor changes
* 0001-merger-also-reconfigure-when-monitor-changes.patch
- Handle NULL props from metadata object
* 0001-pw-metadata-handle-NULL-props-from-metadata-object.patch
- Improve rate selection so we don't select an invalid rate when
the default is set or the card is already opened in an
unsupported rate:
* 0001-alsa-improve-rate-selection.patch
* Fri Jan 14 2022 alarrosa@suse.com
- Add several patches from upstream
- Avoid an infinite loop when enumerating params of the converter:
* 0001-audioconvert-avoid-infinite-loop.patch
- When the device or adapter is NULL, skip the quirk checks instead
of crashing:
* 0001-bluez5-handle-missing-device-and-adapter-in-quirks.patch
- Remember the last returned value from jack_get_buffer_size and
only emit a buffersize change event when something new is
configured. This fixes startup of jconvolver.
* 0001-jack-remember-last-return-from-jack_get_buffer_size.patch
- Better emulation of pulseaudio which shows monitor sources with
device.class=monitor so now pipewire does that too:
* 0001-pulse-server-show-monitor-sources-with-device_class_monitor.patch
- Fix an errno check:
* 0001-raop-fix-errno-check.patch
* Wed Jan 12 2022 alarrosa@suse.com
- Added more baselibs packages and their dependencies
* Wed Jan 05 2022 bjorn.lie@gmail.com
- Update to version 0.3.43:
* 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.
* Thu Dec 16 2021 alarrosa@suse.com
- Revert the merge of spa-plugins and modules into the library
package.
- Move some of the files between packages where they make more
sense.
- Rename the modules subpackage to modules-%{apiver_str} so
it can be versioned more easily (there still are some unversioned
files in the package, but it's a step in the right direction)
* Thu Dec 16 2021 alarrosa@suse.com
- Remove unneccesary Conflicts with packages that are Obsoleted
* Thu Dec 16 2021 alarrosa@suse.com
- Update to version 0.3.42:
* 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.
* Wed Dec 15 2021 alarrosa@suse.com
- Remove the dependency on wireplumber-audio which was pulling in
pulseaudio. We'll require wireplumber-audio directly from
wireplumber.
- Remove pipewire-rpmlintrc since the filters don't apply anymore
Version: 0.3.6-150200.3.9.1
* Wed Jul 26 2023 alarrosa@suse.com
- Add patches from upstream to fix a security issue by enforcing
that the owner client of the output node can see the input node
and viceversa, otherwise, it could happen that a portal sets
permissions so only the screenshared stream can be seen but
wireplumber might link the camera nonetheless (boo#1213682):
* 0001-impl-link-enforce-permissions-in-links.patch
* 0002-impl-link-only-check-permission-changes-for-owners.patch
* Tue Sep 22 2020 alarrosa@suse.com
- Add patch from upstream to fix a division by 0 error
(boo#1176515):
* 0021-alsa-protect-against-SIGPFE.patch
* Wed Jul 15 2020 alarrosa@suse.com
- Require pipewire from libpipewire (instead of Recommending it)
in SLE/Leap, so a zypper update of the system pulls in the
pipewire daemon. Add a note to change it back to a
recommendation when the api version changes which would make
recommendations get reevaluated by zypper (jsc#ECO-2308)
* Wed Jul 15 2020 alarrosa@suse.com
- Recommend pipewire from libpipewire, so if the library is
installed the daemon gets pulled in since we want a daemon
to connect to.
- Require pipewire-spa-plugins from pipewire instead of
recommending it since the support plugin is actually required
for most uses (like screen sharing in wayland, which we want to
support out-of-the-box).
- Enable the pipewire.socket systemd user service in %post
(using pulseaudio's %post section as an example of how to do it
since systemd-presets-common-SUSE currently lacks support for
user services). Also disable it in %preun and %postun.
* Tue Jul 14 2020 alarrosa@suse.com
- Add patches from upstream to fix many issues mainly related to
memory leaks, crashes and wrong behaviour:
* 0001-client-node-fix-buffer-size-calculation.patch
* 0002-gst-fix-proxy-leaks.patch
* 0003-pulse-fix-pa_card_info-profiles2-array-to-be-NULL-terminated.patch
* 0004-pulse-fix-size-calculation.patch
* 0005-jack-fix-crash-on-close-when-metadata-are-not-available.patch
* 0006-a2dpsink-only-request-new-data-when-buffer-is-done.patch
* 0007-pulse-fix-counter-while-populating-car_info-profiles.patch
* 0008-impl-link-reset-state-before-starting-allocation.patch
* 0009-impl-core-clear-the-mempool.patch
* 0010-mem-reset-the-map-in-clear.patch
* 0011-avoid-uninitialized-variables.patch
* 0012-dlclose-on-errors.patch
* 0013-stream-handle-NULL-context.patch
* 0014-state-always-update-state-variables.patch
* 0015-spa-device-fix-leak-of-properties-in-error-case.patch
* 0016-alsa-dont-leak-structure-on-error.patch
* 0017-alsa-dont-leak-properties-on-error.patch
* 0018-stream-fix-some-more-leaks-in-error-paths.patch
* 0019-buffers-increase-max-datas-and-metadata-in-buffers.patch
* 0020-gst-return-NULL-for-unknown-format.patch
* Fri Jul 03 2020 alarrosa@suse.com
- Rebase patches used in SLE/Leap:
* do-not-use-snd_pcm_ioplug_hw_avail.patch
* fix-memfd_create-call.patch
* Tue Jun 16 2020 alarrosa@suse.com
- Update to version 0.3.6 (boo#1171433, jsc#ECO-2308):
* 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.
- Disable vulkan if the vulkan package is too old (as in
SLE 15 SP0 and SP1)
- Add patch to build with meson >= 0.46.0 since 0.50.0 is not
really needed:
* fix-meson-required-version.patch
* Thu May 21 2020 alarrosa@suse.com
- Filter out libpulse.so.0 and libjack.so.0 automatic provides so
this is not considered an alternative when resolving dependencies
in the distribution.
* Thu May 21 2020 alarrosa@suse.com
- Add patch to fix build in SLE/Leap where alsa doesn't have a
snd_pcm_ioplug_hw_avail function:
* do-not-use-snd_pcm_ioplug_hw_avail.patch
* Tue May 19 2020 alarrosa@suse.com
- Update to version 0.3.5:
* 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
- Update to version 0.3.4:
* A quick update with some important stability fixes.
- Update to version 0.3.3:
* 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.
- Replace libpulse* replacement packages with a single
pipewire-libpulse-0_3 package that includes all libraries
installed in the non-standard directory
%{_libdir}/pipewire-0.3/pulse and a new pw-pulse wrapper script.
Likewise for the jack replacement libraries in a new
pipewire-libjack-0_3 package.
- Use update-alternatives for the wrapper scripts.
* Wed Apr 01 2020 alarrosa@suse.com
- Use the License rpm tag to specify that although most of
pipewire is licensed under MIT, the pulseaudio replacement
library is licensed under LGPL-2.1+.
* Tue Mar 31 2020 alarrosa@suse.com
- Use gcc9 to build in SLE-15 / Leap 15, since at least gcc8 is
needed now.
* Tue Mar 31 2020 alarrosa@suse.com
- Update to version 0.3.2:
+ 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.
* Mon Mar 23 2020 bjorn.lie@gmail.com
- Update to version 0.3.1+48:
+ Fix 32bit build.
* Wed Mar 18 2020 bjorn.lie@gmail.com
- Switch to source service, update to explicit head, file with
non-compliant license replaced.
* Tue Mar 17 2020 bjorn.lie@gmail.com
- Switch license to MIT and actually package it.
- Add doxygen, graphviz and xmltoman BuildRequires and pass docs
and man = true to meson, build documentation. Package docs in a
new docs sub-package.
- Add check section and run meson_test macro, run tests during
build.
- Add fdupes BuildRequires and pass fdupes macro, remove duplicate
files.
* Mon Mar 09 2020 alarrosa@suse.com
- Update to version 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
* Fri Feb 21 2020 alarrosa@suse.com
- Add patch to build correctly with glibc < 2.27 (like in SLE/Leap):
* fix-memfd_create-call.patch
* Fri Feb 21 2020 alarrosa@suse.com
- Add BuildRequires for pkgconfig(sndfile) and pkgconfig(vulkan)
so the vulkan plugin is built.
- Version the spa-plugins subpackage so different versions of
the plugins can be co-installed in the future.
* Thu Feb 20 2020 bjorn.lie@gmail.com
- Update to version 0.3.0:
+ The 0.3 release is a major milestone in the developement 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
developement files and runtime paths are versioned so that
future incompatible changes can be done without breaking
exising 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.
- Add pkgconfig(bluez) and pkgconfig(libpulse) BuildRequires: New
dependencies.
- Bump libpipewire, apiver and spa_ver define following upstreams
changes. Also add a new sover define.
- Package new subpackages: libjack-pw0_3_0,
libpulse-mainloop-glib-pw0_3_0, libpulse-pw0_3_0 and
libpulse-simple-pw0_3_0, as well as handle them in post(un).
- Adjust options passed to meson following upstreams changes.