huan zheng [Tue, 5 Jan 2010 23:21:07 +0000 (00:21 +0100)]
core: volume ramping fix
Hi,
I found that volume ramping is inside PA now.
there's a minor fix here, it is a bug i found after the patch is submitted:
line 1781 of sink-input.c :
if ((i->thread_info.ramp_info.envelope_dying - nbytes) <= 0) {
need to be changed to
if ((i->thread_info.ramp_info.envelope_dying - (ssize_t) nbytes) <= 0) {
otherwise this argument will never be negative since nbytes is of type
size_t which is unsigned.
Please change it when you have time, sorry if bring any inconvenience. :)
Mads Kiilerich [Fri, 11 Dec 2009 15:20:31 +0000 (16:20 +0100)]
headers: Some trivial fixes for some documentation typos
Note also the willneed/will_need inconsistency. I guess it could be nice to ASAP
choose one of them and introduce a backward compatibility hack for the other.
The issues was mostly found with:
for a in $(grep -r '^[ /]\*.*()' $(
find -name '*.[ch]') |
sed 's,^.* \([^ ]*\)().*$,\1,g' |
sort |
uniq |
grep ^pa_)
do
grep -rq "^.[^*].*\<$a(" $(find * -name '*.h') || echo $a
done
Pierre-Louis Bossart [Wed, 23 Dec 2009 19:57:03 +0000 (13:57 -0600)]
Subject: rtpoll: better support for DEBUG_TIMING logs
On all the platforms I tested, PulseAudio is frequently awaken and
doesn't sleep for the duration specified for the poll timeout.
Sometimes wake-ups occur within milliseconds of the poll call for no
good reason; this seems to be related to ALSA issues (see my posts on
the ALSA mailing list on null poll events).
This patch enables a better log of requested sleep times v. actual
sleep times. Enable DEBUG_TIMING to see actual messages. Please let me
know if you see odd behaviors like the one below
- Pierre
E: rtpoll.c: rtpoll_run
E: rtpoll.c: poll timeout: 188 ms
E: rtpoll.c: Process time 0 ms; sleep time 48 ms
E: rtpoll.c: rtpoll_run
E: rtpoll.c: rtpoll finish
E: rtpoll.c: rtpoll_run
E: rtpoll.c: poll timeout: 139 ms
E: rtpoll.c: Process time 0 ms; sleep time 49 ms
E: rtpoll.c: rtpoll_run
E: rtpoll.c: rtpoll finish
E: rtpoll.c: rtpoll_run
E: rtpoll.c: poll timeout: 189 ms
E: rtpoll.c: Process time 0 ms; sleep time 0 ms
E: rtpoll.c: rtpoll_run
E: rtpoll.c: rtpoll finish
E: rtpoll.c: rtpoll_run
E: rtpoll.c: poll timeout: 189 ms
E: rtpoll.c: Process time 0 ms; sleep time 49 ms
Daniel T Chen [Tue, 5 Jan 2010 02:44:37 +0000 (21:44 -0500)]
threaded-mainloop: Properly initialise m->n_waiting_for_accept to prevent deadlock
Compiler optimisations have been seen to initialise
m->n_waiting_for_accept to a positive non-zero value, so the while() in
pa_threaded_mainloop_signal() never proceeds. Fix this by properly
initializing m->n_waiting_for_accept in pa_threaded_mainloop_new().
Daniel T Chen [Thu, 17 Dec 2009 03:53:18 +0000 (22:53 -0500)]
Fix the following warnings (which now cause buildd failures in Ubuntu 10.04):
pulsecore/cpu-arm.c: In function 'get_cpuinfo':
pulsecore/cpu-arm.c:70: warning: implicit declaration of function 'pa_read' [-Wimplicit-function-declaration]
pulsecore/cpu-arm.c:72: warning: implicit declaration of function 'pa_close' [-Wimplicit-function-declaration]
pulsecore/cpu-arm.c: In function 'pa_cpu_init_arm':
pulsecore/cpu-arm.c:110: warning: implicit declaration of function 'pa_split_spaces' [-Wimplicit-function-declaration]
pulsecore/cpu-arm.c:110: warning: assignment makes pointer from integer without a cast
Function `pa_split_spaces' implicitly converted to pointer at pulsecore/cpu-arm.c:110
Daniel Mack [Thu, 10 Dec 2009 02:32:57 +0000 (10:32 +0800)]
osx: add native zeroconf implementation via Bonjour
Avahi and dbus is too heavy for OSX just for the sake of publishing our
services via mDNS/Zeroconf. Apple has its own Zeroconf implementation
called Bonjour, and this patch adds a module that implements service
announcement with that API.
All data gathering is copied from module-zeroconf-publish.c, but
unfortunately the code there is too specifically made for avahi, so I
couldn't factor it out to reuse it.
Daniel Mack [Tue, 22 Sep 2009 03:27:57 +0000 (11:27 +0800)]
CoreAudio: add audio device module
This patch adds support for CoreAudio driven devices under Mac OS X. It
is typically instanciated by the CoreAudio device detection module and
handles all available streams on a specific device.
Sinks are created according to the reported stream configuration.
Float32 is used as default audio sample format at it is the only format
CoreAudio speaks natively.
Daniel Mack [Tue, 22 Sep 2009 03:10:26 +0000 (11:10 +0800)]
CoreAudio: add device detection module
This adds a new module for CoreAudio device detection. It registers a
callback to detect hotplugged devices and creates/destroys modules named
'module-coreaudio-device'. Devices are identified via a system-wide
unique AudioDeviceID.
Daniel Mack [Sun, 22 Nov 2009 23:12:18 +0000 (00:12 +0100)]
poll() is totally broken on Mac OS X
Even on 10.5.8, poll() does not do the right thing. Haven't checked on
newer versions. Hence, wrap all occurences of poll() to pa_poll and
emulate that call with select() on OSX. This is totally embarassing.
Arun Raghavan [Sun, 6 Dec 2009 07:01:25 +0000 (12:31 +0530)]
Add a configure option to change 'udevrulesdir'
This patch serves two purposes:
1) Allows something other than the de-facto standard udev rules dir or
/lib/udev/rules.d to be used (the udev build system allows you to
customise this)
2) Allows a prefixed, non-root install (right now, the /lib/... path
is hard-coded into the build system
Arun Raghavan [Sun, 6 Dec 2009 06:50:53 +0000 (12:20 +0530)]
Mark shared variables as volatile
'n_waiting' and 'n_waiting_for_accept' may be accessed from mulitple
threads, and thus need to be marked as volatile to suppres certain
compiler optimisations. All uses are protected by a mutex, so we don't
need to worry about cache issues (added documentation for this as well).
Tanu Kaskinen [Thu, 3 Dec 2009 11:22:05 +0000 (13:22 +0200)]
libpulse: Store pa_stream pointers to hashmaps instead of dynarrays.
Since the stream identifiers (channels) are monotonically growing integer, it
isn't a good idea to use them as index to a dynamic array, because the array
will grow all the time. This is not a problem with client connections that
don't create many streams, but, for example, long-running clients that use
libcanberra for playing event sounds, this means that the client connection
effectively leaks memory.
Diego Elio 'Flameeyes' Pettenò [Fri, 20 Nov 2009 23:53:00 +0000 (00:53 +0100)]
Simplify Makefile.am handling of ALSA-related files.
Instead of declaring extra variables for the ALSA profiles and PATHS, and
using EXTRA_DIST for the udev rule, use the dist_ prefix when declaring
them for conditional installation.
This relies on the fact that automake *is* smart enough to know that there
exist *no* conditional dist, and will always distribute all of them.
Diego Elio 'Flameeyes' Pettenò [Fri, 20 Nov 2009 23:17:33 +0000 (00:17 +0100)]
Simplify handling of NetBSD atomic ops discovery.
Instead of having a parameter to enable/disable them (which was also
ignored by the source code side), simply identify NetBSD 5 (when the atomic
ops were implemented the first time) in a $host switch and ignore checking
for libatomic_ops.
Diego Elio 'Flameeyes' Pettenò [Fri, 20 Nov 2009 20:37:16 +0000 (21:37 +0100)]
Check for stow using AC_CHECK_PROG rather than type -p.
The type -p check is not compatible with POSIX shells, and indeed fails
when used with the FreeBSD 8 default shell. Instead the AC_CHECK_PROG macro
is written properly to look for the command.
Diego Elio 'Flameeyes' Pettenò [Fri, 20 Nov 2009 20:25:33 +0000 (21:25 +0100)]
Include sys/filio.h if present; this makes use of FIONREAD on Solaris.
FIONREAD on OpenSolaris is declared in sys/filio.h. The RTP modules already
rely on the presence of FIONREAD, and check for the header, so this brings
the pipe source and sink modules on par with them.
Diego Elio 'Flameeyes' Pettenò [Fri, 20 Nov 2009 20:08:05 +0000 (21:08 +0100)]
Move the platform-specific defines after the compiler has been found.
Without this change, on OpenSolaris, it's possible that the compiler will
be reported, by default, as failing to produce executables, since
_XOPEN_SOURCE=600 requires a C99 compiler to compile even the simples of
the programs.
Lennart Poettering [Fri, 20 Nov 2009 18:55:47 +0000 (19:55 +0100)]
pulse: ask for timing updates both *before* and *after* triggering a stream state change so that in the STARTED/UNDERFLOW callbacks we accurate transport latency information
volume_limit sets maximum volume that can be set from the module
default is PA_VOLUME_NORM*3/2 (150%)
volume_step sets step in volume changing
default is PA_VOLUME_NORM/20
values are of raw pa_volume_t type
Vladimir Kokarev [Sat, 19 Sep 2009 15:43:24 +0000 (19:43 +0400)]
volume: add pa_cvolume_inc_clamp function
added function to increase volume not exceeding specified limit
simply changed PA_VOLUME_MAX to 'limit' in pa_cvolume_inc
pa_cvolume_inc now calls pa_cvolume_inc_clamp with PA_VOLUME_MAX limit
Lennart Poettering [Thu, 5 Nov 2009 02:23:08 +0000 (03:23 +0100)]
alsa: disable timer-based scheduling inside a VM
In virtual machines sound card clocks and OS scheduling tend to become
unreliable, adding various 'uneven' latencies. The adaptive algorithm
that handles drop-outs does not handle it this well: in contrast to
drop-outs on real machines that are evenly distributed, small and can
easily be encountered via the adpative algorithms, drop-outs in VMs tend
to happen abruptly, and massively, which is not easy to counter.
This patch simply disables timer based scheduling in VMs reverting to
classic IO based scheduling. This should help make PA perform better in
VMs.