[webkit-changes] [WebKit/WebKit] 747f80: MSE player will have readyState oscillate between ...
Jean-Yves Avenard
noreply at github.com
Mon Feb 26 14:26:32 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 747f80b0591ceda287ec87a45cb512c39e05444c
https://github.com/WebKit/WebKit/commit/747f80b0591ceda287ec87a45cb512c39e05444c
Author: Jean-Yves Avenard <jya at apple.com>
Date: 2024-02-26 (Mon, 26 Feb 2024)
Changed paths:
A LayoutTests/media/media-source/media-source-canplaythrough-withfuturegap-expected.txt
A LayoutTests/media/media-source/media-source-canplaythrough-withfuturegap.html
M LayoutTests/media/media-source/media-source-webm-append-buffer-after-abort-expected.txt
M LayoutTests/media/media-source/media-source-webm-append-buffer-after-abort.html
M LayoutTests/media/video-test.js
M Source/WebCore/Modules/mediasource/ManagedMediaSource.cpp
M Source/WebCore/Modules/mediasource/ManagedMediaSource.h
M Source/WebCore/Modules/mediasource/MediaSource.cpp
M Source/WebCore/Modules/mediasource/MediaSource.h
M Source/WebCore/Modules/mediasource/SourceBuffer.cpp
M Source/WebCore/Modules/mediasource/SourceBuffer.h
M Source/WebCore/platform/graphics/SourceBufferPrivate.cpp
Log Message:
-----------
MSE player will have readyState oscillate between readyState HAVE_CURRENT_DATA and HAVE_ENOUGH_DATA
https://bugs.webkit.org/show_bug.cgi?id=270050
rdar://123597692
Reviewed by Eric Carlson.
272762 at main incorrectly assumed that if we had buffered data 3s in the future,
the media could always be played through, ignoring any potential gap ahead which would
have stalled playback.
Since following 272762 at main, the SourceBuffer no longer monitors its own append rate
there's no need to have the SourceBuffer check for its own buffered range, the MediaSource
has more information about it which accounts for different gaps between SourceBuffer.
We use the isBuffered() function that was before only used for ManagedMediaSource to determine
the level of buffered data ahead of currentTime and move it to MediaSource.
* LayoutTests/media/media-source/media-source-canplaythrough-withfuturegap-expected.txt: Added.
* LayoutTests/media/media-source/media-source-canplaythrough-withfuturegap.html: Added.
* LayoutTests/media/media-source/media-source-webm-append-buffer-after-abort-expected.txt:
* LayoutTests/media/media-source/media-source-webm-append-buffer-after-abort.html: The test was invalid.
It assumed that canplaythrough would be fired if we only added 2s of data. There's no specs stating as such.
Only should the MediaSource be ended would it guarantee that the readyState moved to HAVE_ENOUGH_DATA
while being paused. Correct and amend the test.
* LayoutTests/media/video-test.js: Add testExpectedEventuallySilent. Sometimes the order in which events are fired is
not deterministic. We don't want to log them to prevent expectations failure, but we need to check the event is received.
(testExpectedEventually):
(testExpectedEventuallyWhileRunningBetweenTests):
* Source/WebCore/Modules/mediasource/ManagedMediaSource.cpp:
(WebCore::ManagedMediaSource::isBuffered const): Deleted.
* Source/WebCore/Modules/mediasource/ManagedMediaSource.h:
* Source/WebCore/Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::isBuffered const):
(WebCore::MediaSource::monitorSourceBuffers):
* Source/WebCore/Modules/mediasource/MediaSource.h:
* Source/WebCore/Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::canPlayThroughRange): Deleted.
* Source/WebCore/Modules/mediasource/SourceBuffer.h:
* Source/WebCore/platform/graphics/SourceBufferPrivate.cpp:
(WebCore::SourceBufferPrivate::processMediaSample):
Canonical link: https://commits.webkit.org/275348@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list