Commit graph

3116 commits

Author SHA1 Message Date
Wim Taymans
387b281f5c alsa-seq: use dll to track queue timer
Also increase timer resolution to get less jitter.
2019-09-24 17:23:39 +02:00
Wim Taymans
197d2b15b6 alsa-pcm: small cleanups 2019-09-24 17:23:01 +02:00
Wim Taymans
db341a6450 improve properties on node and port
Rename some alsa filenames.
2019-09-23 20:51:34 +02:00
Wim Taymans
8d8ef587f5 jack: improve properties 2019-09-23 20:50:12 +02:00
Wim Taymans
77e07e1948 improve properties on globals and ports 2019-09-20 13:28:06 +02:00
Wim Taymans
6756a3c8fc monitor: remove monitor API and use device
Remove the monitor API, we can use the device API for it. Make sure
we support creating devices (like alsa) from another device (udev).

Use new object.id to store the object id in the object properties. Use
the port.id/node.id etc to make relations to other objects.
2019-09-20 13:04:14 +02:00
Wim Taymans
818fb9e904 alsa: add midi bridge
Add a node that exposes all midi input and output ports and converts to
and from PipeWire control streams.
2019-09-19 16:57:00 +02:00
Wim Taymans
ab0d1b7fad alsa: cleanups
Avoid getting the clock time just for debug.
Improve time at startup.
2019-09-19 16:55:02 +02:00
Wim Taymans
b85b88b53d jack: sort midi ports before audio ports
for compatibility reasons return the audio ports before the midi
ports. Most apps just try to link the first hw ports they see and
jack always lists the hw audio ports first.
2019-09-19 15:26:06 +02:00
Wim Taymans
d3c7acb137 iter: add helper to parse pod from memory region 2019-09-19 13:17:48 +02:00
Wim Taymans
322ccb452c small cleanups 2019-09-19 13:17:30 +02:00
Wim Taymans
f777c04ea6 jack: only allow connection of same type 2019-09-19 13:16:42 +02:00
Wim Taymans
59bf522ce1 system: use the same bits as POLL and EPOLL
Use the same bits for the io mask as POLL and EPOLL so that we
can avoid conversions.
2019-09-19 13:15:38 +02:00
Wim Taymans
49a5e97d69 format: add application/control media type
Add a new application/control media type that can be used to negotiate
control streams between ports.
2019-09-16 21:09:52 +02:00
Wim Taymans
cd2c8ceb31 jack: use buffers for midi
Place the midi in application/control buffers instead of control
IO.
2019-09-16 21:08:35 +02:00
Wim Taymans
565f0475f0 tests: update test 2019-09-16 21:08:03 +02:00
Wim Taymans
4381e79632 control: clean up some control includes
Remove control from channelmix, it's not used
Add control metadata
Add OSC control type
Improve some docs
2019-09-16 15:49:46 +02:00
Wim Taymans
8b85cc225e rename HAVE/NEED_BUFFER -> HAVE/NEED_DATA
It is more generic and works with control-only ports as well
2019-09-16 12:55:23 +02:00
Wim Taymans
1d2db89b9c jack: update for HAVE/NEED_BUFFER -> HAVE/NEED_DATA 2019-09-16 12:53:53 +02:00
Wim Taymans
d648ea4ad3 control: don't fail on async port_set_io 2019-09-10 18:50:28 +02:00
Wim Taymans
4bd1e9a9ff jack: init midi buffer correctly
Init the midi event buffer at the right memory.
Add some more debug.
2019-09-10 18:49:19 +02:00
Wim Taymans
2d8bce7479 names: add vulkan compute source factory name 2019-09-10 12:38:25 +02:00
Wim Taymans
7fd6d6d820 node: revert previous commit
Always add work to the work queue, some code relies on the fact that
the state change continuation happens from next iteration of the
mainloop.

Don't warn when destroying the work queue and there are still items in
it, this is ok.
2019-09-10 12:27:29 +02:00
Wim Taymans
80ba0b2dcf node: only put async state changes to work queue 2019-09-10 12:13:26 +02:00
Wim Taymans
ad086e3349 jack: don't use private flag
Some input buffers are also used as output buffers in case of
feedback.
2019-09-10 11:56:25 +02:00
Wim Taymans
9a202272f2 remote: always close the fd in connect_fd
Not closing the fd causes leaks in existing apps. It's probably better
to always close it and let apps deal with that by using dup or similar.

Make gst sink and source dup the fd before connect_fd().

Fixes #181
2019-09-10 11:08:38 +02:00
Wim Taymans
c9855763c3 remote: always close the fd in connect_fd
Not closing the fd causes leaks in existing apps. It's probably better
to always close it and let apps deal with that by using dup or similar.

Make gst sink and source dup the fd before connect_fd().

Fixes #181
2019-09-10 11:05:38 +02:00
Julian Bouzas
ddd2a97f7e bluez: set bluez profile property when emitting node
We need to expose the bluetooth profile in the nodes so that external
applications know how to handle them.
2019-09-10 10:42:11 +02:00
Wim Taymans
3142d3b979 mem: add private mapping flag 2019-09-10 09:59:31 +02:00
Wim Taymans
35bf6bfa5c jack: map buffer readwrite and private for input
qtractor writes to the input buffer so make them writable but with
a private mapping.
2019-09-10 09:58:36 +02:00
Wim Taymans
b9e517ee67 pipewire: add PIPEWIRE_LOG environment variable
PIPEWIRE_LOG will redirect logging to a file.
2019-09-10 09:44:05 +02:00
Wim Taymans
0fe7f9765d link: use the port as the work-queue object
Use the port as the object/seq identifier of the defered work. This
way we can handle feedback links between the same node and identify
what port completed.
2019-09-10 09:42:23 +02:00
Wim Taymans
9c9bff8fe9 data-loop: add _wait function
Add function to wait for one iteration of the loop. This can be used
by specialized implementations of the data loop, like jack.
2019-09-09 17:17:03 +02:00
Wim Taymans
2736c227a1 jack: use our own per client loop, like jack. 2019-09-09 17:16:18 +02:00
Wim Taymans
7f7ed1e039 jack: implement some more functions 2019-09-09 17:15:52 +02:00
Wim Taymans
3340f3cacc core: don't touch unassigned nodes that don't need_driver 2019-09-05 17:06:49 +02:00
Wim Taymans
729dd1360a alsa: don't set rate, it's set by the app 2019-09-05 17:05:20 +02:00
Wim Taymans
4a4fa57efc alsa: handle target better
Rework how we handle the current device fill level and our desired
fill level so that we handle it more consistently.
2019-09-05 13:45:37 +02:00
Wim Taymans
88299ab225 alsa: add sync-id to properties 2019-09-05 13:18:56 +02:00
Wim Taymans
2abcc28762 jack: implement thread stop and kill 2019-09-05 13:17:00 +02:00
Wim Taymans
a232e67dd8 resample: completely fill resampler
start with a completely filled resampler so that the first
input byte immediately gives an output sample. When then have
n_taps/2 leading (almost) 0 samples.

Also make the passthrough resampler act like the real resampler
by introducing an n_taps/2 delay.
2019-09-05 13:13:20 +02:00
Wim Taymans
b1bfc900d6 improve: debug 2019-09-05 13:09:01 +02:00
Wim Taymans
0eb2705766 alsa: fix read of second part of ringbuffer 2019-09-05 09:17:14 +02:00
Wim Taymans
bd2d0ebc75 node: handle target without node 2019-09-03 13:57:20 +02:00
Wim Taymans
73628c91de audioconvert: refuse invalid channels and rate 2019-09-03 13:49:38 +02:00
Wim Taymans
dde5a0dee8 jack: improve output port buffers
The output buffers are always set on mix -1, so find that one and
then copy the io area to all other mix outputs.
2019-09-03 13:45:33 +02:00
Wim Taymans
a9640a826d jack: call thread_init 2019-09-03 13:45:13 +02:00
Wim Taymans
46b2d1701b jack: remove unused fields 2019-09-03 13:44:47 +02:00
Wim Taymans
89ce3eac35 jack: implement monitor requests 2019-09-03 13:44:12 +02:00
Wim Taymans
6341469456 jack: update 2019-09-02 17:19:00 +02:00