diff mbox series

[meta-multimedia,1/2] pipewire: update 1.0.7 -> 1.2.0

Message ID 20240630124721.64234-1-f_l_k@t-online.de
State Under Review
Headers show
Series [meta-multimedia,1/2] pipewire: update 1.0.7 -> 1.2.0 | expand

Commit Message

Markus Volk June 30, 2024, 12:47 p.m. UTC
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.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
 .../pipewire/{pipewire_1.0.7.bb => pipewire_1.2.0.bb}        | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
 rename meta-multimedia/recipes-multimedia/pipewire/{pipewire_1.0.7.bb => pipewire_1.2.0.bb} (99%)

Comments

Khem Raj June 30, 2024, 11:34 p.m. UTC | #1
It fails on 32bit x86 clang/lld linker -
https://errors.yoctoproject.org/Errors/Details/788619/
perhaps we need to specify linking with -latomic on architectures
missing 64bit atomics.

On Sun, Jun 30, 2024 at 5:46 AM Markus Volk via lists.openembedded.org
<f_l_k=t-online.de@lists.openembedded.org> wrote:
>
> 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.
>
> Signed-off-by: Markus Volk <f_l_k@t-online.de>
> ---
>  .../pipewire/{pipewire_1.0.7.bb => pipewire_1.2.0.bb}        | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>  rename meta-multimedia/recipes-multimedia/pipewire/{pipewire_1.0.7.bb => pipewire_1.2.0.bb} (99%)
>
> diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.7.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.2.0.bb
> similarity index 99%
> rename from meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.7.bb
> rename to meta-multimedia/recipes-multimedia/pipewire/pipewire_1.2.0.bb
> index 0c68cc4d2..c6c8da4cb 100644
> --- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.7.bb
> +++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.2.0.bb
> @@ -12,8 +12,8 @@ LIC_FILES_CHKSUM = " \
>
>  DEPENDS = "dbus ncurses"
>
> -SRCREV = "59fe89d41a67f6daad086f8f3fe522935be77a3f"
> -SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=1.0;protocol=https"
> +SRCREV = "7b4c0dd5ecb40e4d2c153699a85c51e1460361e1"
> +SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=1.2;protocol=https"
>
>  S = "${WORKDIR}/git"
>
> @@ -292,6 +292,7 @@ FILES:${PN}-tools = " \
>      ${bindir}/pw-cat \
>      ${bindir}/pw-cli \
>      ${bindir}/pw-config \
> +    ${bindir}/pw-container \
>      ${bindir}/pw-dot \
>      ${bindir}/pw-dsdplay \
>      ${bindir}/pw-dump \
> --
> 2.45.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#111164): https://lists.openembedded.org/g/openembedded-devel/message/111164
> Mute This Topic: https://lists.openembedded.org/mt/106959126/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Markus Volk July 1, 2024, 11:43 a.m. UTC | #2
On Sun, Jun 30 2024 at 04:34:47 PM -07:00:00, Khem Raj 
<raj.khem@gmail.com> wrote:
> perhaps we need to specify linking with -latomic on architectures
> missing 64bit atomics.

Right. I verified that
LDFLAGS += "-latomic"
fixes the issue for 32bit x86 clang

Do you know what exact platforms need this fix or should it be included 
for all?
Khem Raj July 1, 2024, 2:58 p.m. UTC | #3
On Mon, Jul 1, 2024 at 4:42 AM Markus Volk <f_l_k@t-online.de> wrote:
>
> On Sun, Jun 30 2024 at 04:34:47 PM -07:00:00, Khem Raj <raj.khem@gmail.com> wrote:
>
> perhaps we need to specify linking with -latomic on architectures missing 64bit atomics.
>
>
> Right. I verified that
> LDFLAGS += "-latomic"
> fixes the issue for 32bit x86 clang
>
> Do you know what exact platforms need this fix or should it be included for all?

riscv32/armv5/mips/ppc32 perhaps is all we care. Ideally it would be
good to have a global
architecture feature to indicate 64bit atomics and we could use that
test because this change
is sprinkled everywhere.
Markus Volk July 1, 2024, 5:32 p.m. UTC | #4
On Mon, Jul 1 2024 at 07:58:28 AM -07:00:00, Khem Raj 
<raj.khem@gmail.com> wrote:
> riscv32/armv5/mips/ppc32 perhaps is all we care.

# Specify linking with -latomic on architectures missing 64bit atomics.
LDFLAGS += "${@bb.utils.contains_any('TUNE_FEATURES', 'riscv32 armv5 
mips ppc32 m32', '-latomic', '', d)}"

Would that be enough for now? According to my tests, it fixes the 
problem for clang i686-poky-linux-musl.
Khem Raj July 1, 2024, 6:13 p.m. UTC | #5
On Mon, Jul 1, 2024 at 10:31 AM Markus Volk <f_l_k@t-online.de> wrote:

> On Mon, Jul 1 2024 at 07:58:28 AM -07:00:00, Khem Raj <raj.khem@gmail.com>
> wrote:
>
> riscv32/armv5/mips/ppc32 perhaps is all we care.
>
>
> # Specify linking with -latomic on architectures missing 64bit atomics.
> LDFLAGS += "${@bb.utils.contains_any('TUNE_FEATURES', 'riscv32 armv5 mips
> ppc32 m32', '-latomic', '', d)}"
>
> Would that be enough for now? According to my tests, it fixes the problem
> for clang i686-poky-linux-musl.
>

Yeah but maybe using arch overrides would be more familiar

>
Markus Volk July 1, 2024, 6:56 p.m. UTC | #6
On Mon, Jul 1 2024 at 11:13:51 AM -07:00:00, Khem Raj 
<raj.khem@gmail.com> wrote:
> Yeah but maybe using arch overrides would be more familiar

Can we do this without adding a new line for every architecture?
Khem Raj July 1, 2024, 6:56 p.m. UTC | #7
On Mon, Jul 1, 2024 at 11:56 AM Markus Volk <f_l_k@t-online.de> wrote:

> On Mon, Jul 1 2024 at 11:13:51 AM -07:00:00, Khem Raj <raj.khem@gmail.com>
> wrote:
>
> Yeah but maybe using arch overrides would be more familiar
>
>
> Can we do this without adding a new line for every architecture?
>

I will accept your v2

>
diff mbox series

Patch

diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.7.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.2.0.bb
similarity index 99%
rename from meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.7.bb
rename to meta-multimedia/recipes-multimedia/pipewire/pipewire_1.2.0.bb
index 0c68cc4d2..c6c8da4cb 100644
--- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.7.bb
+++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.2.0.bb
@@ -12,8 +12,8 @@  LIC_FILES_CHKSUM = " \
 
 DEPENDS = "dbus ncurses"
 
-SRCREV = "59fe89d41a67f6daad086f8f3fe522935be77a3f"
-SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=1.0;protocol=https"
+SRCREV = "7b4c0dd5ecb40e4d2c153699a85c51e1460361e1"
+SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=1.2;protocol=https"
 
 S = "${WORKDIR}/git"
 
@@ -292,6 +292,7 @@  FILES:${PN}-tools = " \
     ${bindir}/pw-cat \
     ${bindir}/pw-cli \
     ${bindir}/pw-config \
+    ${bindir}/pw-container \
     ${bindir}/pw-dot \
     ${bindir}/pw-dsdplay \
     ${bindir}/pw-dump \