Commit graph

404 commits

Author SHA1 Message Date
Wim Taymans
fd3dd14ebe fmt-ops: add optimized f32 to s16 stereo conversion 2020-03-16 13:04:21 +01:00
Wim Taymans
0548fbf690 fmt-ops: fix bug in s32 to f32 conversion 2020-03-16 12:57:21 +01:00
Wim Taymans
cb7bfdf98a sprinkly SPA_LIKELY/UNLIKELY around 2020-03-16 12:52:28 +01:00
Wim Taymans
c4b2be2aad use true and false for boolean properties
So that it's easier to convert them to booleans in introspection
code later.
2020-03-03 18:17:46 +01:00
Wim Taymans
ee617682c3 audioconvert: implement Portconfig query 2020-02-21 14:59:38 +01:00
Wim Taymans
d8bac82e72 improve logging
Remove some harmless warnings from the log
Remove some excessive info logging
2020-02-21 11:09:34 +01:00
Wim Taymans
a528189d26 slave -> follower
We use master/follower terminology everywhere.
2020-02-21 10:47:32 +01:00
George Kiagiadakis
0bff0e345f audioconvert: disable monitor port logic if both sides are in dsp mode
There is a use case where you may want to use audioconvert with
both input & output sides configured in dsp mode, for altering
the stream volume. When it is configured like that, the
IS_MONITOR_PORT macro wrongly thinks that all output ports except
the first one are monitor ports, originating in the merger instead
of the splitter.

This change fixes that and it also completely disables exposing
monitor ports, even if they are enabled, when both sides are in
dsp mode (fmt_input_port_info() also uses the same macro to check
if the monitor ports are to be exposed)
2020-02-20 12:34:42 +00: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
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
454e743d1a resample: make quality configurable 2020-02-12 13:31:03 +01:00
Wim Taymans
42b1e163d7 tests: make benchmarks less busy
Reduce iterations of the benchmark so that can finish on slower
devices.
2020-02-07 15:22:35 +01:00
Wim Taymans
7e95897a3b fmt-ops: fix test for big endian 2020-02-05 17:09:23 +01:00
Wim Taymans
50ce87df32 node: we are supposed to produce data when != HAVE_DATA
We can produce data whenever the io area status != HAVE_DATA. We
don't need to look for NEED_DATA.
Also recycling buffer happens whenever the status != HAVE_DATA.
2020-02-04 12:59:16 +01:00
Wim Taymans
1cce9a69c8 pw-cat: add channel-map option and option to delay connect
If the target node is set to 0, remove the autoconnect flag. This makes
the session manager disable stream autoconnect and some other program
needs to connect the stream to a sink or node.

Use the channelmap from the file, if available.

Add option to specify/override the channel map for playback.
2020-02-04 11:45:45 +01:00
Wim Taymans
65caf8832c spa: install in versioned directory
So that we can run old and new plugins side by side.
2020-01-29 15:51:41 +01:00
Wim Taymans
f4387e0568 fmt-ops: add support for s24 with endian conversion 2020-01-27 15:46:25 +01:00
Wim Taymans
f026e95585 audioconvert: use position rate as default rate 2020-01-09 16:50:02 +01:00
Wim Taymans
c14881fbe2 Respect the rate from the position as the default 2020-01-09 16:43:08 +01:00
Wim Taymans
852ac043d3 Use the DSP format for dsp formats
Use the DSP media subtype to describe DSP formats. DSP formats
don't include the rate, channels and channel position in the
format and must use the rate and duration from the position io. This
makes it possible to later change the samplerate dynamically without
having to renegotiate the graph.

The same goes for the video DSP format, which uses the io_video_size
from the io_position to get the size/stride. Set this up in the node
based on the defaults from the context.

Make it possible to define defaults in the daemon config file, such
as samplerate, quantum, video size and framerate. This is stored in
the context and used for the DSP formats.
2020-01-09 15:18:59 +01:00
Wim Taymans
f391353c7f Make interface types a string
This is more in line with wayland and it allows us to create new
interfaces in modules without having to add anything to the type
enum. It also removes some lookups to map type_id to readable
name in debug.
2019-12-19 13:36:04 +01:00
Wim Taymans
24ab22db12 audioadapter: avoid infinite loop
Rewrite the slave/converter loop a little to avoid infinite loops.
2019-12-18 12:58:42 +01:00
Wim Taymans
d67d012362 audioadapter: loop until we have data
Keep caling the slave processing function until we have data from
the converter or until no process can be made.
2019-12-17 15:11:31 +01:00
Wim Taymans
58a7e18ed5 audioadapter: set data flags 2019-12-17 15:08:39 +01:00
Wim Taymans
49a4440692 audioadapter: pass slave properties directly 2019-12-10 12:48:18 +01:00
Wim Taymans
bca653198a audioadapter: emit param events only once
The events from the convert are already proxied to the audioadapter
so don't emit the event twice.
2019-11-21 13:07:16 +01:00
Wim Taymans
feb8dd3a34 Add include of keys.h 2019-11-21 09:34:08 +01:00
Wim Taymans
c67445c343 test: audioadapter 2019-11-03 10:39:48 +01:00
Julian Bouzas
9b2d34c04b audioadapter: store format on set_param and use it as a filter when negotiating 2019-10-29 22:44:24 +01:00
Wim Taymans
f7d32e78f2 pod: remove SPA_POD_IS_OBJECT_TYPE
We have a safer version of that in iter.h
Use macros to get id and type of an object
Use safer checks in plugins.
2019-10-29 10:08:46 +01:00
Wim Taymans
9ffec214b8 fix includes 2019-10-25 15:01:02 +02:00
Wim Taymans
af73585948 Increase max buffer size 2019-10-24 15:26:59 +02:00
Wim Taymans
2fa97daa24 add some constants for max samples 2019-10-24 12:35:00 +02:00
Wim Taymans
3c9aa2e96c fmt: add sse2 optimized s32->f32d 2019-10-24 11:06:04 +02:00
Wim Taymans
2ac8be4ac7 audioconvert: negotiate when starting
Don't try to negotiate from set_param and use_buffers, instead
negotiate when we Start and clear on Suspend.
2019-10-23 10:34:05 +02:00
Wim Taymans
ff96165035 Improve debug 2019-10-22 13:06:20 +02:00
Wim Taymans
3aa19dd38a node: send Suspend to the node
Send suspend to the node when suspending. This is usually the same
as puse for all nodes.
Implement negotiation when we Start audioadapter. This makes it
easier that to track the ports that are negotiated for now.
Use Suspend to clear the audioadapter negotiation.
2019-10-21 17:24:51 +02:00
Wim Taymans
116676e149 node: add active flag for rate match
Add flags to the rate match io area
Add flag to activate/deactivate rate match
Set active flag in rate match when slaved
Update rate before starting resample
2019-10-21 10:13:56 +02:00