Newer
Older
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
71
72
73
74
75
76
77
78
79
80
81
# PipeWire 1.0.0 (2023-11-26)
The PipeWire project is immensely proud to announce the 1.0 release
of PipeWire.
It is API and ABI compatible with previous 0.3.x releases.
"PipeWire represents the next evolution of audio handling for Linux, taking
the best of both pro-audio (JACK) and desktop audio servers (PulseAudio) and
linking them into a single, seamless, powerful new system."
- Paul Davis, JACK and Ardour author
"What exciting times! PipeWire 1.0 is the culmination of 15 years of
Linux audio expertise, blending lessons from PulseAudio into a high-performance,
flexible, and user-friendly foundation for audio and multimedia on Linux.
I'm looking forward to the next decade of progress in the free software
consumer and professional audio space!."
- Arun Raghavan, PulseAudio developer/maintainer.
"I'm thrilled to witness the first stable release of PipeWire after five years
of collaboration with its remarkable community, pushing the boundaries of
multimedia integration in the Linux ecosystem one step further.”
- George Kiagiadakis, WirePlumber author
"From the beginning of the libcamera project, we have always seen
PipeWire as the solution to handle desktop and mobile integration and
give a seemless multimedia integration to users while providing security
features and resource sharing between applications."
- Kieran Bingham, libcamera author
Happy Holidays!
## Highlights
- Fix a memfd/dmabuf leak when uploading buffers while shutting down.
- Handle concurrent jack_port_get_buffer() calls because ardour seems to
be doing this.
- Improve time reporting (less jitter) in ALSA when using IRQ.
- Many doc improvements.
## PipeWire
- Respect PIPEWIRE_DLCLOSE everywhere, remove pw_in_valgrind().
- Remove a warning when a client tries to change ignored properties.
## Modules
- Fix a memfd/dmabuf leak when uploading buffers while shutting down.
- Fix a potential segfault when copying mix structures. (#3658)
- Avoid races in setrlimit in module-rt.
- Fix a memory leak in filter-chain.
- Set rtp.ptime on senders, not receivers.
- The ROC modules were ported to ROC 0.3
## SPA
- Improve time reporting (less jitter) in ALSA when using IRQ. (#3657)
- Add latency param query in libcamera.
- Fix some compiler warnings.
- The EVL plugin was updated.
## Bluetooth
- LC3 codec and compatibility improvements.
## Pulse server
- Fix emission of events when a sink/source state changes. (#3660)
## JACK
- Improve transport and time handling. Use unique ids to make consistent
snapshots of the current time and transport.
- Avoid enumerating port params that we are not going to use.
- Optimize buffer reuse.
- Handle concurrent jack_port_get_buffer() calls because ardour seems to
be doing this. (#3632)
## Docs
- Many doc improvements.
- Add man pages for pw-dump, pw-loopback, modules, pipewire-pulse.
- Manpages are now made with Doxygen.
- Add docs for pulse-modules
Older versions:
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# PipeWire 0.3.85 (2023-11-16)
This is the fifth (and last) 1.0 release candidate that is API and ABI
compatible with previous 0.3.x releases.
## Highlights
- Fix an issue where a link could end up paused while not negotiated.
- Fix an infinite recursion issue when finding runnable nodes.
- Support XDG base directories when loading ACP config.
- Fix MIDI event recording preview in Ardour.
- Many more small fixes, cleanups and improvements.
## PipeWire
- Fix an issue where a link could end up paused while not negotiated.
(#3619)
- Fix an infinite recursion issue when finding runnable nodes by stopping
the scan on feedback links around the driver. (#3621)
- The system service now has better socket permissions.
## Modules
- Add support for uclamp. This allows the scheduler to make better informed
decisions about where tasks should be placed, and what pstate to set
for the CPU it is running on.
- Emit warnings when applications are not doing the right locking instead
of crashing.
- Improve media.name for RAOP sinks. (#3801)
- Support pause/resume in pipe-tunnel. (#3197)
- Remove time rlimit when probing for realtime to avoid SIGXCPU.
## SPA
- Fix a bug where the resampler would be activated even when there is an
ALSA pitch element. (#3628)
- Improve resume from suspend in ALSA. (#3646)
- Add option to expose ALSA controls as prop params.
- Support XDG base directories when loading ACP config. This makes it possible
to override the ACP config files.
## Bluetooth
- Schedule nodes in the same ISO group together.
- More BAP fixes and cleanups.
## JACK
- Fix MIDI events from peer ports. This makes the MIDI event recording preview
of Ardour work correctly.
## GStreamer
- Fix some error handling in the source and sink.
## ALSA plugin
- Improve poll descriptor handling. (#3648)
## Docs
- Many improvements to the layout and organization.
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
# PipeWire 0.3.84 (2023-11-02)
This is the fourth 1.0 release candidate that is API and ABI compatible
with previous 0.3.x releases.
## Highlights
- Fix a regression with openal because the queued buffers in the stream
were not reported correctly.
- Fix a bug in port busy counters that could cause random silent links.
- Fix a regression in echo-cancel because it was not reporting its
streams as ASYNC.
- Fix a JACK regression where not all ports were enumerated in all cases.
- Many more fixes and improvements.
## PipeWire
- pw_stream now reports the queued buffers more accurately. This fixes
a regression when using openal. (#3592)
- The port busy counters were not updated correctly in some cases. This
could lead to negotiation errors and silent links. (#3547)
- Ignore latency maximum when forcing rate/quantum. (#3613)
- Nodes can now be added to multiple groups and link-groups. (#3612)
## Modules
- The filter-chain now also handles notify port dependencies
correctly. (#3596)
- Filter-chain has support for new linear, clamp, recip, exp, log, mult,
sine builtin plugins.
- The echo-cancel module now correctly reports its playback and capture
streams as ASYNC to avoid running out of buffers. (#3593)
- It is now possible to specify an array of remote names to connect to
with the native protocol.
- module-rtp-sap and module-rtp-sink now try to bind to the specified
interface.
## SPA
- The alsa plugin now removes the runtime properties such as period-num,
period-size and max-latency when suspended. (#3613)
## Bluetooth
- BAP Locations/Context is now set on endpoints as required by new bluez.
- Improve selection of BAP leader.
## JACK
- Add a jack_set_sample_rate() extension function.
- Make sure we get the info of all nodes/ports before completing the
jack_client_open() operation so that we can enumerate the ports
correctly in all cases. (#3618)
## GStreamer
- Fix types of metadata in pipewiresink.
- Also copy metadata in buffers in all cases.
- Fix size allocation in bufferpool for compressed formats.
- Don't stop streaming thread when unlinked. (#3620)
## ALSA
- The ALSA plugin now handles NULL values from mmap_areas. (#3600)
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
# PipeWire 0.3.83 (2023-10-19)
This is the third 1.0 release candidate that is API and ABI compatible
with previous 0.3.x releases.
## Highlights
- A quantum change regression was fixed.
- Use a 2 socket server now for the manager and the applications
with (when wireplumber is updated) different permissions.
- Reduce memory usage a little in audioconvert and use fewer buffers.
- Some JACK deadlocks were fixed.
- More bugfixes and improvements.
## PipeWire
- Fix quantum change regression. (#3574)
- Use a 2 socket server by default. One for the session-manager and one
for applications.
- Fix a potential use-after-free in node and device cleanup. (#3588)
## modules
- Some hardcoded buffer size limits were removed.
- Fix ASYNC flag on combined-streams.
- Add support for on-demand combined-streams using metadata.
## SPA
- alsa-udev will now ignore PCMs with the ACP_IGNORE udev environment
variable. (#3570)
- The audioadapter now uses at least 2 buffers when the follower is
async.
- The number of buffers used by plugins was tweaked a little. Most
plugins now only ask 1 buffer.
- Memory usage in audioconvert was reduced.
- Fix some unaligned reads and writes and undefined left shifts reported
by ASAN. (#3572)
- Rework vulkan dependency checking.
- Don't try to link ALSA devices when prepare fails. This fixes some
crashes.
- Fix a stall when the allowed codecs are changed in ALSA.
- Improve ALSA rate control for sources to avoid xruns. (#3584)
- Try to fix IEC958 TrueHD and DTS playback. (#2284)
## Bluetooth
- Improve fallback SCO mtu when the kernel doesn't tell us.
## JACK
- The fixed buffer size limit was removed.
- Add an option to make input buffers writable (default true).
- A potential deadlock was fixed when applications lock the process
function. (#3585)
- Use a separate thread to dispatch notifications to avoid deadlocks.
(#3585)
- Potentially fix silent export in ardour in some cases. (#3514)
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
# PipeWire 0.3.82 (2023-10-13)
This is the second 1.0 release candidate that is API and ABI compatible
with previous 0.3.x releases.
## Highlights
- Fix a regression in some devices when the Pro-Audio profile was selected.
Only enable the IRQ based scheduling and device linking in specific
safe cases. (#3556)
- Improve rate switching. In some cases the graph rate would not switch
correctly. (#2929)
- Fix regression in alsa wakeups that would cause silence in VMs.
- Fix a leak in the SBC codecs for SCO.
- More improvements to the RAOP module.
- Other small improvements and fixes.
## PipeWire
- Improve client property checks.
- Allow non-power-of-2 quantums when forced.
- Improve rate switching. In some cases the graph rate would not switch
correctly. (#2929)
- The PIPEWIRE_QUANTUM env variable now forces the size and rate in the
graph for the duration of the application. The softer PIPEWIRE_LATENCY
and PIPEWIRE_RATE can still be used to merely suggest a maximum latency
and a rate.
## modules
- Remove the RTSP FLUSH request in RAOP because it does not seem necessary.
- The RAOP module now uses the common RTP stream functions.
- Add sockets option to protocol-native to make pipewire listen on multiple
sockets.
## SPA
- Clean up some of the log functions.
- Add an option in ALSA to disable linking devices together.
- Only link pcms together when 1 capture and 1 playback pcm. For more complex
devices we can't be sure which ones can be linked. (#3556)
- disable tsched only when using linked devices.
- Add some extra checks in ALSA to avoid segfaults. (#3554)
- Add Tag support to alsa-sink and alsa-source.
- Use dynamic pod builder when we can.
- Set priority.driver on midi-bridge to allow it as a fallback driver. (#3562)
- Fix regression in alsa wakeups. (#3565)
- The PTP clock can now be found from the interface in node-driver.
## pulse-server
- Some small cleanups and internal improvements.
- Add some memory debugging messages.
- Add Tag messages to streams.
## Bluetooth
- Fix a leak in the SBC codecs for SCO.
## JACK
- Patch up midi events in the destination buffer instead of writing to the
source buffer. (#3580)
- Group all jack clients together to avoid transport issues. (#3562)
## ALSA-plugins
- Add also.deny option to block alsa clients from opening the PCM.
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
# PipeWire 0.3.81 (2023-10-06)
This is the first 1.0 release candidate that is API and ABI compatible
with previous 0.3.x releases.
## Highlights
- jackdbus support is now enabled by default.
- IRQ based scheduling in ALSA was improved and enabled by default for
Pro-Audio profile. It will also link the pcms together to get lower
latency. This now matches what JACK does and gives equal latency to
PipeWire for Pro-Audio profiles.
- Support both old and new versions of webrtc-audio-processing to make
the transition easier.
- Forced quantum changes by nodes or metadata will now also force a
suspend and resume of the graph, like the rate changes to make sure all
nodes adapt to the new quantum. This is important for Pro-Audio nodes
that need to reconfigure the hardware to a new period in IRQ based
scheduling.
- Fix a regression in regex parsing.
- Many bugfixes and improvements.
## PipeWire
- jackdbus is by default enabled now. The idea is that when jackdbus is
installed, the real libjack.so is in the path and we can become a
real JACK client.
- Forces quantum changes by nodes or metadata will now also force a
suspend and resume in the graph, like the rate changes to make sure all
nodes adapt to the new quantum. This is important for Pro-Audio nodes
that need to reconfigure the hardware to a new period.
- The stream now has an EARLY_PROCESS option that can be used to implement
custum buffer fill levels. (#3480)
- Fix a regression in regex parsing. (#3528)
- Fix a bug in position reporting in the driver node. (#3189) (#3544)
- Destroying a link will now recalculate the graph correctly.
- Fix the rate comparison for finding the best rate in the graph.
- Use malloc_trim() when available to release memory. (#1840)
## Tools
- pw-cat now supports DFF DSD files.
- pw-cli avoid some NULL derefs in some cases.
## Modules
- The RAOP sink has seen some cleanups and improvements. It will now ask
for feedback every 2 seconds to keep some devices alive.
- A bug in filter-chain was fixed where it would fail to apply the gain
when mixing just one source.
- The filter-chain can now pass the stream volume to a control in the
filter-chain graph. (#3434)
- Improve volume handling in RAOP sink.
## Pulse-server
- Some cleanup in the pending_stream handling.
- Fix a regression in the event emission code where it failed to emit
a changed event when a node was linked. (#3522)
- Lower the realtime priority of pulseaudio clients.
- Set pulse.module.id on the echo-cancel streams. (#3541)
## SPA
- Support both old and new versions of webrtc-audio-processing to make
the transition easier.
- The ALSA driver now does the sync of all followers directly from the
wakeup event. This results in more stable rate matching.
- IRQ based scheduling in ALSA was improved and enabled by default for
Pro-Audio profile. It will also link the pcms together to get lower
latency. This now matches what JACK does and gives equal latency to
PipeWire for Pro-Audio profiles.
- GNU/Hurd support was added.
- Some improvements to passthrough handling.
## Bluetooth
- Improvements to the codec handling when PipeWire is used as Audio
Gateway.
- Adapt to new Bluez API for BAP devices.
## JACK
- When the jack library is set in the default library path, avoid using
LD_LIBRARY_PATH because this can cause confusion.
- Handle clearing the latency on a port.
- jack_property now always manages to actually change the metadata because
it waits for a roundtrip before exiting.
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
# PipeWire 0.3.80 (2023-09-14)
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- A new Tag param was added that allows arbitrary metadata to be transported
out-of-band in the graph.
- Vulkan DMA buf support was merged.
- The echo-canceller was ported to webrtc-audio-processing-1.
- Fix a regression in locating monitor sources by id in pulse-server.
- Mixer io areas updates are now synchronized correctly with the data
thread to avoid potential crashes.
- Many more bugfixes and improvements.
## PipeWire
- Handle driver nodes that refuse to change the quantum or rate.
- A new Tag param was added that allows arbitrary metadata to be transported
out-of-band in the graph.
## Modules
- The pipe-tunnel source has been reworked to use a ringbuffer and rate
adaption to keep the latency constant. It can now also function as a
driver to reduce resampling. (#3478)
## Tools
- pw-cat will now place media properties in Tag params.
- pw-mon can now filter props and params.
## SPA
- ALSA refuses to change quantum and rate when in IRQ mode.
- ALSA will now be smarter in selecting the period size for batch devices
and will make it depend on the samplerate. (#3444)
- Vulkan DMA buf support was merged.
- ALSA latency will now be reported in the time domain of the graph.
- Add udev based autodetection for compress-offload devices.
- The echo-canceller was ported to webrtc-audio-processing-1.
- The v4l2 inotify code was rewritten to avoid a use-after-free and by
using a separate watch (but same fd) for each device. (#3439)
- The tag and latency handling was improved in audioadpter.
- Don't use -Ofast on alpha because it can crash on denormalized
values. (#3489)
- The mixers now synchronize spa_io_buffers updates with the data
thread to avoid crashes.
- Handle NULL param updates. (#3504)
## Pulse-server
- Fix a regression in locating monitor sources by id. (#3476)
- Add support for use_system_clock_for_timing in module-pipe-sink.
- Add support for checking module arguments.
- Avoid some useless change events.
## Bluetooth
- Ports are now marked as physical, which makes the bluetooth devices show
up as hardware devices in Ardour and other JACK apps. (#3418)
- Some fixes for LE audio support (#3479)
## JACK
- Also emit unregister notify even when supressed when creating the
client.
- The notify callbacks now match JACK2 behaviour more.
- The mixer io areas are updated and handled safely now to avoid
crashes. (#3506)
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
# PipeWire 0.3.79 (2023-08-29)
This is a quick bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- Fix a regression in suspend that could cause silence.
- Fix a regression in JACK port registration that could cause all kinds of
JACK problems. (#3485)
- Fix a typo in the neon sample conversion functions that could cause
distortion.
- Add BAP broadcast source and sink support.
- pw-top now has a batch mode to dump the output to stdout.
- Many more bugfixes and improvements.
## PipeWire
- Fix a regression in shutdown where a node might not first suspend
properly. This cause loss of sound in some cases. (#3378)
- Failure to compile a regular expression in the config file will now
be reported and ! can be used to negate the match. (#3460)
- Fix a regression where some nodes might not set running in some
cases.
- Nodes are now suspended before the format is cleared, which might
fix some crashes.
## Tools
- pw-top now has a batch mode to dump the output to stdout.
## SPA
- The queued samples in audioconvert are now correctly reported in the
delay. (#3454)
- Make it easier to add a custom profile in ACP.
- Fix a typo in the neon sample conversion functions that could cause
distortion. (#3463)
- device.profile.pro=true is added for pro audio nodes.
- An xrun counter was added to spa_io_clock to detect and track skipped
data because of xruns.
## Pulse-server
- Add alsa-sink and alsa-source modules. (#3456)
## Bluetooth
- Fix a regression where only the BAP off profile is shown.
- Add BAP broadcast source and sink support.
## JACK
- Also emit a latency notify when the buffer size changes.
- Fix a regression in JACK port registration. (#3485)
- jack_port_tie() is now supported.
## ALSA
- Improve property handling, support lists and ranges in addition to
fixed values. (#3451)
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
# PipeWire 0.3.78 (2023-08-22)
This is a small bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- An old regression was fixed with where some nodes would not run.
- A regression was fixed where removed events would not be shown in some
cases. This would result in duplicate entries in audio clients.
- Fix an off-by-one in the vban audio receiver. Tweak the rate adaption
a little.
- ACP will now set a UCM verb before probing the pro-audio devices.
- More bugfixes and improvements.
## PipeWire
- An old regression was fixed with where some nodes would not run. (#3405)
- Suspend was improved a little to avoid races when the session manager would
suspend right when a driver was starting.
## Modules
- module-rtp-sap does not use the deprecated inet_aton anymore.
- Fix an off-by-one in the vban audio receiver. Tweak the rate adaption
a little. (#3380)
## SPA
- ACP will now set a UCM verb before probing the pro-audio devices. (#3407)
- The mandatory flag will be set now on the video modifiers.
- EVL was updated to Xenomai4 r46 and xbuf creation was improved.
- An option was added to force colors in the log even when logging to !tty.
- The return type of spa_pod_builder_control() was fixed.
- inotify errors are handled better now. (#3439)
## pulse-server
- A regression was fixed where removed events would not be shown in some
cases. (#3414)
## Bluetooth
- Improve compatibility with more devices, avoid reusing the same transport
for different media-sink instances to avoid encoder resets.
- Improve enumeration of codec profiles for BAP and A2DP.
## JACK
- Ensure we can't iterate ports from a deactivated client. Also make sure
the JACK clients with the node.always-process=false always show their
ports. (#3416)
## GStreamer
- A potential crash was fixed in the device provider when stopping.
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
# PipeWire 0.3.77 (2023-08-04)
This is a quick bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- Fix a bug in ALSA source where the available number of samples was miscaluclated
and resulted in xruns in some cases.
- A new L permission was added to make it possible to force a link between
nodes even when the nodes can't see eachother.
- The VBAN module now supports midi send and receive as well.
- Many cleanups and small fixes.
## PipeWire
- Global objects now only show permissions that apply to them. The permissions
required to perform various API calls are documented.
- A new L permission was added to make it possible to force a link between
nodes even when the nodes can't see eachother.
- Config files need to end with .conf.
- The client.api is added the to global properties of a node.
## modules
- The VBAN module now supports midi send and receive as well.
- Fix module-profiler alignment and make sure we don't overrun our buffers with
many nodes.
- Protect libcanberra calls with a mutex because it is not thread safe. (#2834)
## SPA
- Support older compilers for spa_clear_ptr().
- Fix a bug in ALSA source where the available number of samples was miscaluclated
and resulted in xruns. (#3395)
- Don't set inotify on /dev but on the videoX devices directly. Setting inotify
on /dev would cause a lot of spurious wakeups and lock contention in the
fsnotify subsystem on some benchmarks.
- Audioconvert now rate limits the warnings when it runs out of buffers. (#3384)
## pulse-server
- Some bugs and inconsistencies were fixed in device lookup.
- Improve subscribe event emission, detect changes to the sink or the monitor
and send the right sink/source event. (#3388)
## JACK
- The libjack.so now has a minor version of 3 and a micro version of the pipewire
version.
- JACK clients will now see portregistration from other jack clients when they
activate/deactivate like real JACK. (#3260)
## bluetooth
- Use some more autoptr cleanups, fix some leaks.
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
# PipeWire 0.3.76 (2023-07-28)
This is a quick bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- Fix a regression that would cause the MPV pipewire backend to fail because
of a spurious thread-loop signal.
- Fix a crash when DBus is not found.
- ALSA hires timestamps are now disabled by default.
- Some more fixes and improvements.
## PipeWire
- A new option was added to pw-thread-loop to signal when the thread starts.
This is only used in module-rt to avoid regressions in mpv. (#3374)
- Fix a compilation problem.
- Stream flags now only set the properties when not already set. This fixes
a regression with node autoconnect. (#3382)
## Tools
- pw-cat will now stop when the stream is disconnected. (#2731)
- Improve the pw-cat man page, mention that stdin/stdout handling is only
on raw data.
## modules
- module-rt will now not crash when dbus is not available but error out as
before.
- A new VBAN (vb-audio.com) sender and receiver was added. (#3380)
## SPA
- Add an option in audioconvert to disable volume updates. (#3361)
- ALSA hires timestamps are disabled by default because many drivers seem to
give wrong timestamps and cause extra delay.
## bluetooth
- LE Audio support is now enabled by default when liblc3 is available now that
bluez has support for detecting the hardware features.
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
# PipeWire 0.3.75 (2023-07-21)
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- Link permissions between nodes are now enforced. This avoids potential portal
managed screencast nodes to link to the camera even though it was not assigned
permissions to do so by the session manager.
- Libcamera and v4l2 devices now have properties so that duplicates can be
filtered out by the session manager.
- A bug with draining was fixed where a buffer would be marked EMPTY and would not
play when it contained drained samples. (#3365)
- Many fixes and improvements.
## PipeWire
- Permissions for links between nodes are now enforced. The link will now check
that the owner clients of the nodes can see eachother before allowing the link.
This avoids screensharing clients to accidentally being linked to the camera
nodes by the session manager. A side effect is that patchbay tools will no longer
be able to link portal managed screencast nodes to the camera, for this we need
a new permission for those patchbay clients. (wireplumber#218)
- The stream.rules/filter.rules are now evaluated when connecting the stream/filter
so that more properties can be matched. (#3355)
- Move some internal events from the context to the nodes to better handle per-node
threads in the future.
- The thread-loop will now signal when the thread is started.
## modules
- A timestamp workaround in module-raop was reverted because it does not work
in all cases. Instead latency was increased to 1.5 seconds, which also makes
the problematic device in question work. (#3247)
- The profiler module was reworked a bit to use the new node realtime events. It
should now also handle dynamically added and removed drivers.
- The module-rt now does the rtkit calls from a separate thread so that it does
not block the main thread. This could cause deadlocks during startup in some
cases. (#3357)
## SPA
- Atomic operation macros were move from internal pipewire API to public API.
- The video-info structure now has a new SPA_VIDEO_FLAG_MODIFIER_FIXATION_REQUIRED
flag to instruct the application to fixate the modifiers. This simplifies some
logic in applications a lot.
- The libcamera and v4l2 nodes now have properties to enumerate the device id
they are using. This can be used to match v4l2 devices and libcamera devices
and filter out duplicates.
- A bug with draining was fixed where a buffer would be marked EMPTY and would not
play when it contained drained samples. (#3365)
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
# PipeWire 0.3.74 (2023-07-12)
This is a quick bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- Fix a critical bug where audio to bluetooth devices would cut out
randomly. (#3316)
- Improve RAOP compatibility.
- Avoid crashes after an update.
- Small fixes and improvements.
## PipeWire
- Mix info on port is now created explicitly.
- Remove the node as a driver peer when stopping. This caused some problem
with playback on and other remote bluetooth devices. (#3316)
- Work on avoiding crashes when loading new modules that use internal API
with old libpipewire. This is typical after an update where the old library is
still loaded by an application but when a new stream is created, updated
modules are loaded. (#3243)
## Modules
- The RTP source module now has an option to ignore the SSRC, which is
useful to continue to receive the stream when the sender is restarted.
- The native protocol will refuse to load twice now instead of silently
ignoring the error.
- module-raop is compatible with more devices. (#3247)
## SPA
- plugins will now warn when running out of buffers. This is always a bad
thing.
- Merge scope based cleanup macros.
- Add ratelimit function.
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
# PipeWire 0.3.73 (2023-07-06)
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- Fixes an ALSA resume after suspend error.
- Handle and disable seemingly wrong hires timestamps from ALSA.
- Filter-chain now has loadable plugin modules. The LV2 and sofa plugins are
moved to a separate .so file to make things more modular.
- Rate changes in the graph should now be handled more gracefully by loopback
and filter-chain.
- A regression in the rtp-sap module was fixed where it would in some cases
fail to start.
- A potential crash in the peaks resampler was fixed.
- Many cleanups and other small bug fixes.
## PipeWire
- Fix a potential segfault when no fallback driver was set in the config.
- Improve OPUS detection.
- Add ASYNC flag to pw-filter and pw-stream when queue/dequeue is not called
from the process function. This ensure we allocate an extra buffer.
- Discard pending process callbacks when disconnecting. (#3314)
- Cleanups and improvements to the debug environment variable parsing.
- The graph rate was tweaked to better handle very low rates such as those
requested by pavucontrol when it does the signal monitoring.
## Modules
- An example filter module was added.
- Filter-chain and loopback now disable the resamplers if no rate is specified
and will always follow the graph rate.
- Improve setup of filter-chain. The graph is now created when starting
because this ensure the target graph rate is known.
- Filter-chain can now link notify ports to control ports in the graph.
- Filter-chain now has loadable plugin modules. The LV2 and sofa plugins are
moved to a separate .so file.
- A regression in the rtp-sap module was fixed where it would in some cases
fail to start.
- Module-rt now has options to disable rlimits, portal and rtkit.
- module-raop-discover now has an options to set the latency. (#3247)
## Tools
- pw-cat now supports overriding all stream properties.
## SPA
- Disable rate negotiation when the resampler is disabled. We will always
follow the graph rate.
- Set device.icon property for UCM ports as well.
- Improve ALSA recover when using hires timestamps. This fixes some problems
after resume from suspend. (#3315)
- ALSA will now warn and disable hires timestamp when they seem wrong.
They can also be disabled manually with a property.
- V4l2 will now gracefully handle ENOTTY when enumerating frame sizes and
frame rates. (#3325)
- A potential crash in the peaks resampler was fixed. (#3320)
## pulse-server
- A client crash in pavucontrol is avoided by always setting a card name.
- The graph rate is now taken correctly when using the FIX flags. (#3317)
- An option was added to ignore the FIX flags of a stream. Also the
documentation for those options was updated. (#3317)
- module-raop-discover now support latency_msec. (#3247)
## Bluetooth
- Remove an assert and issue a warning/recover instead when a buffer is too
small.
## GStreamer
- The device provider does locking when destroying the registry.
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
# PipeWire 0.3.72 (2023-06-26)
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- Fix a critical bug that would refuse to update the samplerate or
buffersize in JACK clients. (#3226)
- A new module-netjack2-driver and module-netjack2-manager were added
that are compatible with NETJACK2. This allows PipeWire to become
a NETJACK2 manager or a driver between JACK2 or PipeWire servers.
- Support was added for firewire devices with FFADO. This is untested
for now and MIDI is not implemented yet.
- The node scheduling was optimized some more. External drivers are now
as efficient as in-server ones. This should improve performance of
various drivers such as bluetooth and JACK based drivers.
- Many, many bug fixes and a ton of improvements.
## PipeWire
- pw-filter can now be used to write sinks and sources.
- The node activation for drivers was changed. The driver now does not
need to go to the server to start the processing cycle. This makes
out-of-server drivers as efficient as in-server drivers.
- Don't try to use drivers with 0 priority as fallback drivers. This
avoids making the screencast driver a driver for audio. (#3219)
- Improve xrun count reporting in pw-top and the profiler. Now each
node has their own xrun counter updated when it fails to complete
processing during the cycle.
- pw-filter now also has support for TRIGGER.
- A potential fd leak was found when fds were send to a zombie client.
(#1840)
- Fix a bug where monitor or capture streams were logged twice in the
profiler. (#3278)
- Remove stream hooks safely. (#3251)
- A bug in serialization of container properties was fixed. This could
result in truncated property values. (#3290)
- The PIPEWIRE_AUTOCONNECT environment variable now always overrides the
autoconnect settings of streams. (#3299)
- Node, port and link destroy now avoids some useless work.
- Port will now try to renegotiate a new format when idle. (#3266)
## Modules
- The module-sap now is more compatible with AES67.
- A new FFADO driver module was added. This is completely untested because
of lack of hardware. Please test and report issues.
- A new NETJACK2 driver and a NETJACK2 manager module were added. These
should be drop in replacements for the JACK2 parts.
- The RAOP discover module now tries harder to only list devices once.
- The zeroconf discover module now tries harder to only list devices once.
- The RAOP sink module now handles latency better and is compatible with
some more devices. (#3247, #3282)
- The loopback and filter-chain modules now always dequeue the last input
buffer to avoid stuttering in some cases. (#3276)
- The SPA node factory module can now also export nodes. This is used to
export the PTP clock from the AES67 config file.
- A bug in module-jack-tunnel was fixed that would cause stuttering and
corrupted output in some cases. (#3255)
- The resampler is now disabled in module-loopback and filter-chain when
the samplerate is set to follow the graph rate. (#2969)
- The way the mixer peer is sent to clients was improved. It is now also
possible to let a remote node know about mixer port removes, which
can avoid memory leaks and some code simplifications.
## SPA
- Monitor ports now report latency correctly.
- The ALSA plugin now uses htimestamp to get a more accurate ringbuffer
position to estimate the clock skew.
- The channelmixer now has min/max-volume settings to limit or fix the
volume.
- The ALSA plugin can now control the playback and capture rate of USB
gadgets. This can avoid resampling and instead use the USB feedback
to control the rate.
- The ALSA output to multiple devices has been improved, some lockups
are avoided when the device ringbuffer is full.
- The compress-offload sink has improved negotiation.
## pulse-server
- Only try to use GSettings when the schema exists.
- @DEFAULT_SOURCE@, @DEFAULT_SINK@ and @DEFAULT_MONITOR@ are now correctly
handled as targets in playback and capture streams. (#3284)
- 2 new quirks are added to disable volume updates on sinks/sources.
(#1517)
- The virtual-sink and virtual-source modules were added. These are really
example modules but actually also work and are useful on PulseAudio so
implement them as well.
- Fix initial stream volumes. (#3306)
## Bluetooth
- Only register A2DP or BAP when we have codecs.
- Include codec into the media.name
## JACK
- Fix a critical bug that would refuse to update the samplerate or
buffersize. (#3226)
- Improve updates of samplerate/buffersize, delay the updates until the
client is activated. (#3297)
- Use the new mix-info updates to simplify the mixer setup and peer
detection.
## GStreamer
- Fill default strides instead of 0 on pipewire video buffers. (#3236)
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# PipeWire 0.3.71 (2023-05-17)
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.
## Highlights
- A new zero-latency jackdbus bridge was added. This works similar to what
PulseAudio has to offer and creates a sink/source when jackdbus is
started. It is however much more efficient and runs the complete PipeWire
graph as a synchronous JACK client with no added latency.
- Many performance improvements. Activation of remote nodes is more
efficient, fewer eventfds are required on the clients, less callback
overhead in performence critical paths and an optimized poll function
was added. This was mainly driven by the jackdbus module to get the lowest
possible overhead when running the graph.
- The JACK notify callback implementation was reworked to emulate better what
JACK does, improving compatibility with ardour7 and the JACK stress test.
- More work on BAP devices. Device latency is now passed on to
applications also for multi-device headsets, and channel allocation
is handled better.
- Many more improvements and bugfixes.
## PipeWire
- Remove the hardcoded limit on io_areas. This is used to link nodes together
and exchange buffers, it was limited to 2048 but now dynamically scales
based on requirements.
- Rate and quantum changes are now applied correctly in more cases. (#3159)
- Updates to client-node to more efficiently process the driver.
- The profiler information was improved to be more accurate. It should
now work better for remote drivers.
- Some potential memory map errors were fixed in the protocol because in some
case with large messages, some fds were closed too soon.
- pw-filter now implements the pw_filter_set_active() method.
- A potential out-of-buffers case was fixed in capture pw-streams where buffers
were not moved to the recycle queue when the node suspended.
- Nodes are now always woken up with the eventfd. Previously there were
some optimiztions in the server to directly call into the node process
function but that optimization is not necessary. Without this optimization
it is now possible to run nodes in different threads.
- pw-stream trigger is now implemented correctly in all cases.
- Remote nodes now use one eventfd less because they get triggered with the
node eventfd directly.
- Monitor ports are now ignored in latency updates.
- A potential race when reporting an error to a client was fixed. (#3192)
- Fix a bug where always_process nodes would sometimes IDLE. (#3189)
- Optimize peer activation. Nodes are now activated more efficiently and
independent of the number of links. It also reduces the number of eventfds
and memory in remote clients.
- A bug in property serialization was fixed. Values with spaces would only
serialize the first part of the value.
## Modules
- Correctly handle the echo-canceler plugin init method fallback. The
samplerate was not correctly configured. This is only a regression for people
that have external echo-canceler plugins.
- RAOP sink now only sets the volume on the remote end when the stream is
recording. (#3175)
- RAOP discover now tries to deduplicate entries from the same host.
- A new zero-latency jackdbus bridge was added. This works similar to what
pulseaudio has to offer and creates a sink/source when jackdbus is
started. It is however much more efficient and runs the complete PipeWire
graph as a synchronous JACK client.
- The access module uses a more secure way to check the application
executable.
- module-combine-stream now has configurable delay and latency for each
stream. This can be used to align sinks/sources with different latencies.
- A potential crash in module-pulse-tunnel was fixed when shutting down.
(#3199)
- Module-rt will now clamp the nice value to the min allowed value to avoid
errors from rtkit. (#3186)
- Fix a bug with the session counters in module-rtp-sap. Also use the right
format for L24. Improve the AES67 example config.
- Improve some warning and info messages in module-rt. (#3194)
- module-rtp-session should now do something when started without arguments.
- A potential crash in module-rtp-session was fixed. (#3217)
- module-filter-chain has better error reporting when a convolver fails to
load. (#3223)
## SPA
- Move some things around to avoid compiler warnings. (#3171)
- Increase mixer ports. Reorganize some things and bump mixer input ports
from 128 to 512.
- Fix a potential crash when a node is scheduled before it completes
the setup.
- The JACK sink and source SPA plugins have seen some improvements.
- Allow the peaks resampler still if we disabled resampling.
- Perform more cleanup in audioadapter when in error.
- An optimized non-cancellable loop implementation was added.
- Callbacks were optimized with a _fast() varsion that doesn't check the