profile/ivi/pulseaudio.git
11 years agorelease: updated changelog. 2.0 2.0-panda accepted/2.0/20130415.172231 accepted/2.0/20130415.172411 accepted/2.0alpha/20130419.171440 submit/2.0-panda/20131011.015652 submit/2.0/20130415.125717 submit/2.0/20130416.193717 submit/2.0alpha/20130415.125717
Jaska Uimonen [Mon, 15 Apr 2013 12:58:25 +0000 (15:58 +0300)]
release: updated changelog.

11 years agorelease: added packaging for gerrit.
Jaska Uimonen [Mon, 15 Apr 2013 12:57:19 +0000 (15:57 +0300)]
release: added packaging for gerrit.

11 years agoscripts: added OBS exporter script.
Jaska Uimonen [Tue, 5 Jun 2012 14:50:47 +0000 (17:50 +0300)]
scripts: added OBS exporter script.

11 years agoconfiguration: IVI additions to default config files.
Jaska Uimonen [Tue, 5 Jun 2012 14:22:35 +0000 (17:22 +0300)]
configuration: IVI additions to default config files.

11 years agopackaging: added spec.in and pulseaudio.service.
Jaska Uimonen [Tue, 5 Jun 2012 13:03:40 +0000 (16:03 +0300)]
packaging: added spec.in and pulseaudio.service.

11 years agomodule loading: initialize module index to invalid value.
Ismo Puustinen [Fri, 12 Apr 2013 14:38:12 +0000 (17:38 +0300)]
module loading: initialize module index to invalid value.

11 years agoadd internal corking state for sink-input
Jaska Uimonen [Thu, 7 Mar 2013 11:41:44 +0000 (13:41 +0200)]
add internal corking state for sink-input

11 years agofix draining not to lose samples in pre buffer
Jaska Uimonen [Mon, 4 Mar 2013 07:24:37 +0000 (09:24 +0200)]
fix draining not to lose samples in pre buffer

11 years agonode-manager: adding node support for pactl
Jaska Uimonen [Wed, 5 Dec 2012 07:53:12 +0000 (09:53 +0200)]
node-manager: adding node support for pactl

11 years agonode manager: adding external node manager API
Jaska Uimonen [Tue, 4 Dec 2012 07:53:14 +0000 (09:53 +0200)]
node manager: adding external node manager API

11 years agoadd Samsung policy module - Samsung
Jaska Uimonen [Thu, 11 Oct 2012 07:09:15 +0000 (10:09 +0300)]
add Samsung policy module - Samsung

11 years agoadd support for PMAPI - Samsung
Jaska Uimonen [Wed, 10 Oct 2012 11:08:57 +0000 (14:08 +0300)]
add support for PMAPI - Samsung

11 years agoadd support for dlog - Samsung
Jaska Uimonen [Mon, 8 Oct 2012 13:04:20 +0000 (16:04 +0300)]
add support for dlog - Samsung

11 years agochanges to simple API - Samsung
Jaska Uimonen [Thu, 18 Oct 2012 13:46:05 +0000 (16:46 +0300)]
changes to simple API - Samsung

11 years agomake pa_thread_mq_done() safe for subsequent calls
Janos Kovacs [Thu, 16 Aug 2012 00:47:48 +0000 (03:47 +0300)]
make pa_thread_mq_done() safe for subsequent calls

11 years agojack detection fix for wired headset
Jaska Uimonen [Sun, 10 Jun 2012 12:13:11 +0000 (15:13 +0300)]
jack detection fix for wired headset

11 years agobuild-sys: install files for a module development.
Jaska Uimonen [Tue, 5 Jun 2012 08:36:13 +0000 (11:36 +0300)]
build-sys: install files for a module development.

11 years agovolume ramp: add volume ramping to sink
Jaska Uimonen [Wed, 8 Aug 2012 08:14:39 +0000 (11:14 +0300)]
volume ramp: add volume ramping to sink

11 years agovolume ramp: adding volume ramping to sink-input
Jaska Uimonen [Wed, 8 Aug 2012 08:14:38 +0000 (11:14 +0300)]
volume ramp: adding volume ramping to sink-input

11 years agovolume ramp: additions to the low level infra
Jaska Uimonen [Wed, 8 Aug 2012 08:14:37 +0000 (11:14 +0300)]
volume ramp: additions to the low level infra

11 years agodevice-port: Create the profiles hashmap at initialization.
Tanu Kaskinen [Mon, 4 Jun 2012 14:44:20 +0000 (17:44 +0300)]
device-port: Create the profiles hashmap at initialization.

I doesn't make sense to require all callers of
pa_device_port_new() to create the hashmap themselves. There
are and there will be no cases where a port without any
profiles would be desired.

11 years agoloopback: Disable adjust timer when suspended
Mikel Astiz [Thu, 20 Sep 2012 12:28:34 +0000 (14:28 +0200)]
loopback: Disable adjust timer when suspended

Stop the rate adjustment timer when no audio is flowing.

11 years agoloopback: Cork source-output if sink is suspended
Frédéric Dalleau [Thu, 20 Sep 2012 12:28:33 +0000 (14:28 +0200)]
loopback: Cork source-output if sink is suspended

During initialization, the approach avoids having a needless short
period of corked state in case the sink is suspended, by always creating
the source-output corked and uncorking it immediately afterwards when
the sink is not suspended.

11 years agoloopback: Cork sink-input if source is suspended
Frédéric Dalleau [Thu, 20 Sep 2012 12:28:32 +0000 (14:28 +0200)]
loopback: Cork sink-input if source is suspended

During initialization, the approach avoids having a needless short
period of corked state in case the source is suspended, by always
creating the sink-input corked and uncorking it immediately afterwards
when the source is not suspended.

11 years agoloopback: Enable routing on loopback streams
Frédéric Dalleau [Wed, 20 Jun 2012 15:33:35 +0000 (17:33 +0200)]
loopback: Enable routing on loopback streams

At module-loopback load, if no sink is given, the default sink is used. If the
stream has a media.role property, the property cannot be used because a the
source or sink is forced to default. Both module-intended-roles and
module-device-manager are affected. The same apply to sources.

With this patch, if sink or source is missing, routing modules can be used.

11 years agobluetooth: Set initial profile priority based on profile state
Luiz Augusto von Dentz [Mon, 13 Aug 2012 08:31:50 +0000 (11:31 +0300)]
bluetooth: Set initial profile priority based on profile state

This means only profiles on PA_BT_AUDIO_STATE_PLAYING state will have
bigger priority than 'Off'.

11 years agobluetooth: Do not switch to HFGW automatically
Mikel Astiz [Fri, 31 Aug 2012 10:51:08 +0000 (12:51 +0200)]
bluetooth: Do not switch to HFGW automatically

Card profile hfgw should be no different from the rest, and thus no
internal policy inside module-bluetooth-device should decide to switch
to its profile automatically.

This should be handled by policy modules.

11 years agobluetooth: Release transport when not available
Mikel Astiz [Fri, 31 Aug 2012 10:51:07 +0000 (12:51 +0200)]
bluetooth: Release transport when not available

Handle the Playing->Connected transition gracefully by releasing the
transport and setting the sink and sources as suspended. This is
necessary since the IO thread might not encounter a HUP always.

11 years agobluetooth: Acquire transport when becomes available
Mikel Astiz [Fri, 31 Aug 2012 10:51:06 +0000 (12:51 +0200)]
bluetooth: Acquire transport when becomes available

Try to acquire the transport as soon as the audio stream is started,
along with the availability flag update.

11 years agobluetooth: Support port availability flag
Mikel Astiz [Fri, 31 Aug 2012 10:51:02 +0000 (12:51 +0200)]
bluetooth: Support port availability flag

Use the port availability flag to expose whether a certain profile is
connected and whether it's doing actual audio streaming.

The proposed mapping is the following:
- Profile disconnected: port is unavailable
- Profile is connected (but not streaming/playing): availability unknown
- Profile is streaming/playing: port is available

The availability-unknown is specially interesting: it involves that if
the sink/source exists (corresponding card profile set), it is currently
in suspended state.

For example, for SCO cases (HFGW or HSP), this means the SCO is down. A
policy module would typically not change this, unless someone is really
trying to use the sink/source. This situation would be nicely handled by
module-suspend-on-idle, which would automatically connect SCO.

On the other hand, if the user wants to control the status of the SCO,
it will still be possible by resuming the sink or source (suspend=0).
This works out-of-the-box since most UIs would show to the user ports
whose availability is unknown.

11 years agobluetooth: Config MTU transport after acquire
Mikel Astiz [Fri, 31 Aug 2012 10:51:03 +0000 (12:51 +0200)]
bluetooth: Config MTU transport after acquire

The configuration of the transport that depends on the MTU should be
performed every time the transport has been acquired, since the
parameters depend on what the Media API provides. This requires to
update the parameters of the sinks and sources as well.

This patch moves this code into a new function that will be called
when the stream is starting (setup_stream), from the IO thread.

This makes the code more robust, since the existing multiple calls to
bt_transport_acquire() do not rely on setup_bt() being able to acquire
the transport.

11 years agobluetooth: Provide dummy set_port callbacks
Mikel Astiz [Fri, 31 Aug 2012 10:51:01 +0000 (12:51 +0200)]
bluetooth: Provide dummy set_port callbacks

There should be one port per sink/source so a dummy set_port callback
will be enough.

Adding this callback avoid the "operation not implemented" error
message and additionally makes the module work nicely with
module-switch-on-port-available.

11 years agosink, source: Support creating suspended sinks and sources
Mikel Astiz [Fri, 31 Aug 2012 10:51:00 +0000 (12:51 +0200)]
sink, source: Support creating suspended sinks and sources

The initial state of a sink or source might not necessarily be IDLE,
because sometimes it might be suspended from the very beginning.

11 years agobluetooth: Fix check if transport exists before acquire
Mikel Astiz [Fri, 31 Aug 2012 10:50:59 +0000 (12:50 +0200)]
bluetooth: Fix check if transport exists before acquire

The transport might have disapeared exactly before acquiring, so we
should avoid an assertion failure, in this case inside the function
pa_bluetooth_discovery_get_by_path().

11 years agobluetooth: Fix wrongly set "phone" role for HFGW
Mikel Astiz [Fri, 31 Aug 2012 10:50:57 +0000 (12:50 +0200)]
bluetooth: Fix wrongly set "phone" role for HFGW

The HFGW source should be consistent with the sink by not setting the
"phone" intended role.

Even though setting this role seems to make sense strictly speaking, the
rest of the codebase doesn't handle this well. Therefore, the audio
coming from a Bluetooth phone can be routed back to the same device.

11 years agobluetooth: Refactor code to helper function
Mikel Astiz [Fri, 31 Aug 2012 10:50:55 +0000 (12:50 +0200)]
bluetooth: Refactor code to helper function

Make code more readable by introducing the helper function
bt_transport_is_acquired(). This also adds assertions to check whether
the internal state is consistent.

11 years agobluetooth: Refactor parsing of signal PropertyChanged
Mikel Astiz [Fri, 31 Aug 2012 10:50:56 +0000 (12:50 +0200)]
bluetooth: Refactor parsing of signal PropertyChanged

Wrap the code parsing the PropertyChanged signal into a helper function
that will return the new state of the interface.

11 years agobluetooth: Remove return value of setup_stream()
Mikel Astiz [Fri, 31 Aug 2012 10:50:54 +0000 (12:50 +0200)]
bluetooth: Remove return value of setup_stream()

The function setup_stream() never fails so the code can be simplified by
just removing the return value.

11 years agobluetooth: Remove return value of bt_transport_config()
Mikel Astiz [Fri, 31 Aug 2012 10:50:53 +0000 (12:50 +0200)]
bluetooth: Remove return value of bt_transport_config()

The function bt_transport_config() never fails so the code can be
simplified by just removing the return value.

11 years agobluetooth: Remove commented out code.
Tanu Kaskinen [Thu, 6 Sep 2012 12:47:17 +0000 (15:47 +0300)]
bluetooth: Remove commented out code.

11 years agobluetooth: Don't force any profile on discovery module
Luiz Augusto von Dentz [Fri, 17 Aug 2012 14:21:52 +0000 (17:21 +0300)]
bluetooth: Don't force any profile on discovery module

Let device module figure out the priority based on the state of the
profiles.

Note that most likely all profiles will be in PA_BT_AUDIO_STATE_CONNECTED
state so 'Off' will be the initial profile then it is up to the policy
module to switch to the most suitable profile.

11 years agobluetooth: Fix bluetooth.protocol property
Mikel Astiz [Wed, 22 Aug 2012 07:04:19 +0000 (09:04 +0200)]
bluetooth: Fix bluetooth.protocol property

Property bluetooth.protocol did make a distinction between A2DP sink and
source roles but on the contrary did not separate HFP roles (headset vs
gateway). For consistency, they should both behave similarly.

This automatically fixes another incosistency: the HFGW (or HSP) sink
was set to bluetooth.protocol="sco", while the source was set to "hsp".
There is no use for this distinction, since the protocol (including the
role) is the same.

11 years agobluetooth: Fix missing state checks for a2dp_source
Mikel Astiz [Thu, 16 Aug 2012 11:08:29 +0000 (13:08 +0200)]
bluetooth: Fix missing state checks for a2dp_source

Profile a2dp_source, just like any other card profile, should have
state guards when the profile is being changed. If the BlueZ interface
is not connected, the profile should be set to "off".

11 years agobluetooth: Minor style fix
Mikel Astiz [Thu, 16 Aug 2012 11:08:28 +0000 (13:08 +0200)]
bluetooth: Minor style fix

Else clause should be in the same line as the closing brace.

11 years agobluetooth: Remove minor unnecessary check
Mikel Astiz [Thu, 26 Jul 2012 10:36:33 +0000 (12:36 +0200)]
bluetooth: Remove minor unnecessary check

The return value of dbus_message_iter_next() doesn't need to be checked
since the while condition will be false anyway (arg type will be
DBUS_TYPE_INVALID).

11 years agobluetooth: Replace deprecated ListDevices()
Mikel Astiz [Thu, 26 Jul 2012 10:36:32 +0000 (12:36 +0200)]
bluetooth: Replace deprecated ListDevices()

The method ListDevices() in org.bluez.Adapter was deprecated in BlueZ
4.61, and is going to be removed in future releases. Instead, a property
was introduced for this purpose in BlueZ 4.7.

11 years agobluetooth: Replace deprecated ListAdapters()
Mikel Astiz [Thu, 26 Jul 2012 10:36:31 +0000 (12:36 +0200)]
bluetooth: Replace deprecated ListAdapters()

The method ListAdapters() in org.bluez.Manager was deprecated in BlueZ
4.61, and is going to be removed in future releases. Instead, a property
was introduced for this purpose in BlueZ 4.22.

11 years agobluetooth: Avoid duplicating profile argument twice
Mikel Astiz [Fri, 27 Jul 2012 14:41:22 +0000 (16:41 +0200)]
bluetooth: Avoid duplicating profile argument twice

The module module-bluetooth-device should never be given parameter
'profile' twice, even if both HFGW and A2DP are playing. This patch
proposed to consider HFGW first.

11 years agobluetooth: Consider different input and output MTU
Mikel Astiz [Fri, 27 Jul 2012 14:41:21 +0000 (16:41 +0200)]
bluetooth: Consider different input and output MTU

Previous implementation assumes these values are equal, but this doesn't
necessarily have to be so.

11 years agobluetooth: Minor style fixes
Mikel Astiz [Fri, 27 Jul 2012 14:41:20 +0000 (16:41 +0200)]
bluetooth: Minor style fixes

Fix some minor style fixes to be consistent with the project coding
style.

11 years agobluetooth: Refactor property parsing code
Mikel Astiz [Wed, 25 Jul 2012 14:29:52 +0000 (16:29 +0200)]
bluetooth: Refactor property parsing code

Use a separate method to perform the common checks when a property needs
to be parsed.

11 years agobluetooth: Don't use the old socket IPC mechanism with BlueZ
Mikel Astiz [Fri, 6 Jul 2012 09:19:52 +0000 (11:19 +0200)]
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.

11 years agobluetooth: Fix bluetooth.nrec property not updated
Frédéric Danis [Tue, 12 Jun 2012 13:49:50 +0000 (15:49 +0200)]
bluetooth: Fix bluetooth.nrec property not updated

PropertyChanged signal of org.BlueZ.MediaTransport is processed in
pa_bluetooth_transport_parse_property() which updates t->nrec.
This is called by :
- First by filter_cb() of bluetooth-util.c
- Then by filter_cb() of module-bluetooth-device.c which retrieve value
  of t->nrec before calling parse function, then it checks if t->nrec
  has changed before updating bluetooth.nrec property.
  As t->nrec has alreday been changed during first process, property
  update is never performed.

This patch creates a new hook in pa_bluetooth_transport called
PA_BLUETOOTH_TRANSPORT_HOOK_NREC_CHANGED.
The hook is fired by bluetooth-util.c when the transport's NREC
property changes.
module-bluetooth-device.c won't listen the PropertyChanged signal of
MediaTransport anymore. Instead, it will use the hook in
pa_bluetooth_transport to get a notification when the NREC property
changes, and update the sink or source proplist accordingly.

const qualifier for returned pointer of
pa_bluetooth_discovery_get_transport() is removed.

11 years agomodules: Use pa_streq instead of strcmp.
Arti Trivedi Bora [Tue, 5 Jun 2012 19:58:13 +0000 (01:28 +0530)]
modules: Use pa_streq instead of strcmp.

11 years agobluetooth: Add ports to the bluetooth sink/source
poljar [Mon, 4 Jun 2012 17:35:41 +0000 (19:35 +0200)]
bluetooth: Add ports to the bluetooth sink/source

The bluetooth device should have ports so we can attach a latency to
the ports.

Every profile (a2dp, hsp...) has his own set of ports depending on the
number of sinks and sources it provides.

11 years agobuild: Fix distcheck failure on libwebrtc-util
Arun Raghavan [Thu, 19 Jul 2012 11:25:03 +0000 (16:55 +0530)]
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.

11 years agobuild: Bump soname
Arun Raghavan [Wed, 18 Jul 2012 06:53:17 +0000 (12:23 +0530)]
build: Bump soname

11 years agobuild: Avoid libstdc++ dep for module-echo-cancel if possible
Arun Raghavan [Tue, 17 Jul 2012 07:38:20 +0000 (13:08 +0530)]
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++.

11 years agoalsa-mixer: Add "Front Headphone Jack" (fixup)
David Henningsson [Tue, 3 Jul 2012 08:31:30 +0000 (10:31 +0200)]
alsa-mixer: Add "Front Headphone Jack" (fixup)

I forgot half of the front headphone patch, i e, to hide the
speaker output when the front headphone is connected. Thanks to
Shih-Yuan Lee for noticing.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Conflicts:
src/modules/alsa/mixer/paths/analog-output-speaker.conf

11 years agoalsa-mixer: Add "Front Headphone" jack
David Henningsson [Mon, 2 Jul 2012 10:09:06 +0000 (12:09 +0200)]
alsa-mixer: Add "Front Headphone" jack

Many desktops have headphone on the front and line outs on the back.
Sometimes this means that the headphone is labelled "Front Headphone Jack",
but the volume controls are only "Headphone Playback Volume", i e,
without the "Front" prefix.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
11 years agoalsa-mixer: Always turn "Inverted Internal Mic" off
David Henningsson [Thu, 28 Jun 2012 13:40:17 +0000 (15:40 +0200)]
alsa-mixer: Always turn "Inverted Internal Mic" off

Some devices have inverted right channel, so when you add left and right,
the result is silence, or very faint sound. In recent kernels (3.5,
perhaps also 3.4) these are starting to be marked with a special
"Inverted Internal Mic" capture switch.

While we might want to add some reverse summing mechanism in the
future, for now, we just turn the thing off to avoid the problem of
recording silence.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
11 years agoalsa-mixer: Add special profiles for some laptops missing speaker and/or internal mic
David Henningsson [Thu, 3 May 2012 13:39:18 +0000 (15:39 +0200)]
alsa-mixer: Add special profiles for some laptops missing speaker and/or internal mic

Several laptops have speaker ports, and/or internal mic ports, but we have
no way of detecting that. So we make the port(s) always show up for these
devices.

BugLink: https://bugs.launchpad.net/bugs/946232
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
11 years agorole-cork: Fix another minor leak
Arun Raghavan [Tue, 3 Jul 2012 12:41:54 +0000 (18:11 +0530)]
role-cork: Fix another minor leak

Credit to David for finding this one.

11 years agorole-cork: Fix incorrect check at deinitialisation time
Arun Raghavan [Tue, 3 Jul 2012 12:22:36 +0000 (17:52 +0530)]
role-cork: Fix incorrect check at deinitialisation time

11 years agorole-cork: Fix a minor leak
Arun Raghavan [Wed, 13 Jun 2012 10:59:35 +0000 (16:29 +0530)]
role-cork: Fix a minor leak

11 years agoxen: add the HAVE_CONFIG_H macro guard
Deng Zhengrong [Sat, 23 Jun 2012 11:16:26 +0000 (19:16 +0800)]
xen: add the HAVE_CONFIG_H macro guard

11 years agoalsa-source: add missing header 'signal.h'
Eero Nurkkala [Thu, 31 May 2012 07:44:23 +0000 (10:44 +0300)]
alsa-source: add missing header 'signal.h'

Compilation with -DDEBUG_TIMING fails due to a missing header:

modules/alsa/alsa-source.c: In function 'check_left_to_record':
modules/alsa/alsa-source.c:426:9: warning: implicit declaration of function 'raise' [-Wimplicit-function-declaration]
modules/alsa/alsa-source.c:426:9: error: 'SIGTRAP' undeclared (first use in this function)

Signed-off-by: Eero Nurkkala <eero.nurkkala@offcode.fi>
11 years agoalsa-sink: add missing header 'signal.h'
Eero Nurkkala [Thu, 31 May 2012 07:44:22 +0000 (10:44 +0300)]
alsa-sink: add missing header 'signal.h'

Compilation with -DDEBUG_TIMING fails due to a missing header:

modules/alsa/alsa-sink.c: In function 'check_left_to_play':
modules/alsa/alsa-sink.c:453:9: warning: implicit declaration of function 'raise' [-Wimplicit-function-declaration]
modules/alsa/alsa-sink.c:453:9: error: 'SIGTRAP' undeclared (first use in this function)

Signed-off-by: Eero Nurkkala <eero.nurkkala@offcode.fi>
11 years agobluetooth: Release transport when the pa_rtpoll_run loop finishes.
Jarkko Suontausta [Tue, 22 May 2012 12:58:33 +0000 (15:58 +0300)]
bluetooth: Release transport when the pa_rtpoll_run loop finishes.

Based on a patch by Marko Ollonen.

11 years agoudev: Don't use deprecated udev_get_*_path() functions
Marc-Antoine Perennou [Thu, 17 May 2012 20:50:22 +0000 (22:50 +0200)]
udev: Don't use deprecated udev_get_*_path() functions

[These symbols were removed in libudev.so.1.0.0. Replace them with
hardcoded strings. -- heftig]

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
11 years agoonce: Fix race causing pa_once to sometimes run twice
David Henningsson [Fri, 18 May 2012 20:29:41 +0000 (22:29 +0200)]
once: Fix race causing pa_once to sometimes run twice

There was a race in the existing code that could cause the pa_once code
to be run twice, see:
http://lists.freedesktop.org/archives/pulseaudio-discuss/2012-April/013354.html

Therefore the existing implementation was rewritten to instead look like
the reference implementation here:
http://www.hpl.hp.com/research/linux/atomic_ops/example.php4

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
11 years agobluetooth: Fix crash on disconnection
Frédéric Danis [Tue, 15 May 2012 13:55:36 +0000 (15:55 +0200)]
bluetooth: Fix crash on disconnection

When a Bluetooth headset is connected only to HFP profile (not connected
to A2DP) and host streams to it, a crash occurs if host disconnects.

When HFP disconnects, audio thread will fail on POLLHUP then generate
a message to set PA profile to Off before ending.
If this message is managed before PA unload bluetooth device module,
all works fine.
But, if this message is managed during module unload, this finish by
re-entrance in release code (stop_thread) and a crash.

This fix prevents to process profile change when module is unloading.

11 years agoutil: use the return value of gethosid() as fallback, not the address of the function
Lennart Poettering [Tue, 15 May 2012 12:12:38 +0000 (14:12 +0200)]
util: use the return value of gethosid() as fallback, not the address of the function

Yikes!

11 years agosink-input,source-output: Avoid unneccessary rate updates
Arun Raghavan [Mon, 14 May 2012 06:51:45 +0000 (12:21 +0530)]
sink-input,source-output: Avoid unneccessary rate updates

This makes sure we only call sink/source update_rate() if the stream
being woken up has a sample spec that doesn't match the corresponding
device'.

https://bugs.freedesktop.org/show_bug.cgi?id=49875

11 years agopacmd: Added --help and --version descriptions to the man page.
poljar [Sun, 6 May 2012 14:10:51 +0000 (16:10 +0200)]
pacmd: Added --help and --version descriptions to the man page.

The pacmd man page should show the available options. A simple
description for the --version and --help option was added.

12 years agobuild-sys: Bump soname upstream
Arun Raghavan [Fri, 11 May 2012 13:20:11 +0000 (18:50 +0530)]
build-sys: Bump soname

Double-bump since v1.99.2 got a bump but the commit never landed.

12 years agoCorrect spelling of PulseAudio
Paul Menzel [Tue, 24 Apr 2012 21:31:32 +0000 (23:31 +0200)]
Correct spelling of PulseAudio

• s,Pulseaudio,PulseAudio,
• One last occurence of this “error” is in the French translation.

12 years agobluetooth: Fix crash due to usage of pa_bool_t instead of dbus_bool_t
Arun Raghavan [Fri, 11 May 2012 12:02:20 +0000 (17:32 +0530)]
bluetooth: Fix crash due to usage of pa_bool_t instead of dbus_bool_t

pa_bool_t and dbus_bool_t cannot be used interchangably since their size
might (and do) vary. This caused a crash on some systems which was
reported and root caused by: Aidan Thornton <makosoft@googlemail.com>.

Ref: https://bugs.gentoo.org/show_bug.cgi?id=398097

12 years agoalsa: Add support for sound cards with 4-channel input.
Tanu Kaskinen [Tue, 1 May 2012 17:09:12 +0000 (20:09 +0300)]
alsa: Add support for sound cards with 4-channel input.

Changes in v2:
 - Call the mapping a generic 4-channel input mapping
   instead of a 4-channel mic array mapping. The mapping
   will be used also by sound cards that have two stereo
   input jacks, so in those cases talking about mic arrays
   is wrong.
 - Added a comment about using the "hw" device name.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=45813
12 years agoresampler: Add support for resamplers that consume less data than asked.
Tanu Kaskinen [Thu, 10 May 2012 06:19:23 +0000 (09:19 +0300)]
resampler: Add support for resamplers that consume less data than asked.

libsamplerate_resample() assumed that src_process() would
always consume the whole input buffer. That was an invalid
assumption leading to crashes.

This patch adds a leftover memchunk for storing any
non-consumed input. When pa_resampler_run() is called next
time, the leftover is prepended to the new input.

Changes in v3:
 - Make the calculations in pa_resampler_result() and
   pa_resampler_max_block_size() more readable and more
   correct.
 - Rework the leftover storing: instead of using a dedicated
   buffer for it, store it in the beginning of remap_buf.
   This can avoid some memory copying. (The idea was
   suggested by Wang Xingchao.)
 - Use a generic save_leftover() function instead of doing
   the leftover copying in the resampler implementation.
 - Use the leftover logic also with the speex and ffmpeg
   resamplers.
   [ed: dropped the speex bit since the API guarantees that
    it will consume everything -- Arun]

Changes in v2:
 - If add_leftover() is called with zero-length input while
   the leftover length is non-zero, we don't try to acquire
   the input memblock.
 - Instead of taking a reference to the original input in
   libsamplerate_resample(), we copy the leftover data to a
   new memblock. This is done, because otherwise, if the
   input is one of the internal buffers, the data can get
   overwritten before reading it in add_leftover().
 - Store add_leftover_buf size in bytes instead of samples
   (more convenient, but less consistent with other code).

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=47156
12 years agoresampler: Use more descriptive buffer names.
Tanu Kaskinen [Thu, 10 May 2012 06:19:22 +0000 (09:19 +0300)]
resampler: Use more descriptive buffer names.

12 years agoresampler: Use pa_xnew0() to avoid manual zeroing.
Tanu Kaskinen [Thu, 10 May 2012 06:19:21 +0000 (09:19 +0300)]
resampler: Use pa_xnew0() to avoid manual zeroing.

12 years agopacmd: Added --help and --version options.
poljar [Tue, 1 May 2012 21:17:22 +0000 (23:17 +0200)]
pacmd: Added --help and --version options.

All utilities should have the --help and --version command line options.
These two were added to pacmd, also the goto label was changed from fail
to quit like in the other utilities.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=45030
12 years agoecho-cancel: Clarify function call contexts.
Tanu Kaskinen [Wed, 25 Apr 2012 08:25:16 +0000 (11:25 +0300)]
echo-cancel: Clarify function call contexts.

12 years agoecho-cancel: Fix memblockq length check.
Tanu Kaskinen [Wed, 25 Apr 2012 07:51:38 +0000 (10:51 +0300)]
echo-cancel: Fix memblockq length check.

In addition to changing "plen > u->blocksize" to "plen >=
u->blocksize", I also removed one of the duplicated ifs.

12 years agoecho-cancel: Drop the correct amount of samples when skipping.
Tanu Kaskinen [Wed, 25 Apr 2012 06:49:08 +0000 (09:49 +0300)]
echo-cancel: Drop the correct amount of samples when skipping.

12 years agodoc: Add entry for correct spelling
Paul Menzel [Tue, 24 Apr 2012 21:36:07 +0000 (23:36 +0200)]
doc: Add entry for correct spelling

Due to the formatting of `README` the only occurence of PulseAudio in a
text is capitalized. People reading `README` should at least see the
correct spelling once.

In contrast to reformat just add a spelling section as an easy solution.

Since it is not that important the last place in the ordering might
suffice.

12 years agosink/source.h: Clarify set_port comment
David Henningsson [Wed, 18 Apr 2012 09:41:48 +0000 (11:41 +0200)]
sink/source.h: Clarify set_port comment

State which thread calls set_port in which scenario.

Reported-by: Jyri Sasha <oku@iki.fi>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
12 years agopulse: Fix warning in introspect.h; minor rewording and punctuation.
Peter Meerwald [Fri, 6 Apr 2012 13:06:29 +0000 (15:06 +0200)]
pulse: Fix warning in introspect.h; minor rewording and punctuation.

12 years agopulse: Clarify proplist doxygen documentation.
Peter Meerwald [Fri, 6 Apr 2012 13:06:28 +0000 (15:06 +0200)]
pulse: Clarify proplist doxygen documentation.

12 years agocore: Fix comments.
Peter Meerwald [Fri, 6 Apr 2012 13:06:27 +0000 (15:06 +0200)]
core: Fix comments.

12 years agoecho-cancel: Upper/lowercase in comment.
Peter Meerwald [Fri, 6 Apr 2012 13:06:26 +0000 (15:06 +0200)]
echo-cancel: Upper/lowercase in comment.

12 years agobuild: Fix spelling in src/Makefile.am.
Peter Meerwald [Fri, 6 Apr 2012 13:06:25 +0000 (15:06 +0200)]
build: Fix spelling in src/Makefile.am.

12 years agodbus: Fix dbus argument type in iface-stream.c handle_move().
Peter Meerwald [Fri, 6 Apr 2012 09:44:57 +0000 (11:44 +0200)]
dbus: Fix dbus argument type in iface-stream.c handle_move().

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=48376
Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
12 years agoalsa: Add the DTS/DCA mapping to extra-hdmi.conf too.
Colin Guthrie [Sun, 15 Apr 2012 12:39:29 +0000 (13:39 +0100)]
alsa: Add the DTS/DCA mapping to extra-hdmi.conf too.

This is needed for 0b421f on Intel/NVidia hardware.

12 years agoalsa-sink/source: Make sure volumes are synchronised after fast user switching
David Henningsson [Wed, 4 Apr 2012 15:07:13 +0000 (17:07 +0200)]
alsa-sink/source: Make sure volumes are synchronised after fast user switching

Log in as user A, fast user switch to user B, let user B change
port, volume or mute status, then switch back to user A.

At this point we must make sure that the ALSA and PA volumes are
synchronised by writing to the ALSA mixer when the ALSA device
becomes available.

BugLink: https://bugs.launchpad.net/bugs/915035
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
12 years agocli: Allow source-output volumes/mute to be set via CLI
Colin Guthrie [Thu, 5 Apr 2012 10:52:24 +0000 (11:52 +0100)]
cli: Allow source-output volumes/mute to be set via CLI

This should have been done a long time ago but it brings symmetry to the API

12 years agoman: Document the cli inteface a little.
Colin Guthrie [Thu, 5 Apr 2012 10:41:18 +0000 (11:41 +0100)]
man: Document the cli inteface a little.

This just documents the cli interface syntax. Mostly a lift from
http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/CLI
with some minor editing and bringing up to date.

Also document a few undocumented commands.

Shuffle around the order in 'pacmd help' output to match the order
in the new docs for consistency.

https://bugs.freedesktop.org/show_bug.cgi?id=45029

12 years agoalsa-sink/source: Really set volumes on port change
David Henningsson [Tue, 3 Apr 2012 19:35:07 +0000 (21:35 +0200)]
alsa-sink/source: Really set volumes on port change

If deferred volumes were activated, set_volume does not really set
the volume, and is probably only meant to be called from the main
thread.
As we're currently really setting the port and the mute here (i e
modifying ALSA), we should really modify the volume as well.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
12 years agomodule-loopback: Reset process_msg callbacks in teardown
David Henningsson [Tue, 3 Apr 2012 16:56:21 +0000 (18:56 +0200)]
module-loopback: Reset process_msg callbacks in teardown

Make sure we can't be called into by remaining references to
sink-inputs and source-outputs after we have unloaded, as
that will likely lead to segfaults.

Thanks to Tanu for providing valuable input on this patch.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>