Commit graph

70 commits

Author SHA1 Message Date
Arun Raghavan
8baf8e90c2 format: Add API to query a property's type
Since a given property can be single-valued, an array or (in the case of
ints) a range, clients need an API to figure out what type of value a
property holds. This adds such an API. The actual property type
enumeration is kept in the PA_PROP_* namespace and not the
PA_FORMAT_INFO* namespace so that it can later be reused for properties
generically if required.
2012-03-05 20:00:31 +05:30
Arun Raghavan
d9cdaffefe format: Update map-file
Adding property getters manually for now.
2012-03-05 20:00:31 +05:30
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
d6b9e61b90 device-restore: Change the API to include type information (sink vs. source)
This changes the API, but as we have not released yet, this is OK.
2011-08-18 17:33:08 +01:00
Colin Guthrie
fc0a6ee239 device-restore: Various fixes for the protocol extension.
* Fix extension API function export list.
 * Ensure we trigger a subscription event when things change.
 * Send the index with our subscription events.
 * Clear out any existing formats when saving.
 * Call the correct extension command for subscriptions.
2011-08-09 11:01:01 +02:00
David Henningsson
1893234063 protocol-native: Allow clients to know at what index underrun occurred
This patch introduces some extra protocol information, so protocol
version is bumped. This functionality is primarily needed to solve
a long standing issue in alsa-plugins, which should ignore underruns
if and only if it is obsolete, i e, if more data has been written to
the pipe in the meantime (which will automatically end the underrun).

BugLink: http://bugs.launchpad.net/bugs/805940
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2011-08-02 13:59:00 +01:00
Maarten Bosmans
ebf93404b6 Remove libpulse-browse and pabrowse 2011-06-24 10:08:11 +01:00
Colin Guthrie
35f99c6e31 device-restore: Add a new protocol extension for device-restore.
This simply exposes the formats that a device supports
via a simple protocol extension that will allow clients
to setup what a connected receiver supports format wise.
2011-06-22 23:12:19 +01:00
Colin Guthrie
dffc4d18d3 capture: Implement per-stream volume control for capture streams.
This piggy backs onto the previous changes for protocol 22 and
thus does not bump the version. This and the previous commits should be
seen as mostly atomic. Apologies for any bisecting issues this causes
(although I would expect these to be minimal)
2011-06-22 22:45:27 +01:00
Arun Raghavan
1404db3d47 format: Add some convenience API for setting properties
Adds functions to set sample format, rate, channels and channel map on a
format to make life easier for users of the API.
2011-05-15 10:09:35 +05:30
Arun Raghavan
8d076d0990 format: Extend properties to handle lists/ranges
This replaces the simple string used by pa_format_info's proplist with a
JSON string (accessed via new API only). This allows us to express lists
and ranges more cleanly, and embed type information for future
extensibility.

We use json-c for JSON parsing. This is a lightweight depdency (32 KB on
my system) and avoids the hassle of having to reinvent a JSON parser.

Also included is a test which verifies functionality and is
valgrind-clean.
2011-05-15 10:09:35 +05:30
Arun Raghavan
13a33abf45 format: Export pa_format_info_is_compatible in API
This allows clients to perform checks between formats as well.
2011-05-15 10:09:35 +05:30
Arun Raghavan
dedbc942ab stream: Add API to get a stream's pa_format_info 2011-05-02 11:55:38 +05:30
Arun Raghavan
8631f4e2c4 format: Add some convenience functions for printing 2011-05-02 11:55:38 +05:30
Arun Raghavan
54c391e6db format: Add convenience API to check if a format is PCM or not 2011-05-02 11:54:47 +05:30
Arun Raghavan
0ac2cfce6d core: Add extended stream API to support compressed formats
This is the beginning of work to support compressed formats natively in
PulseAudio. This adds a pa_stream_new_extended() that takes a format
structure, sends it to the server (=> protocol extension) and has the
server negotiate with the appropropriate sink to figure out what format
it should use.

This is work in progress, and works only with PCM streams. Actual
compressed format support in some sink needs to be implemented, and
extensive testing is required.

More details on how this is supposed to work is available at:
http://pulseaudio.org/wiki/PassthroughSupport
2011-05-02 11:54:43 +05:30
Arun Raghavan
c3839c7637 core: Add a pa_format_info structure
This will be used to represent the format of data provided by the client
for both compressed and PCM formats in a new extended API.
2011-05-02 10:17:20 +05:30
Vladimir Kokarev
d2c59354d5 volume: add pa_cvolume_inc_clamp function
added function to increase volume not exceeding specified limit
simply changed PA_VOLUME_MAX to 'limit' in pa_cvolume_inc
pa_cvolume_inc now calls pa_cvolume_inc_clamp with PA_VOLUME_MAX limit
2009-11-05 04:56:47 +01:00
Lennart Poettering
4538523a29 libpulse: introduce pa_context_get_tile_size() call 2009-10-28 23:26:48 +01:00
Lennart Poettering
d0b478e9a6 Merge remote branch 'coling/history' 2009-10-07 03:46:06 +02:00
Colin Guthrie
f9b2d6500b device-manager: Change the prefer/defer options to a single 'reorder' command.
We put in the devices from the wire into a hashmap and then add all like type device in the database
and then order them based on priority (with the ones specified on the wire always being in that order at
the top of the list.
2009-10-01 09:08:32 +01:00
Colin Guthrie
1e2d236b99 device-manager: Update exports 2009-10-01 09:08:31 +01:00
Colin Guthrie
0b3b037e22 device-manager: Export device-manager extension functions 2009-10-01 09:08:28 +01:00
Tanu Kaskinen
292d6dcb5f Merge branch 'master' of git://0pointer.de/pulseaudio into dbus-work 2009-08-19 09:20:02 +03:00
Lennart Poettering
cfef930036 volume: introduce pa_cvolume_{inc|dec}() 2009-08-19 02:32:36 +02:00
Lennart Poettering
d634555a3e volume: introduce pa_cvolume_min() and pa_cvolume_min_mask() 2009-08-19 00:56:16 +02:00
Lennart Poettering
8208214882 volume: add pa_cvolume_merge() call 2009-08-17 03:40:36 +02:00
Tanu Kaskinen
bcaba0b1b4 Merge branch 'master' of git://0pointer.de/pulseaudio into dbus-work
Conflicts:
	src/Makefile.am
	src/daemon/daemon-conf.c
	src/daemon/daemon.conf.in
	src/modules/module-stream-restore.c
	src/pulse/client-conf.c
	src/pulsecore/namereg.c
2009-08-16 21:25:48 +03:00
Tanu Kaskinen
1457df40ee proplist: New function: pa_proplist_equal() 2009-08-09 07:59:06 +03:00
Lennart Poettering
e02e0259e5 client: include zerocopy write calls in map file 2009-07-23 20:00:08 +02:00
Marc-André Lureau
0955e3d45b Base mainloop on pa_rtclock_now()
Move the mainloop to monotonic based time events.

Introduces 4 helper functions:
pa_{context,core}_rttime_{new,restart}(), that fill correctly a
timeval with the rtclock flag set if the mainloop supports it.

Both mainloop-test and mainloop-test-glib works with rt and timeval
based time events. PulseAudio and clients should be fully functional.

This patch has received several iterations, and this one as been
largely untested.

Signed-off-by: Marc-André Lureau <marca-andre.lureau@nokia.com>
2009-06-20 17:29:31 +03:00
Marc-André Lureau
125c528896 pulse: move pa_rtclock_now in pulsecommon 2009-06-20 17:29:08 +03:00
Lennart Poettering
914ef89e55 libpulse: implement client side for sink/source port selection commands 2009-06-17 04:54:11 +02:00
Lennart Poettering
d9939690ed channelmap: implement pa_channel_position_from_string() 2009-06-17 03:05:30 +02:00
Lennart Poettering
64b0f38b67 volume: implement functions for multiplicating a cvolume with a scalar 2009-06-17 03:04:21 +02:00
Lennart Poettering
8b180b6368 volume: implement pa_cvolume_{scale|max|avg}_mask() 2009-05-25 23:55:44 +02:00
Lennart Poettering
5f2d848d8e map-file: add missing channel map/cvolume position functions 2009-05-25 23:54:08 +02:00
Lennart Poettering
01fa34ba8a channelmap: introduce pa_channel_map_mask() and pa_channel_position_mask_t 2009-05-25 23:51:34 +02:00
Lennart Poettering
261a4830fb sample: introduce pa_proplist_setp() 2009-05-25 23:50:18 +02:00
Lennart Poettering
346a708c2c sample: introduce pa_sample_format_is_{le,be,ne,re}() 2009-05-25 23:49:47 +02:00
Lennart Poettering
0aa99c48d0 add buffer_attr callback stuff to exported symbol list 2009-04-01 00:33:40 +02:00
Lennart Poettering
823431e447 allow sending meta/policy events to clients 2009-02-12 03:18:05 +01:00
Lennart Poettering
0fc59e4585 add new API pa_ascii_valid(), pa_ascii_filter() 2009-02-04 17:11:56 +01:00
Lennart Poettering
ce76216bce add pa_sample_size_of_format() 2009-02-04 17:10:15 +01:00
Lennart Poettering
543115ae17 add new API pa_cvolume_compatible_with_channel_map() 2009-02-03 21:15:32 +01:00
Lennart Poettering
b979ab3948 implement pa_channel_map_can_fade 2009-01-31 01:17:09 +01:00
Lennart Poettering
1b53f8297f implement pa_cvolume_{get|set}_fade 2009-01-30 00:22:59 +01:00
Lennart Poettering
4e31e00b63 implement pa_cvolume_scale() 2009-01-27 00:47:07 +01:00
Lennart Poettering
e52c5ea68a implement new API functions pa_channel_map_can_balance(), pa_channel_map_to_name() and pa_channel_map_to_pretty_name() 2009-01-27 00:46:39 +01:00