Accepting request 836040 from GNOME:Factory

(forwarded request 835423 from dimstar)

OBS-URL: https://build.opensuse.org/request/show/836040
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pipewire?expand=0&rev=16
This commit is contained in:
Dominique Leuenberger 2020-09-25 14:25:06 +00:00 committed by Git OBS Bridge
parent afed657557
commit da43a0f7cf
7 changed files with 155 additions and 8 deletions

View File

@ -0,0 +1,60 @@
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.10</param>
<param name="revision">0.3.11</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>

View File

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

3
pipewire-0.3.11.obscpio Normal file
View File

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

View File

@ -1,3 +1,87 @@
-------------------------------------------------------------------
Fri Sep 18 05:32:09 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.3.11:
* PipeWire improvements
+ Properly cleanup the mixer structures when a port is removed,
this should fix client crashes related to port config changes
and other random crashes.
+ Optimize the preferred formats in the audio converter. Higher
quality formats with higher performance are chosen first.
+ Make sure the time reported by pw_stream is always
increasing, even when the driver and clock changes.
+ There is now also a system service and socket that can be
used to enable PipeWire systemwide. This is however not
recommended and disabled by default.
+ Fix channelmixer 5.1 to stereo mix matrix. It was not reading
the conversion matrix correctly and cause channels to be
dropped. The channelmixer will now also normalize the volume,
like what pulseaudio does.
+ The channelmixer will now just copy channels when no layout
has been given. It has also optimized paths for this. This
makes it possible for apps to request > 8 channels from the
alsa plugin (ardour).
+ Port, Node and Link will now also emit an error on the
resources in addition to updating the error in the info. This
would make it easier to track negotiation errors in the
session manager later.
+ many small fixes and cleanups.
+ Fix compatibility:
- DOSBox: fix crash because of double free in pw_stream
* Session manager improvements
+ The session manager will now try to configure the client to
the channel configuration of the sink/source. It will only
do this for downmixing, never for upmixing and also never
when the client has the dont-remix property set. It will
also renegotiate the channel layout when moving a stream to
a new sink/source.
+ Configuration state is now saved in XDG_CONFIG_HOME.
Previously it was saved in $HOME/.pipewire-media-session/
You can migrate the state by moving the files to
$XDG_CONFIG_HOME/pipewire-media-session (or
$HOME/.config/pipewire-media-session as a fallback when
XDG_CONFIG_HOME is not set).
* Device support
+ Bluetooth sources and sinks should work better now.
+ There is now also a new bluetooth backend using hsphfpd.
+ fix the ALSA UCM Off profile for alsa pcm devices
+ improve ALSA port and profile switching. The ACP device will
now switch to the best port and profile when availability
changes.
* PulseAudio layer improvements
+ Implement some more callbacks. The pulse layer will now also
notify applications of stream moved, started and latency
changes.
+ Fix error code when an object was not found. We now return
PA_ERR_NOENTITY instead of PA_ERR_INVALID.
+ Add some support for loading new null sinks. Applications
such as pulseeffects use this. Note that pulseeffects does
not yet work reliably but can start now.
+ Improve handling of profile and port updates, it should work
much more reliable now. Apps should now also again receive
volume updates from sinks/sources.
+ Fix compatibility:
- openal-soft 1.20
- pavucontrol (checks PA_ERR_NOENTITY)
* JACK layer improvements
+ improve default source and sink handling. It was not updated
correctly in all cases.
+ add samplerate and period to the pw-jack wrapper to easily
configure the desired samplerate and perdiod for the app.
* ALSA plugin improvements
+ Add a mixer entry in the alsa config file.
+ Implement support for planar types, rework the processing
function to make it more robust.
+ refuse to load the alsa plugin when linked against 0.2. This
catches some old apps linked against 0.2 that want to use the
alsa plugin.
+ Fix compatibility:
- linphone (ALSA SIGFPE when _status() is called
before _prepare()).
- Add patch from upstream to fix audio stutters in discord and probably
other applications when using alsa directly.
* 0001-alsa-dont-change-the-resampler-delay-value.patch
-------------------------------------------------------------------
Thu Aug 27 06:00:06 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>

View File

@ -1,5 +1,5 @@
name: pipewire
version: 0.3.10
mtime: 1597749552
commit: 69be14186e20ffaa42c4a635be5da49173c45b97
version: 0.3.11
mtime: 1599736416
commit: b0c758719dfd661d9d2237e780f93d56ea181669

View File

@ -36,7 +36,7 @@
%endif
Name: pipewire
Version: 0.3.10
Version: 0.3.11
Release: 0
Summary: A Multimedia Framework designed to be an audio and video server and more
License: MIT
@ -47,6 +47,8 @@ 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
@ -264,6 +266,7 @@ 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