diff --git a/_service b/_service
index 1c62191..ae50826 100644
--- a/_service
+++ b/_service
@@ -3,10 +3,8 @@
git
https://gitlab.freedesktop.org/pipewire/pipewire.git
- master
- @PARENT_TAG@+@TAG_OFFSET@
- (.*)\+0
- \1
+ refs/tags/0.3.31
+ @PARENT_TAG@
diff --git a/pipewire-0.3.30+55.obscpio b/pipewire-0.3.30+55.obscpio
deleted file mode 100644
index c605154..0000000
--- a/pipewire-0.3.30+55.obscpio
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:80adfafe64988e0c31dfd4cf6ef2ce6d6112088a6077fb79fec6fc90639ad011
-size 9439245
diff --git a/pipewire-0.3.31.obscpio b/pipewire-0.3.31.obscpio
new file mode 100644
index 0000000..98097d2
--- /dev/null
+++ b/pipewire-0.3.31.obscpio
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9f27a9d9927e4a54f67355d6069ab42ffd1d0cb7534c2f9883ca3945ec419a62
+size 9675277
diff --git a/pipewire.changes b/pipewire.changes
index 97189d2..6d08d95 100644
--- a/pipewire.changes
+++ b/pipewire.changes
@@ -1,3 +1,103 @@
+-------------------------------------------------------------------
+Tue Jun 29 06:12:36 UTC 2021 - Antonio Larrosa
+
+- Add %pre and %post sections to the new media-session subpackage.
+- Move the references to the media-session service from the
+ workaround in pipewire's %post section to the workaround in the
+ new subpackage's %post section.
+
+-------------------------------------------------------------------
+Mon Jun 28 16:14:29 UTC 2021 - Frederic Crozat
+
+- Update to 0.3.31:
+ * 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 and 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 lowlevel 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 not emited
+ 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.
+
+- Add BuildRequires(libusb-1.0) to detect mSBC support for Bluetooth.
+- Move media-session to a separate package (similar to Fedora),
+ allowing to switch to another session manager.
+
-------------------------------------------------------------------
Sun Jun 13 17:35:06 UTC 2021 - Adam Mizerski
diff --git a/pipewire.obsinfo b/pipewire.obsinfo
index b5ad830..28d885f 100644
--- a/pipewire.obsinfo
+++ b/pipewire.obsinfo
@@ -1,5 +1,5 @@
name: pipewire
-version: 0.3.30+55
-mtime: 1623317317
-commit: 342ae0b643004e6ddbd64ff9eee414e6a8dfacd2
+version: 0.3.31
+mtime: 1624893688
+commit: 5497d2d907ed8614c2c0b6482ea709cc7314f301
diff --git a/pipewire.spec b/pipewire.spec
index 74b9e81..7b05fa9 100644
--- a/pipewire.spec
+++ b/pipewire.spec
@@ -44,7 +44,7 @@
%bcond_with aptx
Name: pipewire
-Version: 0.3.30+55
+Version: 0.3.31
Release: 0
Summary: A Multimedia Framework designed to be an audio and video server and more
License: MIT
@@ -96,6 +96,7 @@ BuildRequires: pkgconfig(libopenaptx)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libudev)
+BuildRequires: pkgconfig(libusb-1.0)
BuildRequires: pkgconfig(libva)
BuildRequires: pkgconfig(ncurses)
BuildRequires: pkgconfig(sbc)
@@ -107,6 +108,7 @@ BuildRequires: pkgconfig(webrtc-audio-processing)
BuildRequires: pkgconfig(x11)
Requires: %{libpipewire} = %{version}
Requires: %{name}-modules = %{version}
+Requires: %{name}-session-manager
Requires: %{name}-spa-plugins-%{spa_ver_str} = %{version}
Requires: %{name}-spa-tools = %{version}
Requires: %{name}-tools = %{version}
@@ -242,6 +244,16 @@ Group: Development/Libraries/C and C++
%description doc
This package contains documentation for the PipeWire media server.
+%package media-session
+Summary: PipeWire Media Session Manager
+Group: Development/Libraries/C and C++
+Recommends: %{name} >= %{version}-%{release}
+Provides: pipewire-session-manager
+
+%description media-session
+This package contains the reference Media Session Manager for the
+PipeWire media server.
+
%package alsa
Summary: PipeWire media server ALSA support
Group: Development/Libraries/C and C++
@@ -283,6 +295,7 @@ export CC=gcc-9
-Dffmpeg=enabled \
-Dsystemd=enabled \
-Dgstreamer-device-provider=disabled \
+ -Droc=disabled \
%if %{with_vulkan}
-Dvulkan=enabled \
%else
@@ -339,7 +352,7 @@ done
%meson_test
%pre
-%systemd_user_pre pipewire.service pipewire.socket pipewire-media-session.service
+%systemd_user_pre pipewire.service pipewire.socket
%post
# Check if the systemd_user_pre macro generated the file
@@ -350,12 +363,12 @@ if [ -f /run/systemd/rpm/needs-user-preset/pipewire.socket ]; then
fi
%systemd_user_post pipewire.service pipewire.socket pipewire-media-session.service
-# If the pipewire-media-session user service is not enabled and the workaround
+# If the pipewire.socket user unit is not enabled and the workaround
# for boo#1186561 has never been executed, we need to execute it now
-if [ ! -L %{_sysconfdir}/systemd/user/pipewire.service.wants/pipewire-media-session.service \
+if [ ! -L %{_sysconfdir}/systemd/user/sockets.target.wants/pipewire.socket \
-a ! -f %{_localstatedir}/lib/pipewire/pipewire_post_workaround \
-a -x /usr/bin/systemctl ]; then
- for service in pipewire.service pipewire.socket pipewire-media-session.service ; do
+ for service in pipewire.service pipewire.socket ; do
/usr/bin/systemctl --global preset "$service" || :
done
@@ -373,10 +386,47 @@ EOF
fi
%preun
-%systemd_user_preun pipewire.service pipewire.socket pipewire-media-session.service
+%systemd_user_preun pipewire.service pipewire.socket
%postun
-%systemd_user_postun pipewire.service pipewire.socket pipewire-media-session.service
+%systemd_user_postun pipewire.service pipewire.socket
+
+%pre media-session
+%systemd_user_pre pipewire-media-session.service
+
+%post media-session
+%systemd_user_post pipewire-media-session.service
+
+# If the pipewire-media-session user service is not enabled and the
+# wireplumber user service is not enabled either (since it can replace pipewire-media-session)
+# and the workaround for boo#1186561 has never been executed,
+# we need to execute it now
+if [ ! -L %{_sysconfdir}/systemd/user/pipewire.service.wants/pipewire-media-session.service \
+ -a ! -L %{_sysconfdir}/systemd/user/pipewire.service.wants/wireplumber.service \
+ -a ! -f %{_localstatedir}/lib/pipewire/pipewire-media-session_post_workaround \
+ -a -x /usr/bin/systemctl ]; then
+ for service in pipewire-media-session.service ; do
+ /usr/bin/systemctl --global preset "$service" || :
+ done
+
+ mkdir -p %{_localstatedir}/lib/pipewire
+ cat << EOF > %{_localstatedir}/lib/pipewire/pipewire-media-session_post_workaround
+# The existence of this file means that the pipewire user services were
+# enabled at least once. Please don't remove this file as that would
+# make the services to be enabled again in the next package update.
+#
+# Check the following bugs for more information:
+# https://bugzilla.opensuse.org/show_bug.cgi?id=1184852
+# https://bugzilla.opensuse.org/show_bug.cgi?id=1183012
+# https://bugzilla.opensuse.org/show_bug.cgi?id=1186561
+EOF
+fi
+
+%preun media-session
+%systemd_user_preun pipewire-media-session.service
+
+%postun media-session
+%systemd_user_postun pipewire-media-session.service
%pre pulseaudio
%systemd_user_pre pipewire-pulse.service pipewire-pulse.socket
@@ -424,27 +474,32 @@ fi
%files
%{_bindir}/pipewire
-%{_bindir}/pipewire-media-session
%{_userunitdir}/pipewire.service
%{_userunitdir}/pipewire.socket
-%{_userunitdir}/pipewire-media-session.service
%{_mandir}/man1/pipewire.1%{ext_man}
%{_mandir}/man5/pipewire.conf.5%{ext_man}
-
%dir %{_datadir}/pipewire
%{_datadir}/pipewire/pipewire.conf
%{_datadir}/pipewire/client.conf
%{_datadir}/pipewire/client-rt.conf
%{_datadir}/pipewire/jack.conf
%{_datadir}/pipewire/pipewire-pulse.conf
-%dir %{_datadir}/pipewire/media-session.d
-%{_datadir}/pipewire/media-session.d/media-session.conf
-%{_datadir}/pipewire/media-session.d/alsa-monitor.conf
-%{_datadir}/pipewire/media-session.d/bluez-monitor.conf
-%{_datadir}/pipewire/media-session.d/v4l2-monitor.conf
%ghost %dir %{_localstatedir}/lib/pipewire
%ghost %{_localstatedir}/lib/pipewire/pipewire_post_workaround
+%files media-session
+%{_bindir}/pipewire-media-session
+%{_userunitdir}/pipewire-media-session.service
+%dir %{_datadir}/pipewire/media-session.d/
+%{_datadir}/pipewire/media-session.d/alsa-monitor.conf
+%{_datadir}/pipewire/media-session.d/bluez-hardware.conf
+%{_datadir}/pipewire/media-session.d/bluez-monitor.conf
+%{_datadir}/pipewire/media-session.d/media-session.conf
+%{_datadir}/pipewire/media-session.d/v4l2-monitor.conf
+%{_datadir}/pipewire/media-session.d/with-alsa
+%{_datadir}/pipewire/media-session.d/with-jack
+%{_datadir}/pipewire/media-session.d/with-pulseaudio
+
%files -n %{libpipewire}
%license LICENSE COPYING
%doc README.md
@@ -462,7 +517,6 @@ fi
%{_bindir}/pw-jack
%{_mandir}/man1/pw-jack-%{apiver}.1%{ext_man}
%{_mandir}/man1/pw-jack.1%{ext_man}
-%{_datadir}/pipewire/media-session.d/with-jack
%files -n gstreamer-plugin-pipewire
%{_libdir}/gstreamer-1.0/libgstpipewire.so
@@ -588,7 +642,6 @@ fi
%files pulseaudio
%{_bindir}/pipewire-pulse
%{_userunitdir}/pipewire-pulse.*
-%{_datadir}/pipewire/media-session.d/with-pulseaudio
%ghost %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround
%files alsa
@@ -602,7 +655,6 @@ fi
%dir %{_sysconfdir}/alsa/conf.d
%config(noreplace) %{_sysconfdir}/alsa/conf.d/50-pipewire.conf
%config(noreplace) %{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf
-%{_datadir}/pipewire/media-session.d/with-alsa
%files lang -f %{name}.lang