Commit graph

3450 commits

Author SHA1 Message Date
Wim Taymans
ea911f2e3f tweak buffers a little
JACK can handle 2 buffers at most, make the default buffer allocator
allocate 2 buffers when no params are given.
Prefer 2 buffers, it allows some form of async fill/consume
2020-02-19 10:17:00 +01:00
Wim Taymans
ddcb08a98a pw-cat: read midi file from memory
mmap the midi file and read from memory. Simplifies some things and
allows us to potentially parse from the RT thread later.
2020-02-19 09:58:47 +01:00
Wim Taymans
632c8440f8 builder: pass NULL to _raw to reserve memory 2020-02-19 09:57:57 +01:00
Wim Taymans
2a487d5fdb filter: implement filter with Step
Implement filter between Step and Range as if the Step were a
range, ignoring the step value for now.
2020-02-18 18:04:05 +01:00
Wim Taymans
b3d94cde87 jack: fix stride of midi
Midi has a stride of 1
Error when the number of buffers is too big
2020-02-18 18:03:30 +01:00
Wim Taymans
1f3cb3d207 jack: fix invalid unlink
Don't unlink the mix->link when freeing, it is only linked when
in the free pool.

Protect against invalid number of buffers that could corrupt our
state.
2020-02-18 17:37:02 +01:00
Wim Taymans
463b9e4e29 buffers: handle -ENOENT
enum_param should return -ENOENT when the param is not known.
When negotiating buffers handle -ENOENT. This means the port does
not know about the property and we should assume anything is fine
so just use the filter from the first port.
2020-02-18 17:34:41 +01:00
Wim Taymans
b6a6d1f0bb pw-cat: fix tempo changes
Use time in seconds as event timestamp.
Apply tempo from the new events, keep track of elapsed time and
time since tempo change to get the right time.
Skip metadata midi in pw-cat.
2020-02-18 16:13:35 +01:00
Wim Taymans
fe616e38d8 pw-cat: add midi support 2020-02-18 13:38:26 +01:00
Wim Taymans
427a6316d3 stream: also call process when queue is empty
When we just picked a buffer from the queue and it is now empty,
call the process method to fill up the queue again or else we
won't have a buffer for the next wakeup.
2020-02-18 13:38:25 +01:00
Wim Taymans
e6c3619521 jack: don't try to consume port without data
Or else we handle old data.
2020-02-18 13:38:25 +01:00
Wim Taymans
1239009d30 stream: add port properties
Set the port DSP property when dealing with midi.
2020-02-18 10:50:53 +01:00
Wim Taymans
9bd21d6c18 man: improve man pages a little 2020-02-18 10:36:28 +01:00
Wim Taymans
319df9fce9 pw-cat: add option to set resampler quality 2020-02-14 20:34:08 +01:00
Wim Taymans
75e14ecadc resample: tweak resample qualities a little 2020-02-14 20:23:15 +01:00
Wim Taymans
621f6ca10b resample: reset props first, then override 2020-02-14 20:22:55 +01:00
Wim Taymans
dbd483cb46 resample: add resample.quality property 2020-02-14 20:19:47 +01:00
Wim Taymans
3fab544d3d resample: add quality property 2020-02-14 20:16:50 +01:00
Wim Taymans
0023aac9b9 resample: add some more qualities
Clamp quality to available qualities.
0 is a valid quality
2020-02-14 18:00:49 +01:00
Wim Taymans
484d211119 spa-resample: quality 0 is a valid value. 2020-02-14 16:55:37 +01:00
Wim Taymans
046f41c31c test: fix number of queued samples
The number of queued samples is twice the delay.
2020-02-14 10:52:21 +01:00
Wim Taymans
6603fab405 spa-resample: flush last samples
Use 0 samples to flush out the last samples from the resampler.
2020-02-14 09:50:49 +01:00
Wim Taymans
039f6751e1 resample: fix delay reporting 2020-02-14 09:50:35 +01:00
Wim Taymans
5df1c5ae40 resample-native: fix phase shift 2020-02-13 20:41:14 +01:00
Wim Taymans
7267a6bc34 resample: remove old debug variable 2020-02-13 20:11:39 +01:00
Wim Taymans
83f2e890ad tools: add generic resampler tool
Add a tool that can convert the sample rate of an input file and
write it to an output file. This tool can be used to test the
resampler.
2020-02-13 16:46:03 +01:00
Wim Taymans
761119f640 resample: fix start position of new samples
When we finished processing the history it might be possible that we
need to skip some samples from the input. Implement this by adding
a start offset for the samples in the buffer.
2020-02-13 16:43:06 +01:00
Wim Taymans
0a26c478f7 pw-cat: small cleaups
Set endianness correctly
Move setup of output file format outside of sample format function.
2020-02-13 09:51:25 +01:00
Wim Taymans
192fee98a4 fmtconvert: suggest 2 buffers by default
When running pw_stream with async process, we need an extra buffer
to compensate for the thread switch.
2020-02-13 09:47:19 +01:00
Wim Taymans
5e71a01e8d pw-cat: fix setup of defaults
In record mode, setup the parameters before we open.
2020-02-13 08:59:41 +01:00
Wim Taymans
dfdbec1303 node: improve debug of params
List the param id and the name
2020-02-12 17:58:22 +01:00
Wim Taymans
fe85a3b817 pw-cat: refactor a bit
Try to keep the sndfile code in one place
2020-02-12 17:57:42 +01:00
Wim Taymans
e5bdb04b3a pass data around instead of resource
Avoids method calls to get the userdata from a resource
2020-02-12 16:32:55 +01:00
Wim Taymans
b79e63cded device: fix call to enum_params, we need to pass data 2020-02-12 16:29:22 +01:00
Wim Taymans
e72129b9ca device: fix data pointer for subscribe_params 2020-02-12 16:24:31 +01:00
Wim Taymans
495dc7c3af device: implement subscribe_params
Also add subscribe params for the device, like for Node and Port.
2020-02-12 16:07:10 +01:00
Wim Taymans
df65e0bcd3 pw-cat: fix remote name option 2020-02-12 13:39:47 +01:00
Wim Taymans
454e743d1a resample: make quality configurable 2020-02-12 13:31:03 +01:00
Wim Taymans
f726a77385 filter: expose pw_filter_get_name() 2020-02-12 08:57:09 +01:00
Wim Taymans
3f4be40f30 pulse: only define PA_LIKELY when not already defined
New pulse makes this define visible.
2020-02-12 08:55:24 +01:00
Georges Basile Stavracas Neto
4778b5911e pipewire/filter: Remove duplicated function declaration
pw_stream_get_name() is already declared at steam.h, and including
filter.h breaks the build with more strict build flags.
2020-02-11 17:43:45 -03:00
Wim Taymans
945da1e6f3 0.2.96 2020-02-11 16:06:27 +01:00
Wim Taymans
c82e38ad35 conf: limit buffers to 16
Old v0 clients can only handle up to 16 buffers. It's unfortunate that
we have to enforce this globally but otherwise it is possible that
a new client allocated more buffers which it then tries to share with
an old client and fail.
2020-02-11 16:03:38 +01:00
Wim Taymans
1a6848801f fix compiler warnings 2020-02-11 15:25:53 +01:00
Wim Taymans
9ce2c6157f client-node: fix v0 data offset
Set the right data offset for v0 clients.
2020-02-11 15:15:20 +01:00
George Kiagiadakis
db734a952d pkgconfig: require libspa on the libpipewire pkgconfig file
pipewire/pipewire.h directly includes spa headers, so libspa
is an implicit dependency that must always be required
2020-02-11 14:01:52 +00:00
Wim Taymans
d52df30c88 pipewireclock: use the monotonic time for now
Don't try to use the ticks for the clock but use the monotonic
timestamp instead.
2020-02-11 13:08:04 +01:00
Wim Taymans
b7f249c389 port: fix compilation 2020-02-11 12:14:23 +01:00
Wim Taymans
e68139079d volume: set the right info flags for params 2020-02-11 12:12:49 +01:00
Wim Taymans
cd77ceebbc impl-port: warn and not crash when spa-node has no properties
When a spa-node tells us it has updated properties but then gives
us a NULL pointer, emit a warning instead of crashing.
2020-02-11 12:06:59 +01:00