Commit graph

394 commits

Author SHA1 Message Date
Wim Taymans
8513150bdf resample: use calloc to make sure fields are 0 2020-05-08 16:13:34 +02:00
Wim Taymans
79fd4c941f debug: Don't debug EBUSY params
When a device returned EBUSY when enumerating params, don't try to
enumerate (and fail) them again.
2020-05-07 17:15:46 +02:00
Wim Taymans
713f242853 audioadapter: handle -ENOENT from enum_param 2020-05-03 11:45:06 +02:00
Wim Taymans
aafd1e7298 improve debug
Improve log so that debug level 3 gives a reasonably readable overview
of what is going on.
2020-04-22 12:47:18 +02:00
Wim Taymans
e73431d541 resample: use right define to compile sse functions
See #220
2020-04-14 20:29:27 +02:00
Wim Taymans
c446dfb1d6 resample: improve debug 2020-04-12 20:46:59 +02:00
Wim Taymans
2bb2e50eef audioadapter: stop when the follower needs data 2020-04-12 20:44:56 +02:00
Wim Taymans
c1f3593ef0 audioadapter: small cleanup 2020-04-12 20:44:19 +02:00
Wim Taymans
b18dacde9a spa: improve draining
Make a new DRAINED status.
Place the DRAINED status on an input IO when a stream is out of
buffers and draining.
All nodes that don't have HAVE_DATA on the input io need to copy
it to the output io and return the status. This makes sure the
DRAINED is forwarded and nodes return DRAINED from _process()
DRAINED on the resampler flushes out the last queued samples and then
forwards the DRAINED in the next iteration.
Emit a new drained signal from the context when a node returns
DRAINED. Use this to trigger the drained signal in the stream.
2020-04-07 17:58:43 +02:00
Wim Taymans
fdb5911e86 resample: use a 0 sized buffer to drain 2020-04-06 18:01:38 +02:00
Wim Taymans
7febf7ea25 improve debug 2020-04-06 18:01:19 +02:00
Wim Taymans
95906ca52e audioconvert: fix compilation 2020-04-04 20:03:11 +02:00
Wim Taymans
6937ec5e63 audioconvert: compile c version with right flags 2020-04-03 18:12:04 +02:00
Wim Taymans
28b0da626e Add missing file 2020-04-03 18:05:29 +02:00
Wim Taymans
0d1cef6b3a audioconvert: move some things around
To make it easier to add other implementations later.
Improve selection of resampler function
2020-04-03 18:03:42 +02:00
Wim Taymans
bf3ebb67aa neon: add alignment hints 2020-04-03 14:26:02 +02:00
Wim Taymans
167460a9bc fmt-ops: add arm32 optimizations 2020-04-03 14:09:46 +02:00
Wim Taymans
a81e269a7e neon: fix neon detection and compilation 2020-04-03 13:30:08 +02:00
Wim Taymans
df5721ff47 neon: fix taps arguments 2020-04-03 10:31:55 +02:00
Wim Taymans
a87337cae8 neon: fix fallback 2020-04-03 10:22:58 +02:00
Wim Taymans
22e590c7cc stream: somewhat implement drain better
Abuse the xrun callback in the adapter to emit the drained signal until
almost all data left the resampler. This needs more work with a proper
signal and a buffer flag to signal the drain.
2020-04-02 17:46:50 +02:00
Wim Taymans
1b3aaba206 fmt-ops: set the right flags on optimized functions
Or else we could select an avx2 version on a non-capable CPU.

Fixes #227
2020-04-02 17:34:47 +02:00
Wim Taymans
b87c0a9270 clean up options
make sure we can use -v for verbose mode
2020-04-02 14:34:02 +02:00
Wim Taymans
1fd5be7101 neon: fix resample interpolation 2020-04-01 13:07:52 +02:00
Wim Taymans
9b24a84ce6 fmt-ops: fix copy/paste error 2020-03-30 11:02:13 -04:00
Wim Taymans
527dc89365 fmt-ops: add neon optimizations for format conversion 2020-03-30 10:59:21 -04:00
Wim Taymans
67a5dd35be resample: add neon optimizations 2020-03-27 08:27:11 -04:00
Wim Taymans
397787ec3e spa-resample: getopt_long returns an int 2020-03-26 18:10:11 +01:00
Wim Taymans
a880012e72 fmtconvert: order formats better
Place float and higher resolution formats first so that they are
selected first.
2020-03-24 11:47:41 +01:00
Wim Taymans
b8a1ea1d3a fmt-ops: fix 32 bit compilation
_mm256_extract_epi64 is only for 64 bits, add workaround for 32
bits.

Fixes #220
2020-03-23 14:18:10 +01:00
Wim Taymans
acccccd2c0 Use SPA_IO_BUFFERS_INIT when we can
We should not have to initialize the state to NEED_DATA, anything
that is not HAVE_DATA is good. Also we need to set the buffer to
INVALID because else it might be recycled.
2020-03-19 13:09:21 +01:00
Wim Taymans
07f935a5ed add some more debug 2020-03-19 13:00:35 +01:00
Wim Taymans
8a2af908a7 small optimizations
Add some SPA_LIKELY
Enable FASTPATH by default
2020-03-18 15:43:29 +01:00
Wim Taymans
57f84ae5ae fmt-ops: use gather to read samples 2020-03-18 11:41:14 +01:00
Wim Taymans
55633ebf9a fmt-ops: move AVX 2020-03-18 10:06:54 +01:00
Wim Taymans
949dba7bfc fmt-ops: flesh out avx optimizations 2020-03-17 17:27:47 +01:00
Wim Taymans
4dcd0dacc9 fmt-ops: add more benchmark cases 2020-03-16 16:45:20 +01:00
Wim Taymans
37d3864949 merger: add some SPA_LIKELY 2020-03-16 16:12:34 +01:00
Wim Taymans
3a911dfe3b fmt-ops: add avx2 optimized version
Only one optimized version but the sse2 version are compiled with
the avx2 flags so that they get optimized better.
2020-03-16 16:11:29 +01:00
Wim Taymans
6eca935e61 also test optimized versions 2020-03-16 13:08:33 +01:00
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