[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