forked from PipeWire/pipewire
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNEWS
More file actions
8090 lines (6866 loc) · 327 KB
/
NEWS
File metadata and controls
8090 lines (6866 loc) · 327 KB
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.6.0 (2026-02-19)
This is the 1.6 release that is API and ABI compatible with previous
1.4.x releases.
This release contains some of the bigger changes that happened since
the 1.4 release last year, including:
* An LDAC decoder was added for bluetooth.
* SpanDSP for bluetooth packet loss concealment.
* Safe parsing and building of PODs in shared memory.
* Added support for metadata features. This is used to signal that
the sync_timeline metadata supports the RELEASE operation.
* Node commands and events can contain extra user data.
* Support for more compressed format helper functions to create
and parse formats.
* Support for compile time max channels. The max channels was
increased to 128.
* Support for audio channel layouts was added. This makes it possible
to set "audio.layout" = "5.1" instead of the more verbose
audio.position = [ FL, FR, FC, LFE, SL, SR ]
* Support for Capability Params was added. This can be used to
negotiate capabilities on a link before format and buffer
negotiation takes place.
* More HDR colortypes are added.
* Loops now have locking with priority inversion. Most code was adapted
to use the faster locks instead of epoll/eventfd to update shared state.
* Channel position are parsed from EDID data.
* Channel maps are now set on ALSA.
* The resampler now supports configurable window functions such
as blackman and kaiser windows. The phases are now also calculated
with fixed point math, which makes it more accurate.
* Many bluetooth updates and improvements.
* The filter-graph has an ffmpeg and ONNX plugin. The ffmpeg plugin
can run an audio AVFilterGraph. The ONNX plugin can run some models
such as the silero VAD.
* Many AVB updates. Work is ongoing to merge the Milan protocol.
* Support for v0 clients was removed.
* The jack-tunnel module can now autoconnect ports.
* ROC support multitrack layouts now.
* Many RTP updates.
* rlimits can now be set in the config file.
* Thread reset on fork can now be configured. JACK clients expect this
to be disabled.
* node.exclusive is now enforced.
* node.reliable enables reliable transport.
* pw-cat supports sysex and midiclip as well as some more uncompressed
formats. Options were added to set the container and codec formats
as well as list the supported containers, codecs, layouts and channel
names.
* Documentation updates.
## Highlights (since the previous 1.5.85 prerelease)
- Fix a 64 channel limit in the channel mixer.
- Fix an fd leak in pulse-server in some error cases.
- Some small fixes and improvements.
## PipeWire
- Fix Capability leaks.
- Return an error in pw-stream get-time when not STREAMING.
- Set the current time in the driver position before starting.
Some followers might look at it.
## Modules
- Improve default channel handling in module-filter-chain.
- Support source and sink only module-filter-chain.
- Tweak the filter-chain spatializer example gains.
- Handle new snapcast service type. (#5104)
- Implement socket activation without depending on libsystemd.
- Support ipv4 link-local addresses in RAOP and snapcast. (#4830)
- Forward ROC-toolkit logs to pipewire.
## SPA
- Improve default channel handling in filter-graph. (#5084)
- Clamp control values to min/max. (#5088)
- Support mode JBL gaming headsets.
- Handle some SOFA errors and add gain option.
- Really handle more than 64 channels in the channelmixer. (#5118)
- Allow removal in ALSA-udev of ignored cards.
# pulse-server
- Fix mono mixdown query.
- Expose headset autoswitch message.
- Handle EPROTO errors by disconnecting.
- Handle timeouts in play-sample streams. (#5099)
## GStreamer
- Fix crop metadata.
- Fix a race in the buffer release function.
## Tools
- Improve format support and detection in pw-cat.
- Add some more options to pw-cat to list supported containers
and formats. (#5117)
Older versions:
# PipeWire 1.5.85 (2026-01-19)
This is the fifth and hopefully last 1.6 release candidate that
is API and ABI compatible with previous 1.4.x, 1.2.x and 1.0.x
releases.
## Highlights
- Fix errors in older clients that blindly mmap buffer data.
- ALSA channel mapping should work in more cases.
- Fix an overflow in the resampler with some sample rates.
- Device ID negotiation for DMABUF was added.
- The channelmixer can now also downmix most REAR and TOP
channel positions.
- Various small fixes and improvements.
## PipeWire
- Avoid doing flushing invoke in pw-stream. (#5010)
- Fix stream time delay calculations in some cases. (#4957)
- Avoid suspending a node when the ports are busy.
## Modules
- Mode AVB module updates.
- Remove MAPPABLE flag from memptr data in client-node. This avoids
errors in older clients that blindly map buffers. (#5003)
- Don't leak the filter-chain module in module-parametric-equalizer.
(#5045)
- make it possible to run pulse tunnel sink and source with the same
name. (#5079)
## SPA
- The delay filter in filter-graph now has feedback and feedforward
options to make it possible to implement comb and allpass filters.
- The resampler can be compiled with a custom default quality.
- Firewire latency is scaled correctly now. (#4977)
- The mixer will only passthrough dynamic data.
- Fix filter-graph state in audioconvert after flush.
- Set the channel map in ALSA nodes to tell ALSA our channel layout
and avoid wrong channels.
- Fix AVX2 function, make sure they don't run on AVX-only CPUs.
(#5072)
- Fix an overflow and crash when too many phases are used in the
resampler. (#5073)
- Add some more channel downmix positions, mostly REAR and TOP
channels.
## pulse-server
- Add a message to enable mono mixdown.
## Tools
- Support filenames in raw mode in pw-cat. (#5012)
- Enable clipping in spa-resample.
## examples
- Update device ID negotiation examples.
## Docs
- Document the resampler properties better.
# PipeWire 1.5.84 (2025-11-27)
This is the fourth 1.6 release candidate that is API and ABI
compatible with previous 1.4.x, 1.2.x and 1.0.x releases.
Changes since the last pre-release:
## Highlights
- Capabilities wer added to improve negotiation over links.
- The audio resampler now has a configurable window function to better
tune the resampler quality. A kaiser and blackman window was added
and the default parameters were tuned.
- Various small fixes and improvements.
## PipeWire
- Capabilities and PeerCapabilities were added to exchange key/value
pairs between consumer and producer right after a link is made. This
can be used to detect how the negotiation of formats and buffers
should be done.
## Modules
- Avoid segfaults in RTP source. (#4970)
- The AVB module has seen some improvements.
## Pulse-server
- @NONE@ can now be used to clear the default sink/source.
## SPA
- Support longer convolver filenames and also support inline
IRs.
- The audio resampler window function is now selectable and
configurable. A kaiser window and blackman window was added
and the default qualities were tweaked to improve quality.
- The filter-graph convolver latency is now set by default to
something more sensible. (0 by default and N/2 for hilbert).
(#4980)
## Bluetooth
- Better xrun and error handling for iso streams.
- The +CNUM reply was fixed.
- The CIEC call status was fixed. (#1744)
- Add BAP context metadata to improve compatibility.
- Improve compatiblity with Creative Zen Hybrid Pro by releasing
transports simultaneously.
# PipeWire 1.5.83 (2025-11-06)
This is the third 1.6 release candidate that is API and ABI
compatible with previous 1.4.x, 1.2.x and 1.0.x releases.
Changes since the last pre-release:
## Highlights
- Include the NEWS and updated version number.
# PipeWire 1.5.82 (2025-11-06)
This is the second 1.6 release candidate that is API and ABI
compatible with previous 1.4.x, 1.2.x and 1.0.x releases.
Changes since the last pre-release:
## Highlights
- The max channel limit is now a compile time option.
- The SAP and RTP module have seen some robustness improvements.
- Add audio.layout propperty.
- Cleanups to the code here and there.
## PipeWire
- Handle Tags more like Latency with a NULL param when no ports are linked
and some sort of (empty) Tag when the ports are linked.
## Modules
- Improve the echo-cancel module to keep the streams more aligned
and cause less latency.
- Improve format parsing errors in most modules.
- The RTP module now has extra code for better network robustness, including
cases when network interfaces are not yet up and running, and multicast
sockets are silently kicked out of IGMP groups.
- The direct timestamp mode in the RTP module was effectively broken and is
now fixed.
- Add support for audio.layout.
- Add multichannel support to ROC.
## SPA
- Rework the maximum number of channel handling. Because this is a
potential ABI break, it is now a compile time option with new
functions to handle more than the previous 64 channels.
- The 64 channel limit was removed from the noise shaper.
- spa_strbuf is used in more places instead of custom snprintf code.
- The volume ramp code was simplified.
- The driver node now has properties to configure the clock.
- The adapter will try to renegotiate when the driver changes.
- Fix relaxed array parsing with od number of elements. (#4944)
- audio.layout was added to set the channel positions to some
predefined layouts.
- Added more POD choice checks to ensure the right amount of values
are present in the choice.
- Fix __has_attribute usage. (#4962)
- Thread RESET_ON_FORK is now disabled for JACK application so that
forking will preserve any real-time thread priorities, like JACK.
(#4966)
- Fix some compilation issues. (#4960 and #4961).
## Pulse-server
- Fix missing subscription events on device port changes.
- Increase min.quantum to 256/48000. (#4875)
## GStreamer
- Avoid overflow in clock time calculations.
- Fix renegotiation.
## Docs
- Swap the name and id of device.product
# PipeWire 1.5.81 (2025-10-16)
This is the first 1.6 release candidate that is API and ABI
compatible with previous 1.4.x, 1.2.x and 1.0.x releases.
In addition to all the changes backported to 1.4.x, this release
also contains some new features:
## Highlights
- The link negotiation code was refactored and improved.
Applications now have more options for selecting the default
values and restricting the available options. The default
negotiation code will now attempt to better match the application
suggested values.
- The loop now has support for locking with priority inversion. Most
of the code was updated to use the locks instead of invoke to
get proper concurrent updates with the loop. The Thread loop
functionality of locks, signal and wait was moved to the SPA loop.
This guarantees better real-time behaviour because inter-thread
synchronization does not have to pass eventfd/epoll.
- The control stream parser was rewritten to be safe against concurrent
updates while parsing, which can occur when parsing shared memory.
It also has extra checks to avoid integer overflows and undefined
behaviour.
- MIDI 2.0 clip support was added to the tools.
- Bluetooth ASHA (Audio Streaming for Hearing Aid) support was added.
- The ALSA node setup was tweaked to provide low latency with the ALSA
Firewire driver.
- Better support for explicit sync. It is now possible to negotiate
extra features to know if a consumer will signal the sync objects and
implement a fallback using a reliable transport.
- Many bug fixes and improvements.
## PipeWire
- Avoid process calls in disconnect in pw-stream. (#3314)
- Disable PipeWire services for root.
- The link negotiation was refactored and improved. Drivers now
always have a lower priority in deciding the final format.
- Backwards compatibility with the v0 protocol was removed.
- pw-stream and pw-filter will now refuse to queue a buffer that
was not dequeued before.
- Object properties will now be updated on the global as well.
- The priority of config overrides is correct now. (#4816)
- Async links now correctly report 1 extra quantum of latency.
- node.exclusive and the new port.exclusive flag are now enforced
by PipeWire itself.
- A new timer-queue helper was added to schedule timeouts.
- node.terminal and node.physical properties are now copied to the
ports to make it possible to create virtual sources and sinks
for JACK applications.
- Port properties will now be dynamically updated when the node
properties they depend on are updated.
- Passive leaf nodes are now handled better. Now they will also
run when the peer is active. (#4915)
- Reliable transport has been added for output ports. This can be
used in some cases if the producer wants to ensure buffers are
consumed by a consumer. (#4885)
- Context properties now support rlimit.<resource> properties to
configure rlimits. (#4047)
## Modules
- Close SyncObj fds.
- module-combine-stream has better Latency reporting.
- The JACK tunnel can now optionally connect ports.
- module-loopback has better Latency reporting.
- A Dolby Surround and Dolby Pro Logic II example filter config
was added.
- Filter-chain can now resample to a specific rate before running the
filters. This is useful when the filter-graph needs to run at a
specific rate.
- Avahi-poll now uses the timer-queue to schedule timeouts.
- Modules are ported to timer-queue instead of using timerfd directly
for non-realtime timers.
## SPA
- The loop now has support for locking with priority inversion. Most
of the code was updated to use the locks instead of invoke to
get proper concurrent updates with the loop. The Thread loop
functionality of locks, signal and wait was moved to the SPA loop.
- UMP to Midi 1.0 conversion was improved, some UMP events are now
converted to multiple Midi 1.0 messages. (#4839)
- The POD filter was refactored and improved. It is now possible to
use the default value of the output by specifying an invalid input
default value.
- The POD parser was made safe for concurrent updates of the memory
it is parsing. This is important when the POD is in shared memory
and the parser should not access invalid memory.
- Some hardcoded channel limits were removed and now use the global
channel limit. More things can dynamically adapt to this global
limit. The max number of channels was then bumped to 128.
- The POD builder is safe to use on shared memory now and tries to
avoid many integer overflows.
- Most debug functions are safe to be used on shared memory.
- User specified Commands and Events are now possible.
- The SPA_IO_CLOCK_FLAG_DISCONT was added to spa_io_clock to signal
a discont in the clock due to clock change.
- AC3, DTS, EAC3, TRUEHD and MPEGH now have helper parser functions.
- H265 was added as a video format. (#4674)
- SPA_PARAM_PeerFormats was added to let a port know about its peer
formats in order to better filter possible conversions.
- More color matrices, transfer functions and color primaries.
- The echo-canceler is enabled now.
- Pro-Audio mode now uses 3 periods by default. This lowers the
latency on some drivers (Firewire). The latency of Firewire is
also reported correctly now.
- The ALSA DLL bandwidth is configurable now.
- The resampler now uses fixed point for the phases and is a little
faster when updating adaptive rates.
- The convolver is a little faster by swapping buffers instead of
copying samples.
- Latency and ProcessLatency support was added to filter-graph.
(#4678)
- Audio channel position support was added to filter-graph.
- A new ffmpeg avfilter plugin was added to filter-graph.
- A new ONNX filter was added to filter-graph.
- A debug, pipe, zeroramp and noisegate filter was added to the
filter-graph. (#4745)
- The filter-graph lv2 plugin now supports options and state.
- videoconvert was greatly improved.
- The v4l2 plugin can negotiate DMABUF with modifiers.
- Colorimetry information was added to v4l2 and libcamera.
- Audioconvert can handle empty buffers more efficiently.
- Improve the POD compare functions for Rectangle.
- There is now a SPA_POD_PROP_FLAG_DROP flag to drop the property when
the property is missing from one side.
- A new FEATURE choice was added that is basically a flags choice with
a FLAG_DROP property.
- Metadata features were added. This is a way to negotiate new features
for the metadata. (#4885)
- DSD playback with pw-cat has been improved.
- Compatibility and xrun prevention for the SOF driver has been
improved. (#4489)
- The filter-graph max plugin can now have 8 input channels.
- Buffer Negotiation between the mixer port and the node ports is much
improved. (#4918)
- An offline AEC benchmark was added.
- Channel positions are now read from HDMI ELD when possible.
- Audioconvert and filter-graph now also support properties of Long
and String types.
## ACP
- It's possible to disable the pro-audio profile.
- Support for Logitech Z407 PC Speakers was improved.
- Support for Razer BlackShark v3.
- Fix volume rounding down causing mute. (#4890)
## Tools
- pw-cat can now play and record MIDI 2.0 Clips, which is the
official format for storing MIDI 2.0 UMP data. pw-midi2play
and pw-midi2record were added as aliases.
- pw-cat can now upload sysex files. The pw-sysex alias was
added for this.
- The pw-link tool now has a -t option to list port latencies.
It also has better monitor support.
- pw-top can now clear the ERR column with the c key.
- pw-cli now keeps the types of the variables it stores and avoid
using wrongly typed variables that can crash things. It can now
also list the available variables.
- pw-dump can now output raw JSON and SPA JSON.
- pw-dump has configurable indentation level.
- pw-mididump can be forced to output MIDI 1.0 messages.
- pw-profiler now uses doubles for extra precision.
- pw-top now marks the async nodes with =.
## Bluetooth
- Telephony improvements.
- ASHA support was added.
- Packet loss concealment was added.
- Improved synchronisation between LE Audio streams in the same group.
- Improved LE Audio device compatibility.
- LC3-24kHz voice codec was added (used by Airpods)
- LDAC decoding support added (requires separate decoder library)
## Pulse-server
- The SUSPEND event is now correctly generated. fail-on-suspend is
now implemented.
- PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND is now implemented. (#4255)
(#4726)
- RTP streams now have stream.properties for extra configuration.
- Timed out streams are now destroyed instead of lingering. (#4901)
- A new help and pipewire-pulse:list-modules core message was added.
## JACK
- Port rename callbacks are now emitted correctly.
- Use safe POD parsing for the control sequences.
## V4l2
- The wrapper now avoids a race while initializing PipeWire. (#4859)
## GStreamer
- Colorimetry support was added.
- Cursor metadata is now exposed as ROI metadata.
- Many more updates.
## Docs
- Document the client-node flow a bit more.
# PipeWire 1.4.0 (2025-03-06)
This is the 1.4 release that is API and ABI compatible with previous
1.2.x and 1.0.x releases.
This release contains some of the bigger changes that happened since
the 1.2 release last year, including:
* client-rt.conf was removed, all clients now use client.conf and
are given RT priority in the data threads.
* UMP (aka MIDI2) support was added and is now the default format
to carry MIDI1 and MIDI2 around in PipeWire. There are helper
functions to convert between legacy MIDI and UMP.
* The resampler can now precompute (at compile time) some common
conversion filters. Delay reporting in the resampler was fixed and
improved.
* Bluetooth support for BAP broadcast links and support for hearing aids
using ASHA was added. A new G722 codec was also added.
Delay reporting and configuration in Bluetooth was improved.
* The ALSA plugin now supports DSD playback when explicitly allowed
with the alsa.formats property.
* A PipeWire JACK control API was added.
* A system service was added for pipewire-pulse.
* Many documentation and translation updates.
* Many of the SPA macros are converted to inline functions. All SPA
inline functions are now also compiled into a libspa.so library to
make it easier to access them from bindings.
* The module-filter-chain graph code was moved to a separate
filter-graph SPA plugin so that it becomes usable in more places.
EBUR128, param_eq and dcblock plugins were added to filter-graph.
The filter graph can now also use fftw for doing convolutions.
The audioconvert plugin was optimized and support was added to
audioconvert to insert extra filter-graphs in the processing pipeline.
* New helper functions were added to parse JSON format descriptions.
* The profiler now also includes the clock of the followers.
* RISCV CPU support and assembler optimisations were added.
* The clock used for logging timestamps can be configured now.
* The JSON parser was split into core functions and helper.
* Support for UCM split PCMs was added. Instead of alsa-lib splitting
up PCMs, PipeWire can mark the PCMs with the correct metadata so that
the session manager can use native PipeWire features to do this.
* Support for webrtc2 was added to echo-cancel.
* IEC958 codecs are now detected from the HDMI ELD data.
* Conversion between floating point and 32 bits now preserve 25 bits of
precision instead of 24 bits.
* A new Telephony D-BUS API compatible with ofono was added.
* The invoke queues are now more efficient and can be called from multiple
threads concurrently.
* Clock information in v4l2 was improved.
* An ffmpeg based videoconvert plugin was added that can be used with the
videoadapter.
* The GStreamer elements have improved buffer pool handling and rate
matching.
* The combine-stream module can now also mix streams.
* link-factory now checks that the port and node belong together.
* The netjack-manager module has support for autoconnecting streams.
* The native-protocol has support for abstract sockets.
* The pulse server has support for blocking playback and capture in
pulse.rules.
* The corked state of stream is now reported correctly in pulse-server.
* Fix backwards jumps in pulse-server.
* Latency configuration support was added in loopback and raop-sink.
* The ROC module has more configuration options.
* The SAP module now only send updated SDP when something changed.
* RTP source now has a standby mode where it idles when there is no
data received.
* Support for PTP clocking was added the RTP streams.
* The VBAN receiver can now dynamically create streams when they are
detected.
* Error reporting when making links was improved.
* Support for returning (canceling) a dequeued buffer in pw-stream.
* Support for emiting events in pw-stream was added.
* pw-cat now support stdin and stdout.
## Highlights (since the previous 1.3.83 release)
- Small fixes and improvements.
## PipeWire
- Fix some missing includes in metadata.h
- Pass the current error in errno when a stream is in error (#4574)
## modules
- Evaluate node rules before loading adapter follower to ensure
properties are set correctly. (#4562)
## SPA
- Avoid a use after free when building PODs. (#4445)
- Take headroom into account when calculating resync.
## Bluetooth
- Fix +CLCC parsing.
## GStreamer
- Notify about default device changes in deviceprovider.
- Copy frames between pools and avoid splitting video buffers.
## JACK
- Add an option to disable the MIDI2 port flags. (#4584)
# PipeWire 1.3.83 (2025-02-20)
This is the third and hopefully last 1.4 release candidate that
is (almost) API and (entirely) ABI compatible with previous 1.2.x
and 1.0.x releases.
We note that in the 1.3.x series, the API is slighty not backwards
compatible because some methods previously used to accept void* as
a parameter while they now require the correct type. We think this
is however a good kind of API breakage and expect projects to patch
their code to get things compiled with newer version (which will also
compile for older versions). Note also that this is not an ABI break.
## Highlights
- Handle JACK transport updates in a better way.
- Fix a SAP regression when starting.
- Fix regression in rate scaling.
- Improve bluetooth source rate handling.
- More small bugfixes and improvements.
## PipeWire
- Handle JACK transport updates in a better way. (#4543)
## Modules
- Check that the link factory port and nodes match. Deprecate the
port.id when making links.
- Improve profiler output by scaling the quantum with the node
rate so that we don't end up with confusing information. (#4555)
- Fix sending of the SAP SDP. Handle some SDP parsing errors.
- Add some more options to the ROC source module. (#4516)
## SPA
- Fix firewire quirks in udev rules. (#4528)
- Fix a bug in the rate scaling in some cases that would make things
run with the wrong samplerate.
- Improve introspection of control types.
## Bluetooth
- Use the G722 codec from Android instead of FFmpeg for ASHA.
- Use the A2DP source rate as the graph rate. (#4555)
- Specify the bluetooth source latency property in the rate of the
stream to avoid conversions and rounding errors.
# PipeWire 1.3.82 (2025-02-06)
This is the second 1.4 release candidate that is API and ABI
compatible with previous 1.2.x and 1.0.x releases.
## Highlights
- Various pw-stream improvements: timing information fixes,
avoid locking buffers in some cases and an improved drain
event.
- A new Telephony D-BUS API compatible with ofono.
- Documentation fixes and updates.
- More small fixes and improvements.
## PipeWire
- Improve timing information when rate is unknown.
- Avoid locked buffers in pw_stream in some cases.
- Improve pw_stream drain event emission.
- Improve manager socket handling. Applications can avoid hardcoding
the sockets so that they will respect the config settings.
## modules
- Fix header size calculation when using ipv6. (#4524)
## SPA
- Optimize byteswapped s16 conversions.
- Improve event handling for internal events.
- Optimize negiotiation when in convert mode, prefer the format
of the follower in adapter.
- Fix EnumPortConfig for videoadapter without converter.
- Fix libcamera property buffer size.
## Pulse-server
- Add systemwide systemd files.
## JACK
- Add a UMP example.
- Use the new JackPortMIDI2 flag to mark UMP ports to JACK.
## Bluetooth
- Support BAP hardware volume.
- Add a Telephony DBUS API.
## GStreamer
- Disable buffer pools for audio by default.
## Docs
- Improve the module documentation.
# PipeWire 1.3.81 (2025-01-23)
This is the first 1.4 release candidate that is API and ABI
compatible with previous 1.2.x and 1.0.x releases.
In addition to all the changes backported to 1.2.x, this release
also contains some new features:
## Highlights
- UMP support was added with MIDI 1.0 and MIDI 2.0 support in the ALSA
sequencer plugin. By default PipeWire will now use MIDI 2.0 in UMP
messages to transport MIDI in the graph, with conversions to/from legacy
MIDI where required. This requires UMP support in the kernel.
- client-rt.conf is no longer supported. Custom changes made to this
config should be moved to client.conf. Clients that try to load the
client-rt.conf will emit a warning and be directed to client.conf
automatically for backwards compatibility.
- The module-filter-chain code was moved to a new filter-graph plugin. This
made it possible to add filter-graph support directly in audioconvert. It
is now possible to run up to 8 run-time swappable filter-graphs inside
streams and nodes. This should make it easier to add effects to streams
and device nodes.
- Bluetooth support for BAP broadcast links and support for hearing aids
using ASHA was added.
- Many more bugfixes and improvements.
## PipeWire
- Nodes are now only scheduled when ready to signal the driver.
- Add slovenian translation. (#4156)
- Link errors are handled better.
- The videoadapter is now enabled by default but no videoconverter
is loaded yet by default.
- Streams now have support for ProcessLatency.
- Streams now have a method to emit events.
- The RequestProcess event and command can now pass around extra
properties.
- Local timestamps are now used for logging.
- client-rt.conf is no longer supported. Custom changes made to this
config should be moved to client.conf. Clients that try to load the
client-rt.conf will emit a warning and be directed to cliert.conf
automatically to preserve backwards compatibility.
- pw_stream now has an API to return unused buffers.
## modules
- module-combine-stream can now mix streams.
- Links in error are now destroyed by link-factory.
- The netjack2 driver can now also create streams that autoconnect when
specified. (#4125)
- Many updates and bugfixes to the RTP modules.
- The netjack2 driver can now bind to a custom IP and port pair. (#4144)
- The loopback module and module-raop have support for ProcessLatency, which
can be used to query and update the latency.
- The profiler module can now reduce the sampling rate.
- The filter-chain was optimized some more.
- The filter-chain gained some more plugins: param_eq, ebur128, dcblock.
- Support for fftw based convolver was added.
- Some module arguments can now be overridden.
- The VBAN receiver now creates new streams per stream name. (#4400)
- The RTP SAP module is now smarter with generating new SAP messages.
- The RTP source can now be paused when no data is received. (#4456)
## tools
- pw-cat can now stream most formats from stdin/stdout.
- pw-profiler has a JSON dump option to dump the raw profiler data.
- pw-cli now supports unload-module. (#4276)
## SPA
- The resampler can precompute some common coeficients now at compile
time.
- UMP support was added with MIDI 1.0 and MIDI 2.0 support in the ALSA
sequencer plugin. By default PipeWire will now use MIDI 2.0 in UMP
messages to transport MIDI in the graph, with conversions to/from legacy
MIDI where required.
- Control types can now be negotiated.
- Support for writing ALSA bind controls was added.
- The ALSA sequencer now has better names for the ports.
- The F32 to S32 conversion now uses 25 bits for an extra bit of
precision.
- libcamera controls can now be set in all cases.
- The videoadapter has been improved and a dummy and ffmpeg based
videoconverter plugin was added.
- Negotiation was improved in audioadapter. First a passthrough format
is tried.
- Some JSON helper functions were added and some duplicate code removed
or simplified.
- Add support for RISC V CPU detection and add many optimizations in
the audio converters.
- Add an option to disable ALSA mixer path select. (#4311)
- Fix a potential bug with the cleanup of the loop queues.
- ALSA nodes now dynamically adjust the DLL bandwidth based on average
measured variance.
- The loop invoke queue was made more efficient and make it possible to
invoke from multiple threads.
- The filter-chain code was moved to a new filter-graph plugin.
- Most function macros are now static inlined and can also be built into a
libspa.so file. This should improve language bindings.
- V4l2 clock information was improved.
- Supported IEC958 codecs are now autodetected via ELD info.
- Audioconvert was optimized some more.
- Audioconvert can now include filter-graphs in its processing.
- webrtc-audio-processing-2 is now supported in AEC.
- The resampler now reports the delay and subsample delay. Also the
delay is reported in the samplerate of the input.
- The ALSA sequencer now handle kernels without UMP support. (#4507)
## Pulse-server
- Add quirk to block clients from making record and playback streams.
- The corked state is now set on stream to always report this state
correctly to other clients.
- Readiness notification was added to the pulse server with the
PIPEWIRE_PULSE_NOTIFICATION_FD environment variable. (#4347)
- The pulse.cmd config now supports conditions.
- A bug in clearing the ringbuffer was fixed. (#4464)
## GStreamer
- Support for the default devices was added to the deviceprovider. (#4268)
- The graph clock is now used as the source for the GStreamer clock.
- The sink now does some rate control.
## ALSA
- The ALSA plugin now supports DSD when explicitly enabled.
## JACK
- JACK now supports 2 new extension formats for OSC and UMP.
- JACK clients can receive UMP MIDI1 or MIDI2 messages when using
the new UMP port format extension.
- JACK now reports the PipeWire version in the minor/micro/proto.
- Implement more jackserver functions.
## Bluetooth
- Support BAP broadcast links.
- Support for ASHA was added.
- Delay reporting in A2DP sources was improved.
## Examples
- 2 new examples of pw-stream using spa_ringbuffer were added.
## Docs
- Many updates to the man pages.
- More documentation about thread safety of functions in stream
and filters. (#4521)
# PipeWire 1.2.7 (2024-11-26)
This is a bugfix release that is API and ABI compatible with the previous
1.2.x and 1.0.x releases.
## Highlights
- Backport support for lazy scheduling.
- Handle the case where processing would stop when an ALSA driver is
destroyed.
- Add support for v4l2loopback in the v4l2 plugin.
- Small bug fixes and improvements.
## PipeWire
- Invalidate the proxy ID when removed.
- Backport support for lazy scheduling.
- Fix profiler stats for async nodes.
- Fix EARLY_PROCESS again in pw-stream. (#3480)
## Modules
- Fix a crasher issue when nodes are created in the wrong order in
module-filter-chain.
- Fix unmap bug in lv2 uri tables.
- Add ratelimit to jack-tunnel xruns.
- Remove hardcoded limit in filter-chain sofa plugin.
- Handle the MTU size correctly in module-rtp and handle large MTUs.
(#4396)
- Fix JSON float parsing errors in equalizer module. (#4418)
## SPA
- Fix crash in audiotestsrc when using spa-inspect (#4365).
- Improve JSON float infinity checks.
- Improve resampler performace a little.
- Make audioconvert only output when there is something to output.
- Fix regression in v4l2 port flags which would disable support for
EXPBUF.
- Handle the case where an ALSA driver is destroyed and the follower
becomes a driver. Processing would stop. (#4401)
- Add support for v4l2loopback in the v4l2 plugin.
## Pulse-server
- Give a better error message when running out of fds.
- Ensure positive latency reporting.
## GStreamer
- Fix memory leak in deviceprovider.
- Fix locking when emitting an error.
## Tools
- Fix pw-dot link labels.
# PipeWire 1.2.6 (2024-10-23)
This is a bugfix release that is API and ABI compatible with the previous
1.2.x and 1.0.x releases.
## Highlights
- The filter-chain param changes were not aggregated correctly, causing some
param changes to be ignored. (#4331)
- Clear the JACK io ports correctly when stopping to avoid crashes. (#4337)
- Some more small fixes and improvements.
## PipeWire
- Stream states are now updated based on the underlying node state.
- Exported nodes now have their state change done synchronously so that the
server can immediately start the driver and avoid some initial xruns.
- Improve stream flush handling and improve the docs.
- Don't send mix_info to destroyed ports to avoid some errors in the
JACK clients.
## Modules
- The filter-chain param changes were not aggregated correctly, causing some
param changes to be ignored. (#4331)
- The filter-chain now correctly optimizes unlinked nodes in all cases.
## SPA
- ALSA PCM node properties are now no longer overwritten with card properties.
(#4135)
- Increase the adapter retry count to avoid xruns in some cases. (#4334)
- Fix potential crash in cleanup of ALSA nodes.
## Bluetooth
- Fix a crash with broadcast sinks.
- Improve compatibility with Phonak hearing aids.
- Don't exit when DBus goes down.
## JACK
- Clear the io ports correctly when stopping to avoid crashes. (#4337)
## Docs
- Backport docs from master.
# PipeWire 1.0.9 (2024-10-22)
This is a bugfix release that is API and ABI compatible with previous
1.0.x releases.
## Highlights
- Fix an fd leak and confusion in the protocol that would cause leaks and
wrong memory to be used.
- Fix bug where the mixer would not be synced correctly after selecting
a port, leaving the audio muted. (#4084)
- Backport v4l2 systemd-logind support to avoid races when starting.
(#3539 and #3960).
- Other small fixed and improvements.
## PipeWire
- Fix a bug where renegotiation would sometimes fail to deactivate a link.
- Fix an fd leaks and confusion in the protocol.
## modules
- Fix a use-after-free in the rt module when stopping a thread.
## SPA
- Fix bug where the mixer would not be synced correctly after selecting
a port, leaving the audio muted. (#4084)
- Fix a compilation issue with empty initializers. (#4317)
- Backport v4l2 systemd-logind support to avoid races when starting.
(#3539 and #3960).
- Fix a potential crash when cleaning ALSA nodes.
## JACK
- align buffers to the max cpu alignment in order to allow more
optimizations.
# PipeWire 1.2.5 (2024-09-27)
This is an important bugfix release that is API and ABI compatible with the
previous 1.2.x and 1.0.x releases.
## Highlights
- Fix an fd mismatch in the protocol in some cases that could lead to
fd leaks and crashes.
- Fix a bug where the mixer was not updated after setting the port, which would
cause muted audio at boot or resume from suspend.
- Fix a potential use-after-free in module-rt when stopping a thread.
- Cached objects are now freed in the JACK API to avoid memory leaks.
- Some more fixes and improvements.
## PipeWire
- RequestProcess commands are now only sent after the node completes
the state change to RUNNING.
- More FreeBSD fixes.
- Handle ACTIVE links going to < PAUSED as well. This improves
renegotiation in some cases.
- Fix an fd mismatch in the protocol in some cases that could lead to
fd leaks and crashes.
## Modules
- Many of the network modules can now also accept hostnames instead of
IP addresses.
- Fix a potential use-after-free in module-rt when stopping the thread.
## SPA
- Support for elogind was added.
- Some more errors are checked when converting JSON to POD. (#4313)
- Fix a bug where the mixer was not updated after setting the port, which would
cause muted audio at boot or resume from suspend. (#4084)
## JACK
- The BBT transport handling was improved. Some fields were added to be able
to handle the JACK semantics correctly. (#4314)
- Buffers are now aligned according to the maximum CPU alignment instead of
the hardcoded 16 bytes alignment.
- Cached objects are now freed correctly.
## Doc
- Some small doc updates. (#4272)
# PipeWire 1.2.4 (2024-09-19)
This is a bugfix release that is API and ABI compatible with the
previous 1.2.x and 1.0.x releases.
## Highlights
- Avoid a crash in cleanup of globals. (#4250)
- Use systemd-logind to scan for new devices in v4l2.
- Some more bugfixes and improvements.
## PipeWire
- Avoid a crash in cleanup of globals. (#4250)
- Improve RequestProcess dispatch.
## Tools
- Improve float parsing. (#4234)
## SPA
- Clear the ringbuffer when stopping in libcamera.
- Use systemd-logind to scan for new devices in v4l2. (#3539, #3960)