aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2024-09-04audiomixer: systemd: depend on pipewire instead of wireplumberHEADsandbox/gkiagia/wp0.5masterGeorge Kiagiadakis1-2/+2
Depending on wireplumber.service is broken when wireplumber@ template services are used. It is also not needed now that ensure_controls() does not block waiting for nodes to appear. The service will gracefully start as long as it can connect to pipewire, so it needs to depend on pipewire instead. Bug-AGL: SPEC-4934 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: I32fe5f186252392a0b62006c1f9da3837cbc97e7
2024-09-04audiomixertest: improve wording of messages and help textGeorge Kiagiadakis1-34/+30
Bug-AGL: SPEC-4934 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: I767f7ee6bcc89b1eafad48472a06304159ef2dfe
2024-09-04audiomixertest: improve codebase to make it work correctly with wp 0.5George Kiagiadakis1-73/+62
- Replace g_warning() with fprintf(), so that we don't need to enable WIREPLUMBER_DEBUG to actually read those messages. - Make it so that the help message can be printed before connecting to pipewire and waiting for controls. - Remove the race condition mitigation hack that was previously there, in case ensure_controls() did not discover all controls initially. - Lock the audiomixer properly when using its methods and structures. Bug-AGL: SPEC-4934 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: Ia4b9448dee83838858153f1c1c744e962294cd4e
2024-09-04audiomixer: update to work with WirePlumber 0.5George Kiagiadakis2-92/+87
This update also brings improvements to the initialization state management, so that ensure_controls() is guaranteed to return after all the relevant controls have been discovered. Previously there were cases that ensure_controls() would return without having discovered the role-based sinks or the equalizer sink. Bug-AGL: SPEC-4934 Change-Id: If3acca37c98ae6ff5ef811b7634951d12bf1d030 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2024-02-13Add gitlab issue/merge request templatessalmon_18.90.0salmon/18.90.0ricefish_17.90.0ricefish/17.90.018.90.017.90.0Jan-Simon Moeller2-0/+6
Add template files for gitlab Bug-AGL: SPEC-4474 Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Change-Id: I66e969af6dbf70341b53a5d8703fddba76643729
2023-12-17Add balance/fade/treble/bass supportricefish_18.0.0ricefish/18.0.0quillback_17.1.4quillback_17.1.3quillback_17.1.2quillback_17.1.1quillback_17.1.0quillback_17.0.2quillback_17.0.1quillback_17.0.0quillback/17.1.4quillback/17.1.3quillback/17.1.2quillback/17.1.1quillback/17.1.0quillback/17.0.2quillback/17.0.1quillback/17.0.0devtool-patcheddevtool-base18.0.017.1.417.1.317.1.217.1.117.1.017.0.217.0.117.0.0Scott Murray3-73/+310
Changes: - Add support for new VSS signals for balance/fade/treble/bass. Treble and bass drive the recently added equalizer controls, while balance and fade currently do simple linear scaling down of the non-emphasized direction. - Add support for VSS 4.0 separate navigation volume and mute signals. - Significant refactoring of the audiomixer API calling code in the AudioMixerService class to avoid code duplication. - All pushes of the updated VSS values for volume and mute signals now are driven from the mixer API callback so that internal and external mixer changes are handled with less code duplication. For now, gain changes have been kept as explicit VSS updates on set, this may change if handling external changes seems more worthwhile. As well, initial master volume setting is a bit of a special case, see below. - Setting the initial volume has been tweaked a bit to ensure that the value gets pushed out via VSS. There currently seems to be an issue with the master playback sink mixer not taking changes until playback starts, so while the current code ensures that VSS subscribers see the value the daemon has set, it is likely that does not correspond to what's in WirePlumber until playback of some form happens and another volume change is made. This will be addressed with upstream. - Change flags in the mixer API have been updated to indicate overall and per-channel volume changes as separate flags. Bug-AGL: SPEC-5001 Change-Id: I66585f573978989a0c281f060a667b4495e4bc0f Signed-off-by: Scott Murray <scott.murray@konsulko.com>
2023-12-15audiomixer: add new channel volume APIAshok Sidipotu3-31/+250
- Add API to control left and right channel volumes. - Fix a bug in treble gain update. The changed gain value of Treble is not updated in the audiomixer as the gain changed callback(on_eq_params_changed) doesnt look beyond bass for gain controls. Fix this issue by continuing to look beyond bass control. - Adjust the floating point comparision epsilon value from 0.000001 to 0.00001. Bug-AGL: SPEC-4931 Change-Id: I2a242d08f194b66abd84bb31a97364884e8d2a1d Signed-off-by: Ashok Sidipotu <ashok.sidipotu@collabora.com>
2023-12-08audiomixer: Add gain controlsAshok Sidipotu4-7/+570
- Add Equalizer gain controls. - Add a simple app to test the controls. Bug-AGL: SPEC-4931 Change-Id: Ib33eb0e829747c401861e99acd67291462ec6a97 Signed-off-by: Ashok Sidipotu <ashok.sidipotu@collabora.com>
2023-08-24Rework to switch to using KUKSA.val databrokerScott Murray17-766/+979
Rework to use the "VAL" gRPC API from the KUKSA.val databroker instead of the older server's WebSocket interface. Some source files have been renamed to match the class naming to provide a bit more consistency. Bug-AGL: SPEC-4762 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I5ded74cfbd6987cd045b7b142fd9f38971aaef66
2023-06-07vis-config.cpp: define local load_string_fileDenys Dmytriyenko1-4/+14
As boost has deprecated string_file helper functions since 1.81, define one locally with minor changes to use std types where needed. Bug-AGL: SPEC-4578 Signed-off-by: Denys Dmytriyenko <denys@konsulko.com> Change-Id: I231ff70857e8d4ed827337a52c60e58d01ab6ea5
2023-03-29audiomixer: fix compilation issueAshok Sidipotu1-0/+3
Set _XOPEN_SOURCE=700 to fix the compilation error with pipewire headers. Bug-AGL: SPEC-4732 Signed-off-by: Ashok Sidipotu <ashok.sidipotu@collabora.com> Change-Id: Ib009c9ecb1828286fd83173ac5cb6ebba5c78b97
2022-11-08Update message data type handlingScott Murray1-0/+6
KUKSA.val 0.2.1 always returned numeric values as floating point, this has changed with 0.2.5 and support is required to handle data points actually having integer or unsigned integer types. Bug-AGL: SPEC-4598 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Ica9b3e5fc27e110c02788dde6549e0bb194ffeb1
2022-07-04Repurpose into VIS clientneedlefish_13.93.0needlefish/13.93.013.93.0Scott Murray26-1042/+914
Repurpose repository for a spiritual successor of the previous binding. The replacement is a daemon that demonstrates servicing the volume actuator from the VSS schema via VIS signals from KUKSA.val. Currently the connection to KUKSA.val is websocket based using the boost::asio framework, but the plan is to migrate to gRPC as that becomes more robust in KUKSA.val. As well, this new code will serve as the base for implementing a gRPC API to expose the full set of WirePlumber controls as was done with the previous binding. Notable changes: - New code is completely C++, partly to leverage using Boost, but also to futureproof future work with gRPC. The WirePlumber interfacing code that has been kept from the old binding is still C for now, converting it to C++ is a planned future rework. - Switch from CMake to meson for ease of development and some degree of futureproofing. - Use with systemd is assumed; behavior follows the systemd daemon guidelines barring the use of journald logging prefixes, which may be addressed with future work. A systemd unit is also installed as part of the build. - SPDX license headers using SPDX "short identifiers" are used in source files rather than the full copyright headers used in the previous codebase. This follows the direction that projects such as the Linux kernel are going in. Bug-AGL: SPEC-4409 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Ibb7091c4354432bb094147d1419ab475486a4abc (cherry picked from commit 298bbf445a731b85cb8d5d19a3b595e8870d8701)
2021-06-24audiomixer: fix calls to g_variant_lookup()marlin_12.93.0marlin_12.91.0marlin_12.90.1marlin_12.90.0marlin/12.93.0marlin/12.91.0marlin/12.90.1marlin/12.90.012.93.012.91.012.90.112.90.0George Kiagiadakis1-2/+2
* actually get values instead of storing them into intermediate pointers on the stack * fix crash on 32-bit architectures * no need to use NULL sentinel Bug-AGL: SPEC-3976 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: I88647ae21405fe3bd7e57c82d3e953be2767c0c9
2021-04-20audiomixer: port to wireplumber 0.4lamprey_11.92.0lamprey_11.91.0lamprey/11.92.0lamprey/11.91.011.92.0George Kiagiadakis4-278/+228
* use module-mixer-api and module-default-nodes-api * use endpoints without endpoint streams (new design) * improve thread safety a little bit Bug-AGL: SPEC-3844 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: Ia180d607698d7a8875c19cc48bd2b2c503772945
2020-09-18Fix build of audiomixer test wgt with SDKkoi_10.93.0koi_10.92.0koi_10.91.0koi/10.93.0koi/10.92.0koi/10.91.010.93.010.92.010.91.0Jan-Simon Moeller1-12/+12
The build of the tests would fail with a parsing error. Fix it. Bug-AGL: SPEC-3590 Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Change-Id: I3c257210cb2fb7031513e919750b369216de6f07
2020-08-31Start on bootjellyfish_9.99.4jellyfish/9.99.49.99.4Scott Murray1-0/+1
Update widget config.xml.in to add "run-by-default" permission. Bug-AGL: SPEC-3558 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Ib59442b3ee318f47f8da4412691e29257eefc381
2020-07-06Add test bindings for agl-service-audiomixerjellyfish_9.99.3jellyfish_9.99.2jellyfish/9.99.3jellyfish/9.99.29.99.39.99.2Li, Xiaoming6-0/+174
- Create the file and folders structure required. for building test bindings. Add all required Cmake files. - Create aft-agl-audiomixer.json configuration file for testing binding. - Create audiomixer.lua for testing bindings. Bug-AGL: SPEC-3458 Change-Id: I16d43abb29d4a124801c704b4080ba5cba16e1c8 Signed-off-by: Li, Xiaoming <lixm.fnst@cn.fujitsu.com>
2020-06-09Update autobuild scriptsjellyfish_9.99.1jellyfish/9.99.19.99.1Scott Murray2-204/+154
Update autobuild scripts with reworked version that fixes building outside of the source tree. Bug-AGL: SPEC-2049, SPEC-3300 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Ic93266a0ad6d909fe4c19349d06102fa88f71612
2020-02-18Update autobuild script to create new targetsFrederic Marec2-26/+174
Update autobuild script to create multiple widget target debug, coverage and all Bug-AGL: SPEC-2049 Signed-off-by: Frederic Marec <frederic.marec@iot.bzh> Change-Id: I7340889e46b92b2a8cea2f3c243717e0aaaf0b8a
2020-02-11Update .gitreview fileJan-Simon Möller1-0/+5
This updates the gitreview file in the project . Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org> Change-Id: I172d215baca1f5ce186dc705409e02ea6fda169e
2019-12-24audiomixer: rework event handling to avoid race conditionsicefish_8.99.5icefish/8.99.58.99.5George Kiagiadakis1-49/+114
Previously there was a race condition that would happen when audiomixer was the first client to connect to pipewire. It would get a session first and then a default endpoint id from the session, but at the time the default endpoint id would be known, the WpProxyEndpoints would still not be ready. This would cause the populate_controls() algorithm to end up with no controls and the binding would therefore report that no controls were exposed. Now we also handle objects-changed from the endpoints object manager. This is an additional trigger, so that when we end up in the situation described above, the objects-changed from the endpoints om will trigger the controls to be exposed eventually. In order to avoid signalling control changes all the time, there are now some checks to change controls only under certain conditions. Change-Id: Ied705592f889a0262465ed5efa711233a66d579b Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2019-12-12audiomixer: port to the new endpoints APIicefish_8.99.4icefish_8.99.3icefish/8.99.4icefish/8.99.38.99.48.99.3George Kiagiadakis2-444/+273
... using wireplumber API to access endpoint information instead of the low-level pipewire API. This exports only the master volume for the moment. Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: I4fc78c4182259b6405c1eeaa1823c3bac83ba2ee
2019-12-12fix(confg.cmake): set PROJECT_URL to silence CMake warningLi Xiaoming1-0/+1
No homepage url found. Please set a PROJECT_URL cmake variable in your config.cmake. Bug-AGL: SPEC-2804 Change-Id: I6e135c06c6aa5315ffb9db3907bb20c533ddc79e Signed-off-by: Li Xiaoming <lixm.fnst@cn.fujitsu.com>
2019-12-12audiomixer: add steering wheel event processing supportMatt Ranostay2-0/+88
Subscribe to volume events from the agl-service-signal-composer service, and enable up/down/mute event processing applied to the Master mixer control. Bug-AGL: SPEC-3024 Change-Id: I76bb66c7274875371a581568092c600dfd543e0f Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> Signed-off-by: Scott Murray <scott.murray@konsulko.com>
2019-12-06fix API usage after changesicefish_8.99.2icefish/8.99.28.99.2George Kiagiadakis1-3/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: I4c00d355a2dc452ebae413f0abf39308ba314f56
2019-12-06disable all usage of the endpoint extension to make this compile for nowGeorge Kiagiadakis1-4/+12
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: Ieba770a3902fa4081ea4b9a1c9506b9abd82f35b
2019-07-20audiomixer: README.md: add API documentationicefish_8.99.1icefish/8.99.1halibut_8.0.3halibut_8.0.2halibut_8.0.1halibut_8.0.0halibut/8.0.3halibut/8.0.2halibut/8.0.1halibut/8.0.08.99.18.0.38.0.28.0.18.0.0George Kiagiadakis1-2/+65
Bug-AGL: SPEC-2473 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: Ic9fbbf6cc1f91f8699a3ba897b3984d8e4ddf244
2019-06-28binding: use afb_api_queue_job to queue events to run asynchalibut_7.99.3halibut_7.99.2halibut/7.99.3halibut/7.99.27.99.37.99.2George Kiagiadakis1-20/+14
Apparently the binder does not like manual interventions to the event loop and it has its own mechanism for queueing events to run asynchronously. Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: Iefef031b4ad8932bbf36a5213a119908de48b41f
2019-06-28audiomixer: use pipewire's debug system in the audiomixer threadGeorge Kiagiadakis2-7/+1
Because the binder doesn't like printing messages with its own mechanism from other threads. Change-Id: I6fac81fc6de58f7cbbf2f93b9795c0833e44d85c Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2019-06-28audiomixer: fix a couple of stupid mistakesGeorge Kiagiadakis1-4/+6
This makes the code actually work now Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: I8dad07fc463ca00d4f16be63f0ad73946f6da0bc
2019-06-24Initial binding versionGeorge Kiagiadakis11-0/+1386
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: I89e493d88c7fa1309f1b2991d346fc496caa6898
2019-05-19Initial empty repositoryJan-Simon Moeller0-0/+0