Commit graph

825 commits

Author SHA1 Message Date
Lyndon Brown
31eb433d7b stream: pa_stream_get_context: constify 2018-06-21 06:30:25 +05:30
Lyndon Brown
6ab533c7aa stream: pa_stream_get_state: constify 2018-06-21 06:30:25 +05:30
Lyndon Brown
a24be6cc13 operation: pa_operation_get_state: constify 2018-06-21 06:30:25 +05:30
Lyndon Brown
9b5077c468 mainloop: constify get_retval functions 2018-06-21 06:30:25 +05:30
Lyndon Brown
277c3735df context: pa_context_get_state: constify 2018-06-21 06:30:25 +05:30
Lyndon Brown
326b749a78 context: pa_context_get_protocol_version: constify 2018-06-21 06:30:25 +05:30
Lyndon Brown
c0a70e8db8 context: pa_context_new_with_proplist: constify proplist param 2018-06-21 06:30:25 +05:30
Lyndon Brown
d851021cf5 volume: pa_cvolume_get_position: constify 2018-06-21 06:30:25 +05:30
Lyndon Brown
5c2d28f6df scache: pa_context_play_sample_with_proplist: constify proplist param
If the given proplist is NULL, the function creates a new (empty)
proplist. That caused a compiler warning after the constification, which
is why the new proplist is now created using a separate variable.
2018-06-21 06:30:25 +05:30
Lyndon Brown
f17bcb0ad5 scache: pa_context_play_sample_with_proplist: clarify proplist param
Existing documentation was unclear about which property list would be the
one changed (merged into), making it seem (along with the non-const
proplist pointer param, which needs changing seperately), that the proplist
object for which a pointer is given will be the one merged into, instead of
the internal cached entry's proplist.
2018-06-21 06:30:25 +05:30
Lyndon Brown
4af27c25d2 proplist: pa_proplist_equal: constify proplist pointers 2018-06-21 06:30:25 +05:30
Lyndon Brown
2562446c4a proplist: pa_proplist_[size|isempty]: constify proplist pointer 2018-06-21 06:30:25 +05:30
Lyndon Brown
5a146049df proplist: pa_proplist_contains: constify proplist pointer 2018-06-21 06:30:25 +05:30
Lyndon Brown
25b55284db proplist: pa_proplist_to_string[_sep]: constify proplist pointer 2018-06-21 06:30:25 +05:30
Lyndon Brown
6161e106c0 context: pa_context_proplist_update: constify proplist pointer 2018-06-21 06:30:25 +05:30
Lyndon Brown
58c3f9b671 proplist: pa_proplist_gets: constify proplist pointer 2018-06-21 06:30:25 +05:30
Lyndon Brown
cc063264e6 proplist: pa_proplist_get: constify proplist pointer 2018-06-21 06:30:25 +05:30
Lyndon Brown
5d101fd2e2 proplist: pa_proplist_iterate: constify proplist pointer 2018-06-21 06:30:25 +05:30
Lyndon Brown
e82506f08d proplist: add and use const version of MAKE_HASHMAP macro 2018-06-21 06:30:25 +05:30
Arun Raghavan
878ef44079 core: Expose API to elevate a thread to realtime priority
This should make it easier for clients to elevate their audio threads to
real time priority without having to dig through much through specific
system internals.
2018-06-21 06:29:32 +05:30
Pierre-Louis Bossart
cdeac17801 format: Add support for Dolby TrueHD and DTS-HD HBR passthrough
Add definitions and fixups for channel count

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2018-06-21 06:29:32 +05:30
Arun Raghavan
114cdfbdde build-sys: First pass at a meson-ified build system
This is a working implementation of a build with meson. The server,
utils, and most modules build with this, and it is possible to run from
a build tree and play/capture audio on ALSA devices.

There are a number of FIXMEs, of course, and a number of features that
need to be enabled (modules, dependencies, installation, etc.), but this
should provide everything we need to get there relatively quickly.

To use this, install meson (distro package, or mesonbuild.com) and run:

  $ cd <pulseaudio src dir>
  $ meson <builddir>
  $ ninja -C <builddir>
2018-06-21 05:50:29 +05:30
Arun Raghavan
2062fc8b0e client-conf: Add a default value for disable-memfd
This got missed while adding the client option.
2017-12-04 07:36:19 +05:30
jnqnfe
26b1d0fc84 merge and deduplicate some pa_buffer_attr documentation 2017-11-30 00:51:25 +02:00
jnqnfe
b683350856 api documentation improvements
includes typo fixes, neatening, addition of more return info, and such.
2017-11-30 00:43:57 +02:00
jnqnfe
7973dfd768 volume: slight simplification of code 2017-11-29 23:56:33 +02:00
jnqnfe
a049e7e8bd volume: pa_cvolume_scale_mask: constify param 2017-11-29 23:50:52 +02:00
Tanu Kaskinen
50918e908b mention the sound card clock and system clock difference in libpulse docs 2017-10-23 18:29:53 +03:00
Tanu Kaskinen
2f54296046 volume: improve documentation
Changes:
 - Mention that source outputs have volume too.
 - Don't claim that most distributions have flat volumes enabled.
 - Volumes use a cubic scale, not logarithmic.
 - Reword the warning about using the conversion functions on hardware
   volumes. The old wording gave the incorrect impression that hardware
   volumes could never be converted to dB or linear scale.
2017-10-19 23:04:43 +03:00
Tanu Kaskinen
5de4b652cb simple: fix negative latency handling
pa_usec_t is an unsigned type, but there were calculations that used it
as if it were a signed type.

If the latency is negative, pa_simple_get_latency() now reports 0.

Added some comments too.
2017-07-20 16:56:41 +03:00
Ted Ying
b0cd94233a simple: Change latency estimation to account for already-read data in pa_simple_get_latency().
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=81075
2017-07-20 16:50:08 +03:00
Georg Chini
68203100ff volume: Fix overflow in percent calculation of pa_*volume_snprint*()
The percent calculation could overflow in the pa_*volume_snprint*() functions.
For large volumes, volume * 100 can exceed UINT32_MAX.

This patch adds appropriate type casts.
2017-04-29 10:38:05 +02:00
Georg Chini
be1276d816 volume: Print a warning when volume is clipped in pa_sw_volume_multiply/divide()
When the volume exceeds PA_VOLUME_MAX in pa_sw_volume_multiply() or
pa_sw_volume_divide(), volume settings are insanely high and the
user should be notified about it.

This patch adds volume clamping to pa_sw_volume_divide() and prints
a warning when the volume is clipped in both functions.
2017-04-29 10:12:01 +02:00
Georg Chini
a42241ec95 sample.c: Allow module-loopback to exceed PA_RATE_MAX
The rate set by module loopback may exceed PA_RATE_MAX by 1%, therefore
allow rates higher than PA_RATE_MAX in pa_sample_rate_valid().
2017-04-14 15:03:56 +02:00
Imre Vadász
ab7d01a983 context: Check for errno == ECHILD instead of ESRCH after failed waitpid().
When the specified pid no longer exists as a child of the process (since
it was already reaped by the SIGCHLD handler), errno is set to ECHILD, not
to ESRCH.
2017-04-11 22:56:00 +03:00
Tanu Kaskinen
df92274787 thread-mainloop: fix volatile use in example
In the example, drain_result is a volatile pointer to an int, not
a regular pointer to a volatile int.
2017-04-06 22:54:46 +03:00
Peter Meerwald-Stadler
d065e4d114 pulse: Explicitly ignore pa_mainloop_run() return value in thread function
Coverity ID: #1137975

Signed-off-by: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
2017-03-10 10:18:33 +01:00
Ahmed S. Darwish
058f223a99 stream: Frame-align divided audio segments
Executing below command will not produce any audio:

  pacat  --channels=3 /dev/urandom

Turns out that pa_stream_write() breaks large audio buffers into
segments of the maximum memblock size available -- a value which
is not necessarily frame aligned.

Meanwhile the server discards any non-aligned client audio, as a
security measure, due to some earlier reported daemon crashes.
Thus divide sent audio to the expected aligned form.

CommitReference-1: 22827a5e1e
CommitReference-2: 150ace90f3
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=98475
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=77595
Signed-off-by: Ahmed S. Darwish <darwish.07@gmail.com>
2016-11-24 20:40:07 +02:00
Peter Meerwald-Stadler
83f0a34ea6 sample: Assert validity of sample_spec
passing an invalid sample_spec to
pa_sample_size_of_format(),
pa_frame_size(),
pa_bytes_per_second(),
pa_bytes_to_usec(),
pa_usec_to_bytes()
currently gives a result of 0

this is problematic as
(a) it leads to many potential divide-by-zero issues flagged by Coverity,
(b) pa_sample_spec_valid() is called often and the mostly unnecessary validation
of the sample_spec cannot be optimized away due to pa_return_val_if_fail()
(c) nobody checks the result for 0 and the behaviour is not documented

this patch replaces pa_return_val_if_fail() with pa_assert()

note that this commit changes the API!
note that pa_return_val_if_fail() strangely logs an assertion, but then happily
continues...

fixes numerious CIDs
2016-09-04 23:06:04 +02:00
Peter Meerwald-Stadler
b3e4d28d25 stream: Check pa_tagstruct_get_format_info() retval in pa_create_stream_callback()
CID 1137984
2016-08-15 23:53:32 +02:00
Arun Raghavan
e3148f9ac2 json: Drop refcounting of json objects
We don't actually use the refcounting bits.

Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2016-06-22 21:04:47 +05:30
Arun Raghavan
0c1dbf5c79 json: Error out for objects and arrays that are nested too deep
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2016-06-22 21:04:47 +05:30
Arun Raghavan
5b1bd84902 json: Handle error cases while parsing numbers
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2016-06-22 21:04:47 +05:30
Arun Raghavan
777a5091f6 json: Add overflow checks for integer and float parsing
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2016-06-22 21:04:47 +05:30
Arun Raghavan
708b4aac91 json: Correctly handle bad strings with missing closing quotes
Also add a test for this case.

Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2016-06-22 21:04:47 +05:30
Arun Raghavan
c692ec3afd format: Drop dependency on json-c
json-c has a symbol clash (json_object_get_type) with json-glib (which
at least a number of our GNOME clients use). This patch moves to our own
JSON parser so that we can avoid this kind of situation altogether.

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

Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2016-06-22 21:04:47 +05:30
Arun Raghavan
6741e5ae76 pulse: Add a JSON-parsing library
Adding this to be able to drop dependency on json-c.

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

Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
2016-06-22 21:04:47 +05:30
Arun Raghavan
7ac5390042 client, protocol-native: Use macros for protocol version/flag access
This makes it easier to read and cleaner in general.
2016-06-22 12:55:54 +05:30
Arun Raghavan
d1730ab65a Revert "format: Make pa_format_info_valid() stricter for PCM"
This reverts commit 12a202c510.

This is needed for now to avoid a clash in clients using json-glib. The
commit added a call to json_object_get_type() in client code that didn't
exist before, and this breaks some apps like Rhythmbox and Totem. This
will be fixed in the future by possibly dropping json-c as a dep.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=95135
2016-04-29 17:38:37 +05:30
Ahmed S. Darwish
b1d47d60fc client audio: Support memfd transport
Now that all layers in the stack support memfd blocks, add memfd
pools support for client context and audio playback data.

Use such memfd pools by default only if the server signals memfd
support in its connection negotiations.

Also add ability for clients to force-disable memfd transport
through the `enable-memfd=' client configuration option.

Signed-off-by: Ahmed S. Darwish <darwish.07@gmail.com>
2016-04-27 18:37:07 +05:30