Commit graph

2328 commits

Author SHA1 Message Date
Wim Taymans
c6a7b3eedb channelmix: implement per channel volume
Implement per channel volume on channelmix. Extend control on stream to
take an array of values when possible.

Remove name argument from pw_node_new and pw_device_new. We can pass
this as a property instead.

Improve properties on nodes to more closely match what pulseaudio does.
Don't let the monitor do too much with the udev properties but let the
session manager set the description and icon-names.

Remove some change_mask flags for things that don't change in
introspect. Use the flags to mark changes in -cli and -monitor.
2019-08-12 15:14:39 +02:00
Wim Taymans
1c27f48992 params: add PortConfig debug info 2019-08-12 15:14:39 +02:00
Wim Taymans
b8b2e494bd audioconvert: improve proxy of internal params 2019-08-12 15:14:39 +02:00
Wim Taymans
4449cf61ad audioadapter: filter filtering 2019-08-12 15:14:39 +02:00
Wim Taymans
65909b7964 props: add property to pass array of volumes 2019-08-12 15:14:39 +02:00
Wim Taymans
a1ec7f5fa7 pod: add helper function to copy array values 2019-08-12 15:14:39 +02:00
Matt Porter
b71f2dd716 meson.build: fix meson version warning
Features are used from 0.44 but min version is specified as 0.42.
Bump min version to 0.44.

Signed-off-by: Matt Porter <mporter@konsulko.com>
2019-08-09 23:20:55 +02:00
Wim Taymans
a42c517682 improve debug 2019-08-08 11:03:13 +02:00
Wim Taymans
3ee9cbd57d fix errno values 2019-08-07 13:33:14 +02:00
Wim Taymans
7cbdaeb3b6 remove obsolete dbus protocol 2019-08-07 13:09:02 +02:00
Wim Taymans
6f8268df40 audioconvert: remove speex resampler
It's slower and less accurate then the native one.
2019-08-07 13:06:14 +02:00
Wim Taymans
447d1f94bf jack: update 2019-08-07 12:59:46 +02:00
Wim Taymans
06446e0d64 port: simplify buffer allocation
Use just one function to do buffer allocation on a port.

Remove some unused variables.
2019-08-07 12:56:57 +02:00
Wim Taymans
a319ec55ea remove some unused code 2019-08-07 12:56:04 +02:00
Wim Taymans
ee66893133 mem: use right flags when mapping 2019-08-07 12:51:36 +02:00
Wim Taymans
ba118e26a3 link: improve buffer negotiation
Don't free the buffers when the mix is released, this will happen
when nothing is using them anymore with port_use_buffers later.

Mark a mixer as having buffers when the output port has buffers.
Don't set buffers on a mixer port that already has buffers.
2019-08-06 17:07:21 +02:00
Wim Taymans
d98a6d22d5 improve debug 2019-08-06 17:05:08 +02:00
Wim Taymans
003076ffc7 splitter: always fill up all dst pointers 2019-08-06 17:03:53 +02:00
Wim Taymans
b3f450e859 mem: fix errno value 2019-08-06 16:59:24 +02:00
Wim Taymans
f41720e7db Add PortConfig parameter
Add a new PortConfig parameter to configure ports of elements that
are marked with the SPA_NODE_FLAG_*_PORT_CONFIG. This is used to
configure the operation of the audioconver/audioadapter nodes and
how it should convert the internal format. We want to use the
Profile parameter only for cases where there is an enumeration of
values, like with device configuration.

Add unit tests for audioconvert and adapter to check if they handle
PortConfig correctly.

Make the media session use the PortConfig to dynamically configure
the device nodes.

Remove audio-dsp, it is not used anymore and can/should be implemented
with a simple audioconvert spa node now and some PortConfig.
2019-08-06 12:45:20 +02:00
Wim Taymans
acdfed0d04 session: keep format with max number of channels 2019-08-06 12:35:42 +02:00
Wim Taymans
f29d098074 node: keep track of spa flags 2019-08-06 12:34:52 +02:00
Wim Taymans
8982e157c4 port: handle NULL port info 2019-08-06 12:32:44 +02:00
Wim Taymans
a377bfa3f1 debug: improve debug of bool 2019-08-06 12:20:18 +02:00
Wim Taymans
d6289639f1 media-session: keep track of peer
When we don't link to a session but directly to a peer, remember
this so that we don't try to link over and over again.
2019-08-06 12:19:24 +02:00
Julian Bouzas
de031b42b1 bluez: add sco-sink and sco-source nodes 2019-08-01 15:31:54 +02:00
Julian Bouzas
d274497e3c bluez: unset sco and rfcomm fd when destroying transport 2019-08-01 15:31:54 +02:00
Wim Taymans
29d73e3437 fix compilation 2019-08-01 15:28:54 +02:00
George Kiagiadakis
e562340014 travis: fix the build script
It turns out that indentation matters...
My apologies that it took so long to figure this out
2019-08-01 15:18:38 +02:00
George Kiagiadakis
b511bd2c6a spa: install missing utils headers 2019-08-01 15:18:24 +02:00
Wim Taymans
b655fd08f7 stream: destroy proxy on disconnect 2019-08-01 15:06:54 +02:00
Wim Taymans
960a82dbb9 client-node: improve cleanup 2019-08-01 15:04:18 +02:00
Wim Taymans
7614604250 improve debug 2019-08-01 14:55:44 +02:00
Wim Taymans
4048a730e0 remote-node: use remote from data
proxy could be cleared already when destroyed
2019-08-01 14:04:20 +02:00
Wim Taymans
f1ea49d6e9 mem: add size of tag to make it possible to check subtags 2019-08-01 13:55:03 +02:00
Wim Taymans
acf931abc5 audioadapter: Format param is write only 2019-08-01 10:57:25 +02:00
Wim Taymans
2772c9f554 bluez: clean up nodes 2019-07-31 18:30:19 +02:00
Wim Taymans
a79e6737a9 device: improve debug 2019-07-31 17:22:26 +02:00
Wim Taymans
a16ea3b576 remote: do connection in the main loop 2019-07-31 13:46:07 +02:00
Wim Taymans
9869734250 monitor: unload spa handle instead of free() 2019-07-31 10:08:29 +02:00
George Kiagiadakis
30576fcff8 audioconvert/fmtconvert: assume F32 on the other port when listing formats
This allows picking F32LE as the default format on links that have
no restriction and it avoids failing negotiation when the restricted
end cannot handle S16/F32/F32P

For instance this pipeline would previously fail:

  audio-dsp mode=merge ! audio-dsp mode=convert ! alsa-sink
old negotiation:     S16LE                   S24_32LE
new negotiation:     F32LE                   S24_32LE

The link between the audio-dsp nodes has no restriction, so previously
it would negotiate S16LE, which would then fail to negotiate with alsa-sink
because fmtconvert does not know how to convert S16LE to S24_32LE directly.

With this change, the middle link negotiates to F32LE, which can be
converted to anything.
2019-07-30 11:11:57 +02:00
Wim Taymans
bf618c3440 tests: fix unit tests again 2019-07-29 17:13:13 +02:00
Wim Taymans
e11a81ba4f node: always pause in suspend
It might be possible that the node was not paused yet in idle when the
flag was set.
2019-07-29 17:11:00 +02:00
Wim Taymans
a7d8e7e6cc client-node: also track memory on the server
Do the same kind of memory tracking on the server side so that we
can remove the fd from the client when unused.
2019-07-29 17:10:15 +02:00
Wim Taymans
3d2f5f2ab1 link: go to PAUSED when mixers have buffers 2019-07-29 17:09:19 +02:00
Wim Taymans
5aba40752d node: use activation to check for completed graph
The driver node is not scheduled on the server side and so we only
know if it finished by checking the activation.
2019-07-29 17:07:37 +02:00
Wim Taymans
796d0133bf Add function to import block and track memory region
Make a new function that we can use to track mappings of imported
memory.
2019-07-29 17:06:07 +02:00
Wim Taymans
c164cb80c8 improve debug 2019-07-29 17:05:19 +02:00
Wim Taymans
40e3ba8bb4 session: only set profile on audio for now 2019-07-29 16:52:24 +02:00
Wim Taymans
e76a7abceb Add support for client fd memory
Remove the node buffers reply again. We don't need it. Instead add a
new method to the client-node to upload an array of buffer datas.
This method is called after the client has allocated buffer mem. It
will update the buffers on the server side with the client allocated
memory.

Wait for the async reply of use_buffers when doing alloc_buffers so
that we can get the updated buffer mem before we continue.

Let the link follow the states of the ports.

Add some error code to the port error states.

Add PW_STREAM_FLAG_ALLOC_BUFFERS flag to make the client alloc buffer
memory.
2019-07-26 16:17:39 +02:00