[webkit-changes] [WebKit/WebKit] 63076a: [WebAudio][GStreamer] Use single non-interleaved a...

Bastian Krause noreply at github.com
Mon Nov 14 04:34:38 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 63076adef16d7f28845cbedde25529bbec9b5917
      https://github.com/WebKit/WebKit/commit/63076adef16d7f28845cbedde25529bbec9b5917
  Author: Bastian Krause <bst at pengutronix.de>
  Date:   2022-11-14 (Mon, 14 Nov 2022)

  Changed paths:
    M Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp

  Log Message:
  -----------
  [WebAudio][GStreamer] Use single non-interleaved appsrc instead of multi appsrcs with audiointerleave
https://bugs.webkit.org/show_bug.cgi?id=247736

Reviewed by Philippe Normand.

GStreamer 1.16 brought support for planar (non-interleaved) raw audio.
Let's use that to simplify the "1 appsrc per channel + audiointerleave"
approach to a single appsrc with non-interleaved layout.

We do not need to keep the appsrcs and mapped buffers per channel around
which lets us drop a bunch of code.

This approach cuts the overhead the GStreamer pipeline causes on the
WPEWebProcess in half on an NXP i.MX 6 DualLite.

* Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(getGStreamerAudioCaps): Return caps with actual number of channels and
non-interleaved layout.
(webKitWebAudioSrcConstructed): Drop audiointerleave element, create
single appsrc.
(webKitWebAudioSrcAllocateBuffers): Drop loop over multiple sources, no
need to keep mapped buffers per channel around.
(webKitWebAudioSrcRenderAndPushFrames): Drop loop over multiple sources.
(webKitWebAudioSrcRenderIteration): Operate on single buffer.
(webKitWebAudioSrcChangeState): Drop check for audiointerleave element,
adjust buffer size calculation.
(getGStreamerMonoAudioCaps): Deleted. Replaced by getGStreamerAudioCaps.

Canonical link: https://commits.webkit.org/256648@main




More information about the webkit-changes mailing list