wireplumber merge requestshttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests2023-01-14T18:55:13Zhttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/446meson.build: simplify lua dependency lookup2023-01-14T18:55:13ZBarnabás Pőczemeson.build: simplify lua dependency lookup```
The `dependency()` function can accept multiple dependency
names since meson 0.60.0, so increase the required meson
version and use this feature. For consistency, "lua53" is
added to the list of dependency names. Meson 0.60.0 was
rel...```
The `dependency()` function can accept multiple dependency
names since meson 0.60.0, so increase the required meson
version and use this feature. For consistency, "lua53" is
added to the list of dependency names. Meson 0.60.0 was
released exactly a year ago and is available in recent
releases of many distributions.
```https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/477Draft:fixes on the next-rebased2023-01-11T05:41:43ZAshok SidipotuDraft:fixes on the next-rebasedHere are the fixes done to stabilize the next-rebased after MR452Here are the fixes done to stabilize the next-rebased after MR452Ashok SidipotuAshok Sidipotuhttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/462Add tests for Lua src script in general and linking in particular.2023-01-10T11:26:40ZAshok SidipotuAdd tests for Lua src script in general and linking in particular.- Creates infrastructure to launch Lua test scripts which can test Lua source scripts.
- linking tests are taken up first.
- Each script tests a particular scenario of linking.
- The Lua script creates the needed nodes for the test case...- Creates infrastructure to launch Lua test scripts which can test Lua source scripts.
- linking tests are taken up first.
- Each script tests a particular scenario of linking.
- The Lua script creates the needed nodes for the test case, triggers the event and subscribes a hook to probe the status of linkingAshok SidipotuAshok Sidipotuhttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/476bluez: Update headset roles default value2023-01-10T09:56:08ZFrédéric Danisbluez: Update headset roles default valueSince pipewire/pipewire@2e3347e85 HSP HS role has been replaced by HFP HFP
as default headset role profileSince pipewire/pipewire@2e3347e85 HSP HS role has been replaced by HFP HFP
as default headset role profilehttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/452WIP: cleaning up events and hooks2023-01-05T11:13:39ZGeorge KiagiadakisWIP: cleaning up events and hooksThis is still WIP, but I'm pushing it here early so that you can follow progress.
The key points that these changes bring are:
* Work towards reducing the amount of object managers that we use. For the policy, we should only ever use 1...This is still WIP, but I'm pushing it here early so that you can follow progress.
The key points that these changes bring are:
* Work towards reducing the amount of object managers that we use. For the policy, we should only ever use 1 object manager, the one that lives inside the standard-event-source. With a property to get access to it, we can use this object manager to iterate over objects (nodes, devices, session items, etc...), eliminating the need for dedicated object managers in every script.
* Pass the standard-event-source as the "source" object of all events and use this to expose additional functionality to hooks:
1. The "object-manager" property
2. An action signal "push-event", to wrap the EventDispatcher function, so that event priorities are only ever set in standard-event-source
3. An action signal "schedule-rescan" to push the rescan event (see below)
4. Additional functionality could be provided in the future
* Work towards removing the "after-events" and "after-events-with-event" hook types. Instead, use the "schedule-rescan" action from the event source to push a "rescan-session" event. This event has a very low priority and will normally be handled after everything else. Then, if one of its hooks needs to push more events (policy normally pushes the "find-target-si-and-link" event), then these events shall have the highest priority, so that they are executed immediately without interruptions.
* ~~Rewrite the hook priorities to make some sense... It is important that:~~
~~1. When we look at a few hooks in the codebase, we should be able to immediately understand which hook runs first and which runs second. With the previous hook priorities enumeration, this was not possible. We instead had to look at the event-hook.h header and try to parse the huge list of priorities with bare eyes...~~
~~2. Users should be able to use custom hook priorities to inject custom hooks in-between others. It is now possible to write ex `priority = HookPriority.NORMAL + 10`. Previously it wasn't possible (`priority = "find-best-target-si" + 10` ???!)~~
* Drop hook priorities in favor of a before/after dependencies model, just like it works on systemd units.
* Add support for attaching arbitrary data on events. I want to use this to set the `si_target` variable in the policy hooks without having to use the `si_flags` for that. For 2 reasons:
1. flags are meant to be booleans, not objects
2. someone needs to clear `si_target`, because it keeps a reference to the session item GObject and that is no good. By attaching it to the event, it will automatically be unref'ed when the event is done.
* move each of the hooks from policy-hooks.lua into its own file, with clear and documented code
Next steps:
* remove all unnecessary object managers
* use the rescan-session event and drop the "after-events..." types
* ...George KiagiadakisGeorge Kiagiadakishttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/475m-lua-scripting: ignore string/integer table keys when constructing a JSON Ar...2023-01-04T16:28:34ZJulian Bouzasjulian.bouzas@collabora.comm-lua-scripting: ignore string/integer table keys when constructing a JSON Array/ObjectGeorge KiagiadakisGeorge Kiagiadakishttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/474spa-json: make sure we only add encoded string data2023-01-04T15:43:04ZJulian Bouzasjulian.bouzas@collabora.comspa-json: make sure we only add encoded string dataThe `spa_json_encode_string()` API does not add a null terminator character. We need to use the return value to know the size of the encoded string when adding it to the builder.The `spa_json_encode_string()` API does not add a null terminator character. We need to use the return value to know the size of the encoded string when adding it to the builder.George KiagiadakisGeorge Kiagiadakishttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/472Mention wpexec in lua docs2022-12-23T08:04:45ZSupreeemeMention wpexec in lua docshttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/471Fix typo: numner to number2022-12-14T10:32:57ZDylan AïssiFix typo: numner to numberhttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/470alsa-monitor: handle snd_aloop devices better2022-12-13T15:10:22ZWim Taymansalsa-monitor: handle snd_aloop devices betterPlace Loopback as the device description for snd_aloop devices.
Fixes pipewire#2214Place Loopback as the device description for snd_aloop devices.
Fixes pipewire#2214https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/468Improve support for encoded audio2022-12-07T15:20:33ZCarlos Rafael GianiImprove support for encoded audioSo far, only DSD and IEC958 are handled as "encoded" inside WirePlumber. This is important to ensure proper passthrough.
However, other audio media subtypes like AAC, MP3 etc. are not handled so far.
This merge request adds code to cons...So far, only DSD and IEC958 are handled as "encoded" inside WirePlumber. This is important to ensure proper passthrough.
However, other audio media subtypes like AAC, MP3 etc. are not handled so far.
This merge request adds code to consider the media as encoded if the format POD contains `SPA_FORMAT_AUDIO_format` with the ID being `SPA_AUDIO_FORMAT_ENCODED`. Builders for AAC, MP3, and such then just have to add that ID to the PODs they produce, and WirePlumber will then correctly consider the format as an encoded one.
Also add a check to only set the channel count if it is nonzero.
Original patches are from https://gitlab.freedesktop.org/SanchayanMaity/wireplumber/-/commits/compressed .https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/469policy-node: destroy dont-reconnect nodes when handled2022-12-06T10:04:01ZWim Taymanspolicy-node: destroy dont-reconnect nodes when handledWhen we find a dont-reconnect node, don't just return but let the logic
continue to destroy the node when it was already linked before.
Fixes pavucontrol-qt infinite monitor streams.
see pipewire#1840When we find a dont-reconnect node, don't just return but let the logic
continue to destroy the node when it was already linked before.
Fixes pavucontrol-qt infinite monitor streams.
see pipewire#1840https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/328policy-node: don't move already linked dont-reconnect nodes2022-12-05T16:48:09ZP Vpolicy-node: don't move already linked dont-reconnect nodesDont-reconnect streams should not be moved to a new target, even though
other streams would move.
Pulseaudio DONT_MOVE works like this, and also pipewire-media-session
worked like this.
See #207Dont-reconnect streams should not be moved to a new target, even though
other streams would move.
Pulseaudio DONT_MOVE works like this, and also pipewire-media-session
worked like this.
See #207https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/466Update Hindi (hi) translation2022-12-05T08:20:19ZHemishUpdate Hindi (hi) translationhttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/467Deleted subprojects/lua.wrap, wp-uninstalled.sh, meson.build, Makefile,...2022-12-04T23:24:16ZFederica GovoniDeleted subprojects/lua.wrap, wp-uninstalled.sh, meson.build, Makefile,...Deleted subprojects/lua.wrap, wp-uninstalled.sh, meson.build, Makefile, meson_options.txt, .editorconfig, tests/common/base-test-fixture.h, tests/common/test-server.h, tests/examples/audiotestsrc-play.c, tests/examples/bt-pinephone.lua, ...Deleted subprojects/lua.wrap, wp-uninstalled.sh, meson.build, Makefile, meson_options.txt, .editorconfig, tests/common/base-test-fixture.h, tests/common/test-server.h, tests/examples/audiotestsrc-play.c, tests/examples/bt-pinephone.lua, tests/examples/bt-profile-switch.lua, tests/examples/filter-chain.lua, tests/examples/get-default-sink-volume.lua, tests/examples/interactive.lua, tests/examples/meson.build, tests/modules/file-monitor.c, tests/modules/meson.build, tests/modules/reserve-device.c, tests/modules/si-audio-adapter.c, tests/modules/si-audio-endpoint.c, tests/modules/si-node.c, tests/modules/si-standard-link.c, tests/wp/core.c, tests/wp/dbus.c, tests/wp/endpoint.c, tests/wp/factory.c, tests/wp/meson.build, tests/wp/metadata.c, tests/wp/object-interest.c, tests/wp/object-manager.c, tests/wp/properties.c, tests/wp/proxy.c, tests/wp/session-item.c, tests/wp/spa-json.c, tests/wp/spa-pod.c, tests/wp/spa-type.c, tests/wp/state.c, tests/wp/transition.c, tests/wplua/scripts/lib/testlib.lua, tests/wplua/scripts/async-activation.lua, tests/wplua/scripts/json.lua, tests/wplua/scripts/monitor-rules.lua, tests/wplua/scripts/pod.lua, tests/wplua/scripts/require.lua, tests/wplua/meson.build, tests/wplua/script-tester.c, tests/wplua/wplua.c, tests/meson.build, .gitlab-ci.yml, src/systemd/system/wireplumber@.service.in, src/tools/wpctl.c, src/systemd/system/meson.build, src/tools/meson.build, src/systemd/meson.build, src/systemd/user/meson.build, src/systemd/user/wireplumber@.service.in, src/config/bluetooth.lua.d/00-functions.lua, src/config/bluetooth.lua.d/30-bluez-monitor.lua, src/config/bluetooth.lua.d/50-bluez-config.lua, src/config/bluetooth.lua.d/90-enable-all.lua, src/config/common/00-functions.lua, src/config/main.lua.d/00-functions.lua, src/config/main.lua.d/20-default-access.lua, src/config/main.lua.d/30-alsa-monitor.lua, src/config/main.lua.d/30-libcamera-monitor.lua, src/config/main.lua.d/30-v4l2-monitor.lua, src/config/main.lua.d/40-device-defaults.lua, src/config/main.lua.d/40-stream-defaults.lua, src/config/main.lua.d/50-alsa-config.lua, src/config/main.lua.d/50-default-access-config.lua, src/config/main.lua.d/50-libcamera-config.lua, src/config/main.lua.d/50-v4l2-config.lua, src/config/main.lua.d/90-enable-all.lua, src/config/policy.lua.d/00-functions.lua, src/config/policy.lua.d/10-default-policy.lua, src/config/policy.lua.d/50-endpoints-config.lua, src/config/policy.lua.d/90-enable-all.lua, src/config/bluetooth.conf, src/config/main.conf, src/config/policy.conf, src/config/wireplumber.conf, src/scripts/access/access-default.lua, src/scripts/access/access-portal.lua, src/scripts/monitors/alsa-midi.lua, src/scripts/monitors/alsa.lua, src/scripts/monitors/bluez.lua, src/scripts/monitors/libcamera.lua, src/scripts/monitors/v4l2.lua, src/scripts/create-item.lua, src/scripts/fallback-sink.lua, src/scripts/intended-roles.lua, src/scripts/policy-bluetooth.lua, src/scripts/policy-device-profile.lua, src/scripts/policy-device-routes.lua, src/scripts/policy-endpoint-client-links.lua, src/scripts/policy-endpoint-client.lua, src/scripts/policy-endpoint-device.lua, src/scripts/policy-node.lua, src/scripts/restore-stream.lua, src/scripts/static-endpoints.lua, src/scripts/suspend-node.lua, src/systemd/system/wireplumber.service.in, src/tools/wpexec.c, src/main.c, src/meson.build, modules/module-file-monitor-api.c, modules/module-lua-scripting/api/api.c, modules/module-lua-scripting/api/api.lua, modules/module-lua-scripting/api/config.c, modules/module-lua-scripting/api/gresource.xml, modules/module-lua-scripting/api/json.c, modules/module-lua-scripting/api/meson.build, modules/module-lua-scripting/api/pod.c, modules/module-lua-scripting/api/require.c, modules/module-lua-scripting/wplua/boxed.c, modules/module-lua-scripting/wplua/closure.c, modules/module-lua-scripting/wplua/gresource.xml, modules/module-lua-scripting/wplua/meson.build, modules/module-lua-scripting/wplua/object.c, modules/module-lua-scripting/wplua/private.h, modules/module-lua-scripting/wplua/sandbox.lua, modules/module-lua-scripting/wplua/userdata.c, modules/module-lua-scripting/wplua/value.c, modules/module-lua-scripting/wplua/wplua.c, modules/module-lua-scripting/wplua/wplua.h, modules/module-lua-scripting/meson.build, modules/module-lua-scripting/module.c, modules/module-lua-scripting/script.c, modules/module-lua-scripting/script.h, modules/module-default-nodes/common.h, modules/module-reserve-device/meson.build, modules/module-reserve-device/org.freedesktop.ReserveDevice1.xml, modules/module-reserve-device/plugin.c, modules/module-reserve-device/plugin.h, modules/module-reserve-device/reserve-device.c, modules/module-reserve-device/reserve-device.h, modules/module-reserve-device/transitions.c, modules/module-reserve-device/transitions.h, modules/meson.build, modules/module-default-nodes-api.c, modules/module-default-nodes.c, modules/module-default-profile.c, modules/module-logind.c, modules/module-metadata.c, modules/module-mixer-api.c, modules/module-portal-permissionstore.c, modules/module-si-audio-adapter.c, modules/module-si-audio-endpoint.c, modules/module-si-node.c, modules/module-si-standard-link.c, lib/wp/private/pipewire-object-mixin.c, lib/wp/private/pipewire-object-mixin.h, lib/wp/private/registry.h, lib/wp/client.c, lib/wp/client.h, lib/wp/component-loader.c, lib/wp/component-loader.h, lib/wp/core.c, lib/wp/core.h, lib/wp/dbus.c, lib/wp/dbus.h, lib/wp/defs.h, lib/wp/device.c, lib/wp/device.h, lib/wp/endpoint.c, lib/wp/endpoint.h, lib/wp/error.c, lib/wp/error.h, lib/wp/factory.c, lib/wp/factory.h, lib/wp/global-proxy.c, lib/wp/global-proxy.h, lib/wp/iterator.c, lib/wp/iterator.h, lib/wp/link.c, lib/wp/link.h, lib/wp/log.c, lib/wp/log.h, lib/wp/meson.build, lib/wp/metadata.c, lib/wp/metadata.h, lib/wp/module.c, lib/wp/module.h, lib/wp/node.c, lib/wp/node.h, lib/wp/object-interest.c, lib/wp/object-interest.h, lib/wp/object-manager.c, lib/wp/object-manager.h, lib/wp/object.c, lib/wp/object.h, lib/wp/plugin.c, lib/wp/plugin.h, lib/wp/port.c, lib/wp/port.h, lib/wp/properties.c, lib/wp/properties.h, lib/wp/proxy-interfaces.c, lib/wp/proxy-interfaces.h, lib/wp/proxy.c, lib/wp/proxy.h, lib/wp/session-item.c, lib/wp/session-item.h, lib/wp/si-factory.c, lib/wp/si-factory.h, lib/wp/si-interfaces.c, lib/wp/si-interfaces.h, lib/wp/spa-json.c, lib/wp/spa-json.h, lib/wp/spa-pod.c, lib/wp/spa-pod.h, lib/wp/spa-type.c, lib/wp/spa-type.h, lib/wp/state.c, lib/wp/state.h, lib/wp/transition.c, lib/wp/transition.h, lib/wp/wp.c, lib/wp/wp.h, lib/wp/wpversion.h.in, lib/meson.build, docs/_static/custom.css, docs/rst/c_api/client_api.rst, docs/rst/c_api/component_loader_api.rst, docs/rst/c_api/core_api.rst, docs/rst/c_api/device_api.rst, docs/rst/c_api/endpoint_api.rst, docs/rst/c_api/global_proxy_api.rst, docs/rst/c_api/impl_module_api.rst, docs/rst/c_api/impl_node_api.rst, docs/rst/c_api/iterator_api.rst, docs/rst/c_api/link_api.rst, docs/rst/c_api/log_api.rst, docs/rst/c_api/meson.build, docs/rst/c_api/metadata_api.rst, docs/rst/c_api/node_api.rst, docs/rst/c_api/obj_interest_api.rst, docs/rst/c_api/obj_manager_api.rst, docs/rst/c_api/object_api.rst, docs/rst/c_api/pipewire_object_api.rst, docs/rst/c_api/plugin_api.rst, docs/rst/c_api/port_api.rst, docs/rst/c_api/properties_api.rst, docs/rst/c_api/proxy_api.rst, docs/rst/c_api/session_item_api.rst, docs/rst/c_api/si_factory_api.rst, docs/rst/c_api/si_interfaces_api.rst, docs/rst/c_api/spa_device_api.rst, docs/rst/c_api/spa_json_api.rst, docs/rst/c_api/spa_pod_api.rst, docs/rst/c_api/spa_type_api.rst, docs/rst/c_api/state_api.rst, docs/rst/c_api/transitions_api.rst, docs/rst/c_api/wp_api.rst, docs/rst/c_api/wperror_api.rst, docs/rst/configuration/access.rst, docs/rst/configuration/alsa.rst, docs/rst/configuration/bluetooth.rst, docs/rst/configuration/config_lua.rst, docs/rst/configuration/locations.rst, docs/rst/configuration/main.rst, docs/rst/configuration/meson.build, docs/rst/configuration/multi_instance.rst, docs/rst/configuration/policy.rst, docs/rst/lua_api/lua_core_api.rst, docs/rst/lua_api/lua_gobject.rst, docs/rst/lua_api/lua_introduction.rst, docs/rst/lua_api/lua_local_module_api.rst, docs/rst/lua_api/lua_log_api.rst, docs/rst/lua_api/lua_object_api.rst, docs/rst/lua_api/lua_object_interest_api.rst, docs/rst/lua_api/lua_object_manager_api.rst, docs/rst/lua_api/lua_proxies_api.rst, docs/rst/lua_api/lua_session_item_api.rst, docs/rst/lua_api/lua_spa_device_api.rst, docs/rst/lua_api/lua_spa_pod.rst, docs/rst/lua_api/meson.build, docs/rst/c_api.rst, docs/rst/community.rst, docs/rst/configuration.rst, docs/rst/contributing.rst, docs/rst/daemon-logging.rst, docs/rst/index.rst, docs/rst/installing-wireplumber.rst, docs/rst/lua_api.rst, docs/rst/meson.build, docs/rst/releases.rst, docs/rst/running-wireplumber-daemon.rst, docs/rst/testing.rst, docs/Doxyfile.in, docs/conf.py.in, docs/gen-api-gtkdoc.py, docs/meson.build, README.rst, NEWS.rst, .gitignore, LICENSE, po/LINGUAS, po/POTFILES.in, po/POTFILES.skip, po/af.po, po/as.po, po/be.po, po/bg.po, po/bn_IN.po, po/ca.po, po/cs.po, po/da.po, po/de.po, po/de_CH.po, po/el.po, po/eo.po, po/es.po, po/fa.po, po/fi.po, po/fr.po, po/gl.po, po/gu.po, po/he.po, po/hi.po, po/hr.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ka.po, po/kk.po, po/kn.po, po/ko.po, po/lt.po, po/meson.build, po/ml.po, po/mr.po, po/my.po, po/nl.po, po/nn.po, po/oc.po, po/or.po, po/pa.po, po/pl.po, po/pt.po, po/pt_BR.po, po/ro.po, po/ru.po, po/si.po, po/sk.po, po/sr.po, po/sr@latin.po, po/sv.po, po/ta.po, po/te.po, po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.pohttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/465restore-stream.lua: do not restore the target when it is defined in node props2022-12-01T11:26:00ZAshok Sidipoturestore-stream.lua: do not restore the target when it is defined in node propsrestore-stream.lua: do not restore the target when it is defined in node propsrestore-stream.lua: do not restore the target when it is defined in node propsAshok SidipotuAshok Sidipotuhttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/460monitors: v4l2: allow disabling devices and nodes2022-11-30T15:53:41ZDmitry Sharshakovmonitors: v4l2: allow disabling devices and nodeshttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/464append "Firefox Developer Edition" to list of media role apps2022-11-30T10:13:45ZAshok Sidipotuappend "Firefox Developer Edition" to list of media role appsappend "Firefox Developer Edition" to list of media role appsappend "Firefox Developer Edition" to list of media role appsAshok SidipotuAshok Sidipotuhttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/461wireplumber cleanup when the init transition runs into error2022-11-26T10:27:12ZAshok Sidipotuwireplumber cleanup when the init transition runs into errorFixes for proper destruction of wireplumer deamon in case there is an error.
Fixes #371Fixes for proper destruction of wireplumer deamon in case there is an error.
Fixes #371Ashok SidipotuAshok Sidipotuhttps://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/458meson: Add options to configure whether to build daemon, tools and modules.2022-11-23T10:08:36ZTom Wagnermeson: Add options to configure whether to build daemon, tools and modules.This adds three meson options to enable or disable building daemon, tools, and modules.
Building the daemon or tools depends on building the modules, and disabling modules without disabling
the other two will result in meson giving an a...This adds three meson options to enable or disable building daemon, tools, and modules.
Building the daemon or tools depends on building the modules, and disabling modules without disabling
the other two will result in meson giving an appropriate error.
These new options will let users skip building and installing unneeded items when they are not needed,
e.g. when only using the C API in another application.
Fixes #375.