Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0d46fa12c99c41a159a9ae5d394a032ec09fd165
      
https://github.com/WebKit/WebKit/commit/0d46fa12c99c41a159a9ae5d394a032ec09fd165
  Author: Enrique Ocaña González <[email protected]>
  Date:   2022-09-20 (Tue, 20 Sep 2022)

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

  Log Message:
  -----------
  [GStreamer] Fix media player's duration calculation
https://bugs.webkit.org/show_bug.cgi?id=245148

Reviewed by Xabier Rodriguez-Calvar.

Videos without an initially known duration, such as 
https://traffic.megaphone.fm/GLT1153394917.mp3?updated=1617734730,
are currently detected as infinite videos (live streams). They should be 
detected as
fixed-length videos instead of as a live broadcast.

This patch changes the behaviour to return invalid time when the video is known 
not
to be live.

Based on a patch by: Pawel Lampe <[email protected]>
See: https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/923

* Source/WTF/wtf/PrintStream.h:
(WTF::boolForPrinting): Added overloaded function to print std::optional<bool> 
values.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::seek): Migrate to optional 
m_isLiveStream preserving the previous behaviour (unset means false).
(WebCore::MediaPlayerPrivateGStreamer::setRate): ditto.
(WebCore::MediaPlayerPrivateGStreamer::setPreload): ditto.
(WebCore::MediaPlayerPrivateGStreamer::buffered const): ditto.
(WebCore::MediaPlayerPrivateGStreamer::maxMediaTimeSeekable const): ditto.
(WebCore::MediaPlayerPrivateGStreamer::totalBytes const): ditto.
(WebCore::MediaPlayerPrivateGStreamer::platformDuration const): Return invalid 
time when the duration is unknown and we're completely sure that the video 
isn't live.
(WebCore::MediaPlayerPrivateGStreamer::handleMessage): Migrate to optional 
m_isLiveStream preserving the previous behaviour (unset means false).
(WebCore::MediaPlayerPrivateGStreamer::updateStates): ditto.
(WebCore::MediaPlayerPrivateGStreamer::updateDownloadBufferingFlag): ditto.
(WebCore::MediaPlayerPrivateGStreamer::canSaveMediaData const): ditto.
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint): ditto.
(WebCore::MediaPlayerPrivateGStreamer::movieLoadType const): ditto.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: 
m_isLiveStream is now std::optional<bool>.

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to