diff options
Diffstat (limited to 'media-video/pipewire/files')
5 files changed, 89 insertions, 118 deletions
diff --git a/media-video/pipewire/files/0.3.69/0001-context-improve-state-calculations.patch b/media-video/pipewire/files/0.3.69/0001-context-improve-state-calculations.patch deleted file mode 100644 index 29469205cf48..000000000000 --- a/media-video/pipewire/files/0.3.69/0001-context-improve-state-calculations.patch +++ /dev/null @@ -1,59 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/a275e825c75c93775baaeb17479e38d035d9b79a - -From a275e825c75c93775baaeb17479e38d035d9b79a Mon Sep 17 00:00:00 2001 -From: Wim Taymans <wtaymans@redhat.com> -Date: Fri, 14 Apr 2023 12:01:03 +0200 -Subject: [PATCH] context: improve state calculations - -Always make peers of non-passive links runnable, even if we already -visited the peer node. This makes non-passive links between drivers set the -drivers to runnable. (midi-bridge, source to sink). It also makes nodes -collected from the (link-)group runnable when they are linked together. - -To calculate the runnable state of the other nodes, only start from -non-driver runnable nodes (like we already did when following links). - -This makes a link from echo-cancel-source to echo-cancel-sink activate -the echo-canceler chain instead of staying idle. ---- a/src/pipewire/context.c -+++ b/src/pipewire/context.c -@@ -788,9 +788,6 @@ static inline int run_nodes(struct pw_context *context, struct pw_impl_node *nod - struct pw_impl_port *p; - struct pw_impl_link *l; - -- if (!node->runnable) -- return 0; -- - pw_log_debug("node %p: '%s'", node, node->name); - - spa_list_for_each(p, &node->input_ports, link) { -@@ -885,7 +882,7 @@ static int collect_nodes(struct pw_context *context, struct pw_impl_node *node, - - pw_impl_link_prepare(l); - -- if (!l->prepared || (t != n && t->visited)) -+ if (!l->prepared) - continue; - - if (!l->passive) -@@ -906,7 +903,7 @@ static int collect_nodes(struct pw_context *context, struct pw_impl_node *node, - - pw_impl_link_prepare(l); - -- if (!l->prepared || (t != n && t->visited)) -+ if (!l->prepared) - continue; - - if (!l->passive) -@@ -936,7 +933,8 @@ static int collect_nodes(struct pw_context *context, struct pw_impl_node *node, - pw_log_debug(" next node %p: '%s' runnable:%u", n, n->name, n->runnable); - } - spa_list_for_each(n, collect, sort_link) -- run_nodes(context, n, collect); -+ if (!n->driver && n->runnable) -+ run_nodes(context, n, collect); - - return 0; - } --- -GitLab diff --git a/media-video/pipewire/files/0.3.69/0002-revert-alsa-mixer-control-element.patch b/media-video/pipewire/files/0.3.69/0002-revert-alsa-mixer-control-element.patch deleted file mode 100644 index 1076ad101d0f..000000000000 --- a/media-video/pipewire/files/0.3.69/0002-revert-alsa-mixer-control-element.patch +++ /dev/null @@ -1,38 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/916f1cdfbfdc414d83031aef941a9909d1e603bd - -From 916f1cdfbfdc414d83031aef941a9909d1e603bd Mon Sep 17 00:00:00 2001 -From: Wim Taymans <wtaymans@redhat.com> -Date: Fri, 14 Apr 2023 16:32:18 +0200 -Subject: [PATCH] Revert "alsa-mixer: allow to re-attach the mixer control - element" - -This reverts commit b554fc20e9ff97064721c89eb15b1b45870584e5. ---- a/spa/plugins/alsa/acp/alsa-util.c -+++ b/spa/plugins/alsa/acp/alsa-util.c -@@ -1648,20 +1648,12 @@ static int mixer_class_event(snd_mixer_class_t *class, unsigned int mask, - } else if (mask & SND_CTL_EVENT_MASK_ADD) { - snd_ctl_elem_iface_t iface = snd_hctl_elem_get_interface(helem); - if (iface == SND_CTL_ELEM_IFACE_CARD || iface == SND_CTL_ELEM_IFACE_PCM) { -- snd_mixer_t *mixer = snd_mixer_class_get_mixer(class); -- snd_ctl_elem_iface_t iface = snd_hctl_elem_get_interface(helem); -- const char *name = snd_hctl_elem_get_name(helem); -- const int index = snd_hctl_elem_get_index(helem); -- const int device = snd_hctl_elem_get_device(helem); - snd_mixer_elem_t *new_melem; - -- new_melem = pa_alsa_mixer_find(mixer, iface, name, index, device); -- if (!new_melem) { -- /* Put the hctl pointer as our private data - it will be useful for callbacks */ -- if ((err = snd_mixer_elem_new(&new_melem, SND_MIXER_ELEM_PULSEAUDIO, 0, helem, NULL)) < 0) { -- pa_log_warn("snd_mixer_elem_new failed: %s", pa_alsa_strerror(err)); -- return 0; -- } -+ /* Put the hctl pointer as our private data - it will be useful for callbacks */ -+ if ((err = snd_mixer_elem_new(&new_melem, SND_MIXER_ELEM_PULSEAUDIO, 0, helem, NULL)) < 0) { -+ pa_log_warn("snd_mixer_elem_new failed: %s", pa_alsa_strerror(err)); -+ return 0; - } - - if ((err = snd_mixer_elem_attach(new_melem, helem)) < 0) { --- -GitLab diff --git a/media-video/pipewire/files/0.3.69/0003-filter-chain-biquads.patch b/media-video/pipewire/files/0.3.69/0003-filter-chain-biquads.patch deleted file mode 100644 index f01362604f51..000000000000 --- a/media-video/pipewire/files/0.3.69/0003-filter-chain-biquads.patch +++ /dev/null @@ -1,21 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/381be87e379996c502786883f90a19ac49e84c10 - -From 381be87e379996c502786883f90a19ac49e84c10 Mon Sep 17 00:00:00 2001 -From: Wim Taymans <wtaymans@redhat.com> -Date: Sun, 16 Apr 2023 18:38:52 +0200 -Subject: [PATCH] filter-chain: config is only required for bq_raw - -Fixes #3161 ---- a/src/modules/module-filter-chain/builtin_plugin.c -+++ b/src/modules/module-filter-chain/builtin_plugin.c -@@ -287,6 +287,8 @@ static void *bq_instantiate(const struct fc_descriptor * Descriptor, - impl->rate = SampleRate; - impl->b0 = impl->a0 = 1.0f; - impl->type = bq_type_from_name(Descriptor->name); -+ if (impl->type != BQ_NONE) -+ return impl; - - if (config == NULL) - goto error; --- -GitLab diff --git a/media-video/pipewire/files/gentoo-pipewire-launcher.in-r2 b/media-video/pipewire/files/gentoo-pipewire-launcher.in-r2 new file mode 100644 index 000000000000..ea2032b74b42 --- /dev/null +++ b/media-video/pipewire/files/gentoo-pipewire-launcher.in-r2 @@ -0,0 +1,77 @@ +#!/bin/sh + +# PipeWire launcher script for XDG compliant desktops on OpenRC. +# +# systemd users are very _STRONGLY_ advised to use the much +# more reliable and predictable user units instead. + +# WARNING: This script assumes being run inside XDG compliant session, +# which means D-Bus session instance is expected to be correctly set up +# prior to this script starting. If that is not true, things may break! + +DATE_FORMAT='+%Y-%m-%dT%H:%M:%S%Z' + +CONF="${XDG_CONFIG_HOME}/gentoo-pipewire-launcher.conf" +if [ -f "${CONF}" ] +then + . "${CONF}" +else + GENTOO_PIPEWIRE_LOG='/dev/null' + GENTOO_PIPEWIRE_PULSE_LOG='/dev/null' + GENTOO_WIREPLUMBER_LOG='/dev/null' +fi +for L in \ + "${GENTOO_PIPEWIRE_LOG}" \ + "${GENTOO_PIPEWIRE_PULSE_LOG}" \ + "${GENTOO_WIREPLUMBER_LOG}" +do + if [ ! -e "${L}" ] + then + touch "${L}" + fi +done + +restart () { + echo "Terminating PipeWire processes ..." + pkill -u "${USER}" -x pipewire\|wireplumber 1>/dev/null 2>&1 + pwait -u "${USER}" -x pipewire\|wireplumber + echo "PipeWire terminated." +} + +if [ "${#}" -gt 0 ] +then + if [ "${1}" = 'restart' ] + then + restart + else + echo "Unrecognised argument." >&2 + echo "Usage: gentoo-pipewire-launcher [restart]" >&2 + exit 1 + fi +fi + +if pgrep -u "${USER}" -x pipewire\|wireplumber 1>/dev/null 2>&1 +then + echo "PipeWire already running, exiting." >&2 + echo "(Use 'gentoo-pipewire-launcher restart' to restart PipeWire and WirePlumber.)" >&2 + exit 1 +fi + +# The core daemon which by itself does probably nothing. +echo "[$(@GENTOO_PORTAGE_EPREFIX@/bin/date ${DATE_FORMAT})] Starting PipeWire." 1>>"${GENTOO_PIPEWIRE_LOG}" +@GENTOO_PORTAGE_EPREFIX@/usr/bin/pipewire 1>>"${GENTOO_PIPEWIRE_LOG}" 2>&1 & + +# The so called pipewire-pulse daemon used for PulseAudio compatibility. +# Commenting this out will stop the PA proxying daemon from starting, +# however ALSA (with pipewire-alsa), JACK (with jack-sdk) and PW API using +# clients will still have access to audio and may end up clashing with +# non-PW apps over HW control (most notably, /usr/bin/pulseaudio daemon). +echo "[$(@GENTOO_PORTAGE_EPREFIX@/bin/date ${DATE_FORMAT})] Starting PipeWire-Pulse." 1>>"${GENTOO_PIPEWIRE_PULSE_LOG}" +@GENTOO_PORTAGE_EPREFIX@/usr/bin/pipewire -c pipewire-pulse.conf 1>>"${GENTOO_PIPEWIRE_PULSE_LOG}" 2>&1 & + +# Hack for bug #822498 +sleep 1 + +# Finally a session manager is required for PipeWire to do anything. +echo "[$(@GENTOO_PORTAGE_EPREFIX@/bin/date ${DATE_FORMAT})] Starting WirePlumber." 1>>"${GENTOO_WIREPLUMBER_LOG}" +exec @GENTOO_PORTAGE_EPREFIX@/usr/bin/wireplumber 1>>"${GENTOO_WIREPLUMBER_LOG}" 2>&1 diff --git a/media-video/pipewire/files/pipewire.desktop-r2 b/media-video/pipewire/files/pipewire.desktop-r2 new file mode 100644 index 000000000000..1e8564dbe370 --- /dev/null +++ b/media-video/pipewire/files/pipewire.desktop-r2 @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Name[de]=PipeWire Mediensystem +Name=PipeWire Media System +Comment[de]=Das PipeWire Mediensystem starten +Comment=Start the PipeWire Media System +Exec=/usr/bin/gentoo-pipewire-launcher restart +Terminal=false +Type=Application +X-GNOME-HiddenUnderSystemd=true +X-KDE-HiddenUnderSystemd=true +X-systemd-skip=true |