Age | Commit message (Collapse) | Author | Files | Lines |
|
* Fixes policy issues
* Implements a standard way of configuring the default device: the device
that matches from the *.endpoint files that has the highest priority and
is available on the system becomes the default. Afterwards, at runtime,
the default can be changed with wireplumber-cli. Clients now also link
to the default device, so it is possible to change devices at runtime
without reconfiguring wireplumber.
George Kiagiadakis (9):
session: select the default endpoint based on endpoint priority
config: refactor wireplumber's configuration
config: fix typo in config files
module-session: debug default endpoint changes
policy: track the exported session instead of the proxy
config-policy: debug rescans
cli: fail gracefully if connection to pipewire fails
lib: debug loading of config files + endpoint priorities
parser-endpoint: fix typo; initialize endpoint priority instead of reseting the match one
Julian Bouzas (13):
config-policy: sort endpoints by creation time when finding target
parser-endpoint-link: higher number means higher priority
softdsp-endpoint: don't rename the endpoint on creation
modules: remove alsa-udev and audio-client modules
modules: add config endpoint module
config-policy: remove parsing of streams file
parser-endpoint-link: don't parse unused state value
base-endpoint: add _get_priority API
modules: only allow 'sink' and 'source' strings when parsing direction in config files
base-endpoint: add _get_global_id API
policy: add _get_session API for the policy manager
config-policy: use the default session endpoint if target-endpoint is not defined
config-policy: only handle the highest priority endpoint for a target, and the ones with keep=true
Bug-AGL: SPEC-2837
Change-Id: I87b3e8b9e159dfc472aa534e40e088ae758ad20c
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
* Adds volume controls
* Adds useful subcommands in wireplumber-cli
George Kiagiadakis (15):
lib: rename WpEndpoint* to WpBaseEndpoint*
lib: implement WpEndpoint (interface + Proxy + Exported + unit test)
endpoint: export name, media class & direction + finetune the global properties
session: ensure the exported properties do not leak object, client & factory ids
softdsp-endpoint: export Endpoint object on the pipewire registry
config-policy: avoid race condition in the unit tests
endpoint: implement get_{name,media_class,direction}
exported: delay export until the core is connected
modules: implement module-session, a WpSession provider module
cli: extend with operations to list endpoints and change the default
softdsp-endpoint: implement volume controls via the exported endpoint
cli: add a set-volume command
core: change idle_add to take a GDestroyNotify as well and return a source id
endpoint proxy: don't try to set a control value if the proxy is destroyed
meson: install a pkgconfig file for libwireplumber
Julian Bouzas (3):
stream: clear proxy when finalizing
tests: clear core weak reference when finalizing endpoint-link-fake
tests: improved config policy priority test to make sure endpoint role works
Bug-AGL: SPEC-2986
Change-Id: Ifc30465c7e24c49ab475adbca590f6aca0e67600
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
George Kiagiadakis (6):
ci: pin pipewire to a specific working commit
config: remove the stream from the default endpoint-link files
config-policy: add some more debug statements
config-policy: fix stream priority logic when the stream name comes from media.role
config-policy: fix typo in variable check
link-algorithm: link mono inputs to all available target ports
Julian Bouzas (4):
core: remove unnecessary idle callback when connecting
core: return a boolean in sync API
tests: make sure core is connected before starting config-policy tests
policy: store a core weak reference
Bug-AGL: SPEC-2837
Bug-AGL: SPEC-3003
Change-Id: I19a0a1580365e998600fcd6841d0c5d2fe955310
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
This update introduces a new TOML configuration file based
policy engine, which behaves the same as the previous static
engine, except that we now can:
* link different apps to different devices
* finetune how the device is configured with a lot of properties
that we can match against
* force a specific role to a specific app, by overriding
it in the configuration file
* make a specific app remain linked to the output even if
another app comes in to play something; this is useful
for the bluez-alsa gstreamer helper at this moment
In addition, the code is cleaner and easier to work with, and
we can easily add more properties to force a specific behavior
per app.
Bug-AGL: SPEC-2837
Change-Id: If0ecd468592b78cb2f2a5a8c3db16f655e4927f9
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
* Fixes the crashes that have previously been observed on the green machine
* Addresses issues with format selection on some devices
* Removed the mixer module which is no longer used
Bastien Nocera (2):
build: Fix build after recent PipeWire header changes
ci: Add CI
George Kiagiadakis (9):
lib/wp: move internal functions and declarations to a private.h header
proxy: allow multiple augment tasks to run in parallel
fixup: include private.h in monitor.c
lib: introduce WpObjectManager
object-manager: actually add the object-manager.* files in git
endpoint-link: ensure we call finalize of the parent class
proxy: debug in dispose() so that we can print the pw_proxy pointer
adapter: select a reasonable device format instead of letting pipewire choose its own
ci: use the same os image as pipewire and build pw with minimal features
Julian Bouzas (1):
modules: remove the mixer
Bug-AGL: SPEC-2837
Bug-AGL: SPEC-2860
Change-Id: Ica817888c877f409c4e57edb8f29f4cdf6ea0489
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
Changes:
* Respects the device configuration again
* Properly re-links with a client that was already there before
when a higher priority or a newer one exits
* Fixes some linking issues and assertion failures
* Change the project URL to reflect the move to the "pipewire"
group on freedesktop
This still doesn't fix the crashes that have been observed to happen
with alexa.
George Kiagiadakis (5):
tests: proxy: fix failure due to property key change in pipewire
monitor & softdsp: fix alsa property names and api string
policy: correctly figure out if a stream is a capture stream
policy: do not assert if the endpoint link errors out
README.md: add instructions on building and running
Julian Bouzas (3):
endpoint: add creation-time property
simple-policy: select the newest client endpoint when the role priority is equal
stream: get the node id from the info struct when preparing link
Bug-AGL: SPEC-2837
Change-Id: I804e5211ae8cbc5b787e2fc586d600c8ac9b965e
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
* fixes the problem where audio was only audible on the left channel (SPEC-2850)
* updates for pipewire master API changes
* forward-ports the changes needed to run the bluez-alsa gst helper
George Kiagiadakis (11):
daemon: do not access the inexistent error-message property from core
core & proxy: add some more assertions and debug messages for troubleshooting
sofdsp-endpoint: run audioconvert in merge+split mode and use a new linking algorithm
softdsp-endpoint/stream: remove the port proxies when they are removed on the server
monitor: update to reflect API changes in pipewire master
monitor: add a flag to activate alsa devices
softdsp/convert: append the stream name on the new "object.path" key
simple-policy: remove all the bluetooth policy stuff
modules: remove module-pw-bluez
policy: add a hack that allows some clients to be linked always
meson: bump version to 0.1.90
Bug-AGL: SPEC-2850
Bug-AGL: SPEC-2792
Bug-AGL: SPEC-2837
Change-Id: I3bfa9fe54c5c01515d596f0f3c143958141ff1ad
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
This refreshes all the patches, removing all those that made it upstream,
redoing the endpoint extension (now called session-manager extension),
and adding some more last moment fixes.
In addition, the configuration files for wireplumber & pipewire
are being updated to load the new modules, as the module set
has changed in both daemons.
Finally, the pipewire recipe is adding PACKAGECONFIG options
for jack and vulkan, so that we can actually disable them.
Pipewire upstream builds them by default and we don't want that.
Bug-AGL: SPEC-2837
Change-Id: Id42119c027558466f0a0aa71813ff15f33dfcb56
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
Bug-AGL: SPEC-2797
Change-Id: I8f1d13c4e816706f96f4a7628d238877a0cd4c02
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
Bug-AGL: SPEC-2792
Change-Id: I6075539a4964e9fb638443e14cdcfa0d0028b81c
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
(cherry picked from commit 239d4051cc450dec1c65b47339e7df7833baa9a2)
|
|
George Kiagiadakis (5):
modules: initialize some spa_pod_builders inline
proxy: fix the naming of variables that point to the instance and private structures
Merge branch 'error-handling' into 'master'
simple-policy: do not leak client endpoints when rescanning
simple-policy: compare client creation times so that the "last one wins"
Julian Bouzas (6):
dsp: use the new WpProxyLink API
proxy: throw an error if the proxy is destroyed during async constructions
modules: handle error if the endpoint proxies could not be created
simple-policy: fix bug when finding endpoints
dsp: removed unneeded format property and always use the default format
simple-endpoint-link: skip already output linked ports
Bug-AGL: SPEC-2674
Change-Id: Ic35d9921dbd1e6d4f6302d326983a73436d2b8e6
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
* Every client now has a priority based on its role
* For playback, we allow only a single client to play at a time
* For capture, we allow all clients to capture simultaneously
* Every time the "selected" device changes (either because devices
are discovered/removed or because the user changed the selection),
the clients are re-linked to the new "selected" device.
* When a playback client quits and there are others waiting unlinked,
the highest priority one is linked automatically.
* This also properly fixes re-linking the correct client(s) to the
correct device(s) when wireplumber exits and restarts.
George Kiagiadakis (7):
m-client-permissions: ref-count the client data and re-work code for safety
policy: take into account the role of the client when linking it
Merge branch 'doc-fix' into 'master'
Merge branch 'delay-unhandled-clients' into 'master'
config: allow nested blocks, in case a property has a dictionary value
policy: implement a basic policy based on role priorities
simple-policy: remove the idle callback when the object finalizes
Julian Bouzas (3):
Fix doc warnings
audio-client-module: added new module to load clients after softdsp endpoints are created
simple-policy: delay unhandled enpoints if target is not found
Bug-AGL: SPEC-2473
Change-Id: Ia37f236a8cac8b5f1f0d5e7409c50d4e7cb8a2da
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
George Kiagiadakis (18):
Merge branch 'unregister-fix' into 'master'
config: skip empty lines and comments (starting with #)
config: implement reading properties for modules from the config file
config: allow module property blocks to span multiple lines
config: ensure that both ABI and MODULE are specified before the properties
simple-policy: allow configuring the default audio devices via module arguments
config: enhance the configuration file with comments
Merge branch 'async-endpoint-links' into 'master'
Merge branch 'link-fix' into 'master'
softdsp-endpoint: actually register the streams
softdsp-endpoint: dont't add the stream-id field on the description of the master controls
softdsp-endpoint: move the selected control in the endpoint and simplify the id encoding
alsa-udev/softdsp-endpoint: make the stream names & count configurable
softdsp-endpoint/dsp: actually notify controls on the endpoint, not the dsp object
simple-policy: match the requested role to a stream in find_endpoint
mixer: implement listing controls of multiple streams
Merge branch 'multistream-softdsp-ep'
Merge branch 'stop-client' into 'master'
Julian Bouzas (21):
core: handle global references in a simpler way
endpoint: remove unneeded ref/unref
modules: unregister endpoints on global_removed instead of proxy destroyed
modules: disconnect the signals when the endpoints are destroyed
proxy: remove unneeded destroy signal
endpoint-link: make contruction async
factory: remove unneeded sync construction API
simple-endpoint: handle both input and output directions
simple-policy: handle both input and output clients
simple-endpoint-link: dont link already linked ports
softdsp-endpoint: add multiple streams support
softdsp-endpoint: change the control value properly
dsp: add support for convert mode
module-pipewire: always include the node Id in the endpoint name
proxy-link: add new API
endpoint: allow derived classes of endpoint-link to finish async construction
simple-endpoint-link: store the created links in a list
endpoint: destroy the link before removing them from the lists
endpoint: add wp_endpoint_unlink API
simple-policy: unlink the target endpoint if it is already linked
proxy: allow derived classes to finish its creation
Bug-AGL: SPEC-2473
Bug-AGL: SPEC-2572
Change-Id: I1f9ca82ef907ce7f04c977692b3707fe3ef283d2
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
* adds support for managing client permissions (required for SPEC-2554)
* properly defaults to the first non-loopback device available on the system
* add support for linking all the stream channels instead of just one
George Kiagiadakis (7):
Merge branch 'registry' into 'master'
remote-pipewire: emit global-added for all proxy types
modules: add new module to manage client permissions
Merge branch 'async-endpoints' into 'master'
softdsp-endpoint: give a proper name to the endpoint based on alsa properties
simple-policy: select by default the first non-loopback device
softdsp-endpoint: fix compiler warnings
Julian Bouzas (8):
proxy: add wp_proxy_sync API and DONE signal
proxy: don't remove the listener on destruction as it is not needed
remote-pipewire: add registry listener
modules: use the registry from WpRemotePipewire
factory: add async support
endpoint: add async initable interface boilerplate
modules: make endpoint creation async
modules: add support for multiple channels linking
Bug-AGL: SPEC-2554
Change-Id: Ie1f42e096834c2cfbd2bade714e0546066f8fb7c
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
George Kiagiadakis (9):
softdsp-endpoint: workaround pipewire bug
Merge branch 'proxy-global-id' into 'master'
core: destroy globals in _dispose() so that the global-removed signal is dispatched
m-mixer: downgrade warnings about no backend to debug messages
m-simple-policy: find_endpoint: ref the endpoint only if it's not NULL
modules: do not leak references to the endpoints at their construction time
meson: add option to disable gobject introspection
proxy: avoid crashing when the WpProxy is unrefed in the "destroyed" signal handler
remote-pipewire: do not leak the GSource
Julian Bouzas (2):
proxy: add global_id property
audio-softdsp-endpoint: set module instead of core in the module data
Change-Id: I1e08ad7245f09110d599163775ecb382298b111b
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
George Kiagiadakis (19):
lib: add new WpPolicy class and basic policy management functionality
modules: re-implement the simple policy module using WpPolicy
m-pipewire: temporarily add the sync_core_with_cb hack
WpPolicy: add a way of signaling policy changes
Merge branch 'proxy-api' into 'master'
lib: add a new WpRemote base class and move the pw_remote glue into a new WpRemotePipewire
Merge branch 'use-proxy-api' into 'master'
endpoint: maintain a weak ref to the core since construction time
modules: fix some ref counting and memory {de-,}allocation issues
proxy: maintain a weak ref to the core
lib: add some debug statements to debug the destruction sequence
Merge branch 'refcount-fix' into 'master'
Merge branch 'unregister-endpoint' into 'master'
policy: consume floating reference of GVariant in _find_endpoint()
endpoint: add some useful API for querying info about streams & controls
core: remove_global: remove object from the list before triggering the notification
remote-endpoint: disconnect the control-value change callback when the proxy is destroyed
modules: move the "selected" endpoint logic to the simple-policy module and improve it
module-mixer: implement the "Mixer/Audio" endpoint provider
Julian Bouzas (9):
proxy: add API
modules: use the new proxy API
audio-softdsp-endpoint: fix proxy port property description
alsa-udev: fix minor bug
module-pipewire and simple-endpoint: use the new Proxy API
modules: fix proxy ref-count
proxy: add destroyed signal
modules: unregister the endpoints when their proxy is destroyed
proxy: remove unneeded core reference
Bug-AGL: SPEC-2518
Change-Id: Ia4c68ea5aa173add542a96b76f34bce68dcf103d
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
George Kiagiadakis (16):
remote-endpoint: fix de-serialization of control id (Int instead of Id)
remote-endpoint: print error string in set_param implementation
m-pipewire/simple-endpoint: implement volume & mute controls
daemon: quit when the pipewire remote disconnects or signals an error
Merge branch 'endpoint-linking' into 'master'
Cleanup trailing whitespaces
softdsp-endpoint: restructure some code, fix some coding style issues
softdsp-endpoint: improve destruction sequence
softdsp-endpoint: copy format using standard struct assignment
softdsp-endpoint: destroy the DSP->node link when the DSP becomes idle
softdsp-endpoint: add master volume & mute controls
softdsp-endpoint: add the "selected" control
endpoint: ref the endpoint while unregistering
remote-endpoint: do not require a stream id on controls
softdsp-endpoint: automatically deselect other endpoints when one is selected
simple-policy: link client to the "selected" endpoint
Julian Bouzas (3):
endpoint: set core to null after unregistering endpoint and not before
modules: add softdsp-endpoit and endpoint linking implementations
simple-policy: add new module
Bug-AGL: SPEC-2473
Change-Id: Idace93865cf62016fac5b7ad9b45a888153e0d97
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
This does enhance the recipes for pipewire and wireplumber in 2 ways:
a) we add a separate package for the configuration and make it replaceable
w/o recompiling pipewire or wireplumber itself
b) this in turn makes the recipes not AGL specific and upstreamable as-is.
v2: enhanced config recipes
v3 & v4: fix typo
Bug-AGL: SPEC-2473
Change-Id: I1f6f32d7cc64d9424706ca6bc87550f5e2c6d359
Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
|
|
Bug-AGL: SPEC-2473
Change-Id: I309ff8cb335a78965dde122e8ff78142d2af6fdd
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
|