forked from PipeWire/pipewire
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
6911 lines (5880 loc) · 281 KB
/
NEWS
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 1.2.0 (2024-06-27)
This is the 1.2 release that is API and ABI compatible with previous
1.1.x and 1.0.x releases.
This release contains some of the bigger changes that happened since
the 1.0 release last year, including:
* Support for asynchronous processing has been implemented. Nodes can choose
(or be forced) to be scheduled asynchronously. The graph will not wait for
the output of the node to continue processing but it will use the output
of the previous cycle (or silence) instead. This adds one cycle of latency
but it can avoid having some nodes blocking the processing graph. Non realtime
streams and filters now also use this asynchronous processing instead of
their own slightly broken version.
* The concept of node.sync-group was added. This groups nodes with overlapping
sync-group together when one of them sets the node.sync = true. This is now
used to make sure all nodes are scheduled together when JACK transport is
started so that they all see the same transport time.
* Config parsing errors are reported earlier and much better with line and
column numbers where the parsing started to fail.
* Add support for mandatory metadata when negotiating buffer parameters. This
can be used to only negotiate extra buffer planes when certain metadata is
negotiated. One use case is the explicit sync support that requires 2
extra fds for the timelines.
* Explicit sync metadata and support was added.
* Support was added for making and using multiple data-loops in the server
and clients. Support for CPU affinity and priorities was added to the
data-loops as well.
* The log topic debug levels can now be changed at runtime with metadata.
The log levels in the pulse server can be dynamically changed with a
/core message.
* The UCM conflicting devices patches were merged.
* Add snapcast-discover module to stream to snapcast servers.
* Rework how peers are linked and the counters are updated. Resume the
peers when a node is unlinked and not yet processed. This should cause
less occasional dropouts in the graph when reconnecting things.
* Many GStreamer element updates.
* Many more fixes and improvements.
Enjoy the summer vacation!
## Highlights (since the previous 1.1.83 release)
- Small fixes here and there.
## PipeWire
- Compilation fixes after enabling -Werror=float-conversion
## Modules
- The module-rtp-sap now propagates the cleanup.sec property to the
rtp-source and the rtp-source now sets a property with the receiving
status.
- Fix for ROC 0.3, explicitly specify sender encoding. (#4070)
- Some fixes to the RAOP sink module, including a format fix for 32 bit
machines.
## Tools
- Fix pw-cli monitoring code.
## SPA
- Revert peer_enum_params again because it was not used and flawed.
- Fix multichannel processing in webrtc AEC.
## GStreamer
- Logging improvements.
- Fix a race in the bufferpool activation.
## Bluetooth
- Improvements to BAP broadcast code parsing.
Older versions:
# PipeWire 1.1.83 (2024-06-17)
This is the third and hopefully the last 1.2 release candidate that is
API and ABI compatible with previous 1.0.x releases.
Some last minute changes went in to clean up the node activation and
scheduling that justify another pre-release.
## Highlights
- Rework how peers are linked and the counters are updated. Resume the
peers when a node is unlinked and not yet processed. This should cause
less occasional dropouts in the graph when reconnecting things.
- Improve xruns in module-ffado.
- Many GStreamer element updates.
- More fixes and improvements.
## PipeWire
- Rework how peers are linked and the counters are updated. Resume the
peers when a node is unlinked and not yet processed. This should cause
less dropouts in the graph when reconnecting. (#4026)
- Improve debug of xruns.
- Evaluate node.rules and device.rules before loading the plugin so that
extra properties can be passed to the plugin init function.
## Modules
- Improve timing reporting in module-ffado some more.
- Prealloc less memory in the profiler by default.
- Improve xrun handling in module-ffado.
## Tools
- Fix a crash in pw-link when a link fails.
- Fix pw-dump update for metadata. (#4053)
## SPA
- Improve handling of controls. (#4028)
- Fix the string size in v4l2 to hold the device and vendor id.
- Support meta_videotransform on buffers in v4l2. This can be used to
signal that the buffer was rotated for example.
- Add HDMI/AC3 profile to ALSA when supported.
- Make it possible to disable the webrtc dependency
## GStreamer
- Improve caps handling in the elements.
- Set buffer duration when we can.
- Post an element error when all the elements buffers are removed.
(#1980)
- Improve DMA_DRM caps selection.
- Some refactoring work.
- Improve state handling in the elements.
## JACK
- Improve how links are activated.
- Fix some races when freeing memory.
## Bluetooth
- Support multiple BIS in the broadcast source.
# PipeWire 1.1.82 (2024-05-24)
This is the second 1.2 release candidate that is API and ABI
compatible with previous 1.0.x releases.
Not so many things needed to be fixed so this might already be the
last prerelease if everything goes well...
## Highlights
- Fix problem when moving nodes that could cause nodes to be scheduled
wrongly and cause errors. (#4017)
- Add snapcast-discover module to stream to snapcast servers.
- Work around wrong kernel provided MTU for USB controllers.
- Fix some spelling mistakes all over the codebase.
- More small fixes and improvements.
## PipeWire
- Remove the private cleanup.h header and use the public SPA version.
- Fix problem when moving nodes that could cause nodes to be scheduled
wrongly and cause errors. (#4017)
## Modules
- Handle IPv6 in module-protocol-simple and support port allocation.
- Add snapcast-discover module to stream to snapcast servers.
## Bluetooth
- Work around wrong kernel provided MTU for USB controllers.
# PipeWire 1.0.7 (2024-05-24)
This is a small bugfix release that is API and ABI compatible with previous
1.0.x releases.
## Highlights
- Fix a potential race/crash.
- Fix some problems with negotiation of large integers and floats.
- Fix JACK sysex MIDI event handling.
- Some more smaller fixes and improvements.
## PipeWire
- Fix a potential race when adding/removing a port to be scheduled.
## Modules
- Fix FFADO default device handling. (#4023)
## SPA
- Fix in integer overflow and float/double compare in POD.
## JACK
- Copy larger MIDI events correctly.
# PipeWire 1.1.81 (2024-05-16)
This is the first 1.2 release candidate that is API and ABI
compatible with previous 1.0.x releases.
In addition to all the changes backported to 1.0.x, this release
also contains some new features:
## Highlights
- Support for asynchronous processing has been implemented. Nodes can choose
(or be forced) to be scheduled asynchronously. The graph will not wait for
the output of the node to continue processing but it will use the output
of the previous cycle (or silence) instead. This adds one cycle of latency
but it can avoid having some nodes blocking the processing graph. Non realtime
streams and filters now also use this asynchronous processing instead of
their own slightly broken version.
- The concept of node.sync-group was added. This groups nodes with overlapping
sync-group together when one of them sets the node.sync = true. This is now
used to make sure all nodes are scheduled together when JACK transport is
started so that they all see the same time.
- Config parsing errors are reported earlier and much better with line and
column numbers where the parsing started to fail.
- Add support for mandatory metadata when negotiation buffer parameters. This
can be used to only negotiate extra buffer planes when certain metadata is
negotiated. One use case is the explicit sync support that requires 2
extra fds for the timelines.
- Support was added for making and using multiple data-loops in the server
and clients. Support for CPU affinity and priorities was added to the
data-loops as well.
- The log topic debug levels can now be changed at runtime with metadata.
The log levels in the pulse server can be dynamically changed with a
/core message.
- The UCM conflicting devices patches were merged.
## PipeWire
- snap support has been added.
- Implement async processing. (#3509)
- Support for explicit sync was added.
- Config parsing errors are reported earlier and much better.
- A -P option was added to provide extra properties to the context. This can be
used to enable some features that use rules.
- properties.rules was added to enhance properties based on some rules.
This deprecates the vm.overrides.
- Support was added for security-context. This makes it possible for a flatpak
to request a socket with specific properties from pipewire to mount in the
flatpak. The session manager can then assign permissions based on the connection
properties.
- Support for fixed arrays in pw_array was improved.
- PipeWire server and clients can now use multiple threads to process the nodes
in parallel.
- device.rules and node.rules were added to update device and node properties
based on rules.
- device.param and node.param can now be used to configure params when devices
and nodes are created.
- Memory will now try to use MFD_NOEXEC_SEAL.
- The driver id of a node is now placed in the properties.
- A potential race was fixed when adding and removing ports to the scheduling
lists.
## Modules
- Priorities for the FFADO threads can be configured now.
- The loopback module now has support for up and downmixing.
- Extra properties can now be configured per native-connection socket.
- The pulse-tunnel can now automatically reconnect when the connection is
broken.
- The RTP module now supports the PTP management protocol.
- The RTP sender can now use a timer to send out multiple packets per
quantum.
- A new module was added for loading Parametric EQ.
- The simple-protocol module now has per stream configurable properties
and can also be used to interface with a snapcast server.
- Support for local services was added to raop, rtp and pulse avahi
discoverers. Support for IPv6 on local services was added to RAOP.
## SPA
- Support for reporting JSON parsing errors has been added.
- Some extra checks are added when iterating POD structures.
- Port and profiles can now be hidden from ALSA nodes with
api.acp.hidden-ports and api.acp.hidden-profiles properties.
- The UCM conflicting devices patches were merged.
- Profiles and Routes can now also be set by name.
- Hires timestamps are now used when possible in IRQ based scheduling to
get more accurate wakeup times.
- udev can now be an optional dependency.
- audioadapter now has an option to automatically configure its ports.
- Camera rotation was added to the libcamera node.
- invoke on loops can now be done from multiple threads at the same time.
- Make sure we use CLOCK_MONOTONIC everywhere in the io_clock.
- Vulkan bit and convert filters were added.
- ALSA will now always read the HW ringbuffer pointer when followers are
not on the same card.
- Support for larger MIDI sysex messages was improved. Configuration of
the client input and output pool was added. (#4005)
## Bluetooth
- Support Google OPUS codec.
- Support the LC3-SWB codec.
- Support the AAC-ELD codec.
- Broadcast source configuration support was added.
## pulseaudio-server
- The GSettings schemas are now optionally installed.
- Extensions were moved to the modules.
- The log level of the pulse server can dynamically be changed with
a core object message.
- snap access control was added to pulse-server.
- The old pacmd describe-module functionality is now implemented with
a core message pipewire-pulse:describe-module.
- An option was added to disable module loading and unloading.
## JACK
- OSC messages can now also be placed in JACK MIDI and the translation
layer will detect and tag the right PipeWire control message types.
- A jack.other-connect-mode was added to limit the connections that an
app can do to ports it doesn't own.
- The way the transport is started and how the nodes are grouped together
in the transport was improved using the new sync groups. (#3850)
- Fix large MIDI messages handling. (#4005)
## ALSA
- Fix format renegotiation. (#3858)
- Handle period events better. (#3676)
- Improve handling of the eventfd wakeups.
## GStreamer
- The GStreamer elements can now negotiate and use DMABUF.
## Tools
- The T flag is used in pw-top when the transport is running.
- A new pw-container tool was added to start a new security context and
run an application in it.
- pw-dot handles properties with quotes better. Nodes are grouped with the
node.link-group.
- pw-link has a --wait option to wait for all links to be created.
# PipeWire 1.0.6 (2024-05-09)
This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.
## Highlights
- A bitfield race was fixed that could cause some crashes or undefined
behaviour when moving nodes between drivers.
- Fix to some invalid memory access in the pw-mon and pw-dump.
- A regression in kodi with IEC958 formats playback was fixed.
- A race in the ALSA plugin was fixed when updating the eventfd.
- Improvements and fixes to module-combine-stream.
- Negotiation was improved in pipewiresrc.
- Some more small fixes and improvements.
## PipeWire
- Context properties are now set early so that client properties can be
matched with rules.
- A bitfield race was fixed that could cause some crashes or undefined
behaviour when moving nodes between drivers.
## Tools
- Fix failure to hide properties in pw-mon. (#3997)
- Fix some memleaks and a crash in pw-dump. (#4001)
## Modules
- The combine-stream module now prevents resampling to avoid broken
audio because of different samplerates.
- Fix a potential double free in module-loopback when calculating the
delay. (#3748)
- The FFADO module now only starts when ports are negotiated to avoid
startup races. (#3968)
- The combine-stream module will now forward tags.
## SPA
- Monitor volumes are now also clamped to the min/max volumes. (#3962)
- V4l2 and libcamera now encodes the device ids into a JSON array. This
is part of the deduplication code of devices.
- A regression in kodi with IEC958 formats playback was fixed.
## Bluetooth
- Improved buffer handling and queued data when stopping.
## ALSA
- A race was fixed when updating the eventfd. (#3711)
## GStreamer
- Handle some errors better instead of crashing. (#3994)
- Fix a memleak in the stream params handling.
- Negotiation was improved in pipewiresrc.
# PipeWire 1.0.5 (2024-04-15)
This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.
## Highlights
- pw_stream can now report timestamps on buffers and the expected
amount of samples for the resampler.
- The GStreamer element now has more correct timestamps using the new
pw_stream timestamps as a fallback.
- The FFADO module now handles suspend and resume better.
- A regression in v4l2 was fixed when parsing malformed filters.
- A potential memory/fd leak was fixed in client-node.
- Many more small bugfixes and improvements.
## PipeWire
- pw_stream now reports the expected resampler input or output size in
the pw_time structure. (#3750)
- pw_stream now also adds a time field to the buffer, which contains the
time of the graph when the buffer was received in the stream.
- Fix a compiler error when compiling with -Werror=shadow. (#3915)
- The config parser will warn when invalid config is detected.
## Modules
- The FFADO module now opens and closes when suspending. This fixes some
problems when FFADO properties are changed while suspended. (#3558)
- Filter-chain will now warn when invalid config is detected.
- Echo-cancel will now handle manage the state of the echo-cancel plugin
better, making sure run() is not called after deactivate().
- Fix some potential memory/fd leaks in client-node.
## SPA
- Improve reading the bound ALSA controls.
- The resampler can now also report the number of expected output samples.
- The ALSA ACP device objects have some more properties like the card.id
and alsa.components. (#3912)
- Fix a potential string corruption when parsing JSON strings.
- V4l2 now sets the latency on the port. (#3910)
- alsa-udev now has an option to expose the device even if busy. (#3914)
- Improve null-audio-sink channel handling. (#3931)
- v4l2 will now drop the first frame because it often contains wrong
timestamps or garbage. (#3910)
- A regression in v4l2 was fixed where invalid/empty properties in the
filter would make it error early. (#3959)
## GStreamer
- The source now falls back to the new pw_buffer time for the timestamps.
## Docs
- Sync with the master branch.
# PipeWire 1.0.4 (2024-03-13)
This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.
## Highlights
- Track memfd better to avoid inconsistent memory. Also make sure the
mixer info is removed correctly in all cases on destroyed ports.
- Correctly handle removed objects in the metadata.
- Add an option to set the server and client priorities instead of using
a hardcoded value of 88.
- The FFADO module has been fixed. Audio and MIDI now works with
the same latency as the JACK driver. This has now also been
tested with a Focusrite Saffire Pro 14.
- The JACK library has seen some important fixes. Some ardour crackling
has been fixed when looping and multiple MIDI ports on a client should
now work.
- Small bugfixes and improvements.
## PipeWire
- Track memfd better to avoid inconsistent memory. Also make sure the
mixer info is removed correctly in all cases on destroyed ports.
- Fix Props param emission again in pw_stream. (#3833)
- Add MAPPABLE flag to buffer data to indicate that the fd can be
mmapped directly. Use this on DMABUF from v4l2. (#3840)
- Correctly handle removed object in the metadata.
- FreeBSD build and compatibility fixes.
- Add an option to set the server and client priorities instead of using
a hardcoded value of 88.
- Read config overrides in the right order.
- Fix PIPEWIRE_QUANTUM rate handling in pw_stream and pw_filter.
- Fix pw_context_parse_conf_section(), actually use the conf argument.
- A new pw_stream_get_nsec() and pw_filter_get_nsec() function was added
to get the current time of the stream/filter without having to assume a
particular clock.
- A new default.clock.quantum-floor property was added to configure the
absolute lowest buffer-size. (#3908)
## docs
- Many doc updates.
## tools
- Make sure we always quit pw-cli when the server stops. (#3837)
- pw-top now prints all drivers in batch mode. (#3899)
## modules
- Don't destroy the client in protocol-simple on EAGAIN.
- Handle IPv6 better in the RTP modules. Fix IPv6 SAP header
parsing. (#3851)
- The FFADO module has been fixed. Audio and MIDI now works with
the same latency as the JACK driver. This has now also been
tested with a Focusrite Saffire Pro 14. (#3558)
## pulse-server
- Make sure the peer_name is filled to avoid protocol errors.
## SPA
- Small resampler tweaks to improve stability of adaptive resampler.
- Add ALSA option to control htimestamp autodisable.
- Avoid some potential crashes in audioconvert when ports are removed.
- Improve HDMI jack detection on some SOCs.
- The audioconvert now has a monitor.passthrough option to pass the
latency information on the monitor ports. (#3888)
## GStreamer
- Don't use timeouts when autoconnect=false in pipewiresrc. (#3884)
- pipewiresrc and pipewiresink can now be automatically selected as
audio source and sink.
- An invalid memory access was fixed when destroying the device
provider.
## JACK
- Remove properties correctly with the object id, not serial.
- Improve sync with the data thread by pausing the core. Also improve
handling of port io to avoid invalid buffer access.
- Fix PIPEWIRE_QUANTUM rate handling.
- Support multiple MIDI input ports per client. (#3901)
- The output buffer size is now always correctly set. (#3892)
## ALSA
- Handle errors from eventfd_create correctly.
# PipeWire 1.0.3 (2024-02-02)
This is a quick bugfix release that is API and ABI compatible with previous
1.0.x releases.
## Highlights
- Fix ALSA version check. This should allow the alsa plugin to work again.
- Some small fixes and improvements.
## PipeWire
- Escape @DEFAULT_SINK@ in the conf files.
## Modules
- Improve logging in module-pipe-tunnel.
## SPA
- Always recheck rate matching in ALSA when moving drivers. This fixes a
potential issue where the adaptive resampler would not be activated in
some cases.
## ALSA
- Fix version check. This should allow the alsa plugin to work again
with version 1.0.2.
# PipeWire 1.0.2 (2024-01-31)
This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.
## Highlights
- Fix v4l2 enumeration with filter. This should fix negotiation in some
GStreamer pipelines with capsfilter. Also probe for EXPBUF support
before using it.
- Fix max-latency property and Buffer param when dealing with small
ALSA device buffers. This should fix stuttering with some AMD
based soundcards.
- More small cleanups an improvements.
## Modules
- Improve netjack2 channel positions.
- Improve RAOP module state after suspend/resume. (#3778)
- Avoid crash in some LV2 plugins by configuring the Atom ports. (#3815)
## SPA
- Bump libcamera requirements to 0.2.0.
- Try to avoid unaligned load exceptions. (#3790)
- Fix v4l2 enumeration with filter. (#1793)
- Fix max-latency property and Buffer param when dealing with small
ALSA device buffers. This should fix stuttering with some AMD
based soundcards. (#3744,#3622)
- Add a resync.ms option to node.driver to make it possible to resync
fast to clock jumps.
- Probe for EXPBUF support in v4l2 before using it. (#3821)
## pulse-server
- Also emit change events when the port list change.
## Bluetooth
- Log a more verbose explanation when other soundservers seem to be
interfering with bluetooth.
- Add quirks for Rockbox Brick. (#3786)
- Add quirks for SoundCore mini2. (#2927)
## JACK
- Improve check for the running state of clients. (#3794)
# PipeWire 1.0.1 (2024-01-11)
This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.
## Highlights
- Work around the buggy ALSA backend in libcanberra by forcing the pulse
backend in module-x11-bell.
- Fix a race in the device info updates in pulse-server.
- Fix timing and rate matching in ALSA sequencer.
- Improve timing information in JACK and from the ALSA driver.
- More small fixes and improvements.
## PipeWire
- Fix a build issue when examples where disabled.
- Avoid some compiler warnings.
- Avoid some bitfield data races. (#3706)
## Modules
- Bump the PTP driver priority. (#3217)
- Support the previous "allowed" permission in the access module.
- Fix filename leak in module-filter-chain.
- Work around the buggy ALSA backend in libcanberra by forcing the pulse
backend in module-x11-bell. (#3688)
- Fix a race in the device info updates in pulse-server.
- Fix compatibility in RAOP. (#3698)
## SPA
- Handle ALSA picth control errors correctly
- Clamp buffer-frames correctly. (#3000)
- Fix timing and rate matching in ALSA sequencer. (#3657)
- Revert a commit that could result in current time in the future in the
timing updates.
- Improve adapter state checks.
- Remove the timer from the ALSA pcm.
- Fix timeout in freewheel driver.
## Pulse-server
- Also handle active ports for monitor sources.
- Fix zeroconf-publish format properties.
## JACK
- Improve timing and transport calculations.
- Handle -ENOENT from the core and don't error out.
## GStreamer
- Handle node port removal in the device provider. (#3708)
- Improve error handling while connecting.
- Fix dts_offset.
# 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 seamless 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
# 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.
# 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)
# 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)
# 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.
# 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
custom 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.