Accepting request 841554 from GNOME:Factory

- Update to version 0.3.13:
  * PipeWire improvements
    + Add pw-reserve tool to reserve or monitor a device on DBus.
    + Install spa-resample, a tool to resample a file.
    + Install spa-acp-tool, a tool to inspect the card profile.
    + Various fixes and improvements
    + Fix a bug in pw-stream where a capture stream could run out
      of buffers and become silent.
    + Rework the processing loops in the adapter and stream. There
      is now less latency in PulseAudio and ALSA layers.
  * Session manager improvements
    + Improve the device reservation code. We now try to acquire
      the device using the dbus device reservation API before we
      probe the device. This avoids conflicts with a running
      PulseAudio where devices would disappear (because they were
      locked by the other process).
    + Don't fail on invalid input from the config files.
    + Audio devices now have the same name as what PulseAudio
      would assign.
  * Device support
    + v4l2: try to use the format before enumerating the size and
      framerate. Some drivers don't check the format and might now
      work better.
    + v4l2: Fall back to MMAP when EXPBUF fails. Fix MMAP access,
      just export the fd and the mapoffset. This should make more
      devices work.
    + Fix crash in ALSA Card Profile (ACP) code.
    + ACP: fix selection of default profile. Prefer any possibly
      available profile over 'Off'. This makes some card at least
      start with something. (forwarded request 841457 from alarrosa)

OBS-URL: https://build.opensuse.org/request/show/841554
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pipewire?expand=0&rev=17
This commit is contained in:
Dominique Leuenberger 2020-10-15 11:47:55 +00:00 committed by Git OBS Bridge
parent da43a0f7cf
commit 856fab80eb
8 changed files with 113 additions and 75 deletions

View File

@ -1,60 +0,0 @@
From 8332d3e3edba34b8b0706359085e4750705c8f12 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Tue, 15 Sep 2020 13:16:31 +0200
Subject: [PATCH] alsa: don't change the resampler delay value
Don't change the resampler delay value, we need it to make sure
we keep samples around for the next round. With small period sizes,
we set the delay to 0 and mess up the resampler and cause dropouts
and clicking.
Fixes #287
---
spa/plugins/alsa/alsa-pcm.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/spa/plugins/alsa/alsa-pcm.c b/spa/plugins/alsa/alsa-pcm.c
index 932244e7..78c4a3f7 100644
--- a/spa/plugins/alsa/alsa-pcm.c
+++ b/spa/plugins/alsa/alsa-pcm.c
@@ -664,7 +664,6 @@ static int alsa_recover(struct state *state, int err)
state->alsa_started = false;
spa_alsa_write(state, state->threshold * 2);
}
-
return 0;
}
@@ -688,6 +687,7 @@ static int get_status(struct state *state, snd_pcm_uframes_t *delay, snd_pcm_ufr
*target = state->last_threshold;
+#define MARGIN 48
if (state->resample && state->rate_match) {
state->delay = state->rate_match->delay * 2;
state->read_size = state->rate_match->size;
@@ -695,9 +695,10 @@ static int get_status(struct state *state, snd_pcm_uframes_t *delay, snd_pcm_ufr
* by moving a little closer to the device read/write pointers.
* Don't try to get closer than 48 samples but instead increase the
* reported latency on the port (TODO). */
- if (*target <= state->delay + 48)
- state->delay = SPA_MAX(0, (int)(*target - 48 - state->delay));
- *target -= state->delay;
+ if (*target <= state->delay + MARGIN)
+ *target -= SPA_MAX(0, (int)(*target - MARGIN - state->delay));
+ else
+ *target -= state->delay;
} else {
state->delay = state->read_size = 0;
}
@@ -1290,6 +1291,7 @@ int spa_alsa_start(struct state *state)
reset_buffers(state);
state->alsa_sync = true;
+ state->alsa_recovering = false;
if (state->stream == SND_PCM_STREAM_PLAYBACK) {
state->alsa_started = false;
--
GitLab

View File

@ -3,7 +3,7 @@
<service name="obs_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">https://gitlab.freedesktop.org/pipewire/pipewire.git</param>
<param name="revision">0.3.11</param>
<param name="revision">0.3.13</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>

View File

@ -10,8 +10,8 @@ Index: pipewire-0.3.8/spa/plugins/alsa/meson.build
spa_alsa_sources = ['alsa.c',
'alsa-udev.c',
@@ -26,8 +26,8 @@ alsa_udevrules = [
'90-pipewire-alsa.rules',
]
install : true,
)
-if libudev_dep.found()
- install_data(alsa_udevrules,

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:23df2fc57724344f56c6378ce088512784d66f818c165dc90725356d71217761
size 6727693

3
pipewire-0.3.13.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cb06fad3ca886f988dc89d76796ac3f5cefa0ea36b82a9248f5ca30ed83590f4
size 6778893

View File

@ -1,3 +1,102 @@
-------------------------------------------------------------------
Thu Oct 8 08:29:36 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.3.13:
* PipeWire improvements
+ Add pw-reserve tool to reserve or monitor a device on DBus.
+ Install spa-resample, a tool to resample a file.
+ Install spa-acp-tool, a tool to inspect the card profile.
+ Various fixes and improvements
+ Fix a bug in pw-stream where a capture stream could run out
of buffers and become silent.
+ Rework the processing loops in the adapter and stream. There
is now less latency in PulseAudio and ALSA layers.
* Session manager improvements
+ Improve the device reservation code. We now try to acquire
the device using the dbus device reservation API before we
probe the device. This avoids conflicts with a running
PulseAudio where devices would disappear (because they were
locked by the other process).
+ Don't fail on invalid input from the config files.
+ Audio devices now have the same name as what PulseAudio
would assign.
* Device support
+ v4l2: try to use the format before enumerating the size and
framerate. Some drivers don't check the format and might now
work better.
+ v4l2: Fall back to MMAP when EXPBUF fails. Fix MMAP access,
just export the fd and the mapoffset. This should make more
devices work.
+ Fix crash in ALSA Card Profile (ACP) code.
+ ACP: fix selection of default profile. Prefer any possibly
available profile over 'Off'. This makes some card at least
start with something.
+ Fix soft volume. After setting the volume to 0, it would stay
at 0 until pushed over the max volume. This should fix
various volume related issues.
* PulseAudio layer improvements
+ Rework the buffering and latency measurements and tweak the
buffer attributes. This should make browsers and media
players work better. This should also improve speechd
performance.
* JACK layer improvements
+ Fix compilation against newer JACK.
- Rebase patch:
* do-not-install-alsa-config-files.patch
-------------------------------------------------------------------
Tue Sep 22 12:37:18 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.3.12:
* PipeWire improvements
+ The channelmap converter now handles unknown and strange
channel layouts much better.
+ The resampler is now cleared correctly, avoiding clicks and
pops at the start of sound.
+ Fixes for various crasher bugs. (paplay drain, vlc shutdown,
pactl info, ...)
+ Fix a race condition in the node state changes that caused
all kinds of sync and other issues (vlc, mpv, ...)
+ Improve the binary name property of applications
+ Fix the scheduling again of nodes that always need a driver
such as the jack clients.
* Session manager improvements
+ Fix routing to default nodes. Sometimes nodes were not routed
to the default node (bluetooth)
* Device support
+ Disable channelmap from ALSA by default. This is what
PulseAudio does and thus provides better compatibility.
+ Fix a bug in how the resampler was used in the ALSA source,
causing distortion and errors when using low latency capture
clients. (Discord, webrtc, ...)
+ Small bluetooth improvements. More work is needed for
reliable bluetooth playback.
* GStreamer plugins
+ The device provider now stops the processing loop before
shutting down, which avoids crashes (gnome-initial-setup).
* PulseAudio layer improvements
+ The buffer attributes were reworked to ensure compatibility
with many more applications such as mpv and audacious.
+ The pulseaudio layer will now try hard to not hand out
invalid channel maps to the application. (avoids crashes in
gnome-volume-control). The channel map will now also look
more like what PulseAudio does.
+ The @DEFAULT_SINK/SOURCE/MONITOR@ wildcards now work. This
fixes the problem with volume keys when they are bound to
scripts using pactl and the default sink/source wildcards.
+ The PIPEWIRE_LATENCY environment variable now works again
+ Fix some leaks of ports and port info. Also fix the leak of
the context when the mainloop is stopped.
+ The sink/source format_info array is now filled up
completely, this is actually not implemented yet in the real
PulseAudio.
* JACK layer improvements
+ jack now returns version 3.0.0 and has PipeWire in the
version string so that apps can report this.
- Drop patch:
* 0001-alsa-dont-change-the-resampler-delay-value.patch
-------------------------------------------------------------------
Fri Sep 18 05:32:09 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>

View File

@ -1,5 +1,5 @@
name: pipewire
version: 0.3.11
mtime: 1599736416
commit: b0c758719dfd661d9d2237e780f93d56ea181669
version: 0.3.13
mtime: 1601302090
commit: d7714f734dcf2a346f939e11e1e3f6a2373c8632

View File

@ -22,7 +22,6 @@
%global provfind sh -c "grep -v -e 'libpulse.*\\.so' -e 'libjack.*\\.so' | %__find_provides"
%global __find_provides %provfind
%define sover 0_3_9
%define apiver 0.3
%define apiver_str 0_3
%define spa_ver 0.2
@ -36,7 +35,7 @@
%endif
Name: pipewire
Version: 0.3.11
Version: 0.3.13
Release: 0
Summary: A Multimedia Framework designed to be an audio and video server and more
License: MIT
@ -47,8 +46,6 @@ Source1: %{name}-rpmlintrc
Patch0: fix-memfd_create-call.patch
Patch1: do-not-use-snd_pcm_ioplug_hw_avail.patch
Patch2: do-not-install-alsa-config-files.patch
# PATCH-FIX-UPSTREAM 0001-alsa-dont-change-the-resampler-delay-value.patch -- https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/287
Patch100: 0001-alsa-dont-change-the-resampler-delay-value.patch
BuildRequires: doxygen
BuildRequires: fdupes
@ -266,9 +263,8 @@ sed -i -e "s/dependency('alsa', version : '>=1.1.7')/dependency('alsa', version
%endif
sed -i -e "s/meson_version : '>= 0.49.0',/meson_version : '>= 0.46.0',/" meson.build
%patch2 -p1
%patch100 -p1
%autopatch -m 101 -p1
%autopatch -m 100 -p1
%build
%if %{pkg_vcmp gcc < 8}
@ -423,6 +419,7 @@ fi
%{_bindir}/pw-mididump
%{_bindir}/pw-midiplay
%{_bindir}/pw-midirecord
%{_bindir}/pw-reserve
%{_mandir}/man1/pw-cli.1%{ext_man}
%{_mandir}/man1/pw-mon.1%{ext_man}
%{_mandir}/man1/pw-cat.1%{ext_man}
@ -434,6 +431,8 @@ fi
%files spa-tools
%{_bindir}/spa-inspect
%{_bindir}/spa-monitor
%{_bindir}/spa-acp-tool
%{_bindir}/spa-resample
%files modules
%dir %{_libdir}/pipewire-%{apiver}