[webkit-changes] [WebKit/WebKit] a8ae25: [GStreamer] Allow finishing seek on sync state change

Enrique Ocaña González noreply at github.com
Tue Sep 27 10:32:49 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a8ae25e11301ba67efa18134a925728e3f154b56
      https://github.com/WebKit/WebKit/commit/a8ae25e11301ba67efa18134a925728e3f154b56
  Author: Enrique Ocaña González <eocanha at igalia.com>
  Date:   2022-09-27 (Tue, 27 Sep 2022)

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

  Log Message:
  -----------
  [GStreamer] Allow finishing seek on sync state change
https://bugs.webkit.org/show_bug.cgi?id=245529

Reviewed by Xabier Rodriguez-Calvar.

Some devices have audio sinks that don't not support async state changes i.e. it completes
transition to PAUSED state on preroll. In those cases, there's a need to be able to finish
seeks in sync state changes (currently, only seeks on async state changes are supported).

This patch adds support to handle that use case by finishing the seek from updateStates().
This new code makes the old processing in asyncStateChangeDone() redundant, because in those
circumstances the handling of the GST_MESSAGE_STATE_CHANGED message in handleMessage()
already calls updateStates(). Still, asyncStateChangeDone() has been preserved because it's
virtual and the MediaPlayerPrivateGStreamerMSE subclass still needs it for its own purpose.

The code to finish seek has been refactored to its own function. This isn't strictly needed
but would be really helpful for our downstream port, where
https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/938 would benefit from it.

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

* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage): Added comment about super and subclass processing needs for GST_MESSAGE_ASYNC_DONE.
(WebCore::MediaPlayerPrivateGStreamer::finishSeek): Refactored code to finish seek.
(WebCore::MediaPlayerPrivateGStreamer::updateStates): Process finish seek from here.
(WebCore::MediaPlayerPrivateGStreamer::asyncStateChangeDone): Deleted.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
(WebCore::MediaPlayerPrivateGStreamer::asyncStateChangeDone): Now empty implementation for the superclass.

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




More information about the webkit-changes mailing list