Commit graph

669 commits

Author SHA1 Message Date
Siarhei Siamashka
82ef8346d8 sbc: ARMv6 optimized version of analysis filter for SBC encoder
The optimized filter gets enabled when the code is compiled
with -mcpu=/-march options set to target the processors which
support ARMv6 instructions. This code is also disabled when
NEON is used (which is a lot better alternative). For additional
safety ARM EABI is required and thumb mode should not be used.

Benchmarks from ARM11:

== 8 subbands ==

$ time ./sbcenc -b53 -s8 -j test.au > /dev/null

real    0m 35.65s
user    0m 34.17s
sys     0m 1.28s

$ time ./sbcenc.armv6 -b53 -s8 -j test.au > /dev/null

real    0m 17.29s
user    0m 15.47s
sys     0m 0.67s

== 4 subbands ==

$ time ./sbcenc -b53 -s4 -j test.au > /dev/null

real    0m 25.28s
user    0m 23.76s
sys     0m 1.32s

$ time ./sbcenc.armv6 -b53 -s4 -j test.au > /dev/null

real    0m 18.64s
user    0m 15.78s
sys     0m 2.22s
2011-03-14 15:45:27 -03:00
Luiz Augusto von Dentz
e4eb467010 build: move sbc related files to its own directory
This should make it easier to apply patches from BlueZ which also uses
sbc subdir for this files.
2011-03-14 14:52:52 -03:00
Colin Guthrie
bc43fe5c60 build-sys: No need to create folder for echo-cancel module.
The ORCC stage does this anyway (and this was buggy anyway as it had an extra
'src/' prefix so never worked properly when it was introduced in d6cdd80).

Thanks to Maarten Bosmans for pointing it out.
2011-03-14 16:31:21 +00:00
Maarten Bosmans
e2df844976 build: Use silent rules for generating files 2011-03-11 11:49:43 +00:00
Arun Raghavan
4cd90d9e32 volume: Add Orc-based optimised volume scaling
This adds volume scaling for 1- and 2-channel software volume scaling
using Orc. While testing the MMX and SSE backends on a Core2, I see an
~2x performance benefit over the hand-rolled MMX and SSE code. Since I
haven't been able to test on other architectures, the Orc code is only
used when MMX/SSE* is present. This can be changed in the future after
testing on AMD and ARM machines.
2011-03-05 14:38:28 +05:30
Arun Raghavan
aa78853d72 Remove remaining ramping/envelope references
(part of a patch series removing all ramping code)
2011-02-28 17:13:13 +05:30
Arun Raghavan
50e289d52a Revert "Add new subsystem for applying envelopes (such as volume ramps) to audio signals"
This reverts commit 95a98fe6f2.

Conflicts:

	src/Makefile.am
	src/pulsecore/envelope.c
	src/pulsecore/envelope.h
	src/tests/envelope-test.c

(part of a patch series removing all ramping code)
2011-02-28 17:13:13 +05:30
David Henningsson
3618268757 alsa-mixer: Add new paths for Internal Mic, Front Mic, Rear Mic and Dock Mic
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-02-25 15:54:59 +00:00
Colin Guthrie
a3dbdb0446 Merge remote-tracking branch 'mkbosmans/mingw32-build' 2011-02-25 09:24:07 +00:00
Henning Heinold
d90be03474 src/Makefile.am: add missing space to fix build using uClibc
Using uClibc

	AM_LIBADD = $(PTHREAD_LIBS) $(INTLLIBS)

is not empty because `$(INTLLIBS)` is set to `-lintl`. This uncovered a missing space in commit ef0cc745 which resulted in the following build error.

	[…]
		CC     libbluetooth_ipc_la-ipc.lo
	modules/bluetooth/ipc.c: In function 'bt_audio_service_open':
	modules/bluetooth/ipc.c:65:26: warning: dereferencing type-punned pointer might break strict-aliasing rules [-Wstrict-aliasing]
	modules/bluetooth/ipc.c: In function 'bt_audio_service_get_data_fd':
	modules/bluetooth/ipc.c:110:13: warning: cast increases required alignment of target type [-Wcast-align]
	modules/bluetooth/ipc.c:110:4: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
	make[3]: *** No rule to make target `-lintl', needed by `libbluetooth-ipc.la'.  Stop.
	make[3]: Leaving directory `/oe/build-minimal-uclibc/minimal-uclibc-dev/work/armv7a-oe-linux-uclibceabi/pulseaudio-0.9.22-r11.0+gitr0+051d82133f0ae6a57bf66fd200bc8e3591a7d5ca/git/src'
	make[2]: *** [all] Error 2
	make[2]: Leaving directory `/oe/build-minimal-uclibc/minimal-uclibc-dev/work/armv7a-oe-linux-uclibceabi/pulseaudio-0.9.22-r11.0+gitr0+051d82133f0ae6a57bf66fd200bc8e3591a7d5ca/git/src'
	make[1]: *** [all-recursive] Error 1
	make[1]: Leaving directory `/oe/build-minimal-uclibc/minimal-uclibc-dev/work/armv7a-oe-linux-uclibceabi/pulseaudio-0.9.22-r11.0+gitr0+051d82133f0ae6a57bf66fd200bc8e3591a7d5ca/git'
	make: *** [all] Error 2

This patch is taken from OpenEmbedded where it has been present since 2009 for PulseAudio 0.9.15 and greater [1].

[1] http://git.0pointer.de/?p=pulseaudio.git;a=commit;h=ef0cc74567b3bb98378c17f6a523bf18ba132ed7
[2] http://cgit.openembedded.org/cgit.cgi/openembedded/commit/?id=7c33f2e906a20e139d53b4f2d8fbc2773a4725b3

Signed-off-by: Henning Heinold <heinold@inf.fu-berlin.de>
Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
CC: Henning Heinold <heinold@inf.fu-berlin.de>
2011-02-22 09:59:42 +00:00
Maarten Bosmans
f2a9fd779e Give module-waveout a configure switch
- Also disable the scary DBus and udev warnings when building for win32
 - and only install some dbus/x11 specific files when appropriate
2011-02-17 12:02:31 +01:00
Maarten Bosmans
110b14ec21 module-waveout: Adapted to updated API
Waveout sink works again, Wavein source still needs some work.
2011-02-17 12:02:31 +01:00
Maarten Bosmans
d6d4336705 Implement some functions for win32
And disable building binaries for win32 that make no sense there
2011-02-17 12:02:30 +01:00
Maarten Bosmans
5815ec6f3e Add AM_LDFLAGS more consistently to all commands 2011-02-17 12:02:30 +01:00
Maarten Bosmans
2de2c735c9 Fix dependencies and include necessary headers 2011-02-17 11:58:22 +01:00
Maarten Bosmans
4f1d4044f8 Use <pulsecore/socket.h> instead of <sys/socket.h>
The check whether POSIX socket.h or WIN32 winsock2.h must be included can be
made centrally.  The downside is that some functionality of e.g. arpa/inet.h is
also implemented in winsock.h, so that some files that don't use socket
functions, but do use inet.h functions, must also include pulsecore/socket.h.
(as well as arpa/inet.h)
2011-02-17 11:58:21 +01:00
Arun Raghavan
9498440dc6 echo-cancel: Make Orc file names less silly
The naming was what it was because of the way orc.mak was originally
written. This has changed now.
2011-02-01 11:51:46 +05:30
Arun Raghavan
a9d824925d build: Simplify Orc-related make rules
This greatly simplifies the Orc-related make rules. The old system of
distributing generated files is gone, which means that anyone who wants
to build with Orc support enabled needs to have the orcc compiler
installed (presumably the orc 'devel' package in most distros).
2011-02-01 11:51:46 +05:30
Arun Raghavan
548e1026e3 build: Move orc.mak out of build/
That directory is commonly used by developers for out-of-tree builds, so
don't keep the Makefile in there.
2011-01-31 20:24:59 +05:30
Maarten Bosmans
d766b38e1b build: Remove unnecessary flags in AM_CFLAGS
The CFLAGS and LIBS of libsamplerate, libspeex and libsndfile are added to the pulse libraries depending on those libraries.

Also src/pulse/version.h is generated by configure, so it does not need to go in BUILT_SOURCES.

(Slightly tweaked by Colin Guthrie to fix a merge problem relating to BUILT_SOURCES)
2011-01-31 12:40:43 +00:00
Maarten Bosmans
974af43507 build: Don't include empty Makefile.am in subdirs 2011-01-31 12:40:43 +00:00
Maarten Bosmans
d6cdd80b0d build: Generate module symdefs in src/modules directory
This will make it possible to remove the empty Makefile.am files.
 - module-...-symdef.h files are all generated in src/modules, instead of in the subdir of the module.
 - The default inclusion of src/modules subdirs in AM_CFLAGS can be removed, where necessary (raop) the subdir is
   included in the specific CFLAGS.
 - The src/daemon and src/modules directories are always created on make, to facilitate out of tree builds.
 - AM silent rules are used for the generation of symdef files by m4.
 - For echo-cancel, keep the build dir include for now (and mkdir it) although limit it to just the echo-cancel
   module's CFLAGS (Colin Guthrie)
2011-01-31 12:40:43 +00:00
Maarten Bosmans
98bde37a51 build: Use MODULE_LIBADD in Makefile.am 2011-01-23 13:52:30 +00:00
David Henningsson
1e8b60e3a7 jack: Add module-jackdbus-detect 2010-12-05 16:06:09 +00:00
Colin Guthrie
3e28f60592 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.
2010-12-05 15:58:59 +00:00
Jyri Sarha
8b6b888012 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.
2010-11-28 16:57:15 +00:00
Jyri Sarha
da283c0031 build-sys: Link binaries linking libpulsecommon to libpulse too
Build fails if a symbol is removed from from libpulsecommon. Linking
explicitly to libpulse fixes the problem.
2010-11-28 16:57:11 +00:00
Jyri Sarha
4d7befc8a9 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.
2010-11-28 16:57:04 +00:00
Colin Guthrie
6828c594e3 version: Drop the micro version number
As per discussions with Lennart, we will be moving to a two-component version
number scheme when the next release is made from git master branch.

This means we will be dropping the micro version component (although
for compatibility, it will remain defined as 0 in version.h).

For more information, please see the announcement here:
 http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/7921
2010-11-28 15:56:20 +00:00
Daniel Mack
8aa332c6f5 alsa-mixer: add profile for Native Instruments Korecontroller 2010-10-16 12:23:46 +01:00
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
ab4223e9cf cpu: Add CPU information to pa_core
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.
2010-09-23 17:17:03 +05:30
Arun Raghavan
ffcf3c8a6c build: Fix make distcheck
src/utils/qpaeq was not being dist'ed
2010-09-23 17:17:03 +05:30
Arun Raghavan
395dae4d1a echo-cancel: Fix out-of-tree build 2010-09-20 14:08:16 +05:30
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
Rico Tzschichholz
49a90649e0 echo-cancel: Fix make distcheck
Add missing files to module_echo_cancel_la_SOURCES
Add Adrian license file to EXTRA_DIST
2010-09-10 12:11:51 +01:00
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
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
Wim Taymans
3dc5469c1f make echo-cancel module that exposes a new sink and source
Make a new echo-cancel module that exposes a new sink and source. All data sent
to the sink is matched against the data captured from the source and
echo-canceled using the speex echo canceler.
2010-08-23 16:55:23 +02:00
Pierre-Louis Bossart
fb405765d9 alsa: fix mixer profiles, add passthrough config
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
2010-07-13 23:33:45 +01:00
Daniel T Chen
2b2149dc9d build-sys: Add missing profile and alsa-mixer/paths to src/Makefile.am
Commits e8cb96c and 0c836aa created mixer paths but did not update
src/Makefile.am.  Building a snapshot containing these two commits
therefore results in the user being unable to adjust the volume or
(un)mute through PA.  Fix this by adding the two new mixer paths
files to src/Makefile.am.

Likewise, commit 66e1a2d created a profile for the M-Audio FastTrack
Pro USB but did not update src/Makefile.am.  Fix this by adding the
profile to src/Makefile.am.
2010-02-21 18:16:03 +01:00
Pierre-Louis Bossart
3e6293f422 virtual-sink,source: enable virtual-source and virtual-sink 2010-02-17 04:17:31 +01:00
Daniel Mack
2f86ba4fc2 osx: don't build the once-test binary on OS X
OS X lacks the barrier pthread APIs
2010-02-02 12:01:17 +01:00
Lennart Poettering
4b1679e06d Merge remote branch 'tanuk/fixes' 2010-01-13 21:33:11 +01:00
Lennart Poettering
ba255bfc42 tests: add pa_once_xxx() test 2010-01-13 17:40:31 +01:00
Tanu Kaskinen
f1d1447e10 daemon: Don't autospawn if a server address is explicitly configured. 2010-01-09 12:43:05 +02:00
Daniel Mack
0ccc7afcd8 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.
2009-12-16 16:11:39 +08:00
Daniel Mack
7732421a27 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.

Hardware volume control is not implemented yet.
2009-12-16 16:11:39 +08:00
Daniel Mack
a23f5cf33d 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.
2009-12-16 16:11:38 +08:00