Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pipewire for openSUSE:Factory 
checked in at 2026-03-10 17:46:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pipewire (Old)
 and      /work/SRC/openSUSE:Factory/.pipewire.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pipewire"

Tue Mar 10 17:46:58 2026 rev:150 rq:1337634 version:1.6.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/pipewire/pipewire.changes        2026-03-04 
21:03:40.852623151 +0100
+++ /work/SRC/openSUSE:Factory/.pipewire.new.8177/pipewire.changes      
2026-03-10 17:47:19.780727828 +0100
@@ -1,0 +2,28 @@
+Mon Mar  9 10:31:43 UTC 2026 - Antonio Larrosa <[email protected]>
+
+- Update to version 1.6.1:
+  * This is a bugfix release that is API and ABI compatible with
+    the previous 1.6.x releases.
+  * Highlights
+    - Fix socket activation, which could cause a failure to start
+      PipeWire in some setups.
+    - Fix crashes in many JACK apps when nodes/ports are quickly
+      added/removed such as when there are notifications (like
+      when changing the volume in KDE).
+    - Fix playback of encoded formats in pw-cat again.
+    - Some other smaller fixes and improvements.
+  * Modules
+    - Fix socket activation. (#5140 (closed))
+    - Remove node.link-group from driver nodes.
+  * SPA
+    - Fix the libcamera stop sequence.
+  * JACK
+    - Never return NULL from jack_port_by_id(). (#3512 (closed))
+  * GStreamer
+    - Improve the timestamps on buffers.
+  * Tools
+    - Fix playback of encoded formats. (#5155 (closed))
+- Remove patch which is already merged in 1.6.1:
+  * 0002-module-protocol-native-Fix-socket-activation.patch
+
+-------------------------------------------------------------------

Old:
----
  0002-module-protocol-native-Fix-socket-activation.patch
  pipewire-1.6.0.obscpio

New:
----
  pipewire-1.6.1.obscpio

----------(Old B)----------
  Old:- Remove patch which is already merged in 1.6.1:
  * 0002-module-protocol-native-Fix-socket-activation.patch
----------(Old E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pipewire.spec ++++++
--- /var/tmp/diff_new_pack.vAtVEl/_old  2026-03-10 17:47:20.792769605 +0100
+++ /var/tmp/diff_new_pack.vAtVEl/_new  2026-03-10 17:47:20.792769605 +0100
@@ -71,7 +71,7 @@
 %bcond_with aptx
 
 Name:           pipewire
-Version:        1.6.0
+Version:        1.6.1
 Release:        0
 Summary:        A Multimedia Framework designed to be an audio and video 
server and more
 License:        MIT
@@ -82,7 +82,6 @@
 # PATCH-FIX-OPENSUSE reduce-meson-dependency.patch
 Patch0:         reduce-meson-dependency.patch
 Patch1:         
0001-pulse-server-add-client-props-to-sink_input_source_output.patch
-Patch2:         0002-module-protocol-native-Fix-socket-activation.patch
 Patch3:         0003-modules-improve-error-reporting.patch
 
 BuildRequires:  docutils

++++++ _service ++++++
--- /var/tmp/diff_new_pack.vAtVEl/_old  2026-03-10 17:47:20.852772081 +0100
+++ /var/tmp/diff_new_pack.vAtVEl/_new  2026-03-10 17:47:20.860772412 +0100
@@ -3,7 +3,7 @@
   <service name="obs_scm" mode="manual">
     <param name="scm">git</param>
     <param 
name="url">https://gitlab.freedesktop.org/pipewire/pipewire.git</param>
-    <param name="revision">1.6.0</param>
+    <param name="revision">1.6.1</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <!--
     <param name="revision">636cbae9b6cebc4ba55903e2a686f4c4a2bd4193</param>

++++++ pipewire-1.6.0.obscpio -> pipewire-1.6.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/NEWS new/pipewire-1.6.1/NEWS
--- old/pipewire-1.6.0/NEWS     2026-02-19 09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/NEWS     2026-03-09 10:17:11.000000000 +0100
@@ -1,3 +1,35 @@
+# PipeWire 1.6.1 (2026-03-09)
+
+This is a bugfix release that is API and ABI compatible with the previous
+1.6.x releases.
+
+## Highlights
+  - Fix socket activation, which could cause a failure to start PipeWire in
+    some setups.
+  - Fix crashes in many JACK apps when nodes/ports are quickly added/removed
+    such as when there are notifications (like when changing the volume in
+    KDE).
+  - Fix playback of encoded formats in pw-cat again.
+  - Some other smaller fixes and improvements.
+
+## Modules
+  - Fix socket activation. (#5140)
+  - Remove node.link-group from driver nodes.
+
+## SPA
+  - Fix the libcamera stop sequence.
+
+## JACK
+  - Never return NULL from jack_port_by_id(). (#3512)
+
+## GStreamer
+  - Improve the timestamps on buffers.
+
+## Tools
+  - Fix playback of encoded formats. (#5155)
+
+Older versions:
+
 # PipeWire 1.6.0 (2026-02-19)
 
 This is the 1.6 release that is API and ABI compatible with previous
@@ -95,8 +127,6 @@
   - Add some more options to pw-cat to list supported containers
     and formats. (#5117)
 
-Older versions:
-
 # PipeWire 1.5.85 (2026-01-19)
 
 This is the fifth and hopefully last 1.6 release candidate that
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/meson.build 
new/pipewire-1.6.1/meson.build
--- old/pipewire-1.6.0/meson.build      2026-02-19 09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/meson.build      2026-03-09 10:17:11.000000000 +0100
@@ -1,5 +1,5 @@
 project('pipewire', ['c' ],
-  version : '1.6.0',
+  version : '1.6.1',
   license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ],
   meson_version : '>= 0.61.1',
   default_options : [ 'warning_level=3',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/pipewire-jack/src/pipewire-jack.c 
new/pipewire-1.6.1/pipewire-jack/src/pipewire-jack.c
--- old/pipewire-1.6.0/pipewire-jack/src/pipewire-jack.c        2026-02-19 
09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/pipewire-jack/src/pipewire-jack.c        2026-03-09 
10:17:11.000000000 +0100
@@ -492,6 +492,8 @@
        jack_position_t jack_position;
        jack_transport_state_t jack_state;
        struct frame_times jack_times;
+
+       struct object dummy_port;
 };
 
 #define return_val_if_fail(expr, val)                          \
@@ -4468,6 +4470,11 @@
                        0, NULL, &client->info);
        client->info.change_mask = 0;
 
+       client->dummy_port.type = INTERFACE_Port;
+       snprintf(client->dummy_port.port.name, 
sizeof(client->dummy_port.port.name), "%s:dummy", client_name);
+       snprintf(client->dummy_port.port.alias1, 
sizeof(client->dummy_port.port.alias1), "%s:dummy", client_name);
+       snprintf(client->dummy_port.port.alias2, 
sizeof(client->dummy_port.port.alias2), "%s:dummy", client_name);
+
        client->show_monitor = pw_properties_get_bool(client->props, 
"jack.show-monitor", true);
        client->show_midi = pw_properties_get_bool(client->props, 
"jack.show-midi", true);
        client->merge_monitor = pw_properties_get_bool(client->props, 
"jack.merge-monitor", true);
@@ -5951,9 +5958,7 @@
 {
        const char *name;
        struct client *c = o->client;
-       if (c == NULL)
-               return NULL;
-       if (c->default_as_system && is_port_default(c, o))
+       if (c != NULL && c->default_as_system && is_port_default(c, o))
                name = o->port.system;
        else
                name = o->port.name;
@@ -6999,13 +7004,11 @@
 
        pthread_mutex_lock(&c->context.lock);
        res = find_by_serial(c, port_id);
-       if (res && res->type != INTERFACE_Port)
-               res = NULL;
-       pw_log_debug("%p: port %d -> %p", c, port_id, res);
        pthread_mutex_unlock(&c->context.lock);
+       if (res == NULL || res->type != INTERFACE_Port)
+               res = &c->dummy_port;
 
-       if (res == NULL)
-               pw_log_info("%p: port %d not found", c, port_id);
+       pw_log_debug("%p: port %d -> %p", c, port_id, res);
 
        return object_to_port(res);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/spa/plugins/alsa/acp/acp.c 
new/pipewire-1.6.1/spa/plugins/alsa/acp/acp.c
--- old/pipewire-1.6.0/spa/plugins/alsa/acp/acp.c       2026-02-19 
09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/spa/plugins/alsa/acp/acp.c       2026-03-09 
10:17:11.000000000 +0100
@@ -485,13 +485,11 @@
        if ((n_capture == 1 && n_playback == 1) || is_firewire) {
                PA_IDXSET_FOREACH(m, ap->output_mappings, idx) {
                        pa_proplist_setf(m->output_proplist, "node.group", 
"pro-audio-%u", index);
-                       pa_proplist_setf(m->output_proplist, "node.link-group", 
"pro-audio-%u", index);
                        pa_proplist_setf(m->output_proplist, 
"api.alsa.auto-link", "true");
                        pa_proplist_setf(m->output_proplist, 
"api.alsa.disable-tsched", "true");
                }
                PA_IDXSET_FOREACH(m, ap->input_mappings, idx) {
                        pa_proplist_setf(m->input_proplist, "node.group", 
"pro-audio-%u", index);
-                       pa_proplist_setf(m->input_proplist, "node.link-group", 
"pro-audio-%u", index);
                        pa_proplist_setf(m->input_proplist, 
"api.alsa.auto-link", "true");
                        pa_proplist_setf(m->input_proplist, 
"api.alsa.disable-tsched", "true");
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pipewire-1.6.0/spa/plugins/libcamera/libcamera-source.cpp 
new/pipewire-1.6.1/spa/plugins/libcamera/libcamera-source.cpp
--- old/pipewire-1.6.0/spa/plugins/libcamera/libcamera-source.cpp       
2026-02-19 09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/spa/plugins/libcamera/libcamera-source.cpp       
2026-03-09 10:17:11.000000000 +0100
@@ -184,9 +184,6 @@
                        0, nullptr, 0, this
                );
 
-               if (source.fd >= 0)
-                       spa_system_close(system, std::exchange(source.fd, -1));
-
                camera->requestCompleted.disconnect(this, 
&impl::requestComplete);
 
                if (int res = camera->stop(); res < 0) {
@@ -194,6 +191,9 @@
                                         camera->id().c_str(), 
spa_strerror(res));
                }
 
+               if (source.fd >= 0)
+                       spa_system_close(system, std::exchange(source.fd, -1));
+
                completed_requests_rb = SPA_RINGBUFFER_INIT();
                active = false;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/src/gst/gstpipewiresrc.c 
new/pipewire-1.6.1/src/gst/gstpipewiresrc.c
--- old/pipewire-1.6.0/src/gst/gstpipewiresrc.c 2026-02-19 09:59:34.000000000 
+0100
+++ new/pipewire-1.6.1/src/gst/gstpipewiresrc.c 2026-03-09 10:17:11.000000000 
+0100
@@ -531,6 +531,7 @@
   src->autoconnect = DEFAULT_AUTOCONNECT;
   src->min_latency = 0;
   src->max_latency = GST_CLOCK_TIME_NONE;
+  src->last_buffer_clock_time = GST_CLOCK_TIME_NONE;
   src->n_buffers = 0;
   src->flushing_on_remove_buffer = FALSE;
   src->on_disconnect = DEFAULT_ON_DISCONNECT;
@@ -1598,16 +1599,31 @@
       GST_LOG_OBJECT (pwsrc, "EOS, send last buffer");
       break;
     } else if (timeout && pwsrc->last_buffer != NULL) {
+      buf = gst_buffer_copy (pwsrc->last_buffer);
       update_time = TRUE;
-      buf = gst_buffer_ref(pwsrc->last_buffer);
       GST_LOG_OBJECT (pwsrc, "timeout, send keepalive buffer");
       break;
     } else {
       buf = dequeue_buffer (pwsrc);
       GST_LOG_OBJECT (pwsrc, "popped buffer %p", buf);
       if (buf != NULL) {
-        if (pwsrc->resend_last || pwsrc->keepalive_time > 0)
-          gst_buffer_replace (&pwsrc->last_buffer, buf);
+        if (pwsrc->resend_last || pwsrc->keepalive_time > 0) {
+          GstClock *clock;
+          GstBuffer *old;
+
+          old = pwsrc->last_buffer;
+          pwsrc->last_buffer = gst_buffer_copy (buf);
+          gst_buffer_unref (old);
+          gst_buffer_add_parent_buffer_meta (pwsrc->last_buffer, buf);
+
+          clock = gst_element_get_clock (GST_ELEMENT_CAST (pwsrc));
+          if (clock != NULL) {
+            pwsrc->last_buffer_clock_time = gst_clock_get_time (clock);
+            gst_object_unref (clock);
+          } else {
+            pwsrc->last_buffer_clock_time = GST_CLOCK_TIME_NONE;
+          }
+        }
         break;
       }
     }
@@ -1632,21 +1648,33 @@
 
   if (update_time) {
     GstClock *clock;
-    GstClockTime pts, dts;
+    GstClockTime current_clock_time;
 
     clock = gst_element_get_clock (GST_ELEMENT_CAST (pwsrc));
     if (clock != NULL) {
-      pts = dts = gst_clock_get_time (clock);
+      current_clock_time = gst_clock_get_time (clock);
       gst_object_unref (clock);
     } else {
-      pts = dts = GST_CLOCK_TIME_NONE;
+      current_clock_time = GST_CLOCK_TIME_NONE;
     }
 
-    GST_BUFFER_PTS (*buffer) = pts;
-    GST_BUFFER_DTS (*buffer) = dts;
+    if (GST_CLOCK_TIME_IS_VALID (current_clock_time) &&
+        GST_CLOCK_TIME_IS_VALID (pwsrc->last_buffer_clock_time) &&
+        GST_CLOCK_TIME_IS_VALID (GST_BUFFER_PTS (*buffer)) &&
+        GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DTS (*buffer))) {
+      GstClockTime diff;
+
+      diff = current_clock_time - pwsrc->last_buffer_clock_time;
+
+      GST_BUFFER_PTS (*buffer) += diff;
+      GST_BUFFER_DTS (*buffer) += diff;
+    } else {
+      GST_BUFFER_PTS (*buffer) = GST_BUFFER_DTS (*buffer) = current_clock_time;
+    }
 
     GST_LOG_OBJECT (pwsrc, "Sending keepalive buffer pts/dts: %" 
GST_TIME_FORMAT
-      " (%" G_GUINT64_FORMAT ")", GST_TIME_ARGS (pts), pts);
+      " (%" G_GUINT64_FORMAT ")", GST_TIME_ARGS (current_clock_time),
+      current_clock_time);
   }
 
   return GST_FLOW_OK;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/src/gst/gstpipewiresrc.h 
new/pipewire-1.6.1/src/gst/gstpipewiresrc.h
--- old/pipewire-1.6.0/src/gst/gstpipewiresrc.h 2026-02-19 09:59:34.000000000 
+0100
+++ new/pipewire-1.6.1/src/gst/gstpipewiresrc.h 2026-03-09 10:17:11.000000000 
+0100
@@ -83,6 +83,7 @@
   GstClockTime max_latency;
 
   GstBuffer *last_buffer;
+  GstClockTime last_buffer_clock_time;
 
   enum spa_meta_videotransform_value transform_value;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/src/modules/module-ffado-driver.c 
new/pipewire-1.6.1/src/modules/module-ffado-driver.c
--- old/pipewire-1.6.0/src/modules/module-ffado-driver.c        2026-02-19 
09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/src/modules/module-ffado-driver.c        2026-03-09 
10:17:11.000000000 +0100
@@ -1556,8 +1556,6 @@
                pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
        if (pw_properties_get(props, PW_KEY_NODE_GROUP) == NULL)
                pw_properties_set(props, PW_KEY_NODE_GROUP, "ffado-group");
-       if (pw_properties_get(props, PW_KEY_NODE_LINK_GROUP) == NULL)
-               pw_properties_set(props, PW_KEY_NODE_LINK_GROUP, "ffado-group");
        if (pw_properties_get(props, PW_KEY_NODE_PAUSE_ON_IDLE) == NULL)
                pw_properties_set(props, PW_KEY_NODE_PAUSE_ON_IDLE, "false");
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/src/modules/module-netjack2-manager.c 
new/pipewire-1.6.1/src/modules/module-netjack2-manager.c
--- old/pipewire-1.6.0/src/modules/module-netjack2-manager.c    2026-02-19 
09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/src/modules/module-netjack2-manager.c    2026-03-09 
10:17:11.000000000 +0100
@@ -1393,8 +1393,6 @@
                pw_properties_set(props, PW_KEY_NODE_VIRTUAL, "true");
        if (pw_properties_get(props, PW_KEY_NODE_NETWORK) == NULL)
                pw_properties_set(props, PW_KEY_NODE_NETWORK, "true");
-       if (pw_properties_get(props, PW_KEY_NODE_LINK_GROUP) == NULL)
-               pw_properties_set(props, PW_KEY_NODE_LINK_GROUP, "jack-group");
        if (pw_properties_get(props, PW_KEY_NODE_ALWAYS_PROCESS) == NULL)
                pw_properties_set(props, PW_KEY_NODE_ALWAYS_PROCESS, "true");
        if (pw_properties_get(props, PW_KEY_NODE_LOCK_QUANTUM) == NULL)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/src/modules/module-protocol-native.c 
new/pipewire-1.6.1/src/modules/module-protocol-native.c
--- old/pipewire-1.6.0/src/modules/module-protocol-native.c     2026-02-19 
09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/src/modules/module-protocol-native.c     2026-03-09 
10:17:11.000000000 +0100
@@ -907,7 +907,7 @@
        bool activated = false;
 
        {
-               int i, n = listen_fd();
+               int i, n = listen_fds();
                for (i = 0; i < n; ++i) {
                        if (is_socket_unix(LISTEN_FDS_START + i, SOCK_STREAM,
                                                s->addr.sun_path) > 0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pipewire-1.6.0/src/modules/module-protocol-pulse/server.c 
new/pipewire-1.6.1/src/modules/module-protocol-pulse/server.c
--- old/pipewire-1.6.0/src/modules/module-protocol-pulse/server.c       
2026-02-19 09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/src/modules/module-protocol-pulse/server.c       
2026-03-09 10:17:11.000000000 +0100
@@ -576,7 +576,7 @@
 
 static int check_socket_activation(const char *path)
 {
-       const int n = listen_fd();
+       const int n = listen_fds();
 
        for (int i = 0; i < n; i++) {
                const int fd = LISTEN_FDS_START + i;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/src/modules/network-utils.h 
new/pipewire-1.6.1/src/modules/network-utils.h
--- old/pipewire-1.6.0/src/modules/network-utils.h      2026-02-19 
09:59:34.000000000 +0100
+++ new/pipewire-1.6.1/src/modules/network-utils.h      2026-03-09 
10:17:11.000000000 +0100
@@ -143,7 +143,7 @@
 
 /* Returns the number of file descriptors passed for socket activation.
  * Returns 0 if none, -1 on error. */
-static inline int listen_fd(void)
+static inline int listen_fds(void)
 {
        uint32_t n;
        int i, flags;
@@ -161,8 +161,6 @@
                        return -1;
        }
 
-       unsetenv("LISTEN_FDS");
-
        return (int)n;
 }
 
@@ -192,12 +190,10 @@
                if (addr.sun_family != AF_UNIX)
                        return 0;
                size_t length = strlen(path);
-               if (length > 0) {
-                       if (len < offsetof(struct sockaddr_un, sun_path) + 
length)
-                               return 0;
-                       if (memcmp(addr.sun_path, path, length) != 0)
-                               return 0;
-               }
+               if (len < offsetof(struct sockaddr_un, sun_path) + length + 1)
+                       return 0;
+               if (memcmp(addr.sun_path, path, length + 1) != 0)
+                       return 0;
        }
 
        return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pipewire-1.6.0/src/tools/pw-cat.c 
new/pipewire-1.6.1/src/tools/pw-cat.c
--- old/pipewire-1.6.0/src/tools/pw-cat.c       2026-02-19 09:59:34.000000000 
+0100
+++ new/pipewire-1.6.1/src/tools/pw-cat.c       2026-03-09 10:17:11.000000000 
+0100
@@ -196,55 +196,60 @@
 };
 
 static const struct format_info {
-       const char *name;
+       const char *sf_name;
        int sf_format;
+       uint32_t sf_width;
+       const char *spa_name;
        uint32_t spa_format;
-       uint32_t width;
+       uint32_t spa_width;
+#define FORMAT_ENCODED (1<<0)
+       uint32_t flags;
 } format_info[] = {
-       {  "ulaw", SF_FORMAT_ULAW, SPA_AUDIO_FORMAT_ULAW, 1 },
-       {  "alaw", SF_FORMAT_ULAW, SPA_AUDIO_FORMAT_ALAW, 1 },
-       {  "s8", SF_FORMAT_PCM_S8, SPA_AUDIO_FORMAT_S8, 1 },
-       {  "u8", SF_FORMAT_PCM_U8, SPA_AUDIO_FORMAT_U8, 1 },
-       {  "s16", SF_FORMAT_PCM_16, SPA_AUDIO_FORMAT_S16, 2 },
-       {  "s24", SF_FORMAT_PCM_24, SPA_AUDIO_FORMAT_S24, 3 },
-       {  "s32", SF_FORMAT_PCM_32, SPA_AUDIO_FORMAT_S32, 4 },
-       {  "f32", SF_FORMAT_FLOAT, SPA_AUDIO_FORMAT_F32, 4 },
-       {  "f64", SF_FORMAT_DOUBLE, SPA_AUDIO_FORMAT_F32, 8 },
-
-       {  "mp1", SF_FORMAT_MPEG_LAYER_I, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "mp2", SF_FORMAT_MPEG_LAYER_II, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "mp3", SF_FORMAT_MPEG_LAYER_III, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "vorbis", SF_FORMAT_VORBIS, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "opus", SF_FORMAT_OPUS, SPA_AUDIO_FORMAT_F32, 1 },
-
-       {  "ima-adpcm", SF_FORMAT_IMA_ADPCM, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "ms-adpcm", SF_FORMAT_MS_ADPCM, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "nms-adpcm-16", SF_FORMAT_NMS_ADPCM_16, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "nms-adpcm-24", SF_FORMAT_NMS_ADPCM_24, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "nms-adpcm-32", SF_FORMAT_NMS_ADPCM_32, SPA_AUDIO_FORMAT_F32, 1 },
-
-       {  "alac-16", SF_FORMAT_ALAC_16, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "alac-20", SF_FORMAT_ALAC_20, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "alac-24", SF_FORMAT_ALAC_24, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "alac-32", SF_FORMAT_ALAC_32, SPA_AUDIO_FORMAT_F32, 1 },
-
-       {  "gsm610", SF_FORMAT_GSM610, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "g721-32", SF_FORMAT_G721_32, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "g723-24", SF_FORMAT_G723_24, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "g723-40", SF_FORMAT_G723_40, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "dwvw-12", SF_FORMAT_DWVW_12, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "dwvw-16", SF_FORMAT_DWVW_16, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "dwvw-24", SF_FORMAT_DWVW_24, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "vox", SF_FORMAT_VOX_ADPCM, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "dpcm-16", SF_FORMAT_DPCM_16, SPA_AUDIO_FORMAT_F32, 1 },
-       {  "dpcm-8", SF_FORMAT_DPCM_8, SPA_AUDIO_FORMAT_F32, 1 },
+       {  "ulaw", SF_FORMAT_ULAW, 1, "ulaw", SPA_AUDIO_FORMAT_ULAW, 1, 0 },
+       {  "alaw", SF_FORMAT_ULAW, 1, "alaw", SPA_AUDIO_FORMAT_ALAW, 1, 0 },
+       {  "s8", SF_FORMAT_PCM_S8, 1, "s8", SPA_AUDIO_FORMAT_S8, 1, 0 },
+       {  "u8", SF_FORMAT_PCM_U8, 1, "u8", SPA_AUDIO_FORMAT_U8, 1, 0 },
+       {  "s16", SF_FORMAT_PCM_16, 2, "s16", SPA_AUDIO_FORMAT_S16, 2, 0 },
+       /* we read and write S24 as S32 with sndfile */
+       {  "s24", SF_FORMAT_PCM_24, 3, "s32", SPA_AUDIO_FORMAT_S32, 4, 0 },
+       {  "s32", SF_FORMAT_PCM_32, 4, "s32", SPA_AUDIO_FORMAT_S32, 4, 0 },
+       {  "f32", SF_FORMAT_FLOAT, 4, "f32", SPA_AUDIO_FORMAT_F32, 4, 0 },
+       {  "f64", SF_FORMAT_DOUBLE, 8, "f64", SPA_AUDIO_FORMAT_F32, 8, 0 },
+
+       {  "mp1", SF_FORMAT_MPEG_LAYER_I, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "mp2", SF_FORMAT_MPEG_LAYER_II, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "mp3", SF_FORMAT_MPEG_LAYER_III, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "vorbis", SF_FORMAT_VORBIS, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "opus", SF_FORMAT_OPUS, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+
+       {  "ima-adpcm", SF_FORMAT_IMA_ADPCM, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "ms-adpcm", SF_FORMAT_MS_ADPCM, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "nms-adpcm-16", SF_FORMAT_NMS_ADPCM_16, 1, "f32", 
SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED },
+       {  "nms-adpcm-24", SF_FORMAT_NMS_ADPCM_24, 1, "f32", 
SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED },
+       {  "nms-adpcm-32", SF_FORMAT_NMS_ADPCM_32, 1, "f32", 
SPA_AUDIO_FORMAT_F32, 4, FORMAT_ENCODED },
+
+       {  "alac-16", SF_FORMAT_ALAC_16, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "alac-20", SF_FORMAT_ALAC_20, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "alac-24", SF_FORMAT_ALAC_24, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "alac-32", SF_FORMAT_ALAC_32, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+
+       {  "gsm610", SF_FORMAT_GSM610, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "g721-32", SF_FORMAT_G721_32, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "g723-24", SF_FORMAT_G723_24, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "g723-40", SF_FORMAT_G723_40, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "dwvw-12", SF_FORMAT_DWVW_12, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "dwvw-16", SF_FORMAT_DWVW_16, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "dwvw-24", SF_FORMAT_DWVW_24, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "vox", SF_FORMAT_VOX_ADPCM, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "dpcm-16", SF_FORMAT_DPCM_16, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
+       {  "dpcm-8", SF_FORMAT_DPCM_8, 1, "f32", SPA_AUDIO_FORMAT_F32, 4, 
FORMAT_ENCODED },
 
 };
 
 static const struct format_info *format_info_by_name(const char *str)
 {
        SPA_FOR_EACH_ELEMENT_VAR(format_info, i)
-               if (spa_streq(str, i->name))
+               if (spa_streq(str, i->sf_name))
                        return i;
        return NULL;
 }
@@ -263,7 +268,7 @@
 
        fprintf(stdout, _("Supported formats:\n"));
        SPA_FOR_EACH_ELEMENT_VAR(format_info, i)
-               fprintf(stdout, "  %s\n", i->name);
+               fprintf(stdout, "  %s\n", i->sf_name);
 }
 
 static int sf_playback_fill_x8(struct data *d, void *dest, unsigned int 
n_frames, bool *null_frame)
@@ -1676,8 +1681,13 @@
        if (info == NULL)
                return -EINVAL;
 
+       if (info->flags & FORMAT_ENCODED) {
+               fprintf(stderr, "raw: raw encoded format %s not supported\n", 
info->sf_name);
+               return -ENOTSUP;
+       }
+
        data->spa_format = info->spa_format;
-       data->stride = info->width * data->channels;
+       data->stride = info->spa_width * data->channels;
        data->fill = data->mode == mode_playback ?  raw_play : raw_record;
 
        if (spa_streq(data->filename, "-")) {
@@ -1696,7 +1706,7 @@
        if (data->verbose)
                fprintf(stderr, "raw: rate=%u channels=%u fmt=%s samplesize=%u 
stride=%u\n",
                                data->rate, data->channels,
-                               info->name, info->width, data->stride);
+                               info->spa_name, info->spa_width, data->stride);
 
        return 0;
 }
@@ -2034,14 +2044,10 @@
 
        if (data->verbose)
                fprintf(stderr, "PCM: fmt:%s rate:%u channels:%u width:%u\n",
-                               fi->name, data->rate, data->channels, 
fi->width);
-
-       /* we read and write S24 as S32 with sndfile */
-       if (fi->spa_format == SPA_AUDIO_FORMAT_S24)
-               fi = format_info_by_sf_format(SF_FORMAT_PCM_32);
+                               fi->spa_name, data->rate, data->channels, 
fi->spa_width);
 
        data->spa_format = fi->spa_format;
-       data->stride = fi->width * data->channels;
+       data->stride = fi->spa_width * data->channels;
        data->fill = data->mode == mode_playback ?
                        playback_fill_fn(data->spa_format) :
                        record_fill_fn(data->spa_format);

++++++ pipewire.obsinfo ++++++
--- /var/tmp/diff_new_pack.vAtVEl/_old  2026-03-10 17:47:22.960859102 +0100
+++ /var/tmp/diff_new_pack.vAtVEl/_new  2026-03-10 17:47:22.964859268 +0100
@@ -1,5 +1,5 @@
 name: pipewire
-version: 1.6.0
-mtime: 1771491574
-commit: 700cea78dbe7564131d51b21a7795e2567ee048a
+version: 1.6.1
+mtime: 1773047831
+commit: b7341d068947225fcdf62d39277606e8516d7f52
 

Reply via email to