Commit graph

6038 commits

Author SHA1 Message Date
Colin Guthrie
093d2d6bb5 build-sys: bump soname 2011-09-27 08:56:06 +01:00
Colin Guthrie
002726436b build-sys: Switch to the tar-ustar format (as per a lot of GNOME stuff for 3.2) and distribute .xz files.
We will drop .gz support after 1.0
2011-09-27 08:55:17 +01:00
David Henningsson
0cebb630da Fix crash in threaded message queues
Once in a million or so, this typo causes a crash when two threads
simultaneously try to call "pa_asynqmsgq_write_poll".

BugLink: http://bugs.launchpad.net/bugs/853560
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-09-25 13:44:34 +01:00
David Henningsson
165bd13d9e dbus: Don't crash if the module does not load
If module-dbus-protocol fails to start, pa__done is still called,
which falsified the assumption that u->connections was always set.

BugLink: http://bugs.launchpad.net/bugs/855729
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-09-22 23:15:18 +05:30
Arun Raghavan
cae3235369 sink,source: Handle missing in the shared volume case
This makes sure that when we're traversing the device chain for sources
and sinks with shared volume, we handle the case that a sink-input or
source-output of one of these might be unlinked (while unloading a
module, for example).
2011-09-21 23:00:02 +05:30
Colin Guthrie
fde703be75 build-sys: bump soname 2011-09-15 11:30:47 +01:00
David Henningsson
766dbc6838 conf: Make sure module-dbus-protocol is loaded after module-default-device-restore
module-dbus-protocol gets the default sink, which sets the default sink
if not already set. This is turn makes module-default-device-restore do
nothing.
To solve the problem, make sure module-default-device-restore is loaded
before module-dbus-protocol and not the other way around.

BugLink: http://bugs.launchpad.net/bugs/843780
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-09-15 06:40:18 +05:30
David Henningsson
f8624a7876 sink,source: Avoid crash by not updating volume on shutdown
Sometimes the ALSA mixer can be modified during a point at shutdown
which causes a race condition trying to update the volume of an
unlinked sink.

Includes typo fix by our Chief Typo Spotter, Colin, and a clarifying
comment by me.

BugLink: http://bugs.launchpad.net/bugs/841968
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-09-14 15:47:17 +05:30
Arun Raghavan
38be4a2d44 echo-cancel: Use volume sharing by default
Uses the shared volume infrastructure by default with an option to
fallback on the old pretend-volume-sharing-that-kind-of-works if someone
wants it that way.

Users who keep left != right (or any sort of unbalanced channel volumes)
will likely want to disable shared volumes since it will cause their
master sink/source volume to be balanced.

This really isn't a very pleasant scenario since users would need to
manually set up echo cancellation in their config for this (until we
have a way to store module configuration). That said, the majority case
benefits from the volume sharing, so let's not wait for the
configuration infrastructure to be ready to use this.
2011-09-14 14:15:01 +05:30
Arun Raghavan
ec099f9306 equalizer: Use volume sharing by default
Uses the shared volume infrastructure by default with an option to
fallback on the old pretend-volume-sharing-that-kind-of-works if someone
wants it that way.
2011-09-14 14:15:01 +05:30
Arun Raghavan
baccd26b6a virtual: Make volume sharing on by default
People who use this code (i.e. mostly filters) would presumably want
volume sharing on by default.
2011-09-14 14:15:01 +05:30
Arun Raghavan
2ef7bc6a80 volume: Handle varying channel count for shared volumes
This handles the case where a virtual sink/source and it's master have
different channel counts. The solution is not ideal because if the
former has fewer channels and the master has channel volumes that are
not all at the same level, it will lose this information and have all
channels at the same level.

This is not just a theoretical problem, since module-echo-cancel
prefers a mono virtual source/sink and will usually be sitting on top of
a stereo ALSA source/sink.

That said, I don't really see a good solution to this problem, so the
idea is to make volume sharing optional (on by default) in
module-echo-cancel, so that the few people who care can then disable it
if they so desire.
2011-09-14 14:15:01 +05:30
Arun Raghavan
a9c85074cb def: Hide server-side sink/source flags
This makes sure that sink/source flags that are used on the server side
only are not leaked to clients.
2011-09-14 14:02:12 +05:30
Arun Raghavan
ec4f256493 stream: Relax assert for extended API
For some reason this assert wasn't triggered earlier -- we shouldn't be
looking at the stream sample_spec if the formats API is used.
2011-09-14 13:55:58 +05:30
Antonio Ospite
3cae4a0606 doc: Add info about running pulseaudio from the build dir 2011-09-14 09:23:41 +01:00
Colin Guthrie
ba2ad514c2 doc: Update README with fresh links. 2011-09-14 09:23:38 +01:00
David Henningsson
f0ad6fd413 raop: Don't crash if fd is not open when trying to close it
BugLink: http://bugs.launchpad.net/bugs/845286
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-09-14 09:23:38 +01:00
Colin Guthrie
aa3142ab20 volume: Rename 'sync volume' to 'deferred volume'.
This just covers Lennart's concern over the terminology used.

The majority of this change is simply the following command:
 grep -rli sync[-_]volume . | xargs sed -i 's/sync_volume/deferred_volume/g;s/PA_SINK_SYNC_VOLUME/PA_SINK_DEFERRED_VOLUME/g;s/PA_SOURCE_SYNC_VOLUME/PA_SOURCE_DEFERRED_VOLUME/g;s/sync-volume/deferred-volume/g'

Some minor tweaks were added on top to tidy up formatting and
a couple of phrases were clarified too.
2011-09-13 21:15:49 +01:00
Colin Guthrie
83577aa373 build-sys: Oops forgot to add the Kinect profile to the build system. 2011-09-09 19:55:09 +01:00
Colin Guthrie
27343ed79a raop: Properly deal with the name coming from the device.
We need to properly quote our proplist arguments passed to the module.
2011-09-09 19:51:02 +01:00
Colin Guthrie
3542112888 modargs: Ensure modargs can be accessed in their raw form.
When dealing with proplists passed as modargs, we need the unescaped form
in order to properly deal with quotes (ticks + double quotes). As the previous
code always called pa_unescape() before adding it into the modarg hashmap, this
was impossible.

This modification simply stores two proplists. If the unescaped value
is different from the raw value, we also keep the raw form.

When parsing proplist arguments, we use this raw form and do the unescaping
ourselves when processing it.

This changes the current behaviour which required you to double escape
proplists arguments. This double escape mechanism did allow you to mix
and match what types of quotes you used to delimit the individial
proplist values, but it made the actual data much harder to pass in.

This approach has the drawback that you cannot mix and match the quotes
you use, but this is a very minor issue and IMO pales in comparison to
the general clarity gained.

See the discussion on the mailing list for more background:
 http://lists.freedesktop.org/archives/pulseaudio-discuss/2011-September/011220.html
2011-09-09 19:50:49 +01:00
Antonio Ospite
e93b32744c alsa-mixer: Add support for the Microsoft Kinect Sensor device
The Kinect shows up as a UAC device after the firmware has been loaded,
but in order to be detected by pulseaudio a 4-channels input only
mapping is needed. Provide a new profile for that and set it with a udev
rule.

fdo#39664
2011-09-09 19:48:03 +01:00
Maarten Bosmans
3ebc8f8e88 module-suspend-on-idle: Move vacuum code to core
pa_core_maybe_vacuum now vacuums if there are either no streams or all devices are suspended.
The mempool_vacuum argument to module-suspend-on-idle is gone and defaults to true now.
2011-09-09 09:55:48 +01:00
Colin Guthrie
db704130d6 alsa: Tidy up argument descriptions 2011-09-07 21:16:03 +01:00
Colin Guthrie
69fe26206f bluetooth: Bump DBus version to 1.3.0 and drop conditional code.
We used to support older DBus versions but 1.3.0 is two years old
now and by requiring it we cut down of deviated code paths at
runtime and thus have less support issues.

fdo#40635
2011-09-07 20:33:13 +01:00
Tanu Kaskinen
badc32adb9 loopback: New modargs: sink_input_properties and source_output_properties.
The new modargs replace sink_input_name, sink_input_role,
source_output_name and source_output_role.
2011-09-07 20:31:50 +01:00
Colin Guthrie
d36a9df63c raop: Use the port supplied by avahi when connecting to RAOP devices.
The Apple TV for example uses a non-default port, but we previously ignored
this. We now correctly parse the server string but in so doing, we end up
parsing the address twice. As we need a pure IP/hostname of the device itself
to use in our requests, this is somewhat unavoidable.

Sadly there are still other problems with Apple TVs, but this is still
one step closer.

Fixes part of #950
2011-09-05 22:23:17 +01:00
Colin Guthrie
8e298848be device-restore: Fix use-after-free error. 2011-09-05 20:29:36 +01:00
Colin Guthrie
03b97d0e08 formats: Export more functions needed for a clean build.
All of these functions are not actually defined in format.h
(they are defined in internal.h) and thus should really be
included only in libpulsecommon and implemented in a separate
source file.

However if that approach was taken, and these functions were
included in libpulsecommon, then they would have a link time
dependancy on libpulse (as these four functions use other
pa_format_info_* functions). As the opposite is already true
(libpulse depends on libpulsecommon), this is not possible as
it creates a circular dependancy.

Thus the only option is to just to include these four functions
in the map-file, but not actually export any public headers for
them. Of course users could use this implementation by defining
them in their own headers, but the only practical problem
with this approach is naming conflicts which is unlikely to happen.

fdo#40616
2011-09-05 10:33:17 +02:00
Colin Guthrie
1595608b0b formats: The format code should be in libpulse, not libpulsecommon
Without this change any applications calling e.g. pa_format_info_new()
and friends will be explicitly linked against libpulsecommon-$MAJORMINOR.so
which is something we specifically avoid as it may contain ABI/API unstable
functions.

Also ensure we export pa_format_info_from_string() for external use.

fdo#40616
2011-09-05 10:32:28 +02:00
Colin Guthrie
2b96fdfd25 stream-restore: Add proper data validity checks to the legacy database entry read. 2011-09-04 12:54:41 +02:00
Colin Guthrie
e7b65d310d stream-restore: Add in some variable sets that were missing from 9ffa93.
This broke the conversion of the stream-restore database from
previous versions.
2011-09-04 12:28:07 +02:00
Colin Guthrie
47c9d8cf92 device-restore: Simplify the migration of data to per-port keys.
Rather than write all the keys out for each port, simply write a 'null'
port entry and modify the read code to 'fallback' to this when it cannot
find a key. This is needed as the code used when writing the key may not
actually have the sink ports available at the time it uses them,
and thus can cause a segv. This approach adds some degree of overhead
but it's relatively minimal and it can be mitigated by compiling
without support for legacy database formats if so desired.

Thanks to David Henningsson for pointing out the problem.
2011-09-03 12:47:10 +02:00
Maarten Bosmans
9133c6c935 Make gcc --std=c99 happy
We're now more or less C99 compliant
2011-09-03 12:17:28 +02:00
Maarten Bosmans
dfd706da71 Squash the last gcc warnings 2011-09-03 12:17:13 +02:00
Maarten Bosmans
647048ebc4 module-equalizer-sink: Use correct limit in loop 2011-09-03 12:16:54 +02:00
Maarten Bosmans
3d04a05736 bluetooth/sbc: Use __asm__ keyword 2011-09-03 12:16:49 +02:00
Maarten Bosmans
918f168c15 module-equalizer-sink: Use = in initialising variables
This makes the compiler in C99 mode happy
2011-09-03 12:15:51 +02:00
Maarten Bosmans
fc3ddfb7f5 module-equalizer-sink: Use %z for printf of size_t variables 2011-09-03 12:15:36 +02:00
David Henningsson
96369919e5 alsa-mixer: Set "Front" control to 0 dB on headphone path
I've seen more than one system where the volume control named
"Front" is a part of audio path for headphones. This is somewhat
of a compromise: While we don't merge it into the path, as that
would be regressing machines where "Front" isn't a part of the
audio path, it would still enable sound on these machines.

BugLink: http://bugs.launchpad.net/bugs/804178
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-09-03 12:14:54 +02:00
David Henningsson
c7bba2464d module-switch-on-connect: Don't switch unlinked sink input and source outputs
Unlinked streams can not be moved, so don't try.

BugLink: http://bugs.launchpad.net/bugs/837386
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-08-31 18:49:44 +05:30
Arun Raghavan
fb107fc770 vala: Add has_type_id=false to all enums, structs and classes
Since none of our types is derived from GType, explicitly signal this.
The default value for this attribute changed at some point, breaking our
bindings.
2011-08-31 11:35:35 +05:30
Colin Guthrie
b68336870f build-sys: bump soname 2011-08-29 18:07:02 +01:00
Arun Raghavan
3fd07a33ee equalizer: Comment out unused function
Gets rid of a compiler warning
2011-08-29 22:14:04 +05:30
Arun Raghavan
394d8a6b6b echo-cancel: Get rid of annoying compiler warnings 2011-08-29 22:13:44 +05:30
Arun Raghavan
837ac4c225 echo-cancel: Don't allow streams to attach while unloading
When unloading, some module may end up trin to move a sink-input or
source-output back onto our virtual sink/source, causing an infinite
loop of us moving the stream away and having it moved back.

We prevent this from happening by preventing any stream from being
attached during unload.
2011-08-29 21:42:57 +05:30
Arun Raghavan
fe52c351c3 echo-cancel: Make save_aec modarg a bool instead of an int 2011-08-29 21:42:57 +05:30
Lu Guanqun
cef16430d0 pacat: make pacat respond to cork/uncork events
Pacat remembers the number of cork requests, and then cork/uncork the stream
accordingly.

With this change, it makes below test script work correctly:

	pacat -p --property=media.role="music" <long-sound> &
	sleep 2
	pacat -p --property=media.role="phone" <short-sound>
	wait

Initial idea by Lu Guanqun, but modified by Colin Guthrie (so blame
me if it's broken)
2011-08-29 10:31:46 +01:00
David Henningsson
c862c5caa4 Set better priorities on input paths
The priorities should be set in the approximately likeliness that someone
would like to use them. This is hard to guess of course, but this is
a better guess compared to the existing configuration.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-08-29 10:05:24 +01:00
Arun Raghavan
ed4a4480dc passthrough: Fix setting volume to unamplified again
Thanks to Tanu for pointing out the (possibly pathological?) case that
base_volume might be >0dB.
2011-08-29 14:32:27 +05:30