From 80a4eeef1be2ff8d10f01bfd8e8ed48cc2fb99d4 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 15 May 2024 08:37:29 +0000 Subject: [PATCH] Import from AlmaLinux stable repository --- .gitignore | 2 +- .pipewire.metadata | 2 +- ...iresrc-Let-GstBaseSrc-handle-pseudo-.patch | 132 ++++++ ...wide-meson.build-use-feature.allowed.patch | 276 ------------ .../0001-meson-drop-required-version.patch | 25 -- ...speakers-output-only-case-in-report_.patch | 73 --- SOURCES/pipewire-jack-allow-old-meson.patch | 59 --- SOURCES/pipewire.sysusers | 2 + SPECS/pipewire.spec | 418 +++++++++++++++--- 9 files changed, 495 insertions(+), 494 deletions(-) create mode 100644 SOURCES/0001-Revert-gst-pipewiresrc-Let-GstBaseSrc-handle-pseudo-.patch delete mode 100644 SOURCES/0001-Revert-treewide-meson.build-use-feature.allowed.patch delete mode 100644 SOURCES/0001-meson-drop-required-version.patch delete mode 100644 SOURCES/0001-spa-support-the-speakers-output-only-case-in-report_.patch delete mode 100644 SOURCES/pipewire-jack-allow-old-meson.patch create mode 100644 SOURCES/pipewire.sysusers diff --git a/.gitignore b/.gitignore index e1b5b2b..764016b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/pipewire-0.3.47.tar.gz +SOURCES/pipewire-1.0.1.tar.gz diff --git a/.pipewire.metadata b/.pipewire.metadata index dd83195..13f8e2b 100644 --- a/.pipewire.metadata +++ b/.pipewire.metadata @@ -1 +1 @@ -ed5ba7b20d34b615240528539199349a7e6efa5e SOURCES/pipewire-0.3.47.tar.gz +e76e7187f90ecbb6b60ecea05a6b1b813832434c SOURCES/pipewire-1.0.1.tar.gz diff --git a/SOURCES/0001-Revert-gst-pipewiresrc-Let-GstBaseSrc-handle-pseudo-.patch b/SOURCES/0001-Revert-gst-pipewiresrc-Let-GstBaseSrc-handle-pseudo-.patch new file mode 100644 index 0000000..2c692e0 --- /dev/null +++ b/SOURCES/0001-Revert-gst-pipewiresrc-Let-GstBaseSrc-handle-pseudo-.patch @@ -0,0 +1,132 @@ +From 18bd53043435f3d32d6eee871dcd23017239ef70 Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Fri, 19 Jan 2024 12:53:39 +0100 +Subject: [PATCH] Revert "gst/pipewiresrc: Let GstBaseSrc handle pseudo-live + calculations" + +This reverts commit 004206db370f4244411ffc16135d51d021809df8. +--- + src/gst/gstpipewiresrc.c | 66 +++++++++++++++------------------------- + 1 file changed, 24 insertions(+), 42 deletions(-) + +diff --git a/src/gst/gstpipewiresrc.c b/src/gst/gstpipewiresrc.c +index d95e99620..753bf760a 100644 +--- a/src/gst/gstpipewiresrc.c ++++ b/src/gst/gstpipewiresrc.c +@@ -91,8 +91,6 @@ static gboolean gst_pipewire_src_start (GstBaseSrc * basesrc); + static gboolean gst_pipewire_src_stop (GstBaseSrc * basesrc); + static gboolean gst_pipewire_src_event (GstBaseSrc * src, GstEvent * event); + static gboolean gst_pipewire_src_query (GstBaseSrc * src, GstQuery * query); +-static void gst_pipewire_src_get_times (GstBaseSrc * basesrc, GstBuffer * buffer, +- GstClockTime * start, GstClockTime * end); + + static void + gst_pipewire_src_set_property (GObject * object, guint prop_id, +@@ -415,7 +413,6 @@ gst_pipewire_src_class_init (GstPipeWireSrcClass * klass) + gstbasesrc_class->stop = gst_pipewire_src_stop; + gstbasesrc_class->event = gst_pipewire_src_event; + gstbasesrc_class->query = gst_pipewire_src_query; +- gstbasesrc_class->get_times = gst_pipewire_src_get_times; + gstpushsrc_class->create = gst_pipewire_src_create; + + GST_DEBUG_CATEGORY_INIT (pipewire_src_debug, "pipewiresrc", 0, +@@ -581,7 +578,7 @@ static GstBuffer *dequeue_buffer(GstPipeWireSrc *pwsrc) + GST_LOG_OBJECT (pwsrc, "pts %" G_GUINT64_FORMAT ", dts_offset %" G_GUINT64_FORMAT, h->pts, h->dts_offset); + + if (GST_CLOCK_TIME_IS_VALID (h->pts)) { +- GST_BUFFER_PTS (buf) = h->pts; ++ GST_BUFFER_PTS (buf) = h->pts + GST_PIPEWIRE_CLOCK (pwsrc->clock)->time_offset; + if (GST_BUFFER_PTS (buf) + h->dts_offset > 0) + GST_BUFFER_DTS (buf) = GST_BUFFER_PTS (buf) + h->dts_offset; + } +@@ -1136,39 +1133,11 @@ gst_pipewire_src_query (GstBaseSrc * src, GstQuery * query) + return res; + } + +-static void +-gst_pipewire_src_get_times (GstBaseSrc * basesrc, GstBuffer * buffer, +- GstClockTime * start, GstClockTime * end) +-{ +- GstPipeWireSrc *pwsrc = GST_PIPEWIRE_SRC (basesrc); +- +- /* for live sources, sync on the timestamp of the buffer */ +- if (gst_base_src_is_live (basesrc)) { +- GstClockTime timestamp = GST_BUFFER_PTS (buffer); +- +- if (GST_CLOCK_TIME_IS_VALID (timestamp)) { +- /* get duration to calculate end time */ +- GstClockTime duration = GST_BUFFER_DURATION (buffer); +- +- if (GST_CLOCK_TIME_IS_VALID (duration)) { +- *end = timestamp + duration; +- } +- *start = timestamp; +- } +- } else { +- *start = GST_CLOCK_TIME_NONE; +- *end = GST_CLOCK_TIME_NONE; +- } +- +- GST_LOG_OBJECT (pwsrc, "start %" GST_TIME_FORMAT " (%" G_GUINT64_FORMAT +- "), end %" GST_TIME_FORMAT " (%" G_GUINT64_FORMAT ")", +- GST_TIME_ARGS (*start), *start, GST_TIME_ARGS (*end), *end); +-} +- + static GstFlowReturn + gst_pipewire_src_create (GstPushSrc * psrc, GstBuffer ** buffer) + { + GstPipeWireSrc *pwsrc; ++ GstClockTime pts, dts, base_time; + const char *error = NULL; + GstBuffer *buf; + gboolean update_time = FALSE, timeout = FALSE; +@@ -1247,24 +1216,37 @@ gst_pipewire_src_create (GstPushSrc * psrc, GstBuffer ** buffer) + + *buffer = buf; + +- if (update_time) { +- GstClock *clock; +- GstClockTime pts, dts; ++ if (pwsrc->is_live) ++ base_time = GST_ELEMENT_CAST (psrc)->base_time; ++ else ++ base_time = 0; + +- clock = gst_element_get_clock (GST_ELEMENT_CAST (pwsrc)); ++ if (update_time) { ++ GstClock *clock = gst_element_get_clock (GST_ELEMENT_CAST (pwsrc)); + if (clock != NULL) { + pts = dts = gst_clock_get_time (clock); + gst_object_unref (clock); + } else { + pts = dts = GST_CLOCK_TIME_NONE; + } ++ } else { ++ pts = GST_BUFFER_PTS (*buffer); ++ dts = GST_BUFFER_DTS (*buffer); ++ } + +- GST_BUFFER_PTS (*buffer) = pts; +- GST_BUFFER_DTS (*buffer) = dts; ++ if (GST_CLOCK_TIME_IS_VALID (pts)) ++ pts = (pts >= base_time ? pts - base_time : 0); ++ if (GST_CLOCK_TIME_IS_VALID (dts)) ++ dts = (dts >= base_time ? dts - base_time : 0); + +- GST_LOG_OBJECT (pwsrc, "Sending keepalive buffer pts/dts: %" GST_TIME_FORMAT +- " (%" G_GUINT64_FORMAT ")", GST_TIME_ARGS (pts), pts); +- } ++ GST_LOG_OBJECT (pwsrc, ++ "pts %" G_GUINT64_FORMAT ", dts %" G_GUINT64_FORMAT ++ ", base-time %" GST_TIME_FORMAT " -> %" GST_TIME_FORMAT ", %" GST_TIME_FORMAT, ++ GST_BUFFER_PTS (*buffer), GST_BUFFER_DTS (*buffer), GST_TIME_ARGS (base_time), ++ GST_TIME_ARGS (pts), GST_TIME_ARGS (dts)); ++ ++ GST_BUFFER_PTS (*buffer) = pts; ++ GST_BUFFER_DTS (*buffer) = dts; + + return GST_FLOW_OK; + +-- +2.43.0 + diff --git a/SOURCES/0001-Revert-treewide-meson.build-use-feature.allowed.patch b/SOURCES/0001-Revert-treewide-meson.build-use-feature.allowed.patch deleted file mode 100644 index 4b721ba..0000000 --- a/SOURCES/0001-Revert-treewide-meson.build-use-feature.allowed.patch +++ /dev/null @@ -1,276 +0,0 @@ -From 768eb72fa8eb5a4597adc60d2649cf2e5f564247 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Fri, 18 Feb 2022 10:27:40 +0100 -Subject: [PATCH] Revert "treewide: meson.build: use feature.allowed()" - -This reverts commit cc7305351202424a2800425d86ae9c9b72aefa15. ---- - man/meson.build | 2 +- - meson.build | 14 +++++++------- - spa/meson.build | 4 ++-- - spa/plugins/bluez5/meson.build | 18 +++++++++--------- - spa/plugins/meson.build | 18 +++++++++--------- - spa/plugins/support/meson.build | 2 +- - src/daemon/systemd/meson.build | 4 ++-- - src/gst/meson.build | 2 +- - src/meson.build | 4 ++-- - src/tools/meson.build | 2 +- - 10 files changed, 35 insertions(+), 35 deletions(-) - -diff --git a/man/meson.build b/man/meson.build -index 54d1c5eca..8e6e7dbe4 100644 ---- a/man/meson.build -+++ b/man/meson.build -@@ -19,7 +19,7 @@ manpages = [ - 'pw-profiler.1.rst.in', - ] - --if get_option('pipewire-jack').allowed() -+if not get_option('pipewire-jack').disabled() - manpages += 'pw-jack.1.rst.in' - endif - -diff --git a/meson.build b/meson.build -index 3c88c2427..b033059e9 100644 ---- a/meson.build -+++ b/meson.build -@@ -336,7 +336,7 @@ endforeach - gst_dp_found = gst_dep.length() > 0 - summary({'gstreamer-device-provider': gst_dp_found}, bool_yn: true, section: 'Backend') - --cdata.set('HAVE_GSTREAMER_DEVICE_PROVIDER', get_option('gstreamer-device-provider').allowed()) -+cdata.set('HAVE_GSTREAMER_DEVICE_PROVIDER', not get_option('gstreamer-device-provider').disabled()) - - webrtc_dep = dependency('webrtc-audio-processing', - version : ['>= 0.2', '< 1.0'], -@@ -382,10 +382,10 @@ cdata.set('HAVE_LILV', lilv_lib.found()) - - installed_tests_metadir = pipewire_datadir / 'installed-tests' / pipewire_name - installed_tests_execdir = pipewire_libexecdir / 'installed-tests' / pipewire_name --installed_tests_enabled = get_option('installed_tests').allowed() -+installed_tests_enabled = not get_option('installed_tests').disabled() - installed_tests_template = files('template.test.in') - --if get_option('tests').allowed() -+if not get_option('tests').disabled() - gstack = find_program('gstack', required : false) - cdata.set('HAVE_GSTACK', gstack.found()) - endif -@@ -394,17 +394,17 @@ subdir('po') - subdir('spa') - subdir('src') - --if get_option('tests').allowed() -+if not get_option('tests').disabled() - subdir('test') - endif - - configure_file(output : 'config.h', - configuration : cdata) - --if get_option('pipewire-jack').allowed() -+if not get_option('pipewire-jack').disabled() - subdir('pipewire-jack') - endif --if get_option('pipewire-v4l2').allowed() -+if not get_option('pipewire-v4l2').disabled() - subdir('pipewire-v4l2') - endif - -@@ -415,7 +415,7 @@ if alsa_dep.found() - endif - - generate_manpages = false --if get_option('man').allowed() -+if not get_option('man').disabled() - rst2man = find_program('rst2man', required: false) - if not rst2man.found() - rst2man = find_program('rst2man.py', required: get_option('man')) -diff --git a/spa/meson.build b/spa/meson.build -index 1931d35b1..2404748df 100644 ---- a/spa/meson.build -+++ b/spa/meson.build -@@ -31,7 +31,7 @@ pkgconfig.generate(filebase : 'lib@0@'.format(spa_name), - - subdir('include') - --if get_option('spa-plugins').allowed() -+if not get_option('spa-plugins').disabled() - udevrulesdir = get_option('udevrulesdir') - if udevrulesdir == '' - # absolute path, otherwise meson prepends the prefix -@@ -74,6 +74,6 @@ endif - - subdir('tools') - subdir('tests') --if get_option('examples').allowed() -+if not get_option('examples').disabled() - subdir('examples') - endif -diff --git a/spa/plugins/bluez5/meson.build b/spa/plugins/bluez5/meson.build -index 4567b67dd..7a1e12ec7 100644 ---- a/spa/plugins/bluez5/meson.build -+++ b/spa/plugins/bluez5/meson.build -@@ -6,12 +6,12 @@ foreach dep: bluez5_deps - endforeach - - cdata.set('HAVE_BLUEZ_5_BACKEND_NATIVE', -- get_option('bluez5-backend-hsp-native').allowed() or -- get_option('bluez5-backend-hfp-native').allowed()) --cdata.set('HAVE_BLUEZ_5_BACKEND_HSP_NATIVE', get_option('bluez5-backend-hsp-native').allowed()) --cdata.set('HAVE_BLUEZ_5_BACKEND_HFP_NATIVE', get_option('bluez5-backend-hfp-native').allowed()) --cdata.set('HAVE_BLUEZ_5_BACKEND_OFONO', get_option('bluez5-backend-ofono').allowed()) --cdata.set('HAVE_BLUEZ_5_BACKEND_HSPHFPD', get_option('bluez5-backend-hsphfpd').allowed()) -+ not get_option('bluez5-backend-hsp-native').disabled() or -+ not get_option('bluez5-backend-hfp-native').disabled()) -+cdata.set('HAVE_BLUEZ_5_BACKEND_HSP_NATIVE', not get_option('bluez5-backend-hsp-native').disabled()) -+cdata.set('HAVE_BLUEZ_5_BACKEND_HFP_NATIVE', not get_option('bluez5-backend-hfp-native').disabled()) -+cdata.set('HAVE_BLUEZ_5_BACKEND_OFONO', not get_option('bluez5-backend-ofono').disabled()) -+cdata.set('HAVE_BLUEZ_5_BACKEND_HSPHFPD', not get_option('bluez5-backend-hsphfpd').disabled()) - cdata.set('HAVE_BLUEZ_5_HCI', dependency('bluez', version: '< 6', required: false).found()) - - bluez5_sources = [ -@@ -34,18 +34,18 @@ bluez5_data = ['bluez-hardware.conf'] - - install_data(bluez5_data, install_dir : spa_datadir / 'bluez5') - --if get_option('bluez5-backend-hsp-native').allowed() or get_option('bluez5-backend-hfp-native').allowed() -+if not get_option('bluez5-backend-hsp-native').disabled() or not get_option('bluez5-backend-hfp-native').disabled() - if libusb_dep.found() - bluez5_deps += libusb_dep - endif - bluez5_sources += ['backend-native.c'] - endif - --if get_option('bluez5-backend-ofono').allowed() -+if not get_option('bluez5-backend-ofono').disabled() - bluez5_sources += ['backend-ofono.c'] - endif - --if get_option('bluez5-backend-hsphfpd').allowed() -+if not get_option('bluez5-backend-hsphfpd').disabled() - bluez5_sources += ['backend-hsphfpd.c'] - endif - -diff --git a/spa/plugins/meson.build b/spa/plugins/meson.build -index fcf007aa9..0b581b29b 100644 ---- a/spa/plugins/meson.build -+++ b/spa/plugins/meson.build -@@ -1,16 +1,16 @@ - if alsa_dep.found() - subdir('alsa') - endif --if get_option('audioconvert').allowed() -+if not get_option('audioconvert').disabled() - subdir('audioconvert') - endif --if get_option('audiomixer').allowed() -+if not get_option('audiomixer').disabled() - subdir('audiomixer') - endif --if get_option('control').allowed() -+if not get_option('control').disabled() - subdir('control') - endif --if get_option('audiotestsrc').allowed() -+if not get_option('audiotestsrc').disabled() - subdir('audiotestsrc') - endif - if bluez_dep.found() -@@ -22,19 +22,19 @@ endif - if jack_dep.found() - subdir('jack') - endif --if get_option('support').allowed() -+if not get_option('support').disabled() - subdir('support') - endif --if get_option('test').allowed() -+if not get_option('test').disabled() - subdir('test') - endif --if get_option('videoconvert').allowed() -+if not get_option('videoconvert').disabled() - subdir('videoconvert') - endif --if get_option('videotestsrc').allowed() -+if not get_option('videotestsrc').disabled() - subdir('videotestsrc') - endif --if get_option('volume').allowed() -+if not get_option('volume').disabled() - subdir('volume') - endif - if vulkan_headers -diff --git a/spa/plugins/support/meson.build b/spa/plugins/support/meson.build -index 1672d38df..b810b283c 100644 ---- a/spa/plugins/support/meson.build -+++ b/spa/plugins/support/meson.build -@@ -23,7 +23,7 @@ spa_support_lib = shared_library('spa-support', - install_dir : spa_plugindir / 'support') - spa_support_dep = declare_dependency(link_with: spa_support_lib) - --if get_option('evl').allowed() -+if not get_option('evl').disabled() - evl_inc = include_directories('/usr/evl/include') - evl_lib = cc.find_library('evl', - dirs: ['/usr/evl/lib/'], -diff --git a/src/daemon/systemd/meson.build b/src/daemon/systemd/meson.build -index 482a44c4b..89ad2f6dc 100644 ---- a/src/daemon/systemd/meson.build -+++ b/src/daemon/systemd/meson.build -@@ -1,6 +1,6 @@ --if get_option('systemd-system-service').allowed() -+if not get_option('systemd-system-service').disabled() - subdir('system') - endif --if get_option('systemd-user-service').allowed() -+if not get_option('systemd-user-service').disabled() - subdir('user') - endif -diff --git a/src/gst/meson.build b/src/gst/meson.build -index fd552f6cb..709dc0f1c 100644 ---- a/src/gst/meson.build -+++ b/src/gst/meson.build -@@ -8,7 +8,7 @@ pipewire_gst_sources = [ - 'gstpipewiresrc.c', - ] - --if get_option('gstreamer-device-provider').allowed() -+if not get_option('gstreamer-device-provider').disabled() - pipewire_gst_sources += [ 'gstpipewiredeviceprovider.c' ] - endif - -diff --git a/src/meson.build b/src/meson.build -index cefc329eb..2fb73fd59 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -3,10 +3,10 @@ subdir('pipewire') - subdir('daemon') - subdir('tools') - subdir('modules') --if get_option('examples').allowed() -+if not get_option('examples').disabled() - subdir('examples') - endif --if get_option('tests').allowed() -+if not get_option('tests').disabled() - subdir('tests') - endif - -diff --git a/src/tools/meson.build b/src/tools/meson.build -index 02514c253..038231fcd 100644 ---- a/src/tools/meson.build -+++ b/src/tools/meson.build -@@ -34,7 +34,7 @@ if ncurses_dep.found() - endif - - build_pw_cat = false --if get_option('pw-cat').allowed() and sndfile_dep.found() -+if not get_option('pw-cat').disabled() and sndfile_dep.found() - build_pw_cat = true - - pwcat_sources = [ --- -2.34.1 - diff --git a/SOURCES/0001-meson-drop-required-version.patch b/SOURCES/0001-meson-drop-required-version.patch deleted file mode 100644 index 68efac5..0000000 --- a/SOURCES/0001-meson-drop-required-version.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 753e97fe5823aa441b996015f44ddba3e400855d Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Fri, 18 Feb 2022 10:18:30 +0100 -Subject: [PATCH] meson: drop required version - ---- - meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index 440845e37..3c88c2427 100644 ---- a/meson.build -+++ b/meson.build -@@ -1,7 +1,7 @@ - project('pipewire', ['c' ], - version : '0.3.47', - license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ], -- meson_version : '>= 0.59.0', -+ meson_version : '>= 0.58.2', - default_options : [ 'warning_level=3', - 'c_std=gnu99', - 'cpp_std=c++17', --- -2.34.1 - diff --git a/SOURCES/0001-spa-support-the-speakers-output-only-case-in-report_.patch b/SOURCES/0001-spa-support-the-speakers-output-only-case-in-report_.patch deleted file mode 100644 index 128710c..0000000 --- a/SOURCES/0001-spa-support-the-speakers-output-only-case-in-report_.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 78b462ece91a359b641444c921854dd2a66b03e8 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Sat, 29 Oct 2022 20:22:06 +0200 -Subject: [PATCH] spa: support the speakers (output) only case in - report_jack_state() - -The Realtek ALC4080 USB audio device (integrated in the -motherboards) can detect the presence on all I/O jacks. - -If user connects only speakers, it's a valid case. - -BugLink: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2744 ---- - spa/plugins/alsa/acp/acp.c | 29 +++++++++++++++++++++++++++-- - 1 file changed, 27 insertions(+), 2 deletions(-) - -diff --git a/spa/plugins/alsa/acp/acp.c b/spa/plugins/alsa/acp/acp.c -index c61817d0d..949e19b93 100644 ---- a/spa/plugins/alsa/acp/acp.c -+++ b/spa/plugins/alsa/acp/acp.c -@@ -624,7 +624,7 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) - pa_card *impl = snd_mixer_elem_get_callback_private(melem); - snd_hctl_elem_t *elem = snd_mixer_elem_get_private(melem); - snd_ctl_elem_value_t *elem_value; -- bool plugged_in; -+ bool plugged_in, any_input_port_available; - void *state; - pa_alsa_jack *jack; - struct temp_port_avail *tp, *tports; -@@ -735,6 +735,31 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) - if (impl->card.active_profile_index != ACP_INVALID_INDEX) - active_available = impl->card.profiles[impl->card.active_profile_index]->available; - -+ /* First round - detect, if we have any input port available. -+ If the hardware can report the state for all I/O jacks, only speakers -+ may be plugged in. */ -+ any_input_port_available = false; -+ PA_HASHMAP_FOREACH(profile, impl->profiles, state) { -+ pa_device_port *port; -+ void *state2; -+ -+ if (profile->profile.flags & ACP_PROFILE_OFF) -+ continue; -+ -+ PA_HASHMAP_FOREACH(port, impl->ports, state2) { -+ if (!pa_hashmap_get(port->profiles, profile->profile.name)) -+ continue; -+ -+ if (port->port.direction == ACP_DIRECTION_CAPTURE && -+ port->port.available != ACP_AVAILABLE_NO) { -+ any_input_port_available = true; -+ goto input_port_found; -+ } -+ } -+ } -+input_port_found: -+ -+ /* Second round */ - PA_HASHMAP_FOREACH(profile, impl->profiles, state) { - pa_device_port *port; - void *state2; -@@ -768,7 +793,7 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) - - if (has_input_port && !has_output_port && found_available_input_port) - available = ACP_AVAILABLE_YES; -- if (has_output_port && !has_input_port && found_available_output_port) -+ if (has_output_port && (!has_input_port || !any_input_port_available) && found_available_output_port) - available = ACP_AVAILABLE_YES; - if (has_output_port && has_input_port && found_available_output_port && found_available_input_port) - available = ACP_AVAILABLE_YES; --- -2.39.1 - diff --git a/SOURCES/pipewire-jack-allow-old-meson.patch b/SOURCES/pipewire-jack-allow-old-meson.patch deleted file mode 100644 index d7bb457..0000000 --- a/SOURCES/pipewire-jack-allow-old-meson.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 26e63ca2e1d71491cd4e459b8890607b4a4bdd83 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Fri, 18 Feb 2022 10:14:11 +0100 -Subject: [PATCH] jack: allow build on old meson of jack.pc - -Warn about reduced functionality. ---- - pipewire-jack/src/meson.build | 32 ++++++++++++++++++++------------ - 1 file changed, 20 insertions(+), 12 deletions(-) - -diff --git a/pipewire-jack/src/meson.build b/pipewire-jack/src/meson.build -index bb1a7f0e9..4dfae3d39 100644 ---- a/pipewire-jack/src/meson.build -+++ b/pipewire-jack/src/meson.build -@@ -69,21 +69,29 @@ pipewire_jacknet = shared_library('jacknet', - - if get_option('jack-devel') == true - if meson.version().version_compare('<0.59.0') -- error( -+ warning( - ''' -- Before version 0.59.0 Meson creates a wrong jack pkg-config file. -- For that reason this is now an error. Please update Meson, -- if you want to have JACK development files. -+ Before version 0.59.0 Meson creates a wrong jack pkg-config file -+ for server development. Please update Meson, if you want to have -+ JACK development files for server. - ''') -- endif - -- pkgconfig.generate(filebase : 'jack', -- libraries : [pipewire_jack, pipewire_jackserver], -- name : 'jack', -- description : 'PipeWire JACK API', -- version : '1.9.17', -- extra_cflags : '-D_REENTRANT', -- unescaped_variables: ['server_libs=-L${libdir} -ljackserver', 'jack_implementation=pipewire']) -+ pkgconfig.generate(filebase : 'jack', -+ libraries : [pipewire_jack, pipewire_jackserver], -+ name : 'jack', -+ description : 'PipeWire JACK API', -+ version : '1.9.17', -+ extra_cflags : '-D_REENTRANT', -+ variables: ['server_libs=-L${libdir} -ljackserver', 'jack_implementation=pipewire']) -+ else -+ pkgconfig.generate(filebase : 'jack', -+ libraries : [pipewire_jack, pipewire_jackserver], -+ name : 'jack', -+ description : 'PipeWire JACK API', -+ version : '1.9.17', -+ extra_cflags : '-D_REENTRANT', -+ unescaped_variables: ['server_libs=-L${libdir} -ljackserver', 'jack_implementation=pipewire']) -+ endif - endif - - if sdl_dep.found() --- -2.34.1 - diff --git a/SOURCES/pipewire.sysusers b/SOURCES/pipewire.sysusers new file mode 100644 index 0000000..1e08df1 --- /dev/null +++ b/SOURCES/pipewire.sysusers @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home directory Shell +u pipewire - "PipeWire System Daemon" /run/pipewire - diff --git a/SPECS/pipewire.spec b/SPECS/pipewire.spec index f7de5a1..beff04a 100644 --- a/SPECS/pipewire.spec +++ b/SPECS/pipewire.spec @@ -1,14 +1,15 @@ -%global majorversion 0 -%global minorversion 3 -%global microversion 47 +%global majorversion 1 +%global minorversion 0 +%global microversion 1 %global apiversion 0.3 %global spaversion 0.2 %global soversion 0 %global libversion %{soversion}.%(bash -c '((intversion = (%{minorversion} * 100) + %{microversion})); echo ${intversion}').0 +%global ms_version 0.4.2 # For rpmdev-bumpspec and releng automation -%global baserelease 3 +%global baserelease 1 #global snapdate 20210107 #global gitcommit b17db2cebc1a5ab2c01851d29c05f79cd2f262bb @@ -23,7 +24,6 @@ # Build conditions for various features %bcond_without alsa %bcond_without vulkan -%bcond_without v4l2 # Features disabled for RHEL 8 %if 0%{?rhel} && 0%{?rhel} < 9 @@ -37,17 +37,34 @@ # Features disabled for RHEL %if 0%{?rhel} %bcond_with jackserver_plugin +%bcond_with libmysofa +%bcond_with lc3 +%bcond_with lv2 +%bcond_with roc %else %bcond_without jackserver_plugin +%bcond_without libmysofa +%bcond_without lc3 +%bcond_without lv2 +#bcond_without roc +%bcond_with roc %endif -# Disabled for RHEL < 10 and Fedora < 36 -%if (0%{?rhel} && 0%{?rhel} < 10) || (0%{?fedora} && 0%{?fedora} < 36) +%if 0%{?rhel} || ("%{_arch}" == "s390x") +%bcond_with ffado +%else +%bcond_without ffado +%endif + +# Disabled for RHEL < 11 and Fedora < 36 +%if (0%{?rhel} && 0%{?rhel} < 11) || (0%{?fedora} && 0%{?fedora} < 36) || ("%{_arch}" == "s390x") || ("%{_arch}" == "ppc64le") %bcond_with libcamera_plugin %else %bcond_without libcamera_plugin %endif +%bcond_without v4l2 + Name: pipewire Summary: Media Sharing Server Version: %{majorversion}.%{minorversion}.%{microversion} @@ -59,23 +76,17 @@ Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{git %else Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{version}/pipewire-%{version}.tar.gz %endif +Source1: pipewire.sysusers ## upstream patches -Patch0001: 0001-spa-support-the-speakers-output-only-case-in-report_.patch +Patch0001: 0001-Revert-gst-pipewiresrc-Let-GstBaseSrc-handle-pseudo-.patch ## upstreamable patches -## fedora patches - ## rhel patches -### Allow Meson < 0.59.0 to work for pipewire-jack -### N.B.: Remove this patch once Meson is upgraded in RHEL -Patch50001: pipewire-jack-allow-old-meson.patch -Patch50002: 0001-meson-drop-required-version.patch -Patch50003: 0001-Revert-treewide-meson.build-use-feature.allowed.patch BuildRequires: gettext -BuildRequires: meson >= 0.49.0 +BuildRequires: meson >= 0.59.0 BuildRequires: gcc BuildRequires: g++ BuildRequires: pkgconfig @@ -94,10 +105,8 @@ BuildRequires: pkgconfig(ldacBT-enc) BuildRequires: pkgconfig(ldacBT-abr) %endif BuildRequires: pkgconfig(fdk-aac) -%if %{with vulkan} -BuildRequires: pkgconfig(vulkan) -%endif BuildRequires: pkgconfig(bluez) +BuildRequires: systemd BuildRequires: systemd-devel BuildRequires: alsa-lib-devel BuildRequires: libv4l-devel @@ -105,14 +114,22 @@ BuildRequires: doxygen BuildRequires: python-docutils BuildRequires: graphviz BuildRequires: sbc-devel +%if %{with lc3} +BuildRequires: liblc3-devel +%endif BuildRequires: libsndfile-devel BuildRequires: ncurses-devel BuildRequires: pulseaudio-libs-devel BuildRequires: avahi-devel BuildRequires: pkgconfig(webrtc-audio-processing) >= 0.2 -BuildRequires: libusb-devel +BuildRequires: libusb1-devel BuildRequires: readline-devel +BuildRequires: openssl-devel BuildRequires: libcanberra-devel +BuildRequires: libuv-devel +BuildRequires: speexdsp-devel +BuildRequires: systemd-rpm-macros +%{?sysusers_requires_compat} Requires(pre): shadow-utils Requires: %{name}-libs%{?_isa} = %{version}-%{release} @@ -191,26 +208,38 @@ This package contains an ALSA plugin for the PipeWire media server. %endif %if %{with jack} -%package jack-audio-connection-kit -Summary: PipeWire JACK implementation +%package jack-audio-connection-kit-libs +Summary: PipeWire JACK implementation libraries License: MIT Recommends: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-libjack%{?_isa} = %{version}-%{release} -Conflicts: jack-audio-connection-kit -Conflicts: jack-audio-connection-kit-dbus +Requires: %{name}-libs%{?_isa} = %{version}-%{release} # Fixed jack subpackages Conflicts: %{name}-libjack < 0.3.13-6 -Conflicts: %{name}-jack-audio-connection-kit < 0.3.13-6 +Conflicts: %{name}-jack-audio-connection-kit < 0.3.72-1 # Replaces libjack subpackage Obsoletes: %{name}-libjack < 0.3.19-2 Provides: %{name}-libjack = %{version}-%{release} Provides: %{name}-libjack%{?_isa} = %{version}-%{release} + +%description jack-audio-connection-kit-libs +This package provides a JACK implementation libraries based on PipeWire + +%package jack-audio-connection-kit +Summary: PipeWire JACK implementation +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-jack-audio-connection-kit-libs%{?_isa} = %{version}-%{release} +Conflicts: jack-audio-connection-kit +Conflicts: jack-audio-connection-kit-dbus +# Replaces libjack subpackage %if ! (0%{?fedora} && 0%{?fedora} < 34) # Ensure this is provided by default to route all audio Supplements: %{name} = %{version}-%{release} # Replace JACK with PipeWire-JACK ## N.B.: If jack gets updated in F33, this will need to be bumped Obsoletes: jack-audio-connection-kit < 1.9.16-2 +# Fix upgrade path to f38, see #2203789 +Obsoletes: jack-audio-connection-kit-example-clients < 1.9.22 %endif %description jack-audio-connection-kit @@ -219,9 +248,9 @@ This package provides a JACK implementation based on PipeWire %package jack-audio-connection-kit-devel Summary: Development files for %{name}-jack-audio-connection-kit License: MIT -Requires: %{name}-jack-audio-connection-kit%{?_isa} = %{version}-%{release} +Requires: %{name}-jack-audio-connection-kit-libs%{?_isa} = %{version}-%{release} Conflicts: jack-audio-connection-kit-devel -Enhances: %{name}-jack-audio-connection-kit +Enhances: %{name}-jack-audio-connection-kit-libs %description jack-audio-connection-kit-devel This package provides development files for building JACK applications @@ -234,6 +263,7 @@ Summary: PipeWire media server JACK support License: MIT BuildRequires: jack-audio-connection-kit-devel Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-jack-audio-connection-kit-libs = %{version}-%{release} Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: jack-audio-connection-kit @@ -256,14 +286,24 @@ Requires: libdrm This package contains the PipeWire spa plugin to access cameras through libcamera. %endif +%if %{with vulkan} +%package plugin-vulkan +Summary: PipeWire media server vulkan support +License: MIT +BuildRequires: pkgconfig(vulkan) +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description plugin-vulkan +This package contains the PipeWire spa plugin for vulkan. +%endif + %if %{with pulse} %package pulseaudio Summary: PipeWire PulseAudio implementation License: MIT Recommends: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: pulseaudio-utils -BuildRequires: pulseaudio-libs Conflicts: pulseaudio # Fixed pulseaudio subpackages Conflicts: %{name}-libpulse < 0.3.13-6 @@ -307,31 +347,102 @@ This package contains an LD_PRELOAD library that redirects v4l2 applications to PipeWire. %endif +%package module-x11 +Summary: PipeWire media server x11 support +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-x11 +This package contains X11 bell support for PipeWire. + +%if %{with ffado} +%package module-ffado +Summary: PipeWire media server ffado support +License: MIT +BuildRequires: libffado-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-ffado +This package contains the FFADO support for PipeWire. +%endif + +%if %{with roc} +%package module-roc +Summary: PipeWire media server ROC support +License: MIT +BuildRequires: roc-toolkit-devel +BuildRequires: libunwind-devel +BuildRequires: openfec-devel +BuildRequires: sox-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-roc +This package contains the ROC support for PipeWire. +%endif + +%if %{with libmysofa} +%package module-filter-chain-sofa +Summary: PipeWire media server sofa filter-chain support +License: MIT +BuildRequires: libmysofa-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-filter-chain-sofa +This package contains the mysofa support for PipeWire filter-chain. +%endif + +%if %{with lv2} +%package module-filter-chain-lv2 +Summary: PipeWire media server lv2 filter-chain support +License: MIT +BuildRequires: lilv-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-filter-chain-lv2 +This package contains the mysofa support for PipeWire filter-chain. +%endif + + %prep %autosetup -p1 %{?snapdate:-n %{name}-%{gitcommit}} %build %meson \ -D docs=enabled -D man=enabled -D gstreamer=enabled -D systemd=enabled \ - -D gstreamer-device-provider=disabled -D sdl2=disabled \ + -D sdl2=disabled \ -D audiotestsrc=disabled -D videotestsrc=disabled \ - -D volume=disabled -D bluez5-codec-aptx=disabled -D roc=disabled \ - -D raop=disabled -D lv2=disabled \ + -D volume=disabled -D bluez5-codec-aptx=disabled \ + -D bluez5-codec-lc3plus=disabled -D x11-xfixes=disabled \ %ifarch s390x -D bluez5-codec-ldac=disabled \ %endif - %{!?with_media_session:-D session-managers=[]} \ + -D session-managers=[] \ %{!?with_jack:-D pipewire-jack=disabled} \ %{!?with_jackserver_plugin:-D jack=disabled} \ %{!?with_libcamera_plugin:-D libcamera=disabled} \ %{?with_jack:-D jack-devel=true} \ %{!?with_alsa:-D pipewire-alsa=disabled} \ - %{?with_vulkan:-D vulkan=enabled} + %{?with_vulkan:-D vulkan=enabled} \ + %{!?with_libmysofa:-D libmysofa=disabled} \ + %{!?with_lv2:-D lv2=disabled} \ + %{!?with_roc:-D roc=disabled} \ + %{!?with_ffado:-D libffado=disabled} \ + %{!?with_lc3:-D bluez5-codec-lc3=disabled} \ + %{nil} %meson_build %install +install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/pipewire.conf %meson_install +# Own this directory so add-ons can use it +install -d -m 0755 %{buildroot}%{_datadir}/pipewire/pipewire.conf.d/ + %if %{with jack} mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d/ echo %{_libdir}/pipewire-%{apiversion}/jack/ > %{buildroot}%{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf @@ -346,6 +457,7 @@ cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf \ %{buildroot}%{_sysconfdir}/alsa/conf.d/50-pipewire.conf cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf \ %{buildroot}%{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf + %endif %if ! %{with pulse} @@ -353,6 +465,12 @@ cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf \ rm %{buildroot}%{_bindir}/pipewire-pulse rm %{buildroot}%{_userunitdir}/pipewire-pulse.* rm %{buildroot}%{_datadir}/pipewire/pipewire-pulse.conf + +%endif + +%if %{with pulse} +# Own this directory so add-ons can use it +install -d -m 0755 %{buildroot}%{_datadir}/pipewire/pipewire-pulse.conf.d/ %endif %find_lang %{name} @@ -370,10 +488,7 @@ echo "test failed" fi %pre -getent group pipewire >/dev/null || groupadd -r pipewire -getent passwd pipewire >/dev/null || \ - useradd -r -g pipewire -d %{_localstatedir}/run/pipewire -s /sbin/nologin -c "PipeWire System Daemon" pipewire -exit 0 +%sysusers_create_compat %{SOURCE1} %post %systemd_user_post pipewire.service @@ -393,21 +508,69 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %files %license LICENSE COPYING -%doc README.md +%doc README.md NEWS %{_userunitdir}/pipewire.* +%{_userunitdir}/filter-chain.* %{_bindir}/pipewire +%{_bindir}/pipewire-avb +%{_bindir}/pipewire-aes67 +%{_bindir}/pipewire-vulkan %{_mandir}/man1/pipewire.1* %dir %{_datadir}/pipewire/ +%dir %{_datadir}/pipewire/pipewire.conf.d/ %{_datadir}/pipewire/pipewire.conf +%{_datadir}/pipewire/pipewire.conf.avail/10-rates.conf +%{_datadir}/pipewire/pipewire.conf.avail/20-upmix.conf %{_datadir}/pipewire/minimal.conf +%{_datadir}/pipewire/filter-chain.conf %{_datadir}/pipewire/filter-chain/*.conf +%{_datadir}/pipewire/pipewire-avb.conf +%{_datadir}/pipewire/pipewire-aes67.conf +%{_datadir}/pipewire/pipewire-vulkan.conf %{_mandir}/man5/pipewire.conf.5* +%config(noreplace) %{_sysconfdir}/security/limits.d/*.conf +%{_sysusersdir}/pipewire.conf %files libs -f %{name}.lang %license LICENSE COPYING %doc README.md %{_libdir}/libpipewire-%{apiversion}.so.* -%{_libdir}/pipewire-%{apiversion}/libpipewire-*.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-access.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-adapter.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-avb.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-client-device.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-client-node.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-combine-stream.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-echo-cancel.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-fallback-sink.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-filter-chain.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-link-factory.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-loopback.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-metadata.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-netjack2-driver.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-netjack2-manager.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-pipe-tunnel.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-portal.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-profiler.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-protocol-native.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-protocol-simple.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-pulse-tunnel.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-raop-discover.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-raop-sink.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtkit.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtp-sap.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtp-session.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtp-sink.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtp-source.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rt.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-session-manager.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-spa-device-factory.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-spa-device.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-spa-node-factory.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-spa-node.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-vban-send.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-vban-recv.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-zeroconf-discover.so %dir %{_datadir}/alsa-card-profile/ %dir %{_datadir}/alsa-card-profile/mixer/ %{_datadir}/alsa-card-profile/mixer/paths/ @@ -420,16 +583,58 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %{_libdir}/spa-%{spaversion}/alsa/ %{_libdir}/spa-%{spaversion}/audioconvert/ %{_libdir}/spa-%{spaversion}/audiomixer/ +%{_libdir}/spa-%{spaversion}/avb/ %{_libdir}/spa-%{spaversion}/bluez5/ %{_libdir}/spa-%{spaversion}/control/ %{_libdir}/spa-%{spaversion}/support/ %{_libdir}/spa-%{spaversion}/v4l2/ %{_libdir}/spa-%{spaversion}/videoconvert/ -%if %{with vulkan} -%{_libdir}/spa-%{spaversion}/vulkan/ -%endif %{_datadir}/pipewire/client.conf +%{_datadir}/pipewire/client.conf.avail/20-upmix.conf %{_datadir}/pipewire/client-rt.conf +%{_datadir}/pipewire/client-rt.conf.avail/20-upmix.conf +%{_mandir}/man7/libpipewire-module-access.7.gz +%{_mandir}/man7/libpipewire-module-adapter.7.gz +%{_mandir}/man7/libpipewire-module-avb.7.gz +%{_mandir}/man7/libpipewire-module-client-device.7.gz +%{_mandir}/man7/libpipewire-module-client-node.7.gz +%{_mandir}/man7/libpipewire-module-combine-stream.7.gz +%{_mandir}/man7/libpipewire-module-echo-cancel.7.gz +%{_mandir}/man7/libpipewire-module-example-filter.7.gz +%{_mandir}/man7/libpipewire-module-example-sink.7.gz +%{_mandir}/man7/libpipewire-module-example-source.7.gz +%{_mandir}/man7/libpipewire-module-fallback-sink.7.gz +%{_mandir}/man7/libpipewire-module-ffado-driver.7.gz +%{_mandir}/man7/libpipewire-module-filter-chain.7.gz +%{_mandir}/man7/libpipewire-module-jack-tunnel.7.gz +%{_mandir}/man7/libpipewire-module-jackdbus-detect.7.gz +%{_mandir}/man7/libpipewire-module-link-factory.7.gz +%{_mandir}/man7/libpipewire-module-loopback.7.gz +%{_mandir}/man7/libpipewire-module-metadata.7.gz +%{_mandir}/man7/libpipewire-module-netjack2-driver.7.gz +%{_mandir}/man7/libpipewire-module-netjack2-manager.7.gz +%{_mandir}/man7/libpipewire-module-pipe-tunnel.7.gz +%{_mandir}/man7/libpipewire-module-portal.7.gz +%{_mandir}/man7/libpipewire-module-profiler.7.gz +%{_mandir}/man7/libpipewire-module-protocol-native.7.gz +%{_mandir}/man7/libpipewire-module-protocol-pulse.7.gz +%{_mandir}/man7/libpipewire-module-protocol-simple.7.gz +%{_mandir}/man7/libpipewire-module-pulse-tunnel.7.gz +%{_mandir}/man7/libpipewire-module-raop-discover.7.gz +%{_mandir}/man7/libpipewire-module-raop-sink.7.gz +%{_mandir}/man7/libpipewire-module-roc-sink.7.gz +%{_mandir}/man7/libpipewire-module-roc-source.7.gz +%{_mandir}/man7/libpipewire-module-rt.7.gz +%{_mandir}/man7/libpipewire-module-rtp-sap.7.gz +%{_mandir}/man7/libpipewire-module-rtp-session.7.gz +%{_mandir}/man7/libpipewire-module-rtp-sink.7.gz +%{_mandir}/man7/libpipewire-module-rtp-source.7.gz +%{_mandir}/man7/libpipewire-module-session-manager.7.gz +%{_mandir}/man7/libpipewire-module-vban-recv.7.gz +%{_mandir}/man7/libpipewire-module-vban-send.7.gz +%{_mandir}/man7/libpipewire-module-x11-bell.7.gz +%{_mandir}/man7/libpipewire-module-zeroconf-discover.7.gz +%{_mandir}/man7/libpipewire-modules.7.gz %files gstreamer %{_libdir}/gstreamer-1.0/libgstpipewire.* @@ -442,33 +647,41 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %{_libdir}/pkgconfig/libspa-%{spaversion}.pc %files doc +%doc README.md NEWS %{_datadir}/doc/pipewire/html %files utils -%{_bindir}/pw-mon -%{_bindir}/pw-metadata +%{_bindir}/pw-cat +%{_bindir}/pw-cli +%{_bindir}/pw-config +%{_bindir}/pw-dot %{_bindir}/pw-dsdplay +%{_bindir}/pw-dump +%{_bindir}/pw-encplay +%{_bindir}/pw-link +%{_bindir}/pw-loopback +%{_bindir}/pw-metadata %{_bindir}/pw-mididump %{_bindir}/pw-midiplay %{_bindir}/pw-midirecord -%{_bindir}/pw-cli -%{_bindir}/pw-dot -%{_bindir}/pw-cat -%{_bindir}/pw-dump -%{_bindir}/pw-link -%{_bindir}/pw-loopback +%{_bindir}/pw-mon %{_bindir}/pw-play %{_bindir}/pw-profiler %{_bindir}/pw-record %{_bindir}/pw-reserve %{_bindir}/pw-top -%{_mandir}/man1/pw-mon.1* -%{_mandir}/man1/pw-cli.1* %{_mandir}/man1/pw-cat.1* +%{_mandir}/man1/pw-cli.1* +%{_mandir}/man1/pw-config.1* %{_mandir}/man1/pw-dot.1* +%{_mandir}/man1/pw-dump.1* +%{_mandir}/man1/pw-link.1* +%{_mandir}/man1/pw-loopback.1* %{_mandir}/man1/pw-metadata.1* %{_mandir}/man1/pw-mididump.1* +%{_mandir}/man1/pw-mon.1* %{_mandir}/man1/pw-profiler.1* +%{_mandir}/man1/pw-top.1* %{_bindir}/spa-acp-tool %{_bindir}/spa-inspect @@ -487,13 +700,15 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %endif %if %{with jack} -%files jack-audio-connection-kit +%files jack-audio-connection-kit-libs %{_bindir}/pw-jack %{_mandir}/man1/pw-jack.1* %{_libdir}/pipewire-%{apiversion}/jack/libjack.so.* %{_libdir}/pipewire-%{apiversion}/jack/libjacknet.so.* %{_libdir}/pipewire-%{apiversion}/jack/libjackserver.so.* %{_datadir}/pipewire/jack.conf + +%files jack-audio-connection-kit %{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf %files jack-audio-connection-kit-devel @@ -506,6 +721,8 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %if %{with jackserver_plugin} %files plugin-jack +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-jack-tunnel.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-jackdbus-detect.so %{_libdir}/spa-%{spaversion}/jack/ %endif @@ -514,12 +731,53 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %{_libdir}/spa-%{spaversion}/libcamera/ %endif +%if %{with vulkan} +%files plugin-vulkan +%{_libdir}/spa-%{spaversion}/vulkan/ +%endif + %if %{with pulse} %files pulseaudio %{_bindir}/pipewire-pulse -%{_mandir}/man1/pipewire-pulse.1* %{_userunitdir}/pipewire-pulse.* %{_datadir}/pipewire/pipewire-pulse.conf +%dir %{_datadir}/pipewire/pipewire-pulse.conf.d/ +%{_datadir}/pipewire/pipewire-pulse.conf.avail/20-upmix.conf +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-protocol-pulse.so +%{_mandir}/man1/pipewire-pulse.1* +%{_mandir}/man5/pipewire-pulse.conf.5.gz +%{_mandir}/man7/pipewire-pulse-module-alsa-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-alsa-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-always-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-combine-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-echo-cancel.7.gz +%{_mandir}/man7/pipewire-pulse-module-gsettings.7.gz +%{_mandir}/man7/pipewire-pulse-module-jackdbus-detect.7.gz +%{_mandir}/man7/pipewire-pulse-module-ladspa-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-ladspa-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-loopback.7.gz +%{_mandir}/man7/pipewire-pulse-module-native-protocol-tcp.7.gz +%{_mandir}/man7/pipewire-pulse-module-null-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-pipe-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-pipe-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-raop-discover.7.gz +%{_mandir}/man7/pipewire-pulse-module-remap-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-remap-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-roc-sink-input.7.gz +%{_mandir}/man7/pipewire-pulse-module-roc-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-roc-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-rtp-recv.7.gz +%{_mandir}/man7/pipewire-pulse-module-rtp-send.7.gz +%{_mandir}/man7/pipewire-pulse-module-simple-protocol-tcp.7.gz +%{_mandir}/man7/pipewire-pulse-module-switch-on-connect.7.gz +%{_mandir}/man7/pipewire-pulse-module-tunnel-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-tunnel-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-virtual-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-virtual-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-x11-bell.7.gz +%{_mandir}/man7/pipewire-pulse-module-zeroconf-discover.7.gz +%{_mandir}/man7/pipewire-pulse-module-zeroconf-publish.7.gz +%{_mandir}/man7/pipewire-pulse-modules.7.gz %endif %if %{with v4l2} @@ -528,10 +786,52 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %{_libdir}/pipewire-%{apiversion}/v4l2/libpw-v4l2.so %endif +%files module-x11 +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-x11-bell.so + +%if %{with ffado} +%files module-ffado +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-ffado-driver.so +%endif + +%if %{with roc} +%files module-roc +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-roc-sink.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-roc-source.so +%endif + +%if %{with libmysofa} +%files module-filter-chain-sofa +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-filter-chain-sofa.so +%endif + +%if %{with lv2} +%files module-filter-chain-lv2 +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-filter-chain-lv2.so +%endif + %changelog -* Thu Mar 02 2023 Wim Taymans - 0.3.47-3 -- Add patch for jack detection. - Resolves: rhbz#2180869 +* Tue Jan 19 2024 Wim Taymans - 1.0.1-1 +- Update to version 1.0.1 +- Add patch to revert timestamps +- Resolves: RHEL-17641, RHEL-21900 + +* Tue Jan 09 2024 Wim Taymans - 1.0.0-2 +- Fix install conflict with older versions. +- Resolves: RHEL-17641 + +* Mon Jan 08 2024 Wim Taymans - 1.0.0-1 +- Update to version 1.0.0 +- Add patch to avoid crash in deviceprovider. +- Resolves: RHEL-17641 + +* Tue Aug 01 2023 Wim Taymans - 0.3.67-2 +- Add patch for removing inotify on /dev +- Resolves: rhbz#2221868 + +* Wed Mar 22 2023 Wim Taymans - 0.3.67-1 +- Update to 0.3.67 +- Resolves: rhbz#2176829 * Fri Mar 11 2022 Wim Taymans - 0.3.47-2 - Add pulseaudio-utils as Requires for pipewire-pulseaudio