Commit graph

7330 commits

Author SHA1 Message Date
Wim Taymans
e30ee9c846 tools: support filenames in raw mode
The raw mode -a only supported reading raw data from stdin/stdout and
simply ignored the filename. Make it use the filename to determine
where to read from instead.

Support stdin/stdout for sysex mode as well and close the file when we
are done.

Fixes #5012
2025-12-04 10:13:13 +01:00
Wim Taymans
b68698a086 stream: refactor the free function
In the destroy we first remove all listeners and then we clean up the
memory. Move the memory cleanup to a separate function to make it easier
to refcount later.
2025-12-02 12:37:59 +01:00
Wim Taymans
0d7cb9b39f client-node: remove the MAPPABLE flag for MemPtr data
af3ad7bf9f set the fd and MAPPABLE
flag on buffer data when it was allocated inline in shared mem, even
for MemPtr data. In the client-node however we don't pass along this
fd and so we also should not pass the MAPPABLE flag for MemPtr data.

This fixes an issue in older clients that blindly try to map the fd when
the MAPPABLE flag is set, even when there is no fd (and there is already
a data pointer).

Fixes #5003
2025-12-02 12:07:47 +01:00
Mason Remaley
c81ee31c3b Fixes parameter type that trips ubsan 2025-12-02 00:52:57 +00:00
hackerman-kl
52f2137397 module-avb: milan: aecp-aem: introducing available command handler 2025-12-01 09:16:06 +00:00
hackerman-kl
6619aba582 module-avb: milan: aecp-aem: adding lock-entity handler 2025-12-01 09:16:06 +00:00
hackerman-kl
1aacf8d15a module-avb: milan: aecp-aem: introducing the response to the lock-entity command 2025-12-01 09:16:06 +00:00
hackerman-kl
93b59609a8 module-avb: aecp-aem: invalid helper response status return fixed 2025-12-01 09:16:06 +00:00
hackerman-kl
e7c7b5058d module-avb: milan: aecp-aem: introducing entity_lock response helper 2025-12-01 09:16:06 +00:00
hackerman-kl
986254f56f module-avb: milan: es_builder: introducing entity milan descriptor with necessary information about the state of the descriptor 2025-12-01 09:16:06 +00:00
hackerman-kl
32ceb47937 module-avb: aecp-aem: adding struct base_info. The structure provides
information about the controller that last accessed, the time when when
it actually accessed, and the expiring time if a timer has to be
implemented
2025-12-01 09:16:06 +00:00
hackerman-kl
354006a699 module-avb: aecp-aem: adding available pdu 2025-12-01 09:16:06 +00:00
hackerman-kl
17812c33cc module-avb: aecp-aem: adding entity state for legacy AVB and milan 2025-12-01 09:16:06 +00:00
hackerman-kl
2673558a52 module-avb: aecp-aem: add Milan specific aecp aem into its own header 2025-12-01 09:16:06 +00:00
hackerman-kl
a1b829997e module-avb: es_builder: setup the callback count to use only necessary
memory
2025-12-01 09:16:06 +00:00
hackerman-kl
bcf6b185d7 module-avb: es_builder: splitting avb/milan es_builder 2025-12-01 09:16:06 +00:00
hackerman-kl
8e870c809c module-avb: aecp-aem: introducing seperation between milan v1.2 and legacy milan.
This introduces the following changes:

 * Using the time at which the command was received
 * Preparation for the unsollicited notifications
 * New folder holding all the AECP_AEM commands/responses and utils
 * Improving the code-reusability by using common handlers
2025-12-01 09:16:06 +00:00
hackerman-kl
8e135c1015 module-avb: utils: introduce array size for static arrays 2025-12-01 09:16:06 +00:00
hackerman-kl
cdf1ebe861 module-avb: aecp-aem: moving responses status in their own file 2025-12-01 09:16:06 +00:00
hackerman-kl
99a131a91d module-avb: aecp-aem: introducing seperation between milan v1.2 and legacy milan.
This introduces the following changes:

 * Using the time at which the command was received
 * Preparation for the unsollicited notifications
 * New folder holding all the AECP_AEM commands/responses and utils
 * Improving the code-reusability by using common handlers
2025-12-01 09:15:07 +00:00
hackerman-kl
929ac1f09f module-avb: avdecc: provide stringifier of avb enum 2025-12-01 09:15:07 +00:00
hackerman-kl
f3d0642994 module-avb: avdecc: use enum instead of a boolean for avb mode (milan vs legacy avb) 2025-12-01 09:15:07 +00:00
hackerman-kl
9f1c11ac34 module-avb: aecp-aem: moving responses status in their own file 2025-12-01 09:15:07 +00:00
hackerman-kl
c48e835d0c module-avb: internal: make sure that the descriptor are modifiable at runtime 2025-12-01 09:08:26 +00:00
hackerman-kl
af62143327 module-avb: remove duplicated string 2025-12-01 09:08:26 +00:00
hackerman-kl
b60623df4d module-avb: internal: destroy internal descriptors 2025-12-01 09:08:26 +00:00
hackerman-kl
a3ce0f3e28 module-avb: avdecc: destroy stream 2025-12-01 09:08:26 +00:00
hackerman-kl
c10f869836 module-avb: mrp: cleaning allocated attribute on destroy 2025-12-01 09:08:26 +00:00
hackerman-kl
c1dbba1a31 module-avb: acmp: cleaning pending allocated resources on destroy 2025-12-01 09:08:26 +00:00
hackerman-kl
8d99bf66bd module-avb: adp: clean the allocated resources if any 2025-12-01 09:08:26 +00:00
Wim Taymans
52ec847cbd filter-graph: add feedback and feedforward to delay
Add feedback and feedforward controls to the delay. This makes it
possible to make comb and allpass filters with the delay to build
custom reverb effects.
2025-11-28 17:10:55 +01:00
hackerman-kl
21bb281c75 module-avb: internal: the add descriptor return the descriptor 2025-11-28 10:12:32 +00:00
hackerman-kl
831357ee88 module-avb: es_builder: fix invalid return check 2025-11-28 10:12:32 +00:00
hackerman-kl
f30a0c1864 module-avb: milan: adding mode selection 2025-11-28 10:11:07 +00:00
hackerman-kl
76f8ebb1f2 module-avb: configuration adding milan boolean 2025-11-28 10:11:07 +00:00
hackerman-kl
875dd91bc2 module-avb: Introduce changes in the mechanisms how the stream are
built:
* es_builder: create stream with state variables and counters
* acmp: do not use the stream list, go through the descriptor to find
  the index
* stream: do not store redundant information such as the index and
  descriptor
* internal: removing the stream server and function associated to it

module-avb: internal, stream: removing server_find_stream
2025-11-27 17:47:28 +00:00
hackerman-kl
546dafa0b0 module-avb: adding state base and stream specific information 2025-11-27 17:47:28 +00:00
hackerman-kl
a88b4bfecd module-avb: descriptor may be modified 2025-11-27 17:47:28 +00:00
hackerman-kl
8593235571 module-avb: init descriptor happens after everything is set up 2025-11-27 17:47:28 +00:00
Wim Taymans
172a2af982 pw-cat: move optstring closer to the longopts definition 2025-11-26 15:23:33 +01:00
Wim Taymans
1408dd5245 tools: use audio_layout in pw-cat
Use the standard layout names for channel map option. Provide aliases
for the old names.

Make sure we don't have too many channels for DSD.
2025-11-25 14:01:48 +01:00
Wim Taymans
2c6aa8e0d0 pulse-server: only use passive for devices
The dont-inhibit-auto-suspend flag does not do anything when using
direct-on-input-idx (capturing from a stream) in pulseaudio, so also
make it do nothing on pulse-server.

See #4991
2025-11-25 10:17:14 +01:00
Wim Taymans
ed2889cecf filter-graph: improve latency reporting of convolver
The latency of the convolver depends on the IR used. It's 0 for /dirac,
len/2 for /hilbert and let's assume it is 0 for file IRs.

Fixes #4980
2025-11-24 13:56:18 +01:00
Wim Taymans
3f292e3ce3 stream: generate PeerCapbility for old servers
Automatically make an empty PeerCapability param when we receive a
Latency event without a PeerCapability. This makes new client always
receive a PeerCapability param, even when the other side did not provide
anything or when the server is too old to collect them.
2025-11-21 10:19:36 +01:00
Wim Taymans
941fc5f51c spa: add Capability and PeerCapability
Add a new SPA_TYPE_OBJECT_ParamDict object that contains a struct with
key/value pairs. We're using something similar for Tags but this is a
more generic version.

Make a new Capability param that uses the ParamDict object. This is
meant to be used to describe capabilities with the generic key/value
struct.

Make a new PeerParam object where the keys are generic ids of the peer
objects and the values any Pod. The idea is to use this object to store
a peer objects. Make some helpers to iterate the peers and their
objects.

Add a new PeerCapability param that uses the PeerParam object with
Capability objects. This can be used to send the collection of
Capabilities from all peers to a port. This is a bit like the tags but
in a more generic way. The tags could also be implemented in this new
generic way later.

Make the PeerFormats use the same PeerParam of Format objects.

The Capability param is set on ports. impl-link will collect all
Capability objects into a PeerCapability object and send this to the
peer. The difference with the Tag param is that these Capability params
are not in any way forwared on the node automatically (like what is done
in the loopback module) because they represent the capabilities of the
ports betweem the link.
2025-11-21 10:08:46 +01:00
hackerman-kl
3372d8f102 module-avb: descriptor: moving to endstation builder (i.e es_builder) 2025-11-21 08:26:15 +00:00
hackerman-kl
55e4c7e4cb module-avb: descriptor: adding todo for simplification 2025-11-21 08:26:15 +00:00
hackerman-kl
57af462ecf modules-avb: Introducing entity builder. The entity builder is necessary
to attach ressource to the descriptors instead of having them splitted.

It is the case for the avb-streams which in a seperated list. Instead they
should be encapsulated within the descriptor itself, as one cannot leave
without the other.
2025-11-21 08:26:15 +00:00
hackerman-kl
8ea56477d9 module-avb: aecp-aem-descriptors: adding upper limit 2025-11-21 08:26:15 +00:00
hackerman-kl
f2093a3f76 module-avb: mrp: fix leavall timer issue, introducing lva state machine 2025-11-21 08:24:44 +00:00