Commit graph

42 commits

Author SHA1 Message Date
Barnabás Pőcze
27b76ae686 pulse-server: calculate event mask from facility and type
Make `client_queue_subscribe_event()` take the facility and type
separately, and calculate the mask itself, so that the caller
does not need to be concerned with that.
2024-09-18 19:35:08 +02:00
Wim Taymans
d71fb40989 pulse-server: move extension to modules
Add extension support to modules. This is a list of extension commands
that can be performed on the module.

Remove the custom registry of extensions and make proper modules that
implement the extensions.

This is more in line with what pulseaudio does. The advantage is that the
modules actually show up in the module list and that we can use the
module user_data to implement the extension later.
2024-01-23 13:31:05 +01:00
Wim Taymans
bc6c19ccdf pulse-tunnel: translate pulse error to spa error
Pulseaudio has its own error enumeration, convert them to spa errors so
that we report the right errors.
2023-03-13 12:26:20 +01:00
Barnabás Pőcze
934ab3036e treewide: use SPDX tags to specify copyright information
SPDX tags make the licensing information easy to understand and clear,
and they are machine parseable.

See https://spdx.dev for more information.
2023-02-16 10:54:48 +00:00
Pauli Virtanen
fb04074335 pulse-server: set also metadata target.object when moving streams
Set also metadata target.object when moving streams, in case the session
manager supports that.
2022-02-28 18:36:26 +00:00
Wim Taymans
1ac1f914e3 pulse-server: allows allocate MAXLENGTH for the ringbuffer
See #2069
2022-01-28 16:21:03 +01:00
Wim Taymans
955e4287ab pulse-server: index flags are only used for modules
one flag for the internal extension modules, another flag for the
modules we load in pulse server that don't really have a matching
pipewire module.
2022-01-17 10:28:09 +01:00
Wim Taymans
6a2aea8e0a pulse-server: remove the MONITOR flag
PulseAudio has separate namespaces for sources and sinks so we can reuse
the same id for the sink and its monitor.
2022-01-17 10:25:26 +01:00
Pauli Virtanen
11e57de7b0 pulse-server: index mask is now 24 bits
Update INDEX_MASK to match the new id allocation scheme.
2022-01-13 19:08:45 +02:00
Wim Taymans
3a49168f26 pulse-server: use the upper 8 bits of the id to mark things
The upper 8 bits of the object id is always 0 so we can use it to mark
our internal objects.
2022-01-13 14:54:16 +01:00
Wim Taymans
fd4ea442d9 pulse-server: increase buffer size
Because we keep everything in a ringbuffer and provide exactly the
required amount of data, we can use 1/4 buffers.
Also increase the buffer size. We don't want to limit the buffer size
to the negotiated tlength because it can be increased later. Instead
scale it to the max quantum size (8192) with a max resample rate of 32.
2021-12-14 15:42:19 +01:00
Barnabás Pőcze
f5d51162c4 treewide: mark things static and const
Mark some structures, arrays static/const at various places.
In some cases this prevents unnecessary initialization
when a function is entered.

All in all, the text segments across all shared
libraries are reduced by about 2 KiB. However,
the total size increases by about 2 KiB as well.
2021-06-30 14:44:08 +02:00
Peter Hutterer
0880ff9a84 spa: add spa_strendswith (copy from protocol-pulse)
Useful function, let's make it generally available.
2021-06-25 08:42:24 +00:00
Barnabás Pőcze
b2ec1fb60a pulse-server: split out message handling
Part of !776.
2021-06-25 03:23:24 +02:00
Barnabás Pőcze
8ac60cb0ae pulse-server: split out commands
Part of !776.
2021-06-25 03:22:56 +02:00
Barnabás Pőcze
8208e60b33 pulse-server: add include guard to defs.h
Part of !776.
2021-06-25 03:21:38 +02:00
Wim Taymans
bbbc79647f pulse-server: return INTERNAL error for ENFILE/EMFILE 2021-06-18 15:56:55 +02:00
Arun Raghavan
74140abada pulse-server: Factor out module code to compile independently
This starts breaking up the giant monolith that is the pulse-server.c
code into more manageable chunks by trying to split the module code into
individual compilation units.
2021-04-15 19:37:15 -04:00
Pauli Virtanen
132786c202 pulse-server: implement send_object_message
Use it for providing Bluez codec listing/switching interface.  It
currently works by just switching device profiles.
2021-03-20 23:30:38 +02:00
Wim Taymans
e19263140a pulse-server: improve module handling
Make a registry of modules
Assign an unique number to each module with the MODULE_FLAG bit set
so that we can also enumerate them
Implement enumerating our internally loaded modules
Implement unloading of the module using the module id
Move module-null-sink into a separate file
Use Audio/Sink if no other media.class was given, so that it works
just like the pulseaudio module
Enable linger=true in all cases.
2021-03-01 14:57:28 +01:00
Gleb Popov
3faf388821 Guard some non-portable error code defines with #ifdef's 2021-02-24 19:29:57 +00:00
Wim Taymans
43f8f39d3a pulse-server: move some config params to config file
Also make the minreq/fragsize larger by default.
2021-02-23 14:57:45 +01:00
Wim Taymans
8712cfb6a1 pulse-server: remove MIN_BLOCK
It is not really used and minreq is good enough
2021-02-23 12:29:39 +01:00
Pauli Virtanen
d617d7e1a3 pulse-server: SET_DEFAULT_* commands change the configured values 2021-02-06 18:10:28 +00:00
Wim Taymans
6b2ec6d619 pulse-server: require at least 32 samples per buffer 2021-01-18 16:24:00 +01:00
Wim Taymans
e0580fedc1 pulse-server: handle seek flags and offset
Fixes #485
2020-12-17 16:49:17 +01:00
Wim Taymans
00295b64b5 pulse-server: don't write too small buffers
Fixes #399
2020-12-11 18:09:21 +01:00
Wim Taymans
0fba936b06 pulse-server: use defines for default sink/source 2020-12-05 13:26:59 +01:00
Wim Taymans
745b7ee900 pulse-server: tweak some parameters to get lower latency 2020-12-04 15:11:35 +01:00
Wim Taymans
f818da96fc pulse-server: use define for monitor flags 2020-11-17 12:33:09 +01:00
Wim Taymans
8b9d398df6 pulse-server: implement sample cache 2020-11-13 13:28:46 +01:00
Wim Taymans
ca2ea2db4b pulse-server: add more errno to error mappings 2020-11-12 17:37:39 +01:00
Greg V
fba8cd9f56 protocol-pulse: ifdef Linux-specific errnos and socket opts 2020-11-09 11:14:20 +00:00
Wim Taymans
c619d7851f pulse-server: add move and default sink/source
Clean up error handling, use errno everywhere and convert when needed.
2020-10-29 11:59:16 +01:00
Wim Taymans
0320eca79e pulse-server: add port_type and availability-group 2020-10-28 12:18:26 +01:00
Wim Taymans
1ec00e37fc pulse-server: set source and sink flags 2020-10-27 17:09:06 +01:00
Wim Taymans
2bf5cfa2f7 pulse-server: fill volumes and state 2020-10-27 10:12:27 +01:00
Wim Taymans
8759ceb551 pulse-server: handle monitor sources 2020-10-26 18:10:05 +01:00
Wim Taymans
a372e4e90e pulse-server: add more introspection
Add default nodes support and subscription events when it changes.
Fix stream id.
Fix node lookup.
Fix node volume.
2020-10-26 13:28:45 +01:00
Wim Taymans
c92ce17a9f pulse-server: tweak minreq and fragsize
Use time instead of samples to calculate the min
2020-10-14 15:44:52 +02:00
Wim Taymans
fde36ac6c2 pulse-server: use at least MIN_SAMPLES of samples per buffer 2020-10-08 18:06:12 +02:00
Wim Taymans
f0102fd490 pulse: move pulse protocol to module 2020-10-08 18:06:11 +02:00