Commit graph

2018 commits

Author SHA1 Message Date
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
Wim Taymans
24117b33c7 control: make control links many to many
Output controls can be linked to many input controls and many input
controls can receive input from many output controls. Keep the control
link information inside the link.
2019-03-14 12:04:20 +01:00
Wim Taymans
7b3e7e2813 proxy: call core_proxy_delete in pw_proxy_destroy
Destroying a local proxy will also attempt to destroy the remote
resource unless the server already did that and told us to remove
the proxy.

Fix some cleanups.
2019-03-13 16:24:33 +01:00
Wim Taymans
7b2f96ae75 global: don't destroy resources when unregistering
We can unregister the global without having to destroy the
resources. We always destroy the resources when the global is
destroyed.
2019-03-13 16:23:26 +01:00
Wim Taymans
f0c887186c node: signal driver when graph incomplete
When the graph was not complete, call the driver node to recycle any
pending buffer and complete the graph.
2019-03-13 16:20:22 +01:00
Wim Taymans
1646b13e29 node: improve debug 2019-03-13 16:02:50 +01:00
Wim Taymans
66ea505f22 alsa: improve debug 2019-03-13 15:02:04 +01:00
Wim Taymans
c6cb2ea61b port: remove unused code 2019-03-12 12:16:57 +01:00
Wim Taymans
776ed79b86 remote-node: improve some errors 2019-03-12 09:07:33 +01:00
Wim Taymans
743874dd9f client-stream: improve cleanup 2019-03-11 22:07:17 +01:00