Wim Taymans
15f8b7aa4a
pulse-server: parse HARDWARE props
2020-10-28 10:52:35 +01:00
Wim Taymans
cd74fd54de
core: debug bound_id of proxy
2020-10-28 10:51:55 +01:00
Wim Taymans
6eaf8d6921
spa: remove property, we don't implement a getter
2020-10-28 10:51:08 +01:00
Wim Taymans
27e06c66fd
pulse-server: add dummy sink/source port iteration
2020-10-27 18:01:28 +01:00
Wim Taymans
5d7d4d3b63
pulse-server: copy client properties to stream
2020-10-27 17:09:30 +01:00
Wim Taymans
1ec00e37fc
pulse-server: set source and sink flags
2020-10-27 17:09:06 +01:00
Wim Taymans
acfb48e3da
pulse: improve debug
2020-10-27 16:46:12 +01:00
Wim Taymans
e571c0bcb1
alsa: Use "PipeWire ALSA" as the node name
...
So that it is easier to know it is the PipeWire one.
2020-10-27 16:11:14 +01:00
Mersad Jelacic
9de98df1b7
pipewire-alsa: Use monotonic clock
...
Use monotonic clock instead of gettimeofday for timestamps.
2020-10-27 14:53:17 +00:00
Wim Taymans
66cf4e68d5
pulse-server: use EnumFormat as fallback
...
Use a fixated format and position from EnumFormat as a fallback.
2020-10-27 15:42:48 +01:00
Wim Taymans
124b1221a6
pulse-server: add more introspection
...
Emit new/change/remove events
Handle suspended state of peer
Handle direct_on_input record streams.
Place the tag in error messages
2020-10-27 14:57:15 +01:00
Wim Taymans
2bf5cfa2f7
pulse-server: fill volumes and state
2020-10-27 10:12:27 +01:00
Wim Taymans
3c2b58d192
pulse-server: fill sink format
2020-10-27 09:00:11 +01:00
Wim Taymans
496f3842be
pulse-server: small cleanup
2020-10-27 08:59:53 +01:00
Wim Taymans
51328af0e1
pulse-server: collect node params
2020-10-27 08:59:28 +01:00
Wim Taymans
5ddd6f0db9
pulse-server: fill more card info
2020-10-26 20:53:54 +01:00
Wim Taymans
4f63f37f00
pulse-server: collect device params
2020-10-26 20:53:34 +01:00
Wim Taymans
fa7c1ad169
pulse-server: set peer_name and id for monitors
2020-10-26 18:29:15 +01:00
Wim Taymans
8759ceb551
pulse-server: handle monitor sources
2020-10-26 18:10:05 +01:00
Wim Taymans
c49771150c
pulse-server: fill in source-output/sink-input peers
2020-10-26 16:59:46 +01:00
Wim Taymans
11ee5ca54c
pulse-server: fill in monitor names
2020-10-26 16:59:30 +01:00
Wim Taymans
fd16eb450a
pulse-server: fill linked sink/source in create_stream reply
2020-10-26 16:39:49 +01:00
Wim Taymans
1df7db5301
link: also add node id to link props
2020-10-26 16:39:28 +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
f75acc31d3
pulse: remove unused array
2020-10-26 13:28:01 +01:00
Wim Taymans
fdf3485902
pulse-server: add sink/source sink_input/source_output introspect
2020-10-25 19:51:42 +01:00
Wim Taymans
02d04c63ea
pulse-server: introspect cards
2020-10-25 16:24:11 +01:00
Wim Taymans
0ac839fce4
pulse-server: improve error reporting
2020-10-25 15:51:46 +01:00
Wim Taymans
1cbad89862
pulse-server: add introspection of clients and modules
...
Add manager object to collect object info
Wait for object info until completing client connect
Implement clients and modules list and info.
2020-10-25 15:28:42 +01:00
Wim Taymans
8ac9ce7947
pulse: avoid node lookup when connecting
...
We can use the node name directly if we strip the .monitor suffix
or remove the MONITOR flag form the name/id.
2020-10-24 16:58:01 +02:00
Wim Taymans
ec860d64cf
Revert "pulse: we can pass the device name directly in NODE_TARGET now"
...
This reverts commit fc6a729c57 .
Pulse passes either the monitor id or the sink.monitor name, which
are not known to the session manager.
2020-10-24 16:27:31 +02:00
Wim Taymans
fc6a729c57
pulse: we can pass the device name directly in NODE_TARGET now
2020-10-24 16:09:28 +02:00
Wim Taymans
3567efb7f8
alsa: allow setting playback/capture_node as node name
...
See !314
2020-10-24 15:53:48 +02:00
Wim Taymans
952326323e
policy-node: also allow node name as NODE_TARGET
2020-10-24 15:50:09 +02:00
Wim Taymans
3255bc8eae
context: use clock time as rttime when using our loop
2020-10-23 20:37:04 +02:00
Wim Taymans
520c2a0e16
context: only go to READY after registry is loaded
...
This way we can lookup the node name when connecting a stream.
See !314
2020-10-23 18:23:02 +02:00
Wim Taymans
cced538901
context: don't leak formats
2020-10-23 18:20:50 +02:00
Wim Taymans
617afee62b
pulse: return NULL format in error
2020-10-23 18:08:09 +02:00
Wim Taymans
732bf4b58c
context: protect against bad context state
...
Avoid crash in firefox when daemon is stopped.
2020-10-23 17:10:19 +02:00
Wim Taymans
42e60b66f3
pulse: uncork stream when draining
2020-10-23 16:34:52 +02:00
Wim Taymans
67fb792d91
pulse: only call started in READY and when not corked
2020-10-23 16:34:33 +02:00
Wim Taymans
aba02806cf
mainloop: do better wallclock to rttime conversion
...
The mainloop time_new is supposed to be called with wallclock time
but some apps use rttime instead. Handle the case better so that we
never end up disabling the timer.
2020-10-23 16:33:05 +02:00
Wim Taymans
a5656777e0
stream: Use the control parent type as container
...
Some controls (channelVolumes) list themselves as Float but are stored
in an array, as can be found from the type info. Use this info to
set channelVolumes with 1 channel.
fixes some assertions like pa_pod_is_array(pod)' failed at
../pipewire/spa/include/spa/pod/iter.h:334 spa_pod_get_array()
2020-10-23 15:29:51 +02:00
Wim Taymans
c62b27ec75
pulse-server: handle under/overrun
...
Make sure we don't report underrun for the first time we pull data.
Send STARTED message when we leave the underrun state
Send UNDERFLOW when we enter the underrun state
Count underrun when corked.
Pass process stats back to the mainloop after process.
Decrease the pending length when we get underrun so that we can request
more data.
2020-10-23 12:59:53 +02:00
Wim Taymans
2a0828e7a2
pulse: emit sink/source changes when pending
...
After we get the Route update, schedule subscription events when
there are changes pending. When we scheduled a volume change ourselves,
it is likely that nothing got changed by the route update but
we still have to emit the subscription event to notify the new volume.
Fixes #298
2020-10-23 10:09:40 +02:00
Wim Taymans
ec40702427
pulse: handle NULL timespec
2020-10-23 09:52:30 +02:00
Wim Taymans
1ceb902b76
pulse-server: convert between client cubic volume and linear
2020-10-23 09:36:01 +02:00
Jan Tojnar
2e3556fa12
pulse: Add libpulse path to rpath
...
We are linking against PulseAudio’s libpulse,
which adds its soname to DT_NEEDED but we are expecting
to actually use our shim with the same soname from LIBPULSE_PATH
(forced by adding the path to LD_LIBRARY_PATH).
Package managers like Nix will detect that we are linking against
PulseAudio’s libpulse and mark it as a runtime dependency by adding
its path to DT_RUNPATH entry so that it can be easily found
by the loader. LD_LIBRARY_PATH will take precedence but it will still
pull PulseAudio into the system’s closure.
2020-10-23 05:36:47 +02:00
Wim Taymans
f3dda8e57b
pulse: Use the right conversion functions for volumes
...
PulseAudio uses cubic volumes and PipeWire uses linear volumes
so use the right conversion functions from one to the other.
2020-10-22 19:34:47 +02:00
Wim Taymans
9c0ff170f9
pulse: add volume change example
2020-10-22 16:47:24 +02:00