Hemanth Meenakshisundaram | 21 Apr 02:30 2014

[PATCH] combine-sink: fix zero adjust_time behaviour.

From: Hemanth Meenakshisundaram <hemanth <at> highfive.com>

A value of 0 for adjust_time should disable rate adjustment.
Fix a bug where a 0 value causes rate adjustment to be called
continuously instead after an unsuspend event.
 src/modules/module-combine-sink.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/module-combine-sink.c b/src/modules/module-combine-sink.c
index deabceb..bd18b7a 100644
--- a/src/modules/module-combine-sink.c
+++ b/src/modules/module-combine-sink.c
 <at>  <at>  -610,7 +610,7  <at>  <at>  static void unsuspend(struct userdata *u) {
     PA_IDXSET_FOREACH(o, u->outputs, idx)

-    if (!u->time_event)
+    if ((!u->time_event) && (u->adjust_time > 0))
         u->time_event = pa_core_rttime_new(u->core, pa_rtclock_now() + u->adjust_time, time_callback, u);

     pa_log_info("Resumed successfully...");

Alexander E. Patrakov | 19 Apr 23:21 2014

[PATCH] Don't use tsched on unsafe ALSA plugins

Since the dca ALSA plugin is based on extplug, it has a slave and therefore
a card. Thus, PulseAudio thinks that it looks like hardware and attempts
rewinds, which this plugin cannot handle correctly, because ALSA never
notifies extplug plugins about rewinds.

The same mishandling of rewinds applies to some other plugins.

Work around this ALSA bug by switching to IRQ-based scheduling on strange
plugin types.
I have not deleted the "does a card exist" check, but for the AC3 encoder
case (which is mentioned in the git log) it is now redundant. Feel free
to delete if no other triggering use case is known.

P.S. I see this line in alsa-lib/src/pcm/pcm_extplug.c:

        params->info &= ~(SND_PCM_INFO_MMAP | SND_PCM_INFO_MMAP_VALID);

but then also:

        snd_pcm_access_mask_t saccess_mask = { SND_PCM_ACCBIT_MMAP };

How should I understand this - is the intention here to disable mmap access
or enable it?

 src/modules/alsa/alsa-util.c | 48 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 1ce2e16..c6dd80c 100644
(Continue reading)

Tanu Kaskinen | 17 Apr 11:14 2014

Patch review status wiki page updated

Patch review status updated:


* 2014-04-17
   * 157 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 275 days old.

* 2014-03-24
   * 138 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 251 days old.

* 2014-03-14
   * 136 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 241 days old.

* 2014-03-07
   * 136 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 234 days old.

* 2014-02-22
   * 137 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 221 days old.

(Continue reading)

Lukas Zapletal | 16 Apr 13:21 2014

When (un)docking PA does not switch output between speakers and out


in Fedora 20 we have this %SUBJ% bug which is annoying. Before I start 
digging I want to ask if you guys know if this has been fixed upstream.


If so, I will backport this into F20 because this is driving me crazy.

If not, please point me on the code bits I should start to hack. Thanks.
Peter Barada | 15 Apr 18:24 2014

Routing to/from HE910 cell modem w/echo cancellation


I'm a bit unclear on how to use paplay/parecord as replacements for

On my dm3730-based system I have an HE910 modem hooked up and have
created a snd-soc device for it (using the snd-soc-dummy-dai) to move
data in/out of the HE910 PCM port.  My alsa devices show up as:

root <at> lv5000:~# aplay -L
    Discard all samples (playback) or generate zero samples (capture)
    Default Audio Device
    Default Audio Device
    Default Audio Device
    Default Audio Device

Where omap3beagle source is the microphone and its sink is the speaker,
omap3he910 source is PCM data from the HE910 and its sink is PCM data to
the HE910.

Previously I'd setup two pipes using aplay/arecord to move the data
(Continue reading)

David Henningsson | 15 Apr 17:25 2014

[PATCH 1/2] fdsem: remove superfluous parameter in call to pa_fdsem_new_shm

This parameter was never assigned, so just remove it.

Note that the only current user of this function is shmasyncq.c,
which is unused - we don't even build it. But I fixed it up anyway.

Signed-off-by: David Henningsson <david.henningsson <at> canonical.com>
 src/pulsecore/fdsem.c     | 3 +--
 src/pulsecore/fdsem.h     | 2 +-
 src/pulsecore/shmasyncq.c | 3 ++-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/pulsecore/fdsem.c b/src/pulsecore/fdsem.c
index ec32461..b153ddd 100644
--- a/src/pulsecore/fdsem.c
+++ b/src/pulsecore/fdsem.c
 <at>  <at>  -100,11 +100,10  <at>  <at>  pa_fdsem *pa_fdsem_open_shm(pa_fdsem_data *data, int event_fd) {
     return f;

-pa_fdsem *pa_fdsem_new_shm(pa_fdsem_data *data, int* event_fd) {
+pa_fdsem *pa_fdsem_new_shm(pa_fdsem_data *data) {
     pa_fdsem *f = NULL;

-    pa_assert(event_fd);


diff --git a/src/pulsecore/fdsem.h b/src/pulsecore/fdsem.h
(Continue reading)

Wim Taymans | 15 Apr 15:21 2014

[PATCH] combine-sinks: add suport for DYNAMIC_LATENCY

Mark the sink as DYNAMIC_LATENCY and implement update_sink_latency_range
on its sink-input to collect the combined latency range of all sinks.

Implement update_requested_latency on the sink to configure the final
latency by combining the sink-input requested latencies. This makes us
honour the client latency request.

We don't need to call update_max_request() and update_fixed_latency()
when adding and removing outputs, this is already done when we attach
the sink-inputs.

Also add more debug log.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=47899
 src/modules/module-combine-sink.c | 135 +++++++++++++++++++++++++++-----------
 1 file changed, 98 insertions(+), 37 deletions(-)

diff --git a/src/modules/module-combine-sink.c b/src/modules/module-combine-sink.c
index deabceb..d705542 100644
--- a/src/modules/module-combine-sink.c
+++ b/src/modules/module-combine-sink.c
 <at>  <at>  -104,7 +104,8  <at>  <at>  struct output {

     /* For communication of the stream parameters to the sink thread */
     pa_atomic_t max_request;
-    pa_atomic_t requested_latency;
+    pa_atomic_t max_latency;
+    pa_atomic_t min_latency;

(Continue reading)

Juho Hämäläinen | 15 Apr 15:11 2014

[PATCH] dbus: Use correct initialization for source ports hashmap.

Source ports hashmap is created without value freeing function, which
results in (hashmap values) device ports not being freed when source
ports are removed or module is unloaded. This results in memory leak
during normal operation and during daemon shutdown dbus_protocol shared
object isn't unreferenced correctly, leaving dbus_protocol object in
core->shared, which causes assert when shared hashmap is checked for
isempty() before freeing.
 src/modules/dbus/iface-device.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/dbus/iface-device.c b/src/modules/dbus/iface-device.c
index 34b370b..625f057 100644
--- a/src/modules/dbus/iface-device.c
+++ b/src/modules/dbus/iface-device.c
 <at>  <at>  -1248,7 +1248,7  <at>  <at>  pa_dbusiface_device *pa_dbusiface_device_new_source(pa_dbusiface_core
*core, pa_
     d->volume = *pa_source_get_volume(source, false);
     d->mute = pa_source_get_mute(source, false);
     d->source_state = pa_source_get_state(source);
-    d->ports = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+    d->ports = pa_hashmap_new_full(pa_idxset_string_hash_func, pa_idxset_string_compare_func,
NULL, (pa_free_cb_t) pa_dbusiface_device_port_free);
     d->next_port_index = 0;
     d->active_port = source->active_port;
     d->proplist = pa_proplist_copy(source->proplist);

Tanu Kaskinen | 15 Apr 12:56 2014

[PATCH 00/15] Volume and mute refactoring + new hooks

I sent earlier a patch set with subject "Some volume refactoring + new
hooks"[1]. That patch set is superseded by this one. This patch set
incorporates the feedback from the previous patch set, and adds mute
refactoring and mute hooks.

As with the previous patch set, the refactoring is done to make it
possible to fire the hooks from only one place, and the hooks are
required by out-of-tree modules implementing the "Tizen volume API".

The first patch has already been sent separately, but I included it
here too, because the subsequent patches require that to apply

[1] http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/20042

Tanu Kaskinen (15):
  sink-input, source-output: Fix mute saving
  sink, source: Assign to reference_volume from only one place
  sink-input, source-output: Assign to volume from only one place
  sink, source: Return early from set_mute()
  sink-input, source-output: Add logging to set_mute()
  sink, source: Allow calling set_mute() during initialization
  echo-cancel: Remove redundant get_mute() callback
  sink, source: Call set_mute() from mute_changed()
  sink, source: Assign to s->muted from only one place
  sink-input, source-output: Remove redundant get_mute() functions
  solaris, tunnel: Remove some redundant boolean conversions
  sink, source: Add hooks for volume changes
  sink-input, source-output: Add hooks for volume changes
  sink, source: Add hooks for mute changes
(Continue reading)

David Henningsson | 15 Apr 11:54 2014

[PATCH] pstream: Use pa_xnew0 in initialization

...for simplicity.

Signed-off-by: David Henningsson <david.henningsson <at> canonical.com>
 src/pulsecore/pstream.c | 30 +-----------------------------
 1 file changed, 1 insertion(+), 29 deletions(-)

diff --git a/src/pulsecore/pstream.c b/src/pulsecore/pstream.c
index 190fc9a..2c1444f 100644
--- a/src/pulsecore/pstream.c
+++ b/src/pulsecore/pstream.c
 <at>  <at>  -237,11 +237,10  <at>  <at>  pa_pstream *pa_pstream_new(pa_mainloop_api *m, pa_iochannel *io, pa_mempool *poo

-    p = pa_xnew(pa_pstream, 1);
+    p = pa_xnew0(pa_pstream, 1);
     p->io = io;
     pa_iochannel_set_callback(io, io_callback, p);
-    p->dead = false;

     p->mainloop = m;
     p->defer_event = m->defer_new(m, defer_callback, p);
 <at>  <at>  -249,41 +248,14  <at>  <at>  pa_pstream *pa_pstream_new(pa_mainloop_api *m, pa_iochannel *io, pa_mempool *poo

     p->send_queue = pa_queue_new();

-    p->write.current = NULL;
-    p->write.index = 0;
(Continue reading)

Peter Meerwald | 15 Apr 11:12 2014

[PATCH 1/2] man: Fix typos in pulse-daemon.conf.5.xml.in

From: Peter Meerwald <p.meerwald <at> bct-electronic.com>

Signed-off-by: Peter Meerwald <pmeerw <at> pmeerw.net>
 man/pulse-daemon.conf.5.xml.in |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index 4aa5948..8bd076d 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
 <at>  <at>  -265,7 +265,7  <at>  <at>  USA.
   <section name="Paths">

-      <p><opt>dl-search-path=</opt> The path were to look for dynamic
+      <p><opt>dl-search-path=</opt> The path where to look for dynamic
       shared objects (DSOs/plugins). You may specify more than one
       path separated by colons. The default path depends on compile
       time settings. The <opt>--dl-search-path</opt> command line
 <at>  <at>  -326,7 +326,7  <at>  <at>  USA.

-      <p><opt>log-time=</opt> With each logged messages log the
+      <p><opt>log-time=</opt> With each logged message log the
       relative time since startup. Defaults to <opt>no</opt>.</p>


(Continue reading)