Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1ba3cb16e390d6cb3ab6a230adde110ccdc4d0da
      
https://github.com/WebKit/WebKit/commit/1ba3cb16e390d6cb3ab6a230adde110ccdc4d0da
  Author: Enrique Ocaña González <[email protected]>
  Date:   2025-02-13 (Thu, 13 Feb 2025)

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

  Log Message:
  -----------
  [GStreamer] Premature finishSeek in progressive video
https://bugs.webkit.org/show_bug.cgi?id=287568
Reviewed by Philippe Normand.

The MediaPlayerPrivateGStreamer::finishSeek() call is happening before
the GStreamer seek completes, causing the JavaScript webpage to see the
seek origin position on embedded systems with low CPU power (where seek
takes more time to complete). This has been reproduced on Raspberry Pi
using downstream wpe-2.38 and wpe-2.46, but I haven't been able to
reproduce it on the main branch on desktop with a powerful computer.
That doesn't mean that the problem isn't there.

See: https://github.com/WebPlatformForEmbedded/WPEWebKit/issues/1456

MediaPlayerPrivateGStreamer::doSeek() calls updateBufferingStatus(),
which in turn calls updateStates(), which notifies the player of a
readyState change and HTMLMediaElement::setReadyState() calls
finishSeek().

This commit prevents the call to updateStates() from
updateBufferingStatus() in this particular case. This doesn't cause any
problem, since a new call to updateStates() will happen when the async
state change in the GStreamer pipeline completes.

* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::doSeek): Call updateBufferingStatus() 
with the shouldUpdateStates parameter set to false.
(WebCore::MediaPlayerPrivateGStreamer::updateBufferingStatus): Added 
shouldUpdateStates parameter (defaults to true).
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: 
Added shouldUpdateStates parameter to updateBufferingStatus(), with a default 
value of true..

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to