Commit graph

1756 commits

Author SHA1 Message Date
Arun Raghavan
8df8cfa0c2 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.
2010-12-02 16:34:03 +05:30
Arun Raghavan
596e1792e0 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.
2010-12-02 16:30:59 +05:30
Juho Hämäläinen
027786c6de alsa-sink: take base volume into account when applying hw volume
Currently if sink base volume differs from 0dB and sync-volume is used,
wrong volume values are written to hw. This patch fixes that.

Signed-off-by: Juho Hämäläinen <ext-juho.hamalainen@nokia.com>
2010-12-01 10:42:17 +00:00
Daniel Mack
948950a3fd module-bonjour-publish: don't include avahi headers
The avahi layer won't work on OSX and is unnecessary, too.
2010-11-25 22:02:15 +00:00
Lennart Poettering
af18bc8038 alsa-source: fix enum types 2010-11-25 16:38:32 +00:00
Lennart Poettering
c72d878913 alsa-mixer: make a few strings translatable
Original patch contributed by 'kelemeng'

http://pulseaudio.org/ticket/843
2010-11-25 16:38:18 +00:00
Daniel T Chen
148a90e482 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.

Signed-off-by: Daniel T Chen <crimsun@ubuntu.com>
2010-11-25 15:14:54 +00:00
David Henningsson
c2c11603a1 Add "Rear Mic" to alsa mixer paths.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2010-11-25 15:14:48 +00:00
Tanu Kaskinen
f1e43cd9b8 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< --
2010-11-19 16:21:21 +00:00
Arun Raghavan
1cbacead13 alsa: Sprinkle some PA_UNLIKELYs around error checks
This just adds a few PA_UNLIKELY macros around some error paths in
frequently called code.
2010-11-18 08:51:06 +00:00
Colin Guthrie
71cb35691c combine: Only check if the sink is h/w etc. in automatic mode 2010-11-17 23:56:56 +00:00
Stephen Moehle
ff7acb4d05 upnp: Implement the MediaServer2 D-Bus interface
This allows PulseAudio to work with versions of Rygel 0.7.1 and higher
which only support MediaServer2:
 http://live.gnome.org/Rygel/MediaServer2Spec
2010-11-16 23:03:11 +00:00
Antti-Ville Jansson
b27be51f78 combine: Handle reappearing slave sinks in non-automatic mode.
Earlier, if slave sinks were unlinked in non-automatic mode, their
re-appearance was disregarded. Now they are added back to the list of outputs.

Signed-off-by: Antti-Ville Jansson <antti-ville.jansson@digia.com>
Reviewed-by: Tanu Kaskinen <tanu.kaskinen@digia.com>
2010-11-16 21:17:38 +00:00
Pierre-Louis Bossart
13cce22268 alsa: remove redundant call to snd_pcm_nonblock()
The PCM handle is already opened with the SND_PCM_NONBLOCK flag.
This additional call is useless.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
2010-11-16 21:05:22 +00:00
Luiz Augusto von Dentz
e8a7d1932f bluetooth: make use of dbus-util helper functions 2010-10-20 14:30:05 +03:00
Colin Guthrie
44e4709871 dbus: Fix log message after volume changes. 2010-10-19 09:53:45 +01:00
Arun Raghavan
9b8f20f617 volume: Fix incorrect usage of PA_VOLUME_IS_VALID
The commit that introduced this macro was incorrect in some places. This
patch fixes these. Thanks to Pierre-Louis Bossart for pointing this out.
2010-10-19 09:52:19 +01:00
Daniel Mack
8aa332c6f5 alsa-mixer: add profile for Native Instruments Korecontroller 2010-10-16 12:23:46 +01:00
Jyri Sarha
3e53e3bba3 daemon-conf: Add sync volume parameters to daemon-conf
Signed-off-by: Jyri Sarha <jyri.sarha@nokia.com>
Reviewed-by: Tanu Kaskinen <tanu.kaskinen@digia.com>
Reviewd-by: Colin Guthrie <cguthrie@mandriva.org>
2010-10-16 11:53:39 +01:00
Jyri Sarha
43b3f39a2f udev-detect: Add sync_volume parameter
Signed-off-by: Jyri Sarha <jyri.sarha@nokia.com>
Reviewed-by: Tanu Kaskinen <tanu.kaskinen@digia.com>
Reviewd-by: Colin Guthrie <cguthrie@mandriva.org>
2010-10-16 11:53:39 +01:00
Jyri Sarha
1bea955829 alsa: Take syncronized HW volume infra into use for alsa-sink
Signed-off-by: Jyri Sarha <jyri.sarha@nokia.com>
Reviewed-by: Tanu Kaskinen <tanu.kaskinen@digia.com>
Reviewd-by: Colin Guthrie <cguthrie@mandriva.org>
2010-10-16 11:53:39 +01:00
Arun Raghavan
49101fc540 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.
2010-10-15 01:10:00 +05:30
Arun Raghavan
1d2ef7923d 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).
2010-10-15 01:10:00 +05:30
Luiz Augusto von Dentz
8f3ef04b43 bluetooth: Add support for Media API
Make use of D-Bus to transfer file descriptors.
2010-10-07 17:22:41 +03:00
Colin Guthrie
5e442f4e0e augment-properties: Fix debug messages and statement bracketing. 2010-10-06 09:17:01 +01:00
Colin Guthrie
b02abcb613 device-manager: Ensure that sinks/sources populate the device manager lists in order of their priority.
Currently the order of the sinks is simply that of their position in the idxset which is certainly
not what the user would want.
2010-09-29 22:08:37 +01:00
Colin Guthrie
098e9ea1fb augment-properties: Search for .desktop files in subfolders too. 2010-09-29 22:06:01 +01:00
Arun Raghavan
b424008160 echo-cancel: Use S16NE for adrian module
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.
2010-09-27 16:57:01 +05:30
Arun Raghavan
6897217d26 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.
2010-09-23 17:46:00 +05:30
Arun Raghavan
83d3c8f22b echo-cancel: orc-ify some bits for optimisation
This uses Orc to optimise an inner loop in the core NLMS function of the
Adrian echo canceller.
2010-09-23 17:17:03 +05:30
Arun Raghavan
963250abb9 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.
2010-09-23 17:17:03 +05:30
Colin Guthrie
f73e9c19f7 x11: Use the default screen for X11 properties.
This commit restores the functionality originally included in 65e807
by Leszek Koltunski.
2010-09-18 12:05:38 +01:00
Colin Guthrie
38778117f8 x11: Partially convert to XCB.
This commit mostly converts the X11 handling to XCB. There are still
some uses of XLib to deal with the X11 session handling modules, however all
client-side code should now be free of XLib and thus this should fix Bug #799

Note that this removes the screen-based changes by Leszek Koltunski
in 65e80, however this will be restored in due course.
2010-09-18 12:04:09 +01:00
Colin Guthrie
2ecd764662 alsa: Only set the 'first' flag to false when we actually call snd_pcm_start()
Previously, if work_done was false, we could conceivably not call snd_pcm_start().
2010-09-14 19:44:57 +01:00
Colin Guthrie
f97faae006 alsa: Set the rewind safeguard proportionally to sample spec
Currently when rewinding alsa, a fixed value of 256 bytes is used,
which represents 1.33ms @ 48kHz (2ch, 16bit). This is typically fine
and due to DMA constraints we would not want to rewind less than this.

However with more demanding sample specs, (e.g. 8ch 192kHz 32bit)
256 bytes is likely not sufficient, so calculate what 1.33ms would
be and use which ever value is bigger.

Discussed with David Henningsson and Pierre-Louis Bossart here:
 http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/7286
2010-09-14 08:32:51 +01:00
Daniel Mack
d30d22dfb8 alsa-mixer: add profile for Traktor Kontrol S4
This new audio interface from Native Instruments has 2 stereo channels
for both input and output direction. This patch adds mappings for them.
2010-09-12 13:15:36 +01:00
Wim Taymans
26dfacf20b echo-cancel: pause timer when echo canceling is off
While the sink or source is in the suspended state, disable the timer
callback because we are not doing any echo canceling then.
2010-09-09 17:03:46 +01:00
Wim Taymans
7b873785ca echo-cancel: improve accuracy
Make the echo canceler drift up to 1ms now that things are more accurate.
Add 10 samples of headroom to allow for timing inaccuracies.
2010-09-09 17:03:45 +01:00
Wim Taymans
c47d689613 alsa: make defines for smoother configuration
Make new defines for the smoother window size and adjust time constants instead
of reusing some unrelated constant.

Increase the smoother window size even more because the bigger it is, the
better. Since we have a 200ms max update interval and the max smoother history
is 64 entries, 10seconds is a good default.

Decrease the smoother adjust time to 1 second. The previous value of 4 seconds
was too much to adapt quickly after a resume.
2010-09-09 17:03:45 +01:00
Wim Taymans
771fb0b59b echo-cancel: rework alignment code
Rework the code to align capture and playback samples so that we can keep more
accurate timings.
2010-09-09 17:03:45 +01:00
Wim Taymans
f29acfd0e0 alsa: work around slightly broken _delay implementations
Use snd_pcm_avail_delay() in pa_alsa_safe_delay() so that we can check the delay
value against the avail value and patch it up when it looks invalid. Only do
this for capture.
2010-09-09 17:03:34 +01:00
Wim Taymans
e382589d84 alsa-source: refactor smoother and device start
Move the code to start the capture and the smoother closer together to improve
smoother accuracy.
Rework things to look more like the alsa sink where the device is started in
only one place.
2010-09-07 12:22:51 +02:00
Arun Raghavan
c36ab6896f echo-cancel: Mark immutable parameters as const in vfunc
Marks the recording and playback streams as const in the
pa_echo_canceller->run method for clarity.
2010-09-07 15:12:12 +05:30
Arun Raghavan
948a3d042c echo-cancel: Make blocksize a module-wide parameter
Since all algorithms will need to specify a block size (the amount of
data to be processed together), we make this a common parameter and have
the implementation set it at initialisation time.
2010-09-07 15:12:12 +05:30
Arun Raghavan
33a3bc34c8 echo-cancel: Allow selection of AEC method using modargs
This adds an "aec_method" module argument to allow us to select the AEC
implementation to use.
2010-09-07 15:12:12 +05:30
Arun Raghavan
526277c97c echo-cancel: Add alternative echo-cancellation implementation
This adds Andre Adrian's AEC implementation from his intercom project
(http://andreadrian.de/intercom/) as an alternative to the speex echo
cancellation routines. Since the implementation was in C++ and not in
the form of a library, I have converted the code to C and made a local
copy of the implementation.

The implementation actually works on floating point data, so we can
tweak it to work with both integer and floating point samples (currently
we just use S16LE).
2010-09-07 15:12:12 +05:30
Arun Raghavan
126e1336b2 echo-cancel: Let AEC module determine source/sink spec
Since the source and sink specification will need to be determined by
the AEC algorithm (can it handle multi-channel audio, does it work with
a fixed sample rate, etc.), we negotiate these using inout parameters at
initialisation time.

There is opportunity to make the sink-handling more elegant. Since the
sink data isn't used for playback (just processing), we could pass
through the data as-is and resample to the required spec before using in
the cancellation algorithm. This isn't too important immediately, but
would be nice to have.
2010-09-07 15:12:12 +05:30
Arun Raghavan
21001f49a4 echo-cancel: Pass arguments to the specific canceller module
This allows us to tweak module parameters for whichever AEC module is
chosen.
2010-09-07 15:12:12 +05:30
Arun Raghavan
e7177680d1 echo-cancel: Split out speex code from the core module
This splits out the echo-cancelling core from the PA-specific bits to
allow us to plug in other echo-cancellation engines.
2010-09-07 15:12:12 +05:30
Arun Raghavan
10937e4054 echo-cancel: Move the module into it's own directory
This will make splitting out the canceller parts cleaner.
2010-09-07 15:12:12 +05:30