Commit graph

6608 commits

Author SHA1 Message Date
Arun Raghavan
97f2d6b347 core: Fix a litte-endian bug in ARM svolume code
The old code seems to be written for big-endian code.
2012-10-19 19:44:10 +05:30
Arun Raghavan
600e3daa56 core: Document ARM-optimised svolume code a bit 2012-10-19 19:44:10 +05:30
Arun Raghavan
b87067a007 tests: Minor cpu-test reorganisation
Make volume and conversion tests separate test cases.
2012-10-19 19:44:10 +05:30
Arun Raghavan
f8017bb19d tests: Factor out ARM svolume test into cpu-test
This allows us to run the testing code separately from the PulseAudio
daemon, which makes developing / regression testing this code a lot
easier.
2012-10-19 19:43:30 +05:30
Arun Raghavan
60660a1aec core: Separate ARM CPU detection from initialisation
This separate the ARM CPU feature detection code from the initialisation
so that we can reuse it in tests, like we did for x86 a while back.
2012-10-19 19:01:16 +05:30
Mikel Astiz
2e303b8600 bluetooth: Remove stream moving code
Remove stream moving policies from module-bluetooth-device. It is not
clear if such policies are needed at all and in case yes, they should be
implemented in module-bluetooth-policy.
2012-10-18 20:01:52 +03:00
David Henningsson
9e1627e2a3 cli: Output asterisk when default sink/source is found
These days we don't set core->default_sink/source as soon as somebody
asks for it. To retain consistent behaviour (i e the asterisk),
we need to call pa_namereg_get_default_sink/source.

Reported-by: Daniel Manrique <daniel.manrique@canonical.com>
Reported-by: Brendan Donegan <brendan.donegan@canonical.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-10-16 16:10:13 +02:00
Mikel Astiz
fcaef8285a bluetooth: Unlink sink-sources in stop_thread()
Avoid duplicated code by moving the unlinking of sinks and sources to
stop_thread(). After all, they need to be unlinked when the thread is
stopped.
2012-10-14 19:31:43 +03:00
Mikel Astiz
8560b495bd bluetooth: Release transport in stop_thread()
Avoid duplicated code by releasing the transport inside stop_thread(),
along with the rest of the thread-related cleanup.
2012-10-14 19:31:40 +03:00
Mikel Astiz
0c5054e04a bluetooth: Don't find device if set profile is off
If the card is being set to off profile, it is not necessary to check
if the device exists. This could potentially happen during shutdown,
immediately before the module is unloaded.
2012-10-14 19:25:29 +03:00
Mikel Astiz
b76ee00873 bluetooth: Fix potential assertion failure
It might happen that a PropertyChanged signal is received but the
corresponding card profile has not been created, leading to an assertion
failure in filter_cb() due to inexistent ports. This can happen if BlueZ
misbehaves, or also if the UUIDs are reported later on (i.e. during
pairing discovery). In any case, the signal should just be ignored.
2012-10-14 19:20:58 +03:00
Mikel Astiz
94dbf25e81 bluetooth: Trivial function rename
Former setup_bt() was just setting up the transport, so it's easier to
follow if the function name makes this more explicit.
2012-10-14 19:17:01 +03:00
Mikel Astiz
67c0090556 bluetooth: Ignore Device.DisconnectRequested
Handling the signal DisconnectRequested should be unnecessary since the
profile-specific interfaces will be later disconnected, leading to
module unload.

Additionally, the signal is problematic: if an interface (i.e.
A2DP AudioSource) is playing at the time DisconnectRequested is
signaled, the following sequence can occur:

1. AudioSource is playing
2. DisconnectRequested is received
3. Module is unloaded due to DisconnectRequested
4. AudioSource state changes from playing to connected
5. module-bluetooth-discover loads the module
6. AudioSource state changes from connected to disconnected

Therefore the module is unnecessarily loaded, to be unloaded immediately
afterwards. This can easily be reproduced if a device is unpaired while
the audio is streaming.

The simplest solution to this consists of removing step 3, by just
ignoring the DisconnectRequested signal. This reverts commit
8169a6a6c9.
2012-10-14 19:16:21 +03:00
Chan-yeol Park
f0432ce6ae bluetooth: Remove ipc.[ch] files in the bluetooth module
These files are remove in the bluez project.
In case of definitions in the ipc files
we could use defintions in the a2dp-codecs.h
2012-10-06 14:38:59 +03:00
Deng Zhengrong
67602d8743 tests: make 'check' optional 2012-10-04 16:49:00 +03:00
David Henningsson
ba0203c4c0 alsa-mixer: Remove analog-output-lfe-on-mono
Upstreamed from Debian: "Although in principle Ac '97 hardware has a
separate mono LFE pin nothing seems to use it. To make matters worse
it does confuse PulseAudio's port selection slightly which causes
audio in virtualbox not to work out of the box."

Credit: Sjoerd Simons <sjoerd@debian.org>
Credit: Martin-Éric Racine <martin-eric.racine@iki.fi>
BugLink: https://bugs.launchpad.net/bugs/1016969
BugLink: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=673847
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-10-04 13:32:35 +02:00
David Henningsson
2caafa7741 alsa-mixer: Cache failure to open inputs/output mappings
I was hoping this would improve bootup speed, but it doesn't seem
to do so here, at least not much. But at least it reduces the logs
a little.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-10-03 00:15:45 +03:00
Colin Walters
f16a532e88 git-version-gen: Honor GIT_DESCRIBE_FOR_BUILD environment variable
The GNOME-OSTree build system currently creates chroots and bind
mounts to the source tree outside the root; this means that we can't
necessarily run git inside the root, because in the case of git
submodules, the .git repository will point to outside root.

Also, error out fatally if we fail to determine the version; it
makes no sense to put UNKNOWN in e.g. the pkg-config files
since this will just cause errors later on.
2012-09-27 15:22:10 +03:00
Mikel Astiz
bf0a640cfd bluetooth: Add port availability transition policies
Handle availability changes in Bluetooth ports inside
module-bluetooth-policy. The implemented behavior is similar to how
module-switch-on-port-available behaves, but the conditions are more
relaxed and thus more profile changes are triggered.
2012-09-26 19:52:10 +08:00
Mikel Astiz
d84e36563c bluetooth: Let suspend-on-idle request audio in headset
When PA is doing gateway role, let module-suspend-on-idle resume the
audio stream automatically. This will work until the user (or the remote
side, which we also consider user-initiated) suspend the stream
manually.
2012-09-26 19:52:10 +08:00
Mikel Astiz
e492f2912e 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.
2012-09-26 19:27:15 +08:00
Mikel Astiz
cb2a6d34f6 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.
2012-09-26 19:27:15 +08:00
Mikel Astiz
ebadda816d 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.
2012-09-26 19:27:14 +08:00
Mikel Astiz
b8fd6f869e bluetooth: Do not acquire transport during profile change
Until today, setting the card to some profile resulted in a transport
acquisition, leading to audio stream setup. This is generally not very
interesting and even undesireable for HFGW use-cases, where the
Gateway role (the remote end) would typically request the SCO link.

Nevertheless, there is no safe way to implement such check without race
conditions, since the BlueZ's state can change between the state report
and the call to Acquire(). The chances for this to reproduce are quite
low though, since interface state changes are relatively slow.

This race condition requires that BlueZ's API is extended in order to
perform the operation atomically, which has already been discussed and
ack-ed in the BlueZ mailing list.

Note that this patch does not introduce a new race condition, since it
already existed before (the PropertyChanged->Acquire race condition,
affecting HFGW use-cases). It is just more explicit now.
2012-09-26 19:27:14 +08:00
Mikel Astiz
884d1d46ca bluetooth: Set profile even if transport not acquired
If the acquisition of the transport fails, the profile should still be
set. In this case the audio is not actually streaming, so the sink and
source will be created but left suspended.

If the transport needs to be acquired later, for example because the
user wants to route the audio the remote device, the suspend flag should
have to be changed.
2012-09-26 19:27:14 +08:00
Mikel Astiz
dcc11dcbe9 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.
2012-09-26 19:27:14 +08:00
Mikel Astiz
4cc4c30187 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.
2012-09-26 19:27:14 +08:00
Mikel Astiz
2a7d001c97 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.
2012-09-26 19:27:14 +08:00
Mikel Astiz
f280e8b50d 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.
2012-09-26 19:27:14 +08:00
Mikel Astiz
0ee5fa6377 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().
2012-09-26 19:27:14 +08:00
Mikel Astiz
76248fd8f2 bluetooth: Fix using garbage memory
module-bluetooth-policy should set the allocated memory to zero, in
order to handle failure cases properly.
2012-09-26 19:27:14 +08:00
Mikel Astiz
9a5330e601 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.
2012-09-26 19:27:14 +08:00
Mikel Astiz
38de0af64e 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.
2012-09-26 19:27:14 +08:00
Mikel Astiz
431f56fd68 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.
2012-09-26 19:27:14 +08:00
Mikel Astiz
4d2748ef5c 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.
2012-09-26 19:27:13 +08:00
Mikel Astiz
49f5c111bd 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.
2012-09-26 19:27:13 +08:00
Matthijs Kooijman
3d2d30f688 equalizer: Don't cleanup u->sink in sink_input_kill_cb yet
Previously, sink_input_kill_cb would cleanup u->sink an then unload the
module. However, during module unload, both save_state and dbus_done
tried to use u->sink, causing a segfault or assertion failure.

The segfault is easy to reproduce: Load module-equalizer-sink and then
press ctrl-C to terminate pulseaudio.

This commit removes the u->sink cleanup in sink_input_kill_cb, since
u->sink will be cleaned up by the module's pa__done as well (after it
has been used).

Signed-off-by: Matthijs Kooijman <matthijs@stdin.nl>
2012-09-25 20:39:15 +03:00
Andika Triwidada
626085ed9c i18n: Add Indonesian translation. 2012-09-23 20:19:45 +03:00
David Henningsson
24034ed715 flist: Increase default list size to 256
Nowadays, we are using more hashmaps and other things, than we did
before. Therefore, I often get the "flist is full (don't worry)"
message. This change should avoid that message. I was unable to find
any significance in increase of memory footprint from this change.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-09-23 13:12:54 +03:00
David Henningsson
6174c207d2 alsa-mixer: Add "iec958-stereo-input" to well known path names
Interestingly, the name is properly matched even though there
is no paths/iec958-stereo-input.conf file.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-09-21 12:06:56 +02:00
Arun Raghavan
f72a32151c stream: Allow record streams to start muted
This check was valid before we introduced per-source-output volumes, so
dropping it now. Thanks to Alban Browaeys <prahal@yahoo.com> for
catching this.
2012-09-21 15:42:37 +08:00
Mikel Astiz
5412a69cac loopback: Disable adjust timer when suspended
Stop the rate adjustment timer when no audio is flowing.
2012-09-21 10:38:15 +03:00
Frédéric Dalleau
6c916697bc 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.
2012-09-21 10:32:32 +03:00
Frédéric Dalleau
e90e19f457 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.
2012-09-21 10:25:13 +03:00
Flavio Ceolin
2c8aa18b1d sink-input: Remove redundant check in pa_sink_input_request_rewind().
This bug is part of the problems spotted by Tanu.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=53923
2012-09-16 09:47:43 +03:00
Arun Raghavan
3e3c9ef67b Revert "build: Merge bluez pkg-config checks into one"
Keeping the SBC check separate means we can keep the SBC_LIBS/CFLAGS
separate, which is cleaner. Thanks to Jan Steffens for pointing out that
this was broken (SBC_* wasn't actually changed to match the configure
change).

This reverts commit da5078e5c7.
2012-09-07 23:45:12 +05:30
Tanu Kaskinen
6b52b47856 .gitignore: Add cpu-test. 2012-09-07 17:22:10 +03:00
Arun Raghavan
da5078e5c7 build: Merge bluez pkg-config checks into one 2012-09-06 09:07:34 -07:00
Tanu Kaskinen
1f1db97b65 bluetooth: Remove commented out code. 2012-09-06 15:59:34 +03:00
Luiz Augusto von Dentz
75df8714d7 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.
2012-09-06 15:59:34 +03:00