alsa-mixer: Don't let "Mic Jack Mode" alone create a "Line In" path

The IDT/Sigmatel codec driver often creates a "Mic Jack Mode" for
every mic jack, so it can change functionality between Mic and Line In.

However, as the "Mic Jack" is the standard naming, our current solution
does not make the Line In port unavailable when nothing is plugged in.

This patch makes the "Line In" port not to be created just because there
is a "Mic Jack Mode" that could be set to "Line". This makes the behaviour
consistent with e g "Dock Mic Jack Mode", "Front Mic Jack Mode" etc, where
we don't create a "Dock Line" or "Dock Mic" port either.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
tests: Run sconv tests with multiple alignments

This allows us to test the sconv code with the incoming samples at
various byte alignments. The test is also now split into correctness and
performance checks.
utils: Adding a function to get volume from string

The allowed volume formats are dB, % or integer.
For example: 10% or 10db or 10.
card: Support adding profiles dynamically

Some cards might need to add profiles during their lifetime, that is,
after the card has been created.
card: Support adding ports dynamically

Card profiles -specially the ones registered with pa_card_add_profile()-
might need to create new ports during the lifetime of the card.
bluetooth: Add hook to announce late UUIDs

UUIDs might be announced at any time, so a hook is needed to notify any
interested module. In practice, the UUIDs are quite stable with the
exception of the pairing procedure, where the UUIDs are reported by
BlueZ as soon as they are discovered.
card: Store a pa_card pointer in pa_card_profile.
build-sys: Add volume code to libpulsecommon

Commit dd31d652a ("utils: Adding a function to get volume from string")
uses pa_sw_volume_from_dB(), which is part of libpulse, in libpulsecore.
This breaks as-needed builds. We fix this by also building the volume
code in libpulsecommon.
core: Add ARM NEON optimized sample conversion code

final:
* includes some minor style fixes and build-time changes to allow
  building a single binary for neon and non-neon systems
v4:
* fix for sample length < 4
v3:
* convert from intrinsics to inline assembly
v2:
* load and store data with vld1/vld1q and vst1/vst1q, resp., to work
  around alignment issues of compiler-generated vldmia instruction
* remove redundant check for NEON flags

Ubuntu/Linaro gcc 4.6.3
arm-linux-gnueabi-gcc -O2 -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon

runtime on beagle-xm:

D: [pulseaudio] sconv_neon.c: checking NEON sconv_s16le_from_float
I: [pulseaudio] sconv_neon.c: NEON: 3754 usec.
I: [pulseaudio] sconv_neon.c: ref: 58594 usec.
D: [pulseaudio] sconv_neon.c: checking NEON sconv_s16le_to_float
I: [pulseaudio] sconv_neon.c: NEON: 1831 usec.
I: [pulseaudio] sconv_neon.c: ref: 10528 usec.
I: [pulseaudio] sconv_neon.c: Initialising ARM NEON optimized conversions.

conversion may be off by one for some samples due to rounding issues
tests: Fix test description in cpu-test

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
tests: Implement test code for ARM NEON sconv s16_to_float

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
sconv: Fix NEON sconv rounding code

Rounding with 0.5 causes us to always round up for any value of the form
x.5. IEEE754 specifies round-to-nearest-even as the behaviour in this
case. This might not always be possible with NEON code, but this change
gets us much closer to it.
tests: Allow off-by-one error in sconv test

With some optimised sconv implementations (read NEON), rounding
inaccuracy might lead to a difference of 1 with the reference
implementation. The inaccuracy is worth the performance gain.

Also increases floating-point accuracy while printing errors to make
errors easier to analyse.
tests: Increase sconv cpu-test timeout

This takes longer on ARM CPUs, especially older ones.
tests: Print average outer-loop iteration time in cpu-test
tests: Minor cpu-test fixes for non-NEON builds

The s16->float test is only run on ARM with NEOn at the moment, so we
don't define that code in other cases.
build: Add a2dp-codecs.h to libbluetooth-util sources.
core: Fix warning on non-win32 builds
tests: Run svolume test for various sample alignments

Allows us to make sure that svolume works independently of sample
alignment, and that performance doesn't degrade based on this.
tests: Make cpu-test less verbose

Drops the correctness debug output since we want to run this several
times, and the output becomes much more verbose than required.