Accepting request 607607 from home:oholecek:branches:multimedia:libs
- Update to 12 RC1 (11.99.1) * Much more accurate latency reporting for AirPlay devices * module-switch-on-connect now ignores virtual devices * When using passthrough for compressed audio, set the "non-audio" bit * Prioritize HDMI output over S/PDIF output * HSP support for more bluetooth headsets * Choose the A2DP bluetooth profile by default instead of HSP * New "sink_input_properties" module argument for module-ladspa-sink * New "use_system_clock_for_timing" module argument for module-pipe-sink * Steelseries Arctis 7 USB headset stereo output support * Dell Thunderbolt Dock TB16 speaker jack support * Fixed digital input support for some USB sound cards * Ability to disable input or output on macOS * New "dereverb" option for the Speex echo canceller * New module: module-always-source * State files not any more readable by all users in the system mode * module-augment-properties now uses XDG_DATA_DIRS to find .desktop files * The GConf dependency can now be avoided * qpaeq license changed from AGPL to LGPL * qpaeq ported to Qt 5 - Add subpackage module-gsettings (conflicts with module-gconf) - Remove support for obsolete Bluez4 - Fix build phase running configure twice - Removed patches: 0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch 0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch 0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch 0004-alsa-mixer-autodetect-the-ELD-device.patch pulseaudio-glibc2.27.patch - Added patch: OBS-URL: https://build.opensuse.org/request/show/607607 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pulseaudio?expand=0&rev=188
This commit is contained in:
parent
b5a003b033
commit
58f47881f3
@ -1,129 +0,0 @@
|
|||||||
From 94fc586c011537536cfb434376354699357af785 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tanu Kaskinen <tanuk@iki.fi>
|
|
||||||
Date: Thu, 28 Dec 2017 12:09:17 +0200
|
|
||||||
Subject: [PATCH] alsa: fix infinite loop with Intel HDMI LPE
|
|
||||||
|
|
||||||
The Intel HDMI LPE driver works in a peculiar way when the HDMI cable is
|
|
||||||
not plugged in: any written audio is immediately discarded and underrun
|
|
||||||
is reported. That resulted in an infinite loop, because PulseAudio tried
|
|
||||||
to keep the buffer filled, which was futile since the written audio was
|
|
||||||
immediately consumed/discarded.
|
|
||||||
|
|
||||||
This patch adds special handling for the LPE driver: if the active port
|
|
||||||
of the sink is unavailable, the sink suspends itself. A new suspend
|
|
||||||
cause is added: PA_SUSPEND_UNAVAILABLE.
|
|
||||||
|
|
||||||
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488
|
|
||||||
---
|
|
||||||
src/modules/alsa/alsa-mixer.h | 1 +
|
|
||||||
src/modules/alsa/alsa-sink.c | 20 ++++++++++++++++++++
|
|
||||||
src/modules/alsa/module-alsa-card.c | 34 ++++++++++++++++++++++++++++++++++
|
|
||||||
src/pulsecore/core.h | 1 +
|
|
||||||
4 files changed, 56 insertions(+)
|
|
||||||
|
|
||||||
--- a/src/modules/alsa/alsa-mixer.h
|
|
||||||
+++ b/src/modules/alsa/alsa-mixer.h
|
|
||||||
@@ -364,6 +364,7 @@ int pa_alsa_set_mixer_rtpoll(struct pa_a
|
|
||||||
struct pa_alsa_port_data {
|
|
||||||
pa_alsa_path *path;
|
|
||||||
pa_alsa_setting *setting;
|
|
||||||
+ bool suspend_when_unavailable;
|
|
||||||
};
|
|
||||||
|
|
||||||
void pa_alsa_add_ports(void *sink_or_source_new_data, pa_alsa_path_set *ps, pa_card *card);
|
|
||||||
--- a/src/modules/alsa/alsa-sink.c
|
|
||||||
+++ b/src/modules/alsa/alsa-sink.c
|
|
||||||
@@ -1513,6 +1513,9 @@ static int sink_set_port_cb(pa_sink *s,
|
|
||||||
s->set_volume(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (data->suspend_when_unavailable)
|
|
||||||
+ pa_sink_suspend(s, p->available == PA_AVAILABLE_NO, PA_SUSPEND_UNAVAILABLE);
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2455,6 +2458,23 @@ pa_sink *pa_alsa_sink_new(pa_module *m,
|
|
||||||
if (profile_set)
|
|
||||||
pa_alsa_profile_set_free(profile_set);
|
|
||||||
|
|
||||||
+ /* Suspend if necessary. FIXME: It would be better to start suspended, but
|
|
||||||
+ * that would require some core changes. It's possible to set
|
|
||||||
+ * pa_sink_new_data.suspend_cause, but that has to be done before the
|
|
||||||
+ * pa_sink_new() call, and we know if we need to suspend only after the
|
|
||||||
+ * pa_sink_new() call when the initial port has been chosen. Calling
|
|
||||||
+ * pa_sink_suspend() between pa_sink_new() and pa_sink_put() would
|
|
||||||
+ * otherwise work, but currently pa_sink_suspend() will crash if
|
|
||||||
+ * pa_sink_put() hasn't been called. */
|
|
||||||
+ if (u->sink->active_port) {
|
|
||||||
+ pa_alsa_port_data *port_data;
|
|
||||||
+
|
|
||||||
+ port_data = PA_DEVICE_PORT_DATA(u->sink->active_port);
|
|
||||||
+
|
|
||||||
+ if (port_data->suspend_when_unavailable && u->sink->active_port->available == PA_AVAILABLE_NO)
|
|
||||||
+ pa_sink_suspend(u->sink, true, PA_SUSPEND_UNAVAILABLE);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return u->sink;
|
|
||||||
|
|
||||||
fail:
|
|
||||||
--- a/src/modules/alsa/module-alsa-card.c
|
|
||||||
+++ b/src/modules/alsa/module-alsa-card.c
|
|
||||||
@@ -427,6 +427,22 @@ static int report_jack_state(snd_mixer_e
|
|
||||||
if (tp->avail == PA_AVAILABLE_NO)
|
|
||||||
pa_device_port_set_available(tp->port, tp->avail);
|
|
||||||
|
|
||||||
+ for (tp = tports; tp->port; tp++) {
|
|
||||||
+ pa_alsa_port_data *data;
|
|
||||||
+ pa_sink *sink;
|
|
||||||
+ uint32_t idx;
|
|
||||||
+
|
|
||||||
+ data = PA_DEVICE_PORT_DATA(tp->port);
|
|
||||||
+
|
|
||||||
+ if (!data->suspend_when_unavailable)
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ PA_IDXSET_FOREACH(sink, u->core->sinks, idx) {
|
|
||||||
+ if (sink->active_port == tp->port)
|
|
||||||
+ pa_sink_suspend(sink, tp->avail == PA_AVAILABLE_NO, PA_SUSPEND_UNAVAILABLE);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* Update profile availabilities. The logic could be improved; for now we
|
|
||||||
* only set obviously unavailable profiles (those that contain only
|
|
||||||
* unavailable ports) to PA_AVAILABLE_NO and all others to
|
|
||||||
@@ -837,6 +853,24 @@ int pa__init(pa_module *m) {
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* The Intel HDMI LPE driver needs some special handling. When the HDMI
|
|
||||||
+ * cable is not plugged in, trying to play audio doesn't work. Any written
|
|
||||||
+ * audio is immediately discarded and an underrun is reported, and that
|
|
||||||
+ * results in an infinite loop of "fill buffer, handle underrun". To work
|
|
||||||
+ * around this issue, the suspend_when_unavailable flag is used to stop
|
|
||||||
+ * playback when the HDMI cable is unplugged. */
|
|
||||||
+ if (pa_safe_streq(pa_proplist_gets(data.proplist, "alsa.driver_name"), "snd_hdmi_lpe_audio")) {
|
|
||||||
+ pa_device_port *port;
|
|
||||||
+ void *state;
|
|
||||||
+
|
|
||||||
+ PA_HASHMAP_FOREACH(port, data.ports, state) {
|
|
||||||
+ pa_alsa_port_data *port_data;
|
|
||||||
+
|
|
||||||
+ port_data = PA_DEVICE_PORT_DATA(port);
|
|
||||||
+ port_data->suspend_when_unavailable = true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
u->card = pa_card_new(m->core, &data);
|
|
||||||
pa_card_new_data_done(&data);
|
|
||||||
|
|
||||||
--- a/src/pulsecore/core.h
|
|
||||||
+++ b/src/pulsecore/core.h
|
|
||||||
@@ -34,6 +34,7 @@ typedef enum pa_suspend_cause {
|
|
||||||
PA_SUSPEND_SESSION = 8, /* Used by module-hal for mark inactive sessions */
|
|
||||||
PA_SUSPEND_PASSTHROUGH = 16, /* Used to suspend monitor sources when the sink is in passthrough mode */
|
|
||||||
PA_SUSPEND_INTERNAL = 32, /* This is used for short period server-internal suspends, such as for sample rate updates */
|
|
||||||
+ PA_SUSPEND_UNAVAILABLE = 64, /* Used by device implementations that have to suspend when the device is unavailable */
|
|
||||||
PA_SUSPEND_ALL = 0xFFFF /* Magic cause that can be used to resume forcibly */
|
|
||||||
} pa_suspend_cause_t;
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
|||||||
From 09ff3fca2fa9fe928990b3f0effeb1ddfbba0df1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tanu Kaskinen <tanuk@iki.fi>
|
|
||||||
Date: Sun, 8 Oct 2017 19:48:24 +0300
|
|
||||||
Subject: [PATCH] alsa-mixer: add hw_device_index to pa_alsa_mapping
|
|
||||||
|
|
||||||
We have so far assumed that HDMI always uses device indexes 3, 7, 8, 9,
|
|
||||||
10, 11, 12 and 13. These values are hardcoded in the path configuration.
|
|
||||||
The Intel HDMI LPE driver, however, uses different device numbering
|
|
||||||
scheme. Since the indexes aren't always the same, we need to query the
|
|
||||||
hw device index from ALSA.
|
|
||||||
|
|
||||||
Later patches will use the queried index for HDMI jack detection and ELD
|
|
||||||
information reading.
|
|
||||||
|
|
||||||
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488
|
|
||||||
---
|
|
||||||
src/modules/alsa/alsa-mixer.c | 26 ++++++++++++++++++++++++++
|
|
||||||
src/modules/alsa/alsa-mixer.h | 4 ++++
|
|
||||||
2 files changed, 30 insertions(+)
|
|
||||||
|
|
||||||
--- a/src/modules/alsa/alsa-mixer.c
|
|
||||||
+++ b/src/modules/alsa/alsa-mixer.c
|
|
||||||
@@ -3504,6 +3504,7 @@ pa_alsa_mapping *pa_alsa_mapping_get(pa_
|
|
||||||
pa_sample_spec_init(&m->sample_spec);
|
|
||||||
pa_channel_map_init(&m->channel_map);
|
|
||||||
m->proplist = pa_proplist_new();
|
|
||||||
+ m->hw_device_index = -1;
|
|
||||||
|
|
||||||
pa_hashmap_put(ps->mappings, m->name, m);
|
|
||||||
|
|
||||||
@@ -4531,6 +4532,25 @@ static int add_profiles_to_probe(
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void mapping_query_hw_device(pa_alsa_mapping *mapping, snd_pcm_t *pcm) {
|
|
||||||
+ int r;
|
|
||||||
+ snd_pcm_info_t* pcm_info;
|
|
||||||
+ snd_pcm_info_alloca(&pcm_info);
|
|
||||||
+
|
|
||||||
+ r = snd_pcm_info(pcm, pcm_info);
|
|
||||||
+ if (r < 0) {
|
|
||||||
+ pa_log("Mapping %s: snd_pcm_info() failed %s: ", mapping->name, pa_alsa_strerror(r));
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* XXX: It's not clear what snd_pcm_info_get_device() does if the device is
|
|
||||||
+ * not backed by a hw device or if it's backed by multiple hw devices. We
|
|
||||||
+ * only use hw_device_index for HDMI devices, however, and for those the
|
|
||||||
+ * return value is expected to be always valid, so this shouldn't be a
|
|
||||||
+ * significant problem. */
|
|
||||||
+ mapping->hw_device_index = snd_pcm_info_get_device(pcm_info);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void pa_alsa_profile_set_probe(
|
|
||||||
pa_alsa_profile_set *ps,
|
|
||||||
const char *dev_id,
|
|
||||||
@@ -4621,6 +4641,9 @@ void pa_alsa_profile_set_probe(
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if (m->hw_device_index < 0)
|
|
||||||
+ mapping_query_hw_device(m, m->output_pcm);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (p->input_mappings && p->supported)
|
|
||||||
@@ -4642,6 +4665,9 @@ void pa_alsa_profile_set_probe(
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if (m->hw_device_index < 0)
|
|
||||||
+ mapping_query_hw_device(m, m->input_pcm);
|
|
||||||
}
|
|
||||||
|
|
||||||
last = p;
|
|
||||||
--- a/src/modules/alsa/alsa-mixer.h
|
|
||||||
+++ b/src/modules/alsa/alsa-mixer.h
|
|
||||||
@@ -275,6 +275,10 @@ struct pa_alsa_mapping {
|
|
||||||
bool exact_channels:1;
|
|
||||||
bool fallback:1;
|
|
||||||
|
|
||||||
+ /* The "y" in "hw:x,y". This is set to -1 before the device index has been
|
|
||||||
+ * queried, or if the query failed. */
|
|
||||||
+ int hw_device_index;
|
|
||||||
+
|
|
||||||
/* Temporarily used during probing */
|
|
||||||
snd_pcm_t *input_pcm;
|
|
||||||
snd_pcm_t *output_pcm;
|
|
@ -1,263 +0,0 @@
|
|||||||
From 67f11ff30177d40e408523bdce0eeff27b8e6f9b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tanu Kaskinen <tanuk@iki.fi>
|
|
||||||
Date: Sun, 8 Oct 2017 19:48:25 +0300
|
|
||||||
Subject: [PATCH] alsa-mixer: autodetect the HDMI jack PCM device
|
|
||||||
|
|
||||||
This removes the need to hardcode the PCM device index in the HDMI jack
|
|
||||||
names. The hardcoded values don't work with the Intel HDMI LPE driver.
|
|
||||||
|
|
||||||
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488
|
|
||||||
---
|
|
||||||
src/modules/alsa/alsa-mixer.c | 53 +++++++++++++++--
|
|
||||||
src/modules/alsa/alsa-mixer.h | 4 -
|
|
||||||
src/modules/alsa/alsa-sink.c | 2
|
|
||||||
src/modules/alsa/alsa-source.c | 2
|
|
||||||
src/modules/alsa/mixer/paths/analog-output.conf.common | 4 +
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-0.conf | 3
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-1.conf | 3
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-2.conf | 3
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-3.conf | 3
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-4.conf | 3
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-5.conf | 3
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-6.conf | 3
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-7.conf | 3
|
|
||||||
13 files changed, 73 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
--- a/src/modules/alsa/alsa-mixer.c
|
|
||||||
+++ b/src/modules/alsa/alsa-mixer.c
|
|
||||||
@@ -1812,12 +1812,31 @@ static int element_probe(pa_alsa_element
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int jack_probe(pa_alsa_jack *j, snd_mixer_t *m) {
|
|
||||||
+static int jack_probe(pa_alsa_jack *j, pa_alsa_mapping *mapping, snd_mixer_t *m) {
|
|
||||||
bool has_control;
|
|
||||||
|
|
||||||
pa_assert(j);
|
|
||||||
pa_assert(j->path);
|
|
||||||
|
|
||||||
+ if (j->append_pcm_to_name) {
|
|
||||||
+ char *new_name;
|
|
||||||
+
|
|
||||||
+ if (!mapping) {
|
|
||||||
+ /* This could also be an assertion, because this should never
|
|
||||||
+ * happen. At the time of writing, mapping can only be NULL when
|
|
||||||
+ * module-alsa-sink/source synthesizes a path, and those
|
|
||||||
+ * synthesized paths never have any jacks, so jack_probe() should
|
|
||||||
+ * never be called with a NULL mapping. */
|
|
||||||
+ pa_log("Jack %s: append_pcm_to_name is set, but mapping is NULL. Can't use this jack.", j->name);
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ new_name = pa_sprintf_malloc("%s,pcm=%i Jack", j->name, mapping->hw_device_index);
|
|
||||||
+ pa_xfree(j->alsa_name);
|
|
||||||
+ j->alsa_name = new_name;
|
|
||||||
+ j->append_pcm_to_name = false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
has_control = pa_alsa_mixer_find(m, j->alsa_name, 0) != NULL;
|
|
||||||
pa_alsa_jack_set_has_control(j, has_control);
|
|
||||||
|
|
||||||
@@ -2326,6 +2345,30 @@ static int jack_parse_state(pa_config_pa
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int jack_parse_append_pcm_to_name(pa_config_parser_state *state) {
|
|
||||||
+ pa_alsa_path *path;
|
|
||||||
+ pa_alsa_jack *jack;
|
|
||||||
+ int b;
|
|
||||||
+
|
|
||||||
+ pa_assert(state);
|
|
||||||
+
|
|
||||||
+ path = state->userdata;
|
|
||||||
+ if (!(jack = jack_get(path, state->section))) {
|
|
||||||
+ pa_log("[%s:%u] Option 'append_pcm_to_name' not expected in section '%s'",
|
|
||||||
+ state->filename, state->lineno, state->section);
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ b = pa_parse_boolean(state->rvalue);
|
|
||||||
+ if (b < 0) {
|
|
||||||
+ pa_log("[%s:%u] Invalid value for 'append_pcm_to_name': %s", state->filename, state->lineno, state->rvalue);
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ jack->append_pcm_to_name = b;
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int element_set_option(pa_alsa_element *e, snd_mixer_t *m, int alsa_idx) {
|
|
||||||
snd_mixer_selem_id_t *sid;
|
|
||||||
snd_mixer_elem_t *me;
|
|
||||||
@@ -2533,6 +2576,7 @@ pa_alsa_path* pa_alsa_path_new(const cha
|
|
||||||
/* [Jack ...] */
|
|
||||||
{ "state.plugged", jack_parse_state, NULL, NULL },
|
|
||||||
{ "state.unplugged", jack_parse_state, NULL, NULL },
|
|
||||||
+ { "append-pcm-to-name", jack_parse_append_pcm_to_name, NULL, NULL },
|
|
||||||
|
|
||||||
/* [Element ...] */
|
|
||||||
{ "switch", element_parse_switch, NULL, NULL },
|
|
||||||
@@ -2745,7 +2789,7 @@ static void path_create_settings(pa_alsa
|
|
||||||
element_create_settings(p->elements, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
-int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, bool ignore_dB) {
|
|
||||||
+int pa_alsa_path_probe(pa_alsa_path *p, pa_alsa_mapping *mapping, snd_mixer_t *m, bool ignore_dB) {
|
|
||||||
pa_alsa_element *e;
|
|
||||||
pa_alsa_jack *j;
|
|
||||||
double min_dB[PA_CHANNEL_POSITION_MAX], max_dB[PA_CHANNEL_POSITION_MAX];
|
|
||||||
@@ -2765,7 +2809,7 @@ int pa_alsa_path_probe(pa_alsa_path *p,
|
|
||||||
pa_log_debug("Probing path '%s'", p->name);
|
|
||||||
|
|
||||||
PA_LLIST_FOREACH(j, p->jacks) {
|
|
||||||
- if (jack_probe(j, m) < 0) {
|
|
||||||
+ if (jack_probe(j, mapping, m) < 0) {
|
|
||||||
p->supported = false;
|
|
||||||
pa_log_debug("Probe of jack '%s' failed.", j->alsa_name);
|
|
||||||
return -1;
|
|
||||||
@@ -3967,9 +4011,8 @@ static void mapping_paths_probe(pa_alsa_
|
|
||||||
}
|
|
||||||
|
|
||||||
PA_HASHMAP_FOREACH(p, ps->paths, state) {
|
|
||||||
- if (pa_alsa_path_probe(p, mixer_handle, m->profile_set->ignore_dB) < 0) {
|
|
||||||
+ if (pa_alsa_path_probe(p, m, mixer_handle, m->profile_set->ignore_dB) < 0)
|
|
||||||
pa_hashmap_remove(ps->paths, p);
|
|
||||||
- }
|
|
||||||
}
|
|
||||||
|
|
||||||
path_set_condense(ps, mixer_handle);
|
|
||||||
--- a/src/modules/alsa/alsa-mixer.h
|
|
||||||
+++ b/src/modules/alsa/alsa-mixer.h
|
|
||||||
@@ -171,6 +171,8 @@ struct pa_alsa_jack {
|
|
||||||
|
|
||||||
pa_dynarray *ucm_devices; /* pa_alsa_ucm_device */
|
|
||||||
pa_dynarray *ucm_hw_mute_devices; /* pa_alsa_ucm_device */
|
|
||||||
+
|
|
||||||
+ bool append_pcm_to_name;
|
|
||||||
};
|
|
||||||
|
|
||||||
pa_alsa_jack *pa_alsa_jack_new(pa_alsa_path *path, const char *name);
|
|
||||||
@@ -234,7 +236,7 @@ void pa_alsa_element_dump(pa_alsa_elemen
|
|
||||||
|
|
||||||
pa_alsa_path *pa_alsa_path_new(const char *paths_dir, const char *fname, pa_alsa_direction_t direction);
|
|
||||||
pa_alsa_path *pa_alsa_path_synthesize(const char *element, pa_alsa_direction_t direction);
|
|
||||||
-int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, bool ignore_dB);
|
|
||||||
+int pa_alsa_path_probe(pa_alsa_path *p, pa_alsa_mapping *mapping, snd_mixer_t *m, bool ignore_dB);
|
|
||||||
void pa_alsa_path_dump(pa_alsa_path *p);
|
|
||||||
int pa_alsa_path_get_volume(pa_alsa_path *p, snd_mixer_t *m, const pa_channel_map *cm, pa_cvolume *v);
|
|
||||||
int pa_alsa_path_get_mute(pa_alsa_path *path, snd_mixer_t *m, bool *muted);
|
|
||||||
--- a/src/modules/alsa/alsa-sink.c
|
|
||||||
+++ b/src/modules/alsa/alsa-sink.c
|
|
||||||
@@ -1917,7 +1917,7 @@ static void find_mixer(struct userdata *
|
|
||||||
if (!(u->mixer_path = pa_alsa_path_synthesize(element, PA_ALSA_DIRECTION_OUTPUT)))
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
- if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, ignore_dB) < 0)
|
|
||||||
+ if (pa_alsa_path_probe(u->mixer_path, NULL, u->mixer_handle, ignore_dB) < 0)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
pa_log_debug("Probed mixer path %s:", u->mixer_path->name);
|
|
||||||
--- a/src/modules/alsa/alsa-source.c
|
|
||||||
+++ b/src/modules/alsa/alsa-source.c
|
|
||||||
@@ -1615,7 +1615,7 @@ static void find_mixer(struct userdata *
|
|
||||||
if (!(u->mixer_path = pa_alsa_path_synthesize(element, PA_ALSA_DIRECTION_INPUT)))
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
- if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, ignore_dB) < 0)
|
|
||||||
+ if (pa_alsa_path_probe(u->mixer_path, NULL, u->mixer_handle, ignore_dB) < 0)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
pa_log_debug("Probed mixer path %s:", u->mixer_path->name);
|
|
||||||
--- a/src/modules/alsa/mixer/paths/analog-output.conf.common
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/analog-output.conf.common
|
|
||||||
@@ -122,6 +122,10 @@
|
|
||||||
; # the required-any are present.
|
|
||||||
; state.plugged = yes | no | unknown # Normally a plugged jack would mean the port becomes available, and an unplugged means it's
|
|
||||||
; state.unplugged = yes | no | unknown # unavailable, but the port status can be overridden by specifying state.plugged and/or state.unplugged.
|
|
||||||
+; append-pcm-to-name = no | yes # Add ",pcm=N" to the jack name? N is the hw PCM device index. HDMI jacks have
|
|
||||||
+; # the PCM device index in their name, but different drivers use different
|
|
||||||
+; # numbering schemes, so we can't hardcode the full jack name in our configuration
|
|
||||||
+; # files.
|
|
||||||
|
|
||||||
[Element PCM]
|
|
||||||
switch = mute
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-0.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-0.conf
|
|
||||||
@@ -6,5 +6,6 @@ eld-device = 3
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
|
|
||||||
-[Jack HDMI/DP,pcm=3]
|
|
||||||
+[Jack HDMI/DP]
|
|
||||||
+append-pcm-to-name = yes
|
|
||||||
required = ignore
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-1.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-1.conf
|
|
||||||
@@ -6,5 +6,6 @@ eld-device = 7
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
|
|
||||||
-[Jack HDMI/DP,pcm=7]
|
|
||||||
+[Jack HDMI/DP]
|
|
||||||
+append-pcm-to-name = yes
|
|
||||||
required = ignore
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-2.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-2.conf
|
|
||||||
@@ -6,5 +6,6 @@ eld-device = 8
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
|
|
||||||
-[Jack HDMI/DP,pcm=8]
|
|
||||||
+[Jack HDMI/DP]
|
|
||||||
+append-pcm-to-name = yes
|
|
||||||
required = ignore
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-3.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-3.conf
|
|
||||||
@@ -6,5 +6,6 @@ eld-device = 9
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
|
|
||||||
-[Jack HDMI/DP,pcm=9]
|
|
||||||
+[Jack HDMI/DP]
|
|
||||||
+append-pcm-to-name = yes
|
|
||||||
required = ignore
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-4.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-4.conf
|
|
||||||
@@ -6,5 +6,6 @@ eld-device = 10
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
|
|
||||||
-[Jack HDMI/DP,pcm=10]
|
|
||||||
+[Jack HDMI/DP]
|
|
||||||
+append-pcm-to-name = yes
|
|
||||||
required = ignore
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-5.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-5.conf
|
|
||||||
@@ -6,5 +6,6 @@ eld-device = 11
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
|
|
||||||
-[Jack HDMI/DP,pcm=11]
|
|
||||||
+[Jack HDMI/DP]
|
|
||||||
+append-pcm-to-name = yes
|
|
||||||
required = ignore
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-6.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-6.conf
|
|
||||||
@@ -6,5 +6,6 @@ eld-device = 12
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
|
|
||||||
-[Jack HDMI/DP,pcm=12]
|
|
||||||
+[Jack HDMI/DP]
|
|
||||||
+append-pcm-to-name = yes
|
|
||||||
required = ignore
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-7.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-7.conf
|
|
||||||
@@ -6,5 +6,6 @@ eld-device = 13
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
|
|
||||||
-[Jack HDMI/DP,pcm=13]
|
|
||||||
+[Jack HDMI/DP]
|
|
||||||
+append-pcm-to-name = yes
|
|
||||||
required = ignore
|
|
@ -1,197 +0,0 @@
|
|||||||
From 72fa468a45031ba4be4d24d70fddf282b5c9da66 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tanu Kaskinen <tanuk@iki.fi>
|
|
||||||
Date: Sun, 8 Oct 2017 19:48:26 +0300
|
|
||||||
Subject: [PATCH] alsa-mixer: autodetect the ELD device
|
|
||||||
|
|
||||||
This removes the need to hardcode the ELD device index in the path
|
|
||||||
configuration. The hardcoded values don't work with the Intel HDMI LPE
|
|
||||||
driver.
|
|
||||||
|
|
||||||
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488
|
|
||||||
---
|
|
||||||
src/modules/alsa/alsa-mixer.c | 28 +++++++++++++++--
|
|
||||||
src/modules/alsa/alsa-mixer.h | 1
|
|
||||||
src/modules/alsa/mixer/paths/analog-output.conf.common | 8 +++-
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-0.conf | 2 -
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-1.conf | 2 -
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-2.conf | 2 -
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-3.conf | 2 -
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-4.conf | 2 -
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-5.conf | 2 -
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-6.conf | 2 -
|
|
||||||
src/modules/alsa/mixer/paths/hdmi-output-7.conf | 2 -
|
|
||||||
11 files changed, 41 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
--- a/src/modules/alsa/alsa-mixer.c
|
|
||||||
+++ b/src/modules/alsa/alsa-mixer.c
|
|
||||||
@@ -2051,6 +2051,28 @@ static int element_parse_enumeration(pa_
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int parse_eld_device(pa_config_parser_state *state) {
|
|
||||||
+ pa_alsa_path *path;
|
|
||||||
+ uint32_t eld_device;
|
|
||||||
+
|
|
||||||
+ path = state->userdata;
|
|
||||||
+
|
|
||||||
+ if (pa_atou(state->rvalue, &eld_device) >= 0) {
|
|
||||||
+ path->autodetect_eld_device = false;
|
|
||||||
+ path->eld_device = eld_device;
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (pa_streq(state->rvalue, "auto")) {
|
|
||||||
+ path->autodetect_eld_device = true;
|
|
||||||
+ path->eld_device = -1;
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ pa_log("[%s:%u] Invalid value for option 'eld-device': %s", state->filename, state->lineno, state->rvalue);
|
|
||||||
+ return -1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int option_parse_priority(pa_config_parser_state *state) {
|
|
||||||
pa_alsa_path *p;
|
|
||||||
pa_alsa_option *o;
|
|
||||||
@@ -2567,7 +2589,7 @@ pa_alsa_path* pa_alsa_path_new(const cha
|
|
||||||
{ "description-key", pa_config_parse_string, NULL, "General" },
|
|
||||||
{ "description", pa_config_parse_string, NULL, "General" },
|
|
||||||
{ "mute-during-activation", pa_config_parse_bool, NULL, "General" },
|
|
||||||
- { "eld-device", pa_config_parse_int, NULL, "General" },
|
|
||||||
+ { "eld-device", parse_eld_device, NULL, "General" },
|
|
||||||
|
|
||||||
/* [Option ...] */
|
|
||||||
{ "priority", option_parse_priority, NULL, NULL },
|
|
||||||
@@ -2607,7 +2629,6 @@ pa_alsa_path* pa_alsa_path_new(const cha
|
|
||||||
items[1].data = &p->description_key;
|
|
||||||
items[2].data = &p->description;
|
|
||||||
items[3].data = &mute_during_activation;
|
|
||||||
- items[4].data = &p->eld_device;
|
|
||||||
|
|
||||||
if (!paths_dir)
|
|
||||||
paths_dir = get_default_paths_dir();
|
|
||||||
@@ -4011,6 +4032,9 @@ static void mapping_paths_probe(pa_alsa_
|
|
||||||
}
|
|
||||||
|
|
||||||
PA_HASHMAP_FOREACH(p, ps->paths, state) {
|
|
||||||
+ if (p->autodetect_eld_device)
|
|
||||||
+ p->eld_device = m->hw_device_index;
|
|
||||||
+
|
|
||||||
if (pa_alsa_path_probe(p, m, mixer_handle, m->profile_set->ignore_dB) < 0)
|
|
||||||
pa_hashmap_remove(ps->paths, p);
|
|
||||||
}
|
|
||||||
--- a/src/modules/alsa/alsa-mixer.h
|
|
||||||
+++ b/src/modules/alsa/alsa-mixer.h
|
|
||||||
@@ -193,6 +193,7 @@ struct pa_alsa_path {
|
|
||||||
char *description_key;
|
|
||||||
char *description;
|
|
||||||
unsigned priority;
|
|
||||||
+ bool autodetect_eld_device;
|
|
||||||
int eld_device;
|
|
||||||
pa_proplist *proplist;
|
|
||||||
|
|
||||||
--- a/src/modules/alsa/mixer/paths/analog-output.conf.common
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/analog-output.conf.common
|
|
||||||
@@ -64,8 +64,12 @@
|
|
||||||
; mute-during-activation = yes | no # If this path supports hardware mute, should the hw mute be used while activating this
|
|
||||||
; # path? In some cases this can reduce extra noises during port switching, while in other
|
|
||||||
; # cases this can increase such noises. Default: no.
|
|
||||||
-; eld-device = ... # If this is an HDMI port, here's where to specify the device number for the ELD mixer
|
|
||||||
-; # control. The default is to not make use of ELD information.
|
|
||||||
+; eld-device = ... # If this is an HDMI port, set to "auto" so that PulseAudio will try to read
|
|
||||||
+; # the monitor ELD information from the ALSA mixer. By default the ELD information
|
|
||||||
+; # is not read, because it's only applicable with HDMI. Earlier the "auto" option
|
|
||||||
+; # didn't exist, and the hw device index had to be manually configured. For
|
|
||||||
+; # backwards compatibility, it's still possible to manually configure the device
|
|
||||||
+; # index using this option.
|
|
||||||
;
|
|
||||||
; [Properties] # Property list for this path. The list is merged into the port property list.
|
|
||||||
; <key> = <value> # Each property is defined on its own line.
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-0.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-0.conf
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
[General]
|
|
||||||
description = HDMI / DisplayPort
|
|
||||||
priority = 59
|
|
||||||
-eld-device = 3
|
|
||||||
+eld-device = auto
|
|
||||||
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-1.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-1.conf
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
[General]
|
|
||||||
description = HDMI / DisplayPort 2
|
|
||||||
priority = 58
|
|
||||||
-eld-device = 7
|
|
||||||
+eld-device = auto
|
|
||||||
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-2.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-2.conf
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
[General]
|
|
||||||
description = HDMI / DisplayPort 3
|
|
||||||
priority = 57
|
|
||||||
-eld-device = 8
|
|
||||||
+eld-device = auto
|
|
||||||
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-3.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-3.conf
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
[General]
|
|
||||||
description = HDMI / DisplayPort 4
|
|
||||||
priority = 56
|
|
||||||
-eld-device = 9
|
|
||||||
+eld-device = auto
|
|
||||||
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-4.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-4.conf
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
[General]
|
|
||||||
description = HDMI / DisplayPort 5
|
|
||||||
priority = 55
|
|
||||||
-eld-device = 10
|
|
||||||
+eld-device = auto
|
|
||||||
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-5.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-5.conf
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
[General]
|
|
||||||
description = HDMI / DisplayPort 6
|
|
||||||
priority = 54
|
|
||||||
-eld-device = 11
|
|
||||||
+eld-device = auto
|
|
||||||
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-6.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-6.conf
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
[General]
|
|
||||||
description = HDMI / DisplayPort 7
|
|
||||||
priority = 53
|
|
||||||
-eld-device = 12
|
|
||||||
+eld-device = auto
|
|
||||||
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
||||||
--- a/src/modules/alsa/mixer/paths/hdmi-output-7.conf
|
|
||||||
+++ b/src/modules/alsa/mixer/paths/hdmi-output-7.conf
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
[General]
|
|
||||||
description = HDMI / DisplayPort 8
|
|
||||||
priority = 52
|
|
||||||
-eld-device = 13
|
|
||||||
+eld-device = auto
|
|
||||||
|
|
||||||
[Properties]
|
|
||||||
device.icon_name = video-display
|
|
7
_service
Normal file
7
_service
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<services>
|
||||||
|
<service name="verify_file">
|
||||||
|
<param name="file">pulseaudio-11.99.1.tar.xz</param>
|
||||||
|
<param name="verifier">sha1</param>
|
||||||
|
<param name="checksum">f42fc78635e97dc6337408fb8dbf936b6ae0d34f</param>
|
||||||
|
</service>
|
||||||
|
</services>
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:f2521c525a77166189e3cb9169f75c2ee2b82fa3fcf9476024fbc2c3a6c9cd9e
|
|
||||||
size 1648924
|
|
3
pulseaudio-11.99.1.tar.xz
Normal file
3
pulseaudio-11.99.1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:2b786deb178cc2c51e067b2f07096e2c89fd95e014049397e1ee4d5b2bcbd92a
|
||||||
|
size 1655948
|
@ -1,61 +0,0 @@
|
|||||||
From dfb0460fb4743aec047cdf755a660a9ac2d0f3fb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tanu Kaskinen <tanuk@iki.fi>
|
|
||||||
Date: Wed, 24 Jan 2018 03:51:49 +0200
|
|
||||||
Subject: [PATCH] memfd-wrappers: only define memfd_create() if not already
|
|
||||||
defined
|
|
||||||
|
|
||||||
glibc 2.27 is to be released soon, and it will provide memfd_create().
|
|
||||||
If glibc provides the function, we must not define it ourselves,
|
|
||||||
otherwise building fails due to conflict between the two implementations
|
|
||||||
of the same function.
|
|
||||||
|
|
||||||
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=104733
|
|
||||||
---
|
|
||||||
configure.ac | 3 +++
|
|
||||||
src/pulsecore/memfd-wrappers.h | 7 ++++---
|
|
||||||
2 files changed, 7 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 0084c86e4..0eb44b08f 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -610,6 +610,9 @@ AS_IF([test "x$enable_memfd" = "xyes" && test "x$HAVE_MEMFD" = "x0"],
|
|
||||||
[AC_MSG_ERROR([*** Your Linux kernel does not support memfd shared memory.
|
|
||||||
*** Use linux v3.17 or higher for such a feature.])])
|
|
||||||
|
|
||||||
+AS_IF([test "x$HAVE_MEMFD" = "x1"],
|
|
||||||
+ AC_CHECK_FUNCS([memfd_create]))
|
|
||||||
+
|
|
||||||
AC_SUBST(HAVE_MEMFD)
|
|
||||||
AM_CONDITIONAL([HAVE_MEMFD], [test "x$HAVE_MEMFD" = x1])
|
|
||||||
AS_IF([test "x$HAVE_MEMFD" = "x1"], AC_DEFINE([HAVE_MEMFD], 1, [Have memfd shared memory.]))
|
|
||||||
diff --git a/src/pulsecore/memfd-wrappers.h b/src/pulsecore/memfd-wrappers.h
|
|
||||||
index 3bed9b2b1..c7aadfd3c 100644
|
|
||||||
--- a/src/pulsecore/memfd-wrappers.h
|
|
||||||
+++ b/src/pulsecore/memfd-wrappers.h
|
|
||||||
@@ -20,13 +20,14 @@
|
|
||||||
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
|
|
||||||
***/
|
|
||||||
|
|
||||||
-#ifdef HAVE_MEMFD
|
|
||||||
+#if defined(HAVE_MEMFD) && !defined(HAVE_MEMFD_CREATE)
|
|
||||||
|
|
||||||
#include <sys/syscall.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
- * No glibc wrappers exist for memfd_create(2), so provide our own.
|
|
||||||
+ * Before glibc version 2.27 there was no wrapper for memfd_create(2),
|
|
||||||
+ * so we have to provide our own.
|
|
||||||
*
|
|
||||||
* Also define memfd fcntl sealing macros. While they are already
|
|
||||||
* defined in the kernel header file <linux/fcntl.h>, that file as
|
|
||||||
@@ -63,6 +64,6 @@ static inline int memfd_create(const char *name, unsigned int flags) {
|
|
||||||
#define F_SEAL_WRITE 0x0008 /* prevent writes */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#endif /* HAVE_MEMFD */
|
|
||||||
+#endif /* HAVE_MEMFD && !HAVE_MEMFD_CREATE */
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,3 +1,38 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 15 12:27:13 UTC 2018 - oholecek@suse.com
|
||||||
|
|
||||||
|
- Update to 12 RC1 (11.99.1)
|
||||||
|
* Much more accurate latency reporting for AirPlay devices
|
||||||
|
* module-switch-on-connect now ignores virtual devices
|
||||||
|
* When using passthrough for compressed audio, set the "non-audio" bit
|
||||||
|
* Prioritize HDMI output over S/PDIF output
|
||||||
|
* HSP support for more bluetooth headsets
|
||||||
|
* Choose the A2DP bluetooth profile by default instead of HSP
|
||||||
|
* New "sink_input_properties" module argument for module-ladspa-sink
|
||||||
|
* New "use_system_clock_for_timing" module argument for module-pipe-sink
|
||||||
|
* Steelseries Arctis 7 USB headset stereo output support
|
||||||
|
* Dell Thunderbolt Dock TB16 speaker jack support
|
||||||
|
* Fixed digital input support for some USB sound cards
|
||||||
|
* Ability to disable input or output on macOS
|
||||||
|
* New "dereverb" option for the Speex echo canceller
|
||||||
|
* New module: module-always-source
|
||||||
|
* State files not any more readable by all users in the system mode
|
||||||
|
* module-augment-properties now uses XDG_DATA_DIRS to find .desktop files
|
||||||
|
* The GConf dependency can now be avoided
|
||||||
|
* qpaeq license changed from AGPL to LGPL
|
||||||
|
* qpaeq ported to Qt 5
|
||||||
|
- Add subpackage module-gsettings (conflicts with module-gconf)
|
||||||
|
- Remove support for obsolete Bluez4
|
||||||
|
- Fix build phase running configure twice
|
||||||
|
- Removed patches:
|
||||||
|
0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch
|
||||||
|
0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch
|
||||||
|
0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch
|
||||||
|
0004-alsa-mixer-autodetect-the-ELD-device.patch
|
||||||
|
pulseaudio-glibc2.27.patch
|
||||||
|
- Added patch:
|
||||||
|
qpaeq-shebang.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Apr 19 11:35:58 UTC 2018 - fcrozat@suse.com
|
Thu Apr 19 11:35:58 UTC 2018 - fcrozat@suse.com
|
||||||
|
|
||||||
|
@ -21,18 +21,13 @@
|
|||||||
%define _fillupdir /var/adm/fillup-templates
|
%define _fillupdir /var/adm/fillup-templates
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%define drvver 11.1
|
%define drvver 11.99
|
||||||
%define soname 0
|
%define soname 0
|
||||||
%define _udevrulesdir %(pkg-config --variable=udevdir udev)/rules.d
|
%define _udevrulesdir %(pkg-config --variable=udevdir udev)/rules.d
|
||||||
%define _fwdefdir %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services
|
%define _fwdefdir %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services
|
||||||
# store bluez version from bluez-devel and check for bluez4/5
|
|
||||||
# _bluezVersion is than also used in requires for bluetooth subpackage
|
|
||||||
# once oS 12.3 is EOL, this can be removed as there will probably be nothing providing bluez4
|
|
||||||
%define _bluezVersion %(LC_ALL="C" rpm --qf '%%{VERSION}' -q bluez-devel | grep -v 'not installed')
|
|
||||||
%define _bluez5used 0%(echo "%{_bluezVersion}" | grep -q '^5' && echo 1)
|
|
||||||
%define _bashcompletionsdir %{_datadir}/bash-completion/completions
|
%define _bashcompletionsdir %{_datadir}/bash-completion/completions
|
||||||
Name: pulseaudio
|
Name: pulseaudio
|
||||||
Version: 11.1
|
Version: 11.99.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A Networked Sound Server
|
Summary: A Networked Sound Server
|
||||||
License: GPL-2.0+ AND LGPL-2.1+
|
License: GPL-2.0+ AND LGPL-2.1+
|
||||||
@ -49,17 +44,11 @@ Source99: baselibs.conf
|
|||||||
Patch0: disabled-start.diff
|
Patch0: disabled-start.diff
|
||||||
Patch1: suppress-socket-error-msg.diff
|
Patch1: suppress-socket-error-msg.diff
|
||||||
Patch2: pulseaudio-wrong-memset.patch
|
Patch2: pulseaudio-wrong-memset.patch
|
||||||
# PATCH-FIX-UPSTREAM pulseaudio-glibc2.27.patch boo#1081023 fdo#104733 dimstar@opensuse.org -- Fix build with glibc 2.27
|
|
||||||
Patch3: pulseaudio-glibc2.27.patch
|
|
||||||
Patch4: pa-set-exit-idle-time-to-0-when-we-detect-a-session.patch
|
Patch4: pa-set-exit-idle-time-to-0-when-we-detect-a-session.patch
|
||||||
# upstream fixes for crash with Intel LPE HDMI audio
|
# PATCH-FIX-OPENSUSE qpaeq-shebang.patch Avoid rpmlint error due to using env python shebang
|
||||||
Patch5: 0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch
|
Patch5: qpaeq-shebang.patch
|
||||||
Patch6: 0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch
|
|
||||||
Patch7: 0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch
|
|
||||||
Patch8: 0004-alsa-mixer-autodetect-the-ELD-device.patch
|
|
||||||
BuildRequires: alsa-devel >= 1.0.19
|
BuildRequires: alsa-devel >= 1.0.19
|
||||||
# require only minimal bluez, if we are on bluez 5 we will determine in build phase
|
BuildRequires: bluez-devel >= 5
|
||||||
BuildRequires: bluez-devel >= 4.99
|
|
||||||
BuildRequires: doxygen
|
BuildRequires: doxygen
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: fftw3-devel >= 3.0
|
BuildRequires: fftw3-devel >= 3.0
|
||||||
@ -213,7 +202,7 @@ This package includes support for Jack-based applications.
|
|||||||
Summary: Bluetooth support for the PulseAudio sound server
|
Summary: Bluetooth support for the PulseAudio sound server
|
||||||
Group: System/Sound Daemons
|
Group: System/Sound Daemons
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
Requires: bluez >= %{_bluezVersion}
|
Requires: bluez >= 5
|
||||||
Supplements: packageand(pulseaudio:bluez)
|
Supplements: packageand(pulseaudio:bluez)
|
||||||
|
|
||||||
%description module-bluetooth
|
%description module-bluetooth
|
||||||
@ -227,6 +216,7 @@ Contains Bluetooth audio (A2DP/HSP/HFP) support for the PulseAudio sound server.
|
|||||||
Summary: GCONF module for PulseAudio
|
Summary: GCONF module for PulseAudio
|
||||||
Group: System/Sound Daemons
|
Group: System/Sound Daemons
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
|
Conflicts: %{name}-module-gsettings
|
||||||
|
|
||||||
%description module-gconf
|
%description module-gconf
|
||||||
pulseaudio is a networked sound server for Linux and other Unix like
|
pulseaudio is a networked sound server for Linux and other Unix like
|
||||||
@ -235,6 +225,19 @@ improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
|
|||||||
|
|
||||||
This package provides gconf storage of PulseAudio sound server settings.
|
This package provides gconf storage of PulseAudio sound server settings.
|
||||||
|
|
||||||
|
%package module-gsettings
|
||||||
|
Summary: GSettings module for PulseAudio
|
||||||
|
Group: System/Sound Daemons
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
Conflicts: %{name}-module-gconf
|
||||||
|
|
||||||
|
%description module-gsettings
|
||||||
|
pulseaudio is a networked sound server for Linux and other Unix like
|
||||||
|
operating systems and Microsoft Windows. It is intended to be an
|
||||||
|
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
|
||||||
|
|
||||||
|
This package provides GSettings storage of PulseAudio sound server settings.
|
||||||
|
|
||||||
%package -n libpulse%{soname}
|
%package -n libpulse%{soname}
|
||||||
Summary: Client interface to PulseAudio
|
Summary: Client interface to PulseAudio
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
@ -338,15 +341,11 @@ Optional dependency offering zsh completion for various PulseAudio utilities
|
|||||||
%patch0
|
%patch0
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2
|
%patch2
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5 -p1
|
%patch5
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
./bootstrap.sh
|
NOCONFIGURE=1 ./bootstrap.sh
|
||||||
echo 'HTML_TIMESTAMP=NO' >> doxygen/doxygen.conf.in
|
echo 'HTML_TIMESTAMP=NO' >> doxygen/doxygen.conf.in
|
||||||
export LDFLAGS="-pie"
|
export LDFLAGS="-pie"
|
||||||
export CFLAGS="%{optflags} -fPIE"
|
export CFLAGS="%{optflags} -fPIE"
|
||||||
@ -360,11 +359,11 @@ export CFLAGS="%{optflags} -fPIE"
|
|||||||
--with-system-group=pulse \
|
--with-system-group=pulse \
|
||||||
--with-access-group=pulse-access \
|
--with-access-group=pulse-access \
|
||||||
--disable-hal-compat \
|
--disable-hal-compat \
|
||||||
%if 0%{?_bluez5used}
|
|
||||||
--disable-bluez4 \
|
--disable-bluez4 \
|
||||||
%else
|
--enable-webrtc-aec \
|
||||||
--disable-bluez5 \
|
--enable-adrian-aec \
|
||||||
%endif
|
--enable-gconf \
|
||||||
|
--enable-gsettings \
|
||||||
--with-udev-rules-dir=%{_udevrulesdir} \
|
--with-udev-rules-dir=%{_udevrulesdir} \
|
||||||
--with-pulsedsp-location='%{_prefix}/\\$$LIB/pulseaudio'
|
--with-pulsedsp-location='%{_prefix}/\\$$LIB/pulseaudio'
|
||||||
|
|
||||||
@ -475,6 +474,7 @@ exit 0
|
|||||||
%{_libdir}/pulse-%{drvver}/modules/module-alsa-sink.so
|
%{_libdir}/pulse-%{drvver}/modules/module-alsa-sink.so
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-alsa-source.so
|
%{_libdir}/pulse-%{drvver}/modules/module-alsa-source.so
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-always-sink.so
|
%{_libdir}/pulse-%{drvver}/modules/module-always-sink.so
|
||||||
|
%{_libdir}/pulse-%{drvver}/modules/module-always-source.so
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-allow-passthrough.so
|
%{_libdir}/pulse-%{drvver}/modules/module-allow-passthrough.so
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-augment-properties.so
|
%{_libdir}/pulse-%{drvver}/modules/module-augment-properties.so
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-card-restore.so
|
%{_libdir}/pulse-%{drvver}/modules/module-card-restore.so
|
||||||
@ -605,21 +605,16 @@ exit 0
|
|||||||
%files -n libpulse-mainloop-glib%{soname}
|
%files -n libpulse-mainloop-glib%{soname}
|
||||||
%{_libdir}/libpulse-mainloop-glib.so.%{soname}
|
%{_libdir}/libpulse-mainloop-glib.so.%{soname}
|
||||||
%{_libdir}/libpulse-mainloop-glib.so.%{soname}.*
|
%{_libdir}/libpulse-mainloop-glib.so.%{soname}.*
|
||||||
|
%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml
|
||||||
|
|
||||||
%files module-bluetooth
|
%files module-bluetooth
|
||||||
%dir %{_libdir}/pulse-%{drvver}
|
%dir %{_libdir}/pulse-%{drvver}
|
||||||
%dir %{_libdir}/pulse-%{drvver}/modules
|
%dir %{_libdir}/pulse-%{drvver}/modules
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-bluetooth-policy.so
|
%{_libdir}/pulse-%{drvver}/modules/module-bluetooth-policy.so
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-bluetooth-discover.so
|
%{_libdir}/pulse-%{drvver}/modules/module-bluetooth-discover.so
|
||||||
%if 0%{?_bluez5used}
|
|
||||||
%{_libdir}/pulse-%{drvver}/modules/libbluez5-util.so
|
%{_libdir}/pulse-%{drvver}/modules/libbluez5-util.so
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-bluez5-device.so
|
%{_libdir}/pulse-%{drvver}/modules/module-bluez5-device.so
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-bluez5-discover.so
|
%{_libdir}/pulse-%{drvver}/modules/module-bluez5-discover.so
|
||||||
%else
|
|
||||||
%{_libdir}/pulse-%{drvver}/modules/libbluez4-util.so
|
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-bluez4-device.so
|
|
||||||
%{_libdir}/pulse-%{drvver}/modules/module-bluez4-discover.so
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%files module-gconf
|
%files module-gconf
|
||||||
%dir %{_libexecdir}/pulse
|
%dir %{_libexecdir}/pulse
|
||||||
@ -628,6 +623,16 @@ exit 0
|
|||||||
%{_libdir}/pulse-%{drvver}/modules/module-gconf.so
|
%{_libdir}/pulse-%{drvver}/modules/module-gconf.so
|
||||||
%{_libexecdir}/pulse/gconf-helper
|
%{_libexecdir}/pulse/gconf-helper
|
||||||
|
|
||||||
|
%files module-gsettings
|
||||||
|
%dir %{_libexecdir}/pulse
|
||||||
|
%dir %{_libdir}/pulse-%{drvver}
|
||||||
|
%dir %{_libdir}/pulse-%{drvver}/modules
|
||||||
|
%dir %{_datarootdir}/GConf
|
||||||
|
%dir %{_datarootdir}/GConf/gsettings
|
||||||
|
%{_libdir}/pulse-%{drvver}/modules/module-gsettings.so
|
||||||
|
%{_libexecdir}/pulse/gsettings-helper
|
||||||
|
%{_datadir}/GConf/gsettings/pulseaudio.convert
|
||||||
|
|
||||||
%files module-lirc
|
%files module-lirc
|
||||||
%dir %{_libdir}/pulse-%{drvver}
|
%dir %{_libdir}/pulse-%{drvver}
|
||||||
%dir %{_libdir}/pulse-%{drvver}/modules
|
%dir %{_libdir}/pulse-%{drvver}/modules
|
||||||
|
8
qpaeq-shebang.patch
Normal file
8
qpaeq-shebang.patch
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
--- src/utils/qpaeq.org 2018-05-15 14:12:16.038877587 +0200
|
||||||
|
+++ src/utils/qpaeq 2018-05-15 14:12:49.002967454 +0200
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/env python
|
||||||
|
+#!/usr/bin/python
|
||||||
|
# qpaeq is a equalizer interface for pulseaudio's equalizer sinks
|
||||||
|
# Copyright (C) 2009 Jason Newton <nevion@gmail.com
|
||||||
|
#
|
Loading…
x
Reference in New Issue
Block a user