New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[MSE] media/media-source/media-source-video-playback-quality.html is a constant failure with MockMSE in GPUP #11915
[MSE] media/media-source/media-source-video-playback-quality.html is a constant failure with MockMSE in GPUP #11915
Conversation
EWS run on previous version of this PR (hash 84e4339) |
s/we must the entire content first./we must get the entire content first./ |
run('source.endOfStream()'); | ||
run('video.play()'); | ||
await waitFor(video, 'ended'); | ||
setTimeout(videoEnded, 50); // VideoPlaybackQuality is refreshed every 0.25s, wait a bit. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't there a risk for flakiness?
Should we do the try test and if failing retry until 100 times approach?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not familiar with this. What if 100 loops is done under 0.25s?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, with our current implementation there's no risk of flakiness:
- With WK1 or WK2 with MockMSE in the CP, the object is updated synchronously when you call
getVideoPlaybackQuality()
- With the MockMSE in the GPU Process, the VPQ is updated in the next event loop
void RemoteMediaPlayerProxy::updateCachedState(bool forceCurrentTimeUpdate)
{
if (!m_observingTimeChanges || forceCurrentTimeUpdate)
currentTimeChanged(m_player->currentTime());
m_cachedState.paused = m_player->paused();
maybeUpdateCachedVideoMetrics();
if (m_bufferedChanged) {
m_bufferedChanged = false;
if ((m_engineIdentifier != MediaPlayerEnums::MediaEngineIdentifier::AVFoundationMSE)
&& (m_engineIdentifier != MediaPlayerEnums::MediaEngineIdentifier::MockMSE)) {
m_cachedState.bufferedRanges = *m_player->buffered();
}
}
}
it sends the time , and immediately after the player state, which contains the VPQ
84e4339
to
36a5457
Compare
EWS run on current version of this PR (hash 36a5457) |
β¦a constant failure with MockMSE in GPUP https://bugs.webkit.org/show_bug.cgi?id=254405 rdar://107182984 Reviewed by Youenn Fablet. To get a valid VideoPlaybackQuality object about all the frames contained in the SourceBuffer we must get the entire content first. We modify the test so that the video is played to the end first and only then get the VideoPlaybackQuality. * LayoutTests/media/media-source/media-source-video-playback-quality-expected.txt: * LayoutTests/media/media-source/media-source-video-playback-quality.html: Canonical link: https://commits.webkit.org/262071@main
36a5457
to
ad2552f
Compare
Committed 262071@main (ad2552f): https://commits.webkit.org/262071@main Reviewed commits have been landed. Closing PR #11915 and removing active labels. |
ad2552f
36a5457
π§ͺ wpe-wk2π§ͺ ios-wk2π§ͺ api-iosπ§ͺ mac-wk1π§ͺ gtk-wk2π§ͺ mac-AS-debug-wk2