George Kiagiadakis
2340ae40a8
spa: install pod/vararg.h
2019-04-02 23:25:53 +02:00
Wim Taymans
dc01b294a2
resample: return the number of consumed samples
...
We need to return the number of consumed samples, even when we don't
start from the first sample in the buffer.
Add some more logging.
2019-04-02 23:06:46 +02:00
Wim Taymans
a44ee31abe
alsa: write as much as we can
...
Always write as much data as we can and don't stop when we written
up to the threshold.
2019-04-02 23:04:09 +02:00
Wim Taymans
5c896fedd5
connection: stop refill when 0 bytes read
2019-04-02 23:02:58 +02:00
Wim Taymans
56158fbb62
channelmix: do passthrough if identity
2019-03-29 21:00:31 +01:00
Wim Taymans
d8e399dee9
audioconvert: pass state to functions
...
Pass some state to convert and channelmix functions. This makes it
possible to select per channel optimized convert functions but
also makes it possible to implement noise shaping later.
Pass the channelmix matrix and volume in the state.
Handle specialized 2 channel s16 -> f32 conversion
2019-03-29 17:39:59 +01:00
Wim Taymans
d47353c0e6
resample-native: small tweaks
2019-03-29 12:08:45 +01:00
Wim Taymans
d260cb19be
audioconvert: compile c version separately
...
Also compile the c versions in a separate module with their own
flags.
2019-03-28 21:07:53 +01:00
Wim Taymans
fe6ebd0e8a
bench: add avx resampler to benchmark
2019-03-28 16:53:26 +01:00
Wim Taymans
e7ef13e310
audioconvert: add avx optimizations
2019-03-28 16:45:57 +01:00
Wim Taymans
7f041f4098
audioconvert: improve benchmark
...
Also include the simd versions in the benchmark
Fix some issues found by new test
2019-03-28 13:26:06 +01:00
Wim Taymans
c8d3d475bb
audioconvert: handle more optimizations
...
Compile an optimized library for the given CPU with the right flags,
then link it with the main library.
2019-03-27 17:58:48 +01:00
Wim Taymans
eaffb25cc2
resample-native: optimize equal input and output sample rates
2019-03-27 13:38:34 +01:00
Wim Taymans
4fafd10a89
resample-native: cleanups
...
Add some comments, reorganize for better readability
More alignment of filter and history
Add some more test
2019-03-27 11:23:52 +01:00
Wim Taymans
555fe2f9f5
resample-native: implement variable rate
2019-03-26 17:25:14 +01:00
Wim Taymans
ecc3e78ad4
fmt-ops: use faster f32 -> s32 conversion
2019-03-26 17:24:14 +01:00
Wim Taymans
9c8913437b
audioconvert: add simple and faster resampler
...
Add a sinc based resampler that, unlike speex, avoids memcpy and
works directly on the source data. It also allows for ssse3
optimizations and aligned loads. It will later switch to table
interpolation when doing variable rate.
2019-03-26 12:58:26 +01:00
Wim Taymans
f29d14fcc8
resample: Let the resampler object handle all channels
...
Move the code to loop over all channels in the resampler itself.
This is better because the resampler can reuse its state for
each channel.
2019-03-22 16:48:35 +01:00
Wim Taymans
5a2ccee1ff
Add FASTPATH trace log
...
Add a trace_fp that can be optimized away when FASTPATH is defined.
2019-03-21 11:31:53 +01:00
Wim Taymans
036ca89c0e
audioconvert: mark ports and buffers as DYNAMIC
...
Only passthrough buffer data when the buffer and ports are
marked as DYNAMIC.
Use extra buffer for nodes that keep a ref on buffers (resample).
2019-03-21 10:45:24 +01:00
Wim Taymans
df5c81e3be
buffer: add DYNAMIC data flag
...
Add a flag to mark when a buffer data pointer can change.
Improve docs for port flags
2019-03-21 10:38:21 +01:00
Wim Taymans
0505f2dc98
audioconvert: implement passthrough
...
Add some const and SPA_RESTRICT to methods
When the input and output is the same, work in passthrough mode
where we simply copy place the input pointer onto the output buffer
without doing a memcpy.
Do memcpy when the resampler is not active.
2019-03-20 19:29:14 +01:00
Wim Taymans
74cf412f47
utils: add debugable spa_memcpy
2019-03-20 19:27:46 +01:00
Wim Taymans
c2cb74a146
protocol-native: fix indentation
2019-03-20 15:57:34 +01:00
Wim Taymans
c9bd95ae5b
audioconvert: small optimization
2019-03-20 15:57:13 +01:00
Wim Taymans
b265081d6d
audioconvert: use macro to transpose
2019-03-20 13:37:20 +01:00
Wim Taymans
e31f54fac5
alsa: list formats in order of preference
2019-03-20 13:05:16 +01:00
Wim Taymans
fa3bcabbca
audioconvert: some more optimizations
2019-03-20 13:04:44 +01:00
Wim Taymans
67f26c9caf
peaks: small optimization
2019-03-19 17:19:44 +01:00
Wim Taymans
8daff4ce50
v4l2: make custom properties for unknown ones
2019-03-19 16:19:12 +01:00
Wim Taymans
70e62aacd7
protocol-native: pass a message around
...
Pass a message around to make things more extensible later.
Keep fds per message if we ever want to write individual
messages.
Pass number of fds in the message header. We might need this to
close the fds when the proxy is gone.
2019-03-19 16:15:20 +01:00
Wim Taymans
30747942ac
connection: add more test
2019-03-19 11:58:46 +01:00
Wim Taymans
a3e4726ea6
connection: add test and fix a bug
...
Add a unit test for the connection
When we consumed all packets in a buffer, try to get more data instead
of failing right away.
2019-03-19 11:44:23 +01:00
Wim Taymans
ca051282a4
port: add port subscribe_params
2019-03-18 16:34:07 +01:00
Wim Taymans
ae7e60d790
interfaces: add subscribe params method
...
Add a node subscribe params method that automatically emits the new
params when they change so that we can avoid an enum_params.
Use this in the stream object.
Remove the control messages to update controls in stream, use the
set_param. This is more overhead but allows for notifications to other
clients.
Make it possible to update many controls in one go.
2019-03-18 16:12:27 +01:00
Wim Taymans
b163dc9114
private: define max params
2019-03-18 16:10:36 +01:00
Wim Taymans
3049964031
stream: parse PropInfo and make controls
...
Parse the PropInfo params and make pw_stream_control elements.
Only emit control changes when something changed.
2019-03-18 11:19:08 +01:00
Wim Taymans
a8e9e17159
audioconvert: enumerate propinfo correctly
2019-03-18 11:18:27 +01:00
Wim Taymans
a23be2b0d8
export-source: fix example
2019-03-15 21:16:58 +01:00
Wim Taymans
6e17b38658
test: fix test
2019-03-15 21:04:49 +01:00
Wim Taymans
2297e99fde
submodule
2019-03-15 20:32:46 +01:00
Wim Taymans
9245c81227
client-node: add get_node method
...
Make a get node method that binds to the server side node of the
client-node immediately. use this in the remote_export and always
return a node proxy.
Use the node proxy to get property updates and signal those in the
stream.
2019-03-15 20:29:34 +01:00
Wim Taymans
33afa18621
client-node: don't make add_listener async
...
It is not really async, the init is async.
2019-03-15 20:28:42 +01:00
Wim Taymans
1ab00fae6d
client-stream: make PropInfo visible
2019-03-15 20:25:21 +01:00
Wim Taymans
7675141cb9
monitor: improve param handling
...
When we receive a param change and the param is unreadable,
remove the params.
When we get a param update, always remove the old params.
2019-03-14 16:42:59 +01:00
Wim Taymans
3fb9fa06a9
client-stream: emit property change events
...
Emit a property (param) change event when the volume or mute is
changed on a stream.
2019-03-14 16:40:17 +01:00
Wim Taymans
306f0dd964
v4l2: set result param id
2019-03-14 16:38:36 +01:00
Wim Taymans
8b2b7c3053
params: only emit callback for requested seq
2019-03-14 16:37:58 +01:00
Wim Taymans
efa74adfc3
submodule update
2019-03-14 13:24:51 +01:00
Wim Taymans
132dd760ee
client-stream: only add link once
2019-03-14 12:28:01 +01:00