The metadata is implemented by the session manager and it can decide
what to do when the defaults change. It can also choose to save
(some of) the metadata to a database.
The metadata is also shared between applications so that changes can
be picked up immediately.
Add a READONLY property flag to makr properties READONLY
Set the base_volume and volume_step in the acp device
Send the base volume and step as REAONLY properties. Use these
in pulse layer.
Add HARDWARE flag to mark a property that does some hardware control.
Mark the device volume/mute property as HARDWARE or not.
Use the HARDWARE property in pulse to set the right flags.
Parse the device events and set the Props from the ObjectConfig
as the Props param on the node.
This propagates the software volume from the device to the
node.
libacp is a port and wrapper around the pulseaudio card profile code.
It uses a set of templates for construct a card profile and mixer port
settings. It also has support for UCM when available for the hardware.
Pass the node_data around instead of the proxy. Get the proxy from
the node data.
Allocate user_data before the node_data so that the caller can
use the proxy user_data without overwriting the node_data.
When we need to send an error to a global, send the error to
all resources bound to that global. This can also be resources
that implement the global (like client-node)
When we don't have an EnumFormat param, don't fail but fall back to
the MEDIA_TYPE property to calculate the media class.
Fixes things like:
gst-launch-1.0 -v pipewiresrc stream-properties="props,media.type=Video" ! fakesink
Send the mute and volume values in the route param when hw volume
is available.
Check if the route has volume/mute and then use that to control the
volume instead of them node volume.
Update the device volume with properties from the Route param is
available.
Rework pulse a little to make sure we have all the globals ready
before performing the operation.
Update the volume/mute in the device route