David Henningsson [Mon, 12 Mar 2012 23:06:22 +0000 (00:06 +0100)]
daemon: Initialize dbus to use thread-safe mode by default
In most cases, we use dbus from more than one thread, as we
e.g. enable real-time scheduling from the ALSA threads.
Therefore set dbus to thread-safe mode by default, as recommended
in https://bugs.freedesktop.org/show_bug.cgi?id=47060#c5
This fixes a bug where PulseAudio could crash in two parallel
calls to pa_make_realtime.
If these files aren't compiled in both libpulse and
libpulsecommon, some things will try use non-public
functions from libpulse. Therefore those internal functions
have to be included directly in libpulsecommon.
This problem appears to be only visible with --as-needed,
which is why the problem wasn't noticed immediately. The
problem has existed also earlier, and it was fixed by
Maarten Bosmans in commit 2de2c735. The commit that is
now reverted basically reverted Maarten's commit (I didn't
know that when I wrote the bad patch).
Giorgos Boutsioukis [Sun, 26 Feb 2012 23:34:09 +0000 (15:34 -0800)]
xen: Add Xen paravirtualized sink support.
A part of Xen's paravirtualized audio driver has been developed as a
pulseaudio module. This module acts as a tunnel over Xen's shared memory
mechanism and allows a domU guest to send audio data to a dom0 backend.
David Henningsson [Thu, 23 Feb 2012 06:17:07 +0000 (07:17 +0100)]
alsa-mixer: Make speaker get available=no when headphones are plugged in
While developing the new UI we had to ask ourselves the question of whether
"speakers" should be considered available when headphones are plugged in.
In most cases, they are not available and therefore we should list them
as such.
OTOH, we don't want unplugging the headphones to be considered an act of
wanting to use the speakers (the user might prefer HDMI), and there might
be line-outs that keeps the speakers from unmuting anyway. So, at this point,
I think the most reasonable would be to make the speakers have
PA_PORT_AVAILABLE_NO when headphones are plugged in and
PA_PORT_AVAILABLE_UNKNOWN when they are not. But we might want to revisit
this decision once we have the priority lists up and running.
The same reasoning applies for "Internal Mic", which should become unavailable
when any other mic is plugged in.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
David Henningsson [Thu, 23 Feb 2012 06:17:06 +0000 (07:17 +0100)]
introspect: Expose port info per card to clients
For volume control UIs to be able to show ports in inactive profiles,
expose all ports together with the card info. This includes updating
the protocol and the client API to show the connection between ports
and for which profiles the ports are relevant.
Update protocol to 26.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
David Henningsson [Thu, 23 Feb 2012 06:17:02 +0000 (07:17 +0100)]
alsa: Jack detection kcontrol implementation
Support the new jack detection interface implemented in Linux 3.3
(and Ubuntu's 3.2 kernel).
Jacks are probed and detected using the snd_hctl_* commands, which
means we need to listen to them using fdlists. As this detection
needs to be active even if there is currently no sink for the jack,
so this polling is done on the card level.
Also add configuration support in paths, like this:
[Jack Headphone]
required-any = any
...where 'Jack Headphone' should match 'Headphone Jack' as given by
ALSA (as seen in e g 'amixer controls').
"Required", "required-any" and "required-absent" is supported. Using
required-any, one can have several ports even though there is no
other indication in the mixer that this path exists.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Niels Ole Salscheider [Sun, 8 Jan 2012 20:22:35 +0000 (21:22 +0100)]
Add module-virtual-surround-sink.
It provides a virtual surround sound effect.
v2: Normalize hrir to avoid clipping, some cleanups
v3: use fabs, not abs
v4: implement changes proposed by Tanu Kaskinen
v5: likewise
v6: use channel map from hrir file
v7: remove hrir_ss and hrir_map form userdata
v8: update naming of sink
David Henningsson [Sun, 4 Mar 2012 05:07:37 +0000 (06:07 +0100)]
flist: Avoid the ABA problem
Our flist implementation suffers from the ABA problem
(see http://en.wikipedia.org/wiki/ABA_problem), causing PulseAudio
to crash very rarely, usually inside memblock operations.
By turning stored pointers into stored table indices, we have some
extra bits that we can use to store tag bits, which is a known
workaround for the ABA problem.
Arun Raghavan [Mon, 5 Mar 2012 15:00:33 +0000 (20:30 +0530)]
format: Allow format->sample spec conversion for compressed formats
This allows clients to get a "fake" sample space for compressed formats
that we can support. This should make size/time conversion for things
like calculating buffer attributes simpler.
Arun Raghavan [Mon, 6 Feb 2012 11:47:34 +0000 (17:17 +0530)]
format: Add API to query a property's type
Since a given property can be single-valued, an array or (in the case of
ints) a range, clients need an API to figure out what type of value a
property holds. This adds such an API. The actual property type
enumeration is kept in the PA_PROP_* namespace and not the
PA_FORMAT_INFO* namespace so that it can later be reused for properties
generically if required.
Arun Raghavan [Mon, 6 Feb 2012 10:48:49 +0000 (16:18 +0530)]
format: Add more property getters
This adds integer range/array and string array property getters to the
pa_format_info API. Corresponding tests added as well to ensure the code
is valgrind-clean.
The corresponding functions are added to map-file manually for now.
These utility functions could be handy to clients.
pa_format_info_to_sample_spec_fake() isn't made public, but the return
value is changed to keep in sync with pa_format_info_to_sample_spec().
Arun Raghavan [Mon, 6 Feb 2012 05:50:17 +0000 (11:20 +0530)]
format: Don't assert on errors in getters
This makes handling errors in getter functions more graceful, rather
than triggering warnings/asserts. Better to be less trigger-happy about
these things since this is now public-facing API.
Arun Raghavan [Mon, 6 Feb 2012 05:44:53 +0000 (11:14 +0530)]
format: Export pa_format_info int and string property getters
We currently only have setters and clients need to be able to query
these values as well. The return types for these functions needed to be
changed to int since this is public API now.
Alexander E. Patrakov [Sun, 12 Feb 2012 11:28:55 +0000 (17:28 +0600)]
alsa: add DTS profile
Hi. Could you please apply the attached trivial patch so that I could drop
the corresponding instructions from dcaenc's README file in the future? It
adds a profile for on-the-fly DTS encoding, similar to the existing AC3
profile.
--
Alexander E. Patrakov
>From 22310a1c28385acc7ce883e020b9eb2e5b0813b7 Mon Sep 17 00:00:00 2001
From: "Alexander E. Patrakov" <patrakov@gmail.com>
Date: Sun, 12 Feb 2012 17:19:48 +0600
Subject: [PATCH] alsa: add DTS profile
This requires dcaenc from http://aepatrakov.narod.ru/dcaenc/
Sjoerd Simons [Fri, 17 Feb 2012 21:11:59 +0000 (22:11 +0100)]
build: Force order of library installation
libtools causing relinking on installation, to make this succeed
libpulsecommon needs to be installed before the other libraries and the
padsp libraries needs to be installed afterwards.
Unfortunately autotools doesn't consider dependencies when running the
install target, thus we have to enforce the ordering ourselves
Michael Biebl [Wed, 15 Feb 2012 20:54:28 +0000 (21:54 +0100)]
build: Move libpulsecommon into $pkglib
libpulsecommon is a private library only for use within pulseaudio, so
lets move it into a private directory
[ed: from discussion on IRC, while it looks redundant to have modules in
lib/pulse-$VER and private libraries in $pkglibdir, this is actually
desirable. For example, a multi-architecture libpulse would have a
$pkgdir per architecture (/usr/lib/<arch>/pulseaudio) whereas you'd
still want the server-specific modules in /usr/lib/pulse...) -- Arun]
Peter Meerwald [Thu, 12 Jan 2012 16:20:05 +0000 (17:20 +0100)]
core: svolume tests should generate realistic random volume data
assuming RAND_MAX is around 1<<31, rand() >> 1 generates large numbers as
random volume data; these likely causes saturated sample values after
applying the volume function -- not a good test
David Henningsson [Thu, 9 Feb 2012 14:59:20 +0000 (15:59 +0100)]
sample-util: Fix "Darth Vader" panning bug
For muted channels, we forgot to increment a pointer, so if one
channel was muted but not the other, sound became distorted in a
Darth Vader like way. To test the difference, start two input
streams and pan one of them hard left (or right).
And hey, if you didn't think it sounded like Darth Vader, it's
your imagination that's broken, not mine! ;-)
Arun Raghavan [Thu, 9 Feb 2012 11:20:31 +0000 (16:50 +0530)]
sink-input,source-output: Handle devices going away in unlink hooks
If a *_UNLINK_POST hook causes a sink-input/source-output's sink/source
to go away, the subsequent attempt to update the sink/source status will
cause an assert. We deal with this by checking the sink/source status
before trying to update it.
David Henningsson [Thu, 2 Feb 2012 11:46:54 +0000 (12:46 +0100)]
alsa-mixer: Take override-maps into account in subset elimination
The practical problem is that some users were left with only one
"LFE on Mono" port, as analog-output was considered a subset of
analog-output-lfe-on-mono. Which was not what they wanted.
David Henningsson [Wed, 11 Jan 2012 14:40:08 +0000 (15:40 +0100)]
alsa: Improve "well known descriptions" for ports
* If we don't have "Digital Speakers", we should say "Speakers"
instead of "Analog Speakers", and similar for other ports.
* Change "IEC958" to "S/PDIF" (more well known name)
* Add new ports and mappings for HDMI
* Change "Internal" to "Built-in" for the card name
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
David Henningsson [Thu, 12 Jan 2012 09:58:34 +0000 (10:58 +0100)]
alsa-mixer: Allow speaker port to control "Front Speaker"
"Front Speaker", "Surround Speaker" seems to be a common enough name
to make it into alsa-utils, so we should probably care about it as
well. In this case, there was a macbook pro whose speakers didn't work
without these controls.
BugLink: http://bugs.launchpad.net/bugs/551441 Reported-by: Jeroen T. Vermeulen <jtv@canonical.com> Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Tanu Kaskinen [Sun, 1 Jan 2012 17:44:27 +0000 (19:44 +0200)]
bluetooth: Remove the right match in the proximity module.
The original intention of this code was probably that if
adding filter1 succeeded but adding filter2 failed, then
filter1 should be removed so that either both or none of the
filters get added.
Tanu Kaskinen [Sun, 1 Jan 2012 17:44:26 +0000 (19:44 +0200)]
dbus: Give NULL as the error parameter to dbus_bus_remove_match().
We didn't do anything anyway in case of failures. When we
give NULL as the error, dbus_bus_remove_match() can act
asynchronously, so it becomes faster. Also, the bus daemon
can avoid sending any replies, which reduces the amount of
traffic.
Arun Raghavan [Tue, 17 Jan 2012 11:24:44 +0000 (16:54 +0530)]
alsa-mixer: Fix mixer path for AC3 profiles
The recent change to turn off the IEC958 element for analog paths
exposed a bug in AC3 profiles. These were inheriting the analog output
path instead of explicitly selecting the iec958 path.
Thanks to David Henningsson for pointing this out.
Arun Raghavan [Fri, 13 Jan 2012 04:10:04 +0000 (09:40 +0530)]
alsa-mixer: Turn off the IEC958 element for analog outputs
This is needed for the Creative Audigy CA0106 to work. Also makes sure
that the LED for optical out is shut down in analog modes on MacBooks
(these share a port for analog and digital output).
David Henningsson [Tue, 20 Dec 2011 08:16:02 +0000 (09:16 +0100)]
alsa-mixer: When selecting an input, turn off boosts of other inputs
Just like we turn off the "Front Mic" element when we select "Rear Mic",
we should also turn off the "Front Mic Boost" element. And the same for
the other inputs.
Reported-by: Len Owens <len@ovenwerks.net> Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Arun Raghavan [Tue, 3 Jan 2012 18:19:09 +0000 (23:49 +0530)]
daemon: Fix *-idle-time arguments
--exit-idle-time and --scache-idle-time were marked as having an
optional argument when the argument is actually mandatory. This causes a
crash when using this argument.
Thanks to Matthijs Kooijman (blathijs on IRC) for pointing this out.
Arun Raghavan [Mon, 19 Dec 2011 04:50:30 +0000 (10:20 +0530)]
build-sys: Fix po/ build with --disable-nls
We can't call IT_PROG_INTLTOOL because it requires intltool even with
--disable-nls, but it provides USE_NLS which is required for the po/
build. This might take a while to get fixed upstream, so working around
this in our build system for now.