NEWS.rst 10.2 KB
Newer Older
George Kiagiadakis's avatar
George Kiagiadakis committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
WirePlumber 0.4.0
~~~~~~~~~~~~~~~~~

This is the first stable release of the 0.4.x series, which is expected to be
an API & ABI stable release series to go along with PipeWire 0.3.x. It is
a fundamental goal of this series to maintain compatibility with
pipewire-media-session, making WirePlumber suitable for a desktop PulseAudio &
JACK replacement setup, while supporting other setups as well (ex. automotive)
by making use of its brand new Lua scripting engine, which allows making
customizations easily.

Highlights:

  - Re-implemented the default-routes module in lua, using the same logic
    as the one that pipewire-media-session uses. This fixes a number of issues
    related to volume controls on alsa devices.

  - Implemented a restore-stream lua script, based on the restore-stream
    module from media-session. This allows storing stream volumes and targets
    and restoring them when the stream re-connects

  - Added support for handling dont-remix streams and streams that are not
    autoconnected. Fixes ``pw-cat -p --target=0`` and the gnome-control-center
    channel test

  - Device names are now sanitized in the same way as in pipewire-media-session

  - Disabled endpoints in the default configuration. Using endpoints does
    not provide the best experience on desktop systems yet

  - Fixed a regression introduced in 0.3.96 that would not allow streams to be
    relinked on their endpoints after having been corked by the policy

Library:

  - Some API methods were changed to adhere to the programming practices
    followed elsewhere in the codebase and to be future-proof. Also added
    paddings on public structures so that from this point on, the 0.4.x series
    is going to be API & ABI stable

  - lua: added WpState and wp_metadata_set() bindings and improved
    WpObject.activate() to report errors

  - ObjectManager: added support for declaring interest on all kinds of
    properties of global objects. Previously it was only possible to declare
    interest on pipewire global properties

Misc:

  - daemon & wpexec: changed the exit codes to follow the standardized codes
    defined in sysexits.h

  - wpexec now forces the log level to be >= 1 so that lua runtime errors can be
    printed on the terminal

  - Fixed issues with gobject-introspection data that were introduced by the
    switch to doxygen

  - Fixed a build issue where wp-gtkdoc.h would not be generated in time
    for the gobject-introspection target to build

  - Added a valgrind test setup in meson, use with ``meson test --setup=valgrind``

  - Many memory leak and stability fixes

  - Updated more documentation pages

Past releases
~~~~~~~~~~~~~

George Kiagiadakis's avatar
George Kiagiadakis committed
71
WirePlumber 0.3.96
George Kiagiadakis's avatar
George Kiagiadakis committed
72
..................
George Kiagiadakis's avatar
George Kiagiadakis committed
73

George Kiagiadakis's avatar
George Kiagiadakis committed
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Second pre-release (RC2) of WirePlumber 0.4.0.

Highlights:

  - The policy now configures streams for channel upmixing/downmixing

  - Some issues in the policy have been fixed, related to:

    - plugging a new higher priority device while audio is playing
    - pavucontrol creating links to other stream nodes for level monitoring
    - some race condition that could happen at startup

  - Proxy object errors are now handled; this fixes memory leaks of invalid
    links and generally makes things more robust

  - The systemd service units now conflict with pipewire-media-session.service

  - Session & EndpointLink objects have been removed from the API; these were
    not in use after recent refactoring, so they have been removed in order to
    avoid carrying them in the ABI

  - The documentation system has switched to use *Doxygen* & *Sphinx*; some
    documentation has also been updated and some Lua API documentation has
    been introduced

WirePlumber 0.3.95
..................

George Kiagiadakis's avatar
George Kiagiadakis committed
102
103
104
First pre-release (RC1) of WirePlumber 0.4.0.

Highlights:
105

George Kiagiadakis's avatar
George Kiagiadakis committed
106
  - Lua scripting engine. All the session management logic is now scripted
107
    and there is also the ability to run scripts standalone with ``wpexec``
George Kiagiadakis's avatar
George Kiagiadakis committed
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
    (see tests/examples).

  - Compatibility with the latest PipeWire (0.3.26+ required). Also, most
    features and behavioral logic of pipewire-media-session 0.3.26 are
    available, making WirePlumber suitable for a desktop PulseAudio & JACK
    replacement setup.

  - Compatibility with embedded system policies, like the one on AGL, has been
    restored and is fully configurable.

  - The design of endpoints has been simplified. We now associate endpoints
    with use cases (roles) instead of physical devices. This removes the need
    for "endpoint stream" objects, allows more logic to be scripted in lua
    and makes the graph simpler. It is also possible to run without endpoints
    at all, matching the behavior of pipewire-media-session and pulseaudio.

  - Configuration is now done using a pipewire-style json .conf file plus lua
    files. Most of the options go in the lua files, while pipewire context
    properties, spa_libs and pipewire modules are configured in the json file.

  - Systemd unit files have been added and are the recommended way to run
    wireplumber. Templated unit files are also available, which allow running
    multiple instances of wireplumber with a specific configuration each.

132
133
WirePlumber 0.3.0
.................
George Kiagiadakis's avatar
George Kiagiadakis committed
134
135
136
137

The desktop-ready release!

Changes since 0.2.96:
138

George Kiagiadakis's avatar
George Kiagiadakis committed
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
  - Changed how the device endpoints & nodes are named
    to make them look better in JACK graph tools, such as qjackctl.
    JACK tools use the ':' character as a separator to distinguish the node
    name from the port name (since there are no actual nodes in JACK) and
    having ':' in our node names made the graph look strange in JACK

  - Fixed an issue with parsing wireplumber.conf that could cause
    out-of-bounds memory access

  - Fixed some pw_proxy object leaks that would show up in the log

  - Fixed more issues with unlinking the stream volume (si-convert) node
    from the ALSA sink node and suspending the both;
    This now also works with PipeWire 0.3.5 and 0.3.6, so it is possible
    to use these PipeWire versions with WirePlumber without disabling streams
    on audio sinks.

156
157
WirePlumber 0.2.96
..................
George Kiagiadakis's avatar
George Kiagiadakis committed
158
159
160
161

Second pre-release (RC2) of WirePlumber 0.3.0

Changes since 0.2.95:
162
163

  - Quite some work went into fixing bugs related to the ``ReserveDevice1``
George Kiagiadakis's avatar
George Kiagiadakis committed
164
165
166
167
168
169
170
171
172
    D-Bus API. It is now possible to start a JACK server before or after
    WirePlumber and WirePlumber will automatically stop using the device that
    JACK opens, while at the same time it will enable the special "JACK device"
    that allows PipeWire to interface with JACK

  - Fixed a number of issues that did not previously allow using the spa
    bluez5 device with WirePlumber. Now it is possible to at least use the
    A2DP sink (output to bluetooth speakers) without major issues

173
174
  - On the API level, ``WpCore`` was changed to allow having multiple instances
    that share the same ``pw_context``. This is useful to have multiple
George Kiagiadakis's avatar
George Kiagiadakis committed
175
176
    connections to PipeWire, while sharing the context infrastructure

177
178
  - ``WpCore`` also gained support for retrieving server info & properties
    and ``wpctl status`` now also prints info about the server & all clients
George Kiagiadakis's avatar
George Kiagiadakis committed
179

180
  - ``module-monitor`` was modified to allow loading multiple monitor instances
George Kiagiadakis's avatar
George Kiagiadakis committed
181
182
183
    with one instance of the module itself

  - Audio nodes are now configured with the sample rate that is defined
184
    globally in ``pipewire.conf`` with ``set-prop default.clock.rate <rate>``
George Kiagiadakis's avatar
George Kiagiadakis committed
185

186
187
188
189
  - Policy now respects the ``node.autoconnect`` property; additionally, it is
    now possible to specify endpoint ids in the ``node.target`` property of nodes
    (so endpoint ids are accepted in the ``PIPEWIRE_NODE`` environment variable,
    and in the ``path`` property of the pipewire gstreamer elements)
George Kiagiadakis's avatar
George Kiagiadakis committed
190
191
192
193
194
195

  - Fixed an issue where links between the si-convert audioconvert nodes and
    the actual device nodes would stay active forever; they are now declared
    as "passive" links, which allows the nodes to suspend. This requires
    changes to PipeWire that were commited after 0.3.6; when using WirePlumber
    with 0.3.5 or 0.3.6, it is recommended to disable streams on audio sinks
196
    by commenting out the ``streams = "audio-sink.streams"`` lines in the
George Kiagiadakis's avatar
George Kiagiadakis committed
197
198
    .endpoint configuration files

199
  - ``wireplumber.conf`` now accepts comments to be present inside blocks and
George Kiagiadakis's avatar
George Kiagiadakis committed
200
201
202
203
204
205
206
207
    at the end of valid configuration lines

  - Improved documentation and restructured the default configuration to be
    more readable and sensible

  - Fixed issues that prevented using WirePlumber with GLib < 2.60;
    2.58 is now the actual minimum requirement

208
209
WirePlumber 0.2.95
..................
George Kiagiadakis's avatar
George Kiagiadakis committed
210
211

First pre-release of WirePlumber 0.3.0.
212

George Kiagiadakis's avatar
George Kiagiadakis committed
213
This is the first release that targets desktop use-cases. It aims to be
214
215
fully compatible with ``pipewire-media-session``, while at the same time it
adds a couple of features that ``pipewire-media-session`` lacks, such as:
George Kiagiadakis's avatar
George Kiagiadakis committed
216
217
218

  - It makes use of session, endpoint and endpoint-stream objects
    to orchestrate the graph
219

George Kiagiadakis's avatar
George Kiagiadakis committed
220
  - It is configurable:
221

George Kiagiadakis's avatar
George Kiagiadakis committed
222
223
    - It supports configuration of endpoints, so that their properties
      (such as their name) can be overriden
224

George Kiagiadakis's avatar
George Kiagiadakis committed
225
226
    - It also supports declaring priorities on endpoints, so that there
      are sane defaults on the first start
227

George Kiagiadakis's avatar
George Kiagiadakis committed
228
    - It supports partial configuration of linking policy
229

George Kiagiadakis's avatar
George Kiagiadakis committed
230
231
    - It supports creating static node and device objects at startup,
      also driven by configuration files
232

George Kiagiadakis's avatar
George Kiagiadakis committed
233
  - It has the concept of session default endpoints, which can be changed
234
    with ``wpctl`` and are stored in XDG_CONFIG_DIR, so the user may change
George Kiagiadakis's avatar
George Kiagiadakis committed
235
    at runtime the target device of new links in a persistent way
236

George Kiagiadakis's avatar
George Kiagiadakis committed
237
  - It supports volume & mute controls on audio endpoints, which can be
238
239
    set with ``wpctl``

George Kiagiadakis's avatar
George Kiagiadakis committed
240
241
242
243
244
245
246
247
  - Last but not least, it is extensible

Also note that this release currently breaks compatibility with AGL, since
the policy management engine received a major refactoring to enable more
use-cases, and has been focusing on desktop support ever since.
Policy features specific to AGL and other embedded systems are expected
to come back in a 0.3.x point release.

248
249
WirePlumber 0.2.0
.................
George Kiagiadakis's avatar
George Kiagiadakis committed
250
251
252

As shipped in AGL Itchy Icefish 9.0.0 and Happy Halibut 8.0.5

253
254
WirePlumber 0.1.1
.................
George Kiagiadakis's avatar
George Kiagiadakis committed
255
256
257

As shipped in AGL Happy Halibut 8.0.2

258
259
WirePlumber 0.1.1
.................
George Kiagiadakis's avatar
George Kiagiadakis committed
260
261
262

As shipped in AGL Happy Halibut 8.0.1

263
264
WirePlumber 0.1.0
.................
George Kiagiadakis's avatar
George Kiagiadakis committed
265
266

First release of WirePlumber, as shipped in AGL Happy Halibut 8.0.0