[webkit-changes] [WebKit/WebKit] 7fd5af: [GStreamer] Fix prolonged buffering during progres...

Enrique Ocaña González noreply at github.com
Mon Oct 17 07:46:22 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7fd5af5101339bcf6c80040a5f74e35368effad4
      https://github.com/WebKit/WebKit/commit/7fd5af5101339bcf6c80040a5f74e35368effad4
  Author: Enrique Ocaña González <eocanha at igalia.com>
  Date:   2022-10-17 (Mon, 17 Oct 2022)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h

  Log Message:
  -----------
  [GStreamer] Fix prolonged buffering during progressive live playback
https://bugs.webkit.org/show_bug.cgi?id=246352

Reviewed by Xabier Rodriguez-Calvar.

On one of the Comcast devices prolonged buffering is observed in some apps
where live assets are using progressive player. The high threshold of the
queue element (used in live videos or in scenarios where disk buffering is
disabled) can be lowered to mitigate the problem, so that buffering can finish
much faster.

This patch sets the high-watermark on the GstQueue2 element.

The way in which elements are configured has been refactored to its own method.
This may not seem very important in the upstream code, but will certainly ease
the porting to the downstream repository, where at least 3 other custom
configurations are done for other platform dependant elements[1].

Original author: Pawel Lampe <pawel.lampe at gmail.com>
See: https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/953

[1] https://github.com/WebPlatformForEmbedded/WPEWebKit/blob/9f61fce0a2b04a3784440cf5ea6b8473c670c19d/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp#L3866

* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::configureElement): New method to centralize the setup of the elements. It delegates to configureVideoDecoder(), configureDepayloader(), etc. for specific elements and handles the rest of the configuration for non-specific ones (such as GstQueue2).
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Use the new configureElement() method instead of having everithing embedded in a lambda.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: Created configureElement().

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




More information about the webkit-changes mailing list