Arun Raghavan [Tue, 11 Jan 2011 18:28:25 +0000 (23:58 +0530)]
client: Don't update smoother while corked
This prevents the smoother attached to the stream clock from being
updated while the stream is corked, which in turn ensures that once
corking is completed, pa_stream_get_time() always returns the same value
until the stream is uncorked - i.e., the clock does not advance when the
client believes that it will not.
The actual call to pa_smoother_put() happens on things like stream
suspend/unsuspend, which trigger timing updates. This changes the
smoother coefficients, which means that a call to pa_smoother_get() for
the same value of 'x' can return different values before and after a
timing update.
Colin Guthrie [Tue, 11 Jan 2011 11:26:48 +0000 (11:26 +0000)]
build-sys: Make --disable-dbus actually work.
Previously this argument passed to configure only worked if --disable-hal and
--disable-bluez was also passed which wasn't immediately obvious to the
untrained compiler.
This change simply makes --disable-dbus disable the other two as well
and errors out of specific, incompatible --enable/--disable flags
are provided.
The summary table is also adjusted and intended to try and show the
dependency relationship a little.
Colin Guthrie [Tue, 11 Jan 2011 10:28:02 +0000 (10:28 +0000)]
build-sys: Put in specific warnings when there is no udev or DBUS support
Users have often come to me when their build doesn't work and typically
this is when they do not have dev headers for DBUS and udev installed
when building. Put in some specific warnings about these optional,
but critical, elements.
This will likely display this message on platforms where they are not
available, so patches welcome to hide them in a semi-intelligent way.
Colin Guthrie [Tue, 11 Jan 2011 10:09:42 +0000 (10:09 +0000)]
console-kit: Console Kit support is dependent on DBUS and is thus optional.
Therefore, we must reflect this in the default.pa. Several users
have reported an error with consolekit when starting a self-built PA
due to the default config not working properly. This works around the
issue but we should include a warning on configure about the lack of
DBUS and udev support as this is a common mistake.
Michal Schmidt [Sat, 8 Jan 2011 15:25:15 +0000 (16:25 +0100)]
padsp: wrap __open_2 and __open64_2
These functions are used in OSS programs where the "flags" parameter for
open() is not a build-time constant and the build has _FORTIFY_SOURCE
enabled.
Cai Yuanqing [Thu, 23 Dec 2010 11:25:36 +0000 (19:25 +0800)]
loopback: Add new arguments to disable stream move
The arguments sink_dont_move and source_dont_move have been added to toggle
module automatic unloading when the sink or source were no longer
available, rather than just moving them to the next available
sink/source (via rescue streams).
Daniel T Chen [Sun, 19 Dec 2010 12:51:21 +0000 (07:51 -0500)]
Further clarify src- and speex- references in pulse-daemon.conf
Based on comments from Arun Raghavan, make clear that we're referring
to the libspeex API documentation for the speex- options. Also correct
the quality range (was incorrectly 0..9 but is 0..10 now) and clean up
the line length.
Daniel T Chen [Sat, 18 Dec 2010 04:55:21 +0000 (23:55 -0500)]
trivial: Mention speex as a resampler reference in pulse-daemon.conf
A Debian user seemed confused that the man page for pulse-daemon.conf
does not refer to the libspeex API Resampler for use in PulseAudio's
*-src. Fix it by explicitly mentioning speex.
Colin Guthrie [Sat, 4 Dec 2010 13:47:43 +0000 (13:47 +0000)]
build-sys: Include the .version file in the distribution tarball
As per the comments in git-version-gen, the .version file that is
typically generated automatically during build should be included
in the tarball, so generate it in the dist-hook.
This fixes a problem when running make distcheck which uses a read-only
source folder and thus cannot generate the $top_srcdir/.version as
part of it's build process (it uses a _build folder which is r/w)
and thus cannot be built.
Colin Guthrie [Fri, 3 Dec 2010 17:20:16 +0000 (17:20 +0000)]
build-sys: Replace dummy Makefiles with proper Makefile.am's
This is needed to better support out of tree builds (including
distcheck) and to ensure the necessary folders are created in the
build tree on configure and also works around an intl-tools bug
(https://bugs.launchpad.net/intltool/+bug/605826)
The Makefile.am's used are minimal (and in some cases completely
blank). At present they do not include anything interesting
with the majority of the real work still done by the monolitic
src/Makefile.am
It may make sense to start splitting out src/Makefile.am into
smaller chunks but this commit makes the minimum changes to address
the issues that result from using make distcheck and other out of
tree builds.
Note: This 'breaks' the ability to type make in e.g. the src/modules
folder and have all of PA rebuilt accordingly (this is because the
static Makefiles previously present just did a "make -C ..") which
was purportedly for use in emacs. But I'm sure there will be a better
and more robust way to configure emacs to do your builds properly if
this behaviour is still desirable.
Colin Guthrie [Sat, 4 Dec 2010 17:21:27 +0000 (17:21 +0000)]
build-sys: Add some smarts to version extraction from git tags.
When we are dealing with a tag against a commit with other tags applied,
then favour the first tag, not the last one. This allows us to tag a release
as e.g. v1.0, v1.1-dev and v2.0-dev and get a version of 1.0 rather than the
newer tags.
This also removes support for git versions that do not accept
the --match argument as we also now make use of the --contains arg
which was added at the same time (I think)
Additionally, the v variable is reset just incase it is already exported
in the shell for some reason.
Colin Guthrie [Sat, 4 Dec 2010 16:43:04 +0000 (16:43 +0000)]
doxygen: Fix version numbers for new features
Due to how our branching worked out, these new features will
debut in v1.0 and not v0.9.22 which has already been released
from the stable-queue branch
Arun Raghavan [Thu, 2 Dec 2010 11:04:03 +0000 (16:34 +0530)]
echo-cancel: Fix source may_move_to function
This is required to make sure that the source output between
module-echo-cancel and ALSA can't get plugged to the virtual source or
monitor of the virtual sink that we expose. This could be triggered by
changing the profile of the underlying ALSA device.
Arun Raghavan [Thu, 2 Dec 2010 11:00:59 +0000 (16:30 +0530)]
rescue-streams: Fix segfault in some conditions
There is a call to this function where 'skip' variable is NULL. Looks
like this code doesn't get hit very often, probably because a suitable
default sink can be found to move the stream to. However, if we can't
move to the default sink and skip is NULL, there will be a segfault.
Jyri Sarha [Fri, 26 Nov 2010 16:38:27 +0000 (18:38 +0200)]
build-sys: Link lirc libraries in right order
Wrong order of libraries causes libtool to link primarily from lirc
library location and not from $(libdir) location in install
phase. This is a problem if you have an older version pulseaudio libs
installed under same directory as liblirc and you are building a
newer version with some other directory prefix.
Jyri Sarha [Fri, 26 Nov 2010 16:38:25 +0000 (18:38 +0200)]
build-sys: Link binaries linking libpulse to libpulsecommon too
Build appeared to fails when a new function is added to
libpulsecommon. This is because build uses libpulsecommon that is
installed into system instead of the one that is being built. Explicit
linking to libpulsecommon fixes the problem.
Daniel T Chen [Thu, 25 Nov 2010 14:54:07 +0000 (09:54 -0500)]
Handle 'Internal Mic 1' as an 'Input Source'
BugLink: https://launchpad.net/bugs/680810
Some laptops have 'Internal Mic 1' exposed as an 'Input Source', e.g., Dell
XPSM 1530, so handle these, too.
Tanu Kaskinen [Thu, 18 Nov 2010 16:12:51 +0000 (18:12 +0200)]
alsa: Print dB values in addition to percentages in debug messages.
How about this? There are a couple of bugs in sink_write_volume_cb,
by the way. Another patch will be sent once this dB value printing
patch is accepted.
-- 8< --
Jyri Sarha [Mon, 30 Nov 2009 14:55:27 +0000 (16:55 +0200)]
core: New LIFO style flist implementation v2.2
The old free list implementation used objects in FIFO style. This is
bad because it tries keep all the objects ever used alive and in
memory. This minimizes the changes that an allocated object is already
in cache. When there is shortage of physical memory this may also
increase change that newly allocated object is swapped out. LIFO
(e.g. stack) style free list should help these issues. Like the old
one the new implementation is also lock free. This version (v2.1) of
the patch has a potential weakness fixed. The previous version (2.0)
did segfault when popping from empty flist, this does not.
Jyri Sarha [Fri, 15 Oct 2010 10:05:14 +0000 (13:05 +0300)]
core: Add infrastructure for synchronizing HW and SW volume changes
To make concurrent use of SW and HW volume glitchles their application
needs to be synchronized. For accurate synchronization the HW volume
needs to be applied in IO thread. This patch adds infrastructure to
delay the applying of HW volume to match with SW volume timing. To
avoid synchronization problems this patch moves many of the volume and
mute related functions from main thread to IO thread. All these
changes become active only if the sync volume flag for a sink has been
set. So, for this patch to have any effect it needs to be taken into
use by sink implementor.
Arun Raghavan [Sat, 9 Oct 2010 17:59:51 +0000 (23:29 +0530)]
volume: Decrease PA_VOLUME_MAX to be < 2^31
This decrease PA_VOLUME_MAX to be less than 2^31. We want to do this in
order to simplify signed arithmetic when applying software volume
scaling (since the volume can now always be safely treated as a signed
number).
Arun Raghavan [Sat, 9 Oct 2010 10:08:43 +0000 (15:38 +0530)]
volume: Clamp volume to PA_VOLUME_MAX
This ensures that we always clamp the volume to PA_VOLUME_MAX. While
this currently has no effect, it will be required for making sure we
don't exceed PA_VOLUME_MAX when its value changes in the future.
Arun Raghavan [Sat, 9 Oct 2010 17:00:20 +0000 (22:30 +0530)]
volume: Use a macro to check if a volume is valid
This adds a PA_VOLUME_IS_VALID() macro for checking if a given
pa_volume_t is valid. This makes changes to the volume ranges simpler
(just change PA_VOLUME_MAX, for example, without needing to modify any
other code).
David Henningsson [Fri, 8 Oct 2010 16:47:00 +0000 (18:47 +0200)]
SSE/MMX/ARM: Fix high frequency noise with unusual number of channels
In the assembly optimized versions of SSE, a noise could occur when the
number of channels were 3,5,6 or 7. For MMX and ARM, this could occur
when the number of channels were 3.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
David Fries [Sun, 3 Oct 2010 18:41:27 +0000 (13:41 -0500)]
doxygen: Add 'See also' linking to the overview page
A good many of the header files are broken into a function
reference page and an overview page. These changes add
a direct link from each function reference page to their
overview page if one exists.
David Fries [Tue, 12 Oct 2010 23:22:27 +0000 (18:22 -0500)]
doxygen: Fix the "all" comments regarding volume helper functions.
Mostly change "Set the volume of all channels" to
"Set the volume of the first n channels" as the first is incorrect,
it doesn't set all the channels and doesn't explain what n was for.
Colin Guthrie [Fri, 1 Oct 2010 00:26:43 +0000 (01:26 +0100)]
suspend: Do not assert when checking for device suspended status and a stream is not linked.
When looping through the streams on a given device checking to see if the
stream is 'active' there should be no assert if the stream is not linked, it
should simply be ignored.
This assert can be hit if a sink and a sink input are both created and setup
but the final put calls are left to the end as is done in module-ladspa-sink.
While the order of the calls in module-ladspa-sink could be altered, we should
deal gracefully with the way it is now and not complain about ending up
in this state.
A trigger case was trivial:
1. Load a ladspa-sink.
2. Play a stream and move it to it.
3. Unload the module, then reload it.
4. Due to module-stream-restore and module-suspend-on-idle, the hook callbacks
will ultimately hit this assert.
Thanks to Kim Therkelsen for highlighting this issue.
This forces us to get native-endian samples in the adrian module so that
we can rely on the existing endianness conversion mechanisms instead of
doing it in the module.
echo-cancel: Ensure correct handling of endianness
The adrian module was using home-brewed endianness conversion instead of
the appropriate mactos, and speex assumed a little-endian host. This
fixes both of these.
echo-cancel: Add SSE optimisation to the adrian module
Optimises the core inner-product function, which takes the most CPU. The
SSE-optimised bits of the adrian echo canceller only if the CPU that PA
is running on actually supports SSE.
This retains CPU information (processor type and supported features) in
pa_core, so that this information can be used by modules at init time to
figure out what optimisations may be used.