platform/upstream/pulseaudio.git
9 years agoalsa-time-test: Add fillrate parameter
David Henningsson [Wed, 10 Sep 2014 12:43:19 +0000 (14:43 +0200)]
alsa-time-test: Add fillrate parameter

As a third parameter, add the number of samples to read/write in
every iteration. This will help slow CPUs.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agobluetooth: Allow policy module to pick 'off' profile
Luiz Augusto von Dentz [Wed, 17 Sep 2014 10:05:00 +0000 (13:05 +0300)]
bluetooth: Allow policy module to pick 'off' profile

This allow 'off' profile to be choosen when no other profile is available
which is considered better since it requires less resources than other
profiles.

9 years agobluetooth: Switch transport state to idle in case of HUP
João Paulo Rechi Vita [Wed, 17 Sep 2014 10:04:59 +0000 (13:04 +0300)]
bluetooth: Switch transport state to idle in case of HUP

In case the socket HUP the transport state should be set to idle which
will indicate the profile is no longer available.

9 years agobluetooth: Implement org.ofono.HandsfreeAudioAgent.NewConnection()
João Paulo Rechi Vita [Mon, 15 Sep 2014 10:02:02 +0000 (13:02 +0300)]
bluetooth: Implement org.ofono.HandsfreeAudioAgent.NewConnection()

9 years agoi18n: Add Slovak translation
Dusan Kazik [Tue, 16 Sep 2014 11:30:31 +0000 (14:30 +0300)]
i18n: Add Slovak translation

9 years agoalsa: Remove unnecessary hctl handles being passed around
David Henningsson [Mon, 1 Sep 2014 13:58:22 +0000 (15:58 +0200)]
alsa: Remove unnecessary hctl handles being passed around

Now that we have switched to using the mixer handle only,
there is no use for sending hctl handles around.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agoalsa-mixer/card: Move to use the new mixer interface
David Henningsson [Mon, 1 Sep 2014 13:41:39 +0000 (15:41 +0200)]
alsa-mixer/card: Move to use the new mixer interface

Use the new mixer API to get callbacks, instead of using the hctl
API. Using the hctl API caused a memory leak, because alsa-lib itself
used the hctl callbacks, which we were previously overriding.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agoalsa-util: Add functions for accessing mixer elements through mixer class
David Henningsson [Mon, 1 Sep 2014 13:38:25 +0000 (15:38 +0200)]
alsa-util: Add functions for accessing mixer elements through mixer class

Instead of using the hctl interface, we can find controls belonging
to other iface types than "mixer". We do this by introducing a new
mixer class "SND_MIXER_ELEM_PULSEAUDIO" and create snd_mixer_elem's
for all PCM and CARD iface types (as Jacks are of the CARD type and
ELD controls are of the PCM type).

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agobluetooth: Implement org.ofono.HandsfreeAudioAgent.Release()
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:34 +0000 (11:48 +0200)]
bluetooth: Implement org.ofono.HandsfreeAudioAgent.Release()

9 years agobluetooth: Handle CardRemoved signal
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:33 +0000 (11:48 +0200)]
bluetooth: Handle CardRemoved signal

9 years agobluetooth: Handle CardAdded signal
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:32 +0000 (11:48 +0200)]
bluetooth: Handle CardAdded signal

9 years agobluetooth: Track oFono service
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:31 +0000 (11:48 +0200)]
bluetooth: Track oFono service

9 years agobluetooth: Implement transport release for hf_audio_agent transports
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:30 +0000 (11:48 +0200)]
bluetooth: Implement transport release for hf_audio_agent transports

9 years agobluetooth: Implement transport acquire for hf_audio_agent transports
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:29 +0000 (11:48 +0200)]
bluetooth: Implement transport acquire for hf_audio_agent transports

9 years agobluetooth: Parse HandsfreeAudioCard properties
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:28 +0000 (11:48 +0200)]
bluetooth: Parse HandsfreeAudioCard properties

9 years agobluetooth: List HandsfreeAudioCard objects from oFono
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:27 +0000 (11:48 +0200)]
bluetooth: List HandsfreeAudioCard objects from oFono

9 years agobluetooth: Register/Unregister Handsfree Audio Agent with oFono
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:26 +0000 (11:48 +0200)]
bluetooth: Register/Unregister Handsfree Audio Agent with oFono

Register as a HandsfreeAudioAgent with oFono during backend
initialization and unregiter during backend finalization. This commit
also adds a check when receiving method calls or signals to make sure
the sender matches with the D-Bus service we're registered with.

9 years agobluetooth: Create hf_dbus_send_and_add_to_pending() for oFono backend
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:25 +0000 (11:48 +0200)]
bluetooth: Create hf_dbus_send_and_add_to_pending() for oFono backend

9 years agobluetooth: Monitor D-Bus signals
João Paulo Rechi Vita [Wed, 10 Sep 2014 09:48:24 +0000 (11:48 +0200)]
bluetooth: Monitor D-Bus signals

9 years agotests: Remove mix-special-test
Peter Meerwald [Wed, 23 Apr 2014 15:47:26 +0000 (17:47 +0200)]
tests: Remove mix-special-test

code has been moved to cpu-mix-test

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Use float constants in cpu-sconv-test
Peter Meerwald [Wed, 23 Apr 2014 21:48:17 +0000 (23:48 +0200)]
tests: Use float constants in cpu-sconv-test

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Add ARM NEON test code to cpu-remap-test
Peter Meerwald [Tue, 22 Apr 2014 17:12:28 +0000 (19:12 +0200)]
tests: Add ARM NEON test code to cpu-remap-test

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Add rearrange remapping test cases to cpu-remap-test
Peter Meerwald [Wed, 23 Apr 2014 14:52:39 +0000 (16:52 +0200)]
tests: Add rearrange remapping test cases to cpu-remap-test

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Add to remapping special case code tests to cpu-remap-test
Peter Meerwald [Wed, 23 Apr 2014 20:18:34 +0000 (22:18 +0200)]
tests: Add to remapping special case code tests to cpu-remap-test

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Reorganize cpu-remap-test program
Peter Meerwald [Wed, 23 Apr 2014 20:18:05 +0000 (22:18 +0200)]
tests: Reorganize cpu-remap-test program

Make run_remap_test() support up to 8 input and output channels.

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Use remap function passed in remap struct
Peter Meerwald [Wed, 23 Apr 2014 21:22:58 +0000 (23:22 +0200)]
tests: Use remap function passed in remap struct

Cleanup and add function to setup remap struct

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Add ARM NEON test code to cpu-mix-test
Peter Meerwald [Wed, 23 Apr 2014 20:49:14 +0000 (22:49 +0200)]
tests: Add ARM NEON test code to cpu-mix-test

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Add tests for mix special-case code
Peter Meerwald [Wed, 23 Apr 2014 20:48:53 +0000 (22:48 +0200)]
tests: Add tests for mix special-case code

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Use single-line #ifdef for ARM NEON code
Peter Meerwald [Tue, 22 Apr 2014 16:25:48 +0000 (18:25 +0200)]
tests: Use single-line #ifdef for ARM NEON code

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Split cpu tests in separate files
Peter Meerwald [Tue, 22 Apr 2014 16:19:05 +0000 (18:19 +0200)]
tests: Split cpu tests in separate files

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agocpu: Add force_generic_code flag to cpu_info struct
Peter Meerwald [Fri, 18 Apr 2014 07:59:32 +0000 (09:59 +0200)]
cpu: Add force_generic_code flag to cpu_info struct

The remapper and channel mixing code have (faster) specialized and (slower)
generic code certain code path. The flag force_generic_code can be set to
force the generic code path which is useful for testing. Code duplication
(such as in mix-special-test) can be avoided, cleanup patches follow.

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agocpu: Don't check for both x86 and ARM code
Peter Meerwald [Wed, 10 Sep 2014 13:53:37 +0000 (15:53 +0200)]
cpu: Don't check for both x86 and ARM code

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agocore: Add pa_cpu_init() / cpu.c
Peter Meerwald [Wed, 10 Sep 2014 13:23:11 +0000 (15:23 +0200)]
core: Add pa_cpu_init() / cpu.c

move code dealing with CPU specific code path initialization
from daemon/main.c to pulsecore/cpu.c

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agobluetooth: Add discovery to pa_bluetooth_backend_new
Luiz Augusto von Dentz [Wed, 10 Sep 2014 09:48:23 +0000 (11:48 +0200)]
bluetooth: Add discovery to pa_bluetooth_backend_new

9 years agobluetooth: Only create backend instance once objects are listed
Luiz Augusto von Dentz [Mon, 8 Sep 2014 10:35:33 +0000 (13:35 +0300)]
bluetooth: Only create backend instance once objects are listed

This makes sure the devices are discovered before the backend start
creating new transports.

9 years agoconfigure: Fix spelling of "backend"
David Henningsson [Wed, 10 Sep 2014 09:28:45 +0000 (11:28 +0200)]
configure: Fix spelling of "backend"

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agoconfigure: fix headset check
Wim Taymans [Mon, 8 Sep 2014 09:15:55 +0000 (11:15 +0200)]
configure: fix headset check

9 years agoClient API: Add pa_stream_write_ext_free() function.
Lukasz Marek [Tue, 15 Apr 2014 00:08:23 +0000 (02:08 +0200)]
Client API: Add pa_stream_write_ext_free() function.

New function allows to pass data pointer that is a member
of the outer structure that need to be freed too when data
is not needed anymore.

Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
9 years agoalsa-mixer: recognize Dock headphone jack
Sjoerd Simons [Sun, 31 Aug 2014 18:11:21 +0000 (20:11 +0200)]
alsa-mixer: recognize Dock headphone jack

Recognize the Dock headphone jack in the same way the normal & front
headphone jacks are detected.

Reviewed-by: David Henningsson <david.henningsson@canonical.com>
9 years agocore-util: Fail if XDG_RUNTIME_DIR belongs to someone else
David Henningsson [Tue, 12 Nov 2013 06:52:48 +0000 (07:52 +0100)]
core-util: Fail if XDG_RUNTIME_DIR belongs to someone else

Usually, PA will use the PULSE_SERVER X11 property instead of using XDG_RUNTIME_DIR,
so this environment variable does not matter.

If this property is not available, or if one is using the pacmd cli protocol,
the client will go ahead and call pa_make_secure_dir on XDG_RUNTIME_DIR/pulse.
This will either fail (if you're another regular user), or succeed (if you're root).
Both scenarios are bad - failing will cause the connection to fail, and succeeding
is even worse, as it can cause *other* connections to fail (as the directory
ownership has changed).

Instead fail and complain loudly.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=83007
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agoalsa-mixer: Improve workaround for Valgrind's false warnings
David Henningsson [Tue, 2 Sep 2014 14:11:53 +0000 (16:11 +0200)]
alsa-mixer: Improve workaround for Valgrind's false warnings

Valgrind is not correctly handling ALSA TLV syscalls, which leads
to false warnings, looking like this:
 "Conditional jump or move depends on uninitialised value(s)"

Unfortunately, alsa-lib itself also uses these values which valgrind
falsely believe are uninitialized, so not all warnings are removed,
but this is what we can do from PA until the valgrind bug is fixed.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agobluetooth: Add pa_bluetooth_transport_unlink
Luiz Augusto von Dentz [Mon, 8 Sep 2014 09:14:43 +0000 (12:14 +0300)]
bluetooth: Add pa_bluetooth_transport_unlink

9 years agobluetooth: Add pa_bluetooth_transport_set_state
Luiz Augusto von Dentz [Mon, 8 Sep 2014 09:14:42 +0000 (12:14 +0300)]
bluetooth: Add pa_bluetooth_transport_set_state

9 years agoalsa-mixer: Mark "Line HP Swap" as required-any
Tanu Kaskinen [Sun, 7 Sep 2014 12:20:18 +0000 (15:20 +0300)]
alsa-mixer: Mark "Line HP Swap" as required-any

In the (theoretical) case that no other elements exists but
"Line HP Swap", the presence of that element signals that there are
headphone and line-out outputs, otherwise there would be nothing to
swap.

9 years agoendianmacros: Replace borked PA_FLOAT32_SWAP() with PA_READ_FLOAT32RE() / PA_WRITE_FL...
Peter Meerwald [Tue, 2 Sep 2014 21:53:09 +0000 (23:53 +0200)]
endianmacros: Replace borked PA_FLOAT32_SWAP() with PA_READ_FLOAT32RE() / PA_WRITE_FLOAT32RE()

building PA with -O0 leads to test failure in mix-test on i386

issue reported by Felipe, see
http://lists.freedesktop.org/archives/pulseaudio-discuss/2014-August/021406.html

the problem is the value 0xbeffbd7f: when byte-swapped it becomes 0x7fbdffbe and according
to IEEE-754 represents a signalling NaN (starting with s111 1111 10, see http://en.wikipedia.org/wiki/NaN)

when this value is assigned to a floating point register, it becomes 0x7ffdffbe, representing
a quiet NaN (starting with s111 1111 11) -- a signalling NaN is turned into a quiet NaN!

so PA_FLOAT32_SWAP(PA_FLOAT32_SWAP(x)) != x for certain values, uhuh!

the following test code can be used; due to volatile, it will always demonstrate the issue;
without volatile, it depends on the optimization level (i386, 32-bit, gcc 4.9):

// snip

static inline float PA_FLOAT32_SWAP(float x) {
    union {
        float f;
        uint32_t u;
    } t;

    t.f = x;
    t.u = bswap_32(t.u);
    return t.f;
}

int main() {
  unsigned x = 0xbeffbd7f;
  volatile float f = PA_FLOAT32_SWAP(*(float *)&x);
  printf("%08x %08x %08x %f\n", 0xbeffbd7f, *(unsigned *)&f, bswap_32(*(unsigned *)&f), f);
}
// snip

the problem goes away with optimization when no temporary floating point registers are used

the proposed solution is to avoid passing swapped floating point data in a
float; this is done with new functions PA_READ_FLOAT32RE() and PA_WRITE_FLOAT32RE()
which use uint32_t to dereference a pointer and byte-swap the data, hence no temporary
float variable is used

also delete PA_FLOAT32_TO_LE()/_BE(), not used

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Reported-by: Felipe Sateler <fsateler@debian.org>
9 years agosvolume: Make volume pointer parameter const for pa_volume_float32re_c()
Peter Meerwald [Wed, 3 Sep 2014 00:03:44 +0000 (02:03 +0200)]
svolume: Make volume pointer parameter const for pa_volume_float32re_c()

const obviously missing

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agodaemon: Debian/kFreeBSD 9.2 fails to compile due to caps
Peter Meerwald [Mon, 1 Sep 2014 20:53:29 +0000 (22:53 +0200)]
daemon: Debian/kFreeBSD 9.2 fails to compile due to caps

Debian/kFreeBSD 9.2 comes with sys/capability.h but it is not usable; work around it

the patch does several things:
* it makes the comment point to the correct bugtracker issue: https://bugs.freedesktop.org/show_bug.cgi?id=72580
* it handles Debian/kFreeBSD the same way as FreeBSD
* it logs a warning that capabilities are actually NOT dropped

daemon/caps.c: In function ‘pa_drop_caps’:
daemon/caps.c:93:2: error: #error "Don't know how to do capabilities on your system.  Please send a patch."
 #error "Don't know how to do capabilities on your system.  Please send a patch."
  ^
Makefile:9575: recipe for target 'daemon/pulseaudio-caps.o' failed

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agoReplace "authorization" with "authentication"
David Henningsson [Tue, 2 Sep 2014 09:50:39 +0000 (11:50 +0200)]
Replace "authorization" with "authentication"

Since we don't have "limited" clients, a client that authenticates
correctly is automatically authorized. However, it's the authentication
that can go wrong, rather than the authorization.

Buglink: https://bugs.freedesktop.org/show_bug.cgi?id=78566
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agoMake all debug/info level messages untranslatable
David Henningsson [Tue, 2 Sep 2014 10:09:44 +0000 (12:09 +0200)]
Make all debug/info level messages untranslatable

Debug and info messages are primarily meant for developers,
rather than end users. Let's save translators' time,
and leave them untranslated.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agojack: made it possible to use multiple jack sources and sinks
Lukas Peleska [Thu, 28 Aug 2014 09:04:53 +0000 (11:04 +0200)]
jack: made it possible to use multiple jack sources and sinks

9 years agosrbchannel: Fix documentation error
Arun Raghavan [Sun, 31 Aug 2014 09:39:44 +0000 (15:09 +0530)]
srbchannel: Fix documentation error

I seem to have misread the code previously.

9 years agoresampler: Remove duplicate forward declaration of pa_resampler
David Henningsson [Fri, 29 Aug 2014 13:00:24 +0000 (15:00 +0200)]
resampler: Remove duplicate forward declaration of pa_resampler

This duplicated line also caused a compiler warning on some compilers.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agosink/source: Fix restore of volume on devices without hw volume
David Henningsson [Tue, 26 Aug 2014 11:44:02 +0000 (13:44 +0200)]
sink/source: Fix restore of volume on devices without hw volume

Module-device-restore sets reference_volume, but soft_volume remains at
zero dB, so if a device only has soft_volume (i e no hw volume controls),
its volume was not restored correctly.

Reported-by: Richardo Salveti de Araujo <ricardo.salveti@canonical.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agodevice-manager: Don't allow setting an empty description in the client API
Tanu Kaskinen [Tue, 12 Aug 2014 09:48:22 +0000 (12:48 +0300)]
device-manager: Don't allow setting an empty description in the client API

The module implementation treats an empty description as a protocol
error, so we should validate the description already at client side.

9 years agobluetooth: Always initialize profile->available
Tanu Kaskinen [Mon, 11 Aug 2014 09:47:46 +0000 (12:47 +0300)]
bluetooth: Always initialize profile->available

If the transport for the profile doesn't exist, the old behaviour was
to leave cp->available at the default value, which is
PA_AVAILABLE_UNKNOWN, but if there's no transport, the profile should
be marked as unavailable.

9 years agoraop: Don't use incompatible default sample spec parameters
Tanu Kaskinen [Tue, 19 Aug 2014 11:08:34 +0000 (14:08 +0300)]
raop: Don't use incompatible default sample spec parameters

Since the RAOP sink supports only some formats and channel counts, we
shouldn't blindly use pa_core.default_sample_spec. This patch changes
things so that we default to PA_SAMPLE_S16NE and 2 channels, and only
take the sample rate from pa_core.default_sample_spec.

9 years agoconf-parser: Add debug print of parsed files
David Henningsson [Tue, 19 Aug 2014 12:37:59 +0000 (14:37 +0200)]
conf-parser: Add debug print of parsed files

This is useful for debugging.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agoalsa: Remove four channel input profile
David Henningsson [Fri, 1 Aug 2014 16:09:42 +0000 (18:09 +0200)]
alsa: Remove four channel input profile

With the new multichannel profile, we can remove this one and
handle the four channel input as a generic multichannel fallback.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
9 years agoformat: Don't use deprecated json-c is_error() macro
Peter Meerwald [Mon, 18 Aug 2014 12:38:30 +0000 (14:38 +0200)]
format: Don't use deprecated json-c is_error() macro

json_tokener_parse() simply returns NULL on error these days

latest json-c (post 0.12) doesn't automatically include json-c/bits.h anymore
causing compilation errors

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agobuild-sys: Drop support for json 0.9
Peter Meerwald [Mon, 18 Aug 2014 12:10:44 +0000 (14:10 +0200)]
build-sys: Drop support for json 0.9

drop support for json 0.9 and require json-c 0.11 (this will also avoids confusion
which json package is needed due to the upstream rename)

json 0.9 lacks json_object_object_get_ex()

json-c 0.11 was released 20130402

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agoformat: Use json_object_object_get_ex() instead of deprecated json_object_object_get()
Peter Meerwald [Mon, 18 Aug 2014 12:04:59 +0000 (14:04 +0200)]
format: Use json_object_object_get_ex() instead of deprecated json_object_object_get()

pulse/format.c: In function 'pa_format_info_get_prop_type':
pulse/format.c:252:5: warning: implicit declaration of function 'is_error' [-Wimplicit-function-declaration]
pulse/format.c:287:13: warning: 'json_object_object_get' is deprecated (declared at /usr/local/include/json-c/json_object.h:290) [-Wdeprecated-declarations]
pulse/format.c:293:13: warning: 'json_object_object_get' is deprecated (declared at /usr/local/include/json-c/json_object.h:290) [-Wdeprecated-declarations]
pulse/format.c: In function 'pa_format_info_get_prop_int_range':
pulse/format.c:364:5: warning: 'json_object_object_get' is deprecated (declared at /usr/local/include/json-c/json_object.h:290) [-Wdeprecated-declarations]
pulse/format.c:369:5: warning: 'json_object_object_get' is deprecated (declared at /usr/local/include/json-c/json_object.h:290) [-Wdeprecated-declarations]
pulse/format.c: In function 'pa_format_info_prop_compatible':
pulse/format.c:676:9: warning: 'json_object_object_get' is deprecated (declared at /usr/local/include/json-c/json_object.h:290) [-Wdeprecated-declarations]
pulse/format.c:680:9: warning: 'json_object_object_get' is deprecated (declared at /usr/local/include/json-c/json_object.h:290) [-Wdeprecated-declarations]

json-c 0.10 (released 20120530) added json_object_object_get_ex()
json-c 0.12 (released 20140410) deprecated json_object_object_get()

PulseAudio depends on json 0.9 or json-c 0.11, drop support for json 0.9
in a subsequent patch and require json-c 0.11 (this will also avoids confusion
which json package is needed due to the upstream rename)

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agoformat: Don't _put() objects obtained with json_object_object_get() or json_object_ar...
Peter Meerwald [Mon, 18 Aug 2014 11:33:22 +0000 (13:33 +0200)]
format: Don't _put() objects obtained with json_object_object_get() or json_object_array_get_idx()

json-c documentation states that "No reference counts will be changed.
There is no need to manually adjust reference counts through the
json_object_put/json_object_get methods unless..."

hence fix pa_format_info_get_prop_type() and pa_format_info_get_prop_int_range();
note that pa_format_info_prop_compatible() is OK

the json_object_array_get_idx() bug reported by Arun, thanks!

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Cc: Arun Raghavan <arun@accosted.net>
9 years agobluetooth: Create oFono backend
João Paulo Rechi Vita [Fri, 22 Aug 2014 08:07:15 +0000 (11:07 +0300)]
bluetooth: Create oFono backend

9 years agobluetooth: Create NULL backend
João Paulo Rechi Vita [Fri, 22 Aug 2014 08:07:14 +0000 (11:07 +0300)]
bluetooth: Create NULL backend

9 years agobluetooth: Add BlueZ 5 headset profile names in policy module
João Paulo Rechi Vita [Fri, 22 Aug 2014 08:07:13 +0000 (11:07 +0300)]
bluetooth: Add BlueZ 5 headset profile names in policy module

9 years agobluetooth: Assert transport has a matching profile
Luiz Augusto von Dentz [Fri, 22 Aug 2014 08:07:12 +0000 (11:07 +0300)]
bluetooth: Assert transport has a matching profile

It is a bug if a transport has no matching profile.

9 years agobluetooth: Add basic support for HEADSET profiles
João Paulo Rechi Vita [Fri, 22 Aug 2014 08:07:11 +0000 (11:07 +0300)]
bluetooth: Add basic support for HEADSET profiles

This commit adds basic support for devices implementing HSP Headset
Unit, HSP Audio Gateway, HFP Handsfree Unit, HFP Audio Gateway to the
BlueZ 5 bluetooth audio devices driver module (module-bluez5-device).

9 years agosrbchannel: Trivial whitespace and style fixes
Arun Raghavan [Wed, 6 Aug 2014 02:04:24 +0000 (07:34 +0530)]
srbchannel: Trivial whitespace and style fixes

Mostly to improve readability and make things a bit more consistent.

9 years agocontext: Handle client-side failure of pa_srbchannel_new_from_template()
Peter Meerwald [Mon, 18 Aug 2014 14:55:01 +0000 (16:55 +0200)]
context: Handle client-side failure of pa_srbchannel_new_from_template()

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Cc: David Henningsson <david.henningsson@canonical.com>
9 years agocontext: Stop and return if srbchannel memblock looks fishy
Peter Meerwald [Mon, 18 Aug 2014 15:02:40 +0000 (17:02 +0200)]
context: Stop and return if srbchannel memblock looks fishy

handle_srbchannel_memblock() should return when memblock sanity checks fail

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Cc: David Henningsson <david.henningsson@canonical.com>
9 years agosrbchannel: pa_srbchannel_new() may fail
Peter Meerwald [Tue, 12 Aug 2014 21:33:12 +0000 (23:33 +0200)]
srbchannel: pa_srbchannel_new() may fail

return from setup_srbchannel() when pa_srbchannel_new() fails

pa_srbchannel_new() depends on HAVE_SYS_EVENTFD_H, e.g. Debian/kFreeBSD doesn't
have it

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Acked-by: David Henningsson <david.henningsson@canonical.com>
9 years agosrbchannel: Cleanup when pa_fdsem_open_shm() fails
Peter Meerwald [Tue, 12 Aug 2014 21:14:13 +0000 (23:14 +0200)]
srbchannel: Cleanup when pa_fdsem_open_shm() fails

pa_fdsem_open_shm() returns NULL when HAVE_SYS_EVENTFD_H is #undefined

pa_srbchannel_new() and pa_srbchannel_new_from_template() depend on
pa_fdsem_open_shm() and shall properly cleanup stuff, and return NULL as well;
otherwise, function pa_fdsem_get() will assert:

Assertion 'f' failed at pulsecore/fdsem.c:284, function pa_fdsem_get(). Aborting.

Debian/kFreeBSD doesn't HAVE_SYS_EVENTFD_H

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Cc: David Henningsson <david.henningsson@canonical.com>
9 years agomemtrap: Debian/kFreeBSD seems to signal SIGSEGV, not SIGBUS
Peter Meerwald [Tue, 12 Aug 2014 23:19:37 +0000 (01:19 +0200)]
memtrap: Debian/kFreeBSD seems to signal SIGSEGV, not SIGBUS

handle both signals on Debian/kFreeBSD, otherwise sigbus-test fails:

Running suite(s): Sig Bus
Let's see if this worked: This is a test that should work fine.
And memtrap says it is good: yes
tests/sigbus-test.c:59:E:sigbus:sigbus_test:0: (after this point) Received signal 11 (Segmentation fault)

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Check expected result of sigbus-test
Peter Meerwald [Tue, 12 Aug 2014 23:19:13 +0000 (01:19 +0200)]
tests: Check expected result of sigbus-test

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agocore-util: Avoid warnings when missing certain system calls
Peter Meerwald [Tue, 12 Aug 2014 22:30:01 +0000 (00:30 +0200)]
core-util: Avoid warnings when missing certain system calls

on systems lacking #defines HAVE_ACCEPT4, HAVE_PIPE2, SOCK_CLOEXEC

pulsecore/core-util.c: In function 'pa_open_cloexec':
pulsecore/core-util.c:3348:1: warning: label 'finish' defined but not used [-Wunused-label]
pulsecore/core-util.c: In function 'pa_socket_cloexec':
pulsecore/core-util.c:3370:1: warning: label 'finish' defined but not used [-Wunused-label]
pulsecore/core-util.c: In function 'pa_pipe_cloexec':
pulsecore/core-util.c:3393:1: warning: label 'finish' defined but not used [-Wunused-label]
pulsecore/core-util.c: In function 'pa_accept_cloexec':
pulsecore/core-util.c:3415:1: warning: label 'finish' defined but not used [-Wunused-label]

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agomisc: Fix format specifiers
Peter Meerwald [Tue, 12 Aug 2014 22:21:04 +0000 (00:21 +0200)]
misc: Fix format specifiers

to print a pa_usec_t, the format specifier to use is "%" PRIu64

modules/module-combine-sink.c: In function 'update_latency_range':
modules/module-combine-sink.c:750:5: warning: format '%lu' expects argument of type 'long unsigned int', but argument 6 has type 'pa_usec_t' [-Wformat]
modules/module-combine-sink.c:750:5: warning: format '%lu' expects argument of type 'long unsigned int', but argument 7 has type 'pa_usec_t' [-Wformat]

to print a size_t, use %zu

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agoecho-cancel: Fix spelling of canceller
Peter Meerwald [Tue, 12 Aug 2014 20:28:24 +0000 (22:28 +0200)]
echo-cancel: Fix spelling of canceller

use canceller consistently

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Add *.log and *.trs to src/.gitignore
Peter Meerwald [Tue, 12 Aug 2014 20:21:04 +0000 (22:21 +0200)]
tests: Add *.log and *.trs to src/.gitignore

these files are created by running 'make check'

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agodevice-restore: Sync the database on unload
Tanu Kaskinen [Sun, 17 Aug 2014 10:43:53 +0000 (13:43 +0300)]
device-restore: Sync the database on unload

If there are unsaved changes, those need to be written to disk before
the module is unloaded, otherwise the changes are lost.

9 years agoalsa-mixer: Fix path subset detection
Tanu Kaskinen [Sun, 17 Aug 2014 11:52:29 +0000 (14:52 +0300)]
alsa-mixer: Fix path subset detection

The old logic assumed that if path A was a subset of path B, the
element list in B would have all elements of A in the beginning of
B's list, in the same order as A. This assumption was invalid, causing
some subset cases to not get detected. We need to search through the
full element list of B every time before we can conclude that B
doesn't have the element that we're inspecting.

9 years agoremap: Add 4-channel to mono channel rearrangement
Peter Meerwald [Tue, 29 Jul 2014 15:59:57 +0000 (17:59 +0200)]
remap: Add 4-channel to mono channel rearrangement

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agoecho-cancel: Fix drift timer restart logic across suspend
Arun Raghavan [Mon, 4 Aug 2014 08:21:48 +0000 (13:51 +0530)]
echo-cancel: Fix drift timer restart logic across suspend

The IS_ACTIVE() macro does a pa_sink/source_get_state() on our sink and
source, which does not work in the state change callback, since the
state is not actually committed at that point.

9 years agoresampler: Changed style of includes
Alexander E. Patrakov [Sun, 17 Aug 2014 08:53:08 +0000 (14:53 +0600)]
resampler: Changed style of includes

There was no code that included files from other directories using
the #include "..." style before.

Signed-off-by: Alexander E. Patrakov <patrakov@gmail.com>
9 years agoresampler: Moved speex_is_fixed_point() to speex.c
Alexander E. Patrakov [Sun, 17 Aug 2014 08:53:07 +0000 (14:53 +0600)]
resampler: Moved speex_is_fixed_point() to speex.c

IMHO code that calls into speex belongs in speex.c, not in resampler.c.

Signed-off-by: Alexander E. Patrakov <patrakov@gmail.com>
9 years agoresampler: Split the resampler implementations into separate files
poljar (Damir Jelić) [Mon, 4 Aug 2014 12:40:12 +0000 (14:40 +0200)]
resampler: Split the resampler implementations into separate files

Rebased by Peter Meerwald.

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: poljar (Damir Jelić) <poljarinho@gmail.com>
9 years agoshell-completion: zsh: Add "=" to the end of some command options
Tanu Kaskinen [Sat, 16 Aug 2014 11:48:19 +0000 (14:48 +0300)]
shell-completion: zsh: Add "=" to the end of some command options

Without the equals sign, only the "--server foo" form is recognized,
so the "--server=foo" form doesn't get completion support.

9 years agoshell-completion: zsh: Use -S and -A with _arguments
Tanu Kaskinen [Sat, 16 Aug 2014 11:48:18 +0000 (14:48 +0300)]
shell-completion: zsh: Use -S and -A with _arguments

-S makes the option parser to not try parsing arguments as options
after "--" has appeared in the command line.

-A "-*" makes the option parser to not try parsing arguments as
options after the first non-option argument. The "-*" pattern means
that if there are unrecognized parameters that look like options
(i.e. start with a dash), those should not terminate the option
parsing.

9 years agoshell-completion: zsh: Don't use multiple option sets for one command
Tanu Kaskinen [Sat, 16 Aug 2014 11:48:17 +0000 (14:48 +0300)]
shell-completion: zsh: Don't use multiple option sets for one command

The options were divided to multiple sets to prevent (or at least try
to prevent) completing e.g. --server after -s was already given. This,
however, caused problems, because after the user had written
"pactl --server foo", further completions stopped to work. The
"server" option set didn't contain any other options, so once Zsh
detected that the "server" option set was in use, it thought that no
other options were valid.

The special casing for "-s", "-n", "--server" and "--client-*" at the
end of _pactl_completion() was probably an attempt to deal with this
problem. Those special cases are unnecessary now that the option
specification given to _arguments is more correct.

9 years agoshell-completion: zsh: Don't say "this help" when it's a different help
Tanu Kaskinen [Sat, 16 Aug 2014 11:48:16 +0000 (14:48 +0300)]
shell-completion: zsh: Don't say "this help" when it's a different help

The option descriptions that Zsh prints are not the same thing as the
help text that pactl, pacmd etc. print when given --help.

9 years agoshell-completion: zsh: Support also --server in remote detection
Tanu Kaskinen [Sat, 16 Aug 2014 11:48:15 +0000 (14:48 +0300)]
shell-completion: zsh: Support also --server in remote detection

_set_remote() is supposed to find out if a remote server has been
specified on the command line, but previously it only checked for -s
and ignored --server, causing the completion code to connect to the
local server instead when it should have connected to the remote
server to get the data for the completions.

9 years agoshell-completion: zsh: Move duplicated code into a function
Tanu Kaskinen [Sat, 16 Aug 2014 11:48:14 +0000 (14:48 +0300)]
shell-completion: zsh: Move duplicated code into a function

This is just refactoring, no functional changes.

9 years agoshell-completion: Install the Zsh completions
Tanu Kaskinen [Tue, 12 Aug 2014 09:41:55 +0000 (12:41 +0300)]
shell-completion: Install the Zsh completions

This makes the Zsh completions work out-of-the-box. I also moved
pulseaudio-zsh-completion.zsh to zsh/_pulseaudio to be in line with
the common naming convention of Zsh completion files.

9 years agosink-input, source-output: Assign to reference_ratio from a single place
Tanu Kaskinen [Mon, 4 Aug 2014 18:12:53 +0000 (21:12 +0300)]
sink-input, source-output: Assign to reference_ratio from a single place

This makes it easy to log a message every time the reference ratio
changes. I also need to add a hook for reference ratio changes, but
that need will go away if the stream relative volume controls will be
created by the core in the future.

9 years agoutil: Fix pa_get_binary_name() on Debian/kFreeBSD
Peter Meerwald [Mon, 4 Aug 2014 12:45:23 +0000 (14:45 +0200)]
util: Fix pa_get_binary_name() on Debian/kFreeBSD

Debian GNU/kFreeBSD uses a FreeBSD kernel and GLIBC,
it #defines __FreeBSD_kernel__, but not __FreeBSD__ nor __linux__
Debian GNU/kFreeBSD does have a /proc/self/exe

FreeBSD #defines __FreeBSD__ and __FreeBSD_kernel__

problem reporte here:
http://lists.freedesktop.org/archives/pulseaudio-discuss/2014-July/020998.html

http://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe and
http://stackoverflow.com/questions/933850/how-to-find-the-location-of-the-executable-in-c have some
background info

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Fix mix-test on big-endian systems
Peter Meerwald [Wed, 6 Aug 2014 09:19:57 +0000 (11:19 +0200)]
tests: Fix mix-test on big-endian systems

the mix test code never worked on big-endian systems

patch saves a lot of duplicate test and uses more logical naming

see
http://lists.freedesktop.org/archives/pulseaudio-discuss/2014-August/021035.html

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Reported-by: Felipe Sateler <fsateler@debian.org>
9 years agoendianmacros: Fix PA_MAYBE_INT16_SWAP() macro
Peter Meerwald [Wed, 6 Aug 2014 09:47:34 +0000 (11:47 +0200)]
endianmacros: Fix PA_MAYBE_INT16_SWAP() macro

PA_MAYBE_INT16_SWAP() should call PA_INT16_SWAP(), not PA_INT32_SWAP

PA_MAYBE_INT16_SWAP() is not used (yet), so no big deal :)

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agotests: Cleanup mix-test
Peter Meerwald [Wed, 6 Aug 2014 09:47:33 +0000 (11:47 +0200)]
tests: Cleanup mix-test

indentation and use of fabsf() for floats

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agosconv: Use optimized conversion function for both directions
Peter Meerwald [Mon, 4 Aug 2014 16:20:05 +0000 (18:20 +0200)]
sconv: Use optimized conversion function for both directions

for example, the conversion function for
convert_from_float32ne(PA_SAMPLE_S16LE) can also be used for
convert_to_s16ne(PA_SAMPLE_FLOAT32LE)

v2: ARM can potentially be big- or little endian; only apply
optimization on LE based on WORDS_BIGENDIAN #define (thanks, Tanu)

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agomix: Fix mixing of S24 samples stored as S32RE
Peter Meerwald [Mon, 4 Aug 2014 12:42:00 +0000 (14:42 +0200)]
mix: Fix mixing of S24 samples stored as S32RE

pa_mix_s24_32re_c() should advance m->ptr by sizeof(int32_t)

http://lists.freedesktop.org/archives/pulseaudio-discuss/2014-July/020998.html

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
9 years agoi18n: Updated Brazilian Portuguese translation
Rafael Ferreira [Mon, 21 Jul 2014 12:59:55 +0000 (09:59 -0300)]
i18n: Updated Brazilian Portuguese translation

Signed-off-by: Rafael Ferreira <rafael.f.f1@gmail.com>