alsa-mixer: Add "Headphone Mic" support for 3-pin ASUS netbooks

Some ASUS netbooks, such as the 1015 CX, have only one 3.5 mm jack,
but it can be used either as a headphone or as a mic (but not both
simultaneously).

This patch adds support for the "Headphone Mic" path that is used
on these devices, so that we can use the jack as an external mic, and
doing so without muting the speaker.

BugLink: https://bugs.launchpad.net/bugs/1018262
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
alsa: Integrate UCM basic functions

UCM basic functions will provide another way to handle the alsa mixer
and controls. That means alsa card module will make use of alsa ucm
configurations provided by various audio systems instead of mixer and
paths configurations provided by PA. PA profiles come from UCM verb, PA
sinks/sources and ports come from UCM devices.

In case the proper UCM configurations are found, ucm branches are
activated, or we will still fall through to the original way.

Signed-off-by: Feng Wei <wei.feng@freescale.com>
alsa: Add UCM jack detection

Jack in UCM is decided by UCM device name, although in fact
not all UCM devices have "jacks". Because port is also mapped
to UCM device, we can always find target port when some jack
event happens.

Signed-off-by: Feng Wei <wei.feng@freescale.com>
alsa: Allow channel count probe on open by mapping

This allows opening a PCM given a mapping to work even if we don't have
a channel count for the device up-front.
alsa: Add a proplist to mappings

The proplist isn't used by the conventional alsa-mixer code path, but
can be used by UCM to transfer properties from UCM data to the
sinks/sources corresponding to a mapping. These properties could be used
later in policy, etc.

The specific use for which I'm writing this now is for UCM modifiers
that have their own PlaybackPCM/CapturePCM field. These will be
translated to a separate sink/source corresponding to the modifier by
adding an additional mapping per sink/source. These mappings' proplist
will be populated with the name of the modifier and corresponding
"device.intended_role" property. The latter will be used in the usual
routing-by-role way, and the former will be used during sink/source
activation and deactivation to know what UCM modifier is to be enabled
or disabled.
alsa: Add separate sinks/sources for UCM modifiers if needed

Modifiers may have their own PlaybackPCM/CapturePCM and for these, we
create separate sinks/sources. These are marked with the
device.intended_roles property to let role-based routing take care if
streams are tagged appropriately.
pacmd: Display inputs and outputs PASSTHROUGH flag
build: Fix static linking

fixes bug #52038:

gcc -static  x.c `PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config --static
--libs libpulse-simple`

/usr/bin/ld: error: cannot find -lpulsecommon-2.98
pulse/simple.c:373: error: undefined reference to 'pa_log_level_meta'
pulse/simple.c:374: error: undefined reference to 'pa_log_level_meta'

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
bluetooth: add a parenthesis around pa_streq()

I know that pa_streq() is defined with an extra parenthesis, but everytime I
look at it, it makes me nervous. :D

So it's better to add the parenthesis here.
man: document option `set-log-target`
core: add more verbose error info

I'm debugging an issue, and find that it's more useful for users to know which
directory hasn't been created instead of just knowing error code.
core: Set volumes const in pa_do_volume_func_t

volumes do not change, the samples get scaled

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
i18n: Remove module-hal-detect reference in POTFILES
echo-cancel: Print what AEC engine is being used

Useful for debugging
alsa-mixer: Actually install analog-input-headphone-mic.conf

Without this file, pulseaudio aborts with:

  E: [pulseaudio] alsa-mixer.c: Assertion 'eb = p2->elements' failed at
  modules/alsa/alsa-mixer.c:3179, function path_set_condense(). Aborting.
build: Avoid libstdc++ dep for module-echo-cancel if possible

This moves out the webrtc bits into a small helper library to shield the
rest of module-echo-cancel from being linked with a C++ linker. This is
required because automake will _always_ link module-echo-cancel in C++
mode if any of its deps (even conditional ones) are in C++.
alsa: Catch role matched streams to enable/disable modifier

In UCM basic functions, we only assign intended roles from modifier
to sink/source, but we don't have a chance to set the ucm modifiers.
Here we amend the functions so that when roled stream starts or
stops, we have the following results:
1. stream will be routed to sink/source specified in modifier by
   module-intended-roles
2. After that, modifier will be enabled or disabled.
3. when multiple streams with matched roles of modifier start, only
   the first one will enable the modifier, and when they end, the
   last one will disable the modifier.

Signed-off-by: Feng Wei <wei.feng@freescale.com>
Signed-off-by: Arun Raghavan <arun.raghavan@collabora.co.uk>
i18n: module-coreaudio-device now has some translatable strings
build: Fix distcheck failure on libwebrtc-util

Without -avoid-version, libtool creates a libwebrtc-util.so.0 and
libwebrtc-util.so.0.0.0 which are not cleaned up by make uninstall,
which in turn causes make distcheck to fail.
bluetooth: Don't use the old socket IPC mechanism with BlueZ

This simplifies the code a lot, in favour of the D-Bus Media interface
in BlueZ. The old socket-based IPC mechanism has been deprecated and is
about to be removed soon.