WebKit Bugzilla
Attachment 340790 Details for
Bug 185725
: [GStreamer] Don't set the ReadyState to HaveNothing when an error occurs in the playback pipeline
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185725-20180520035009.patch (text/plain), 3.25 KB, created by
Yacine Bandou
on 2018-05-19 18:50:06 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Yacine Bandou
Created:
2018-05-19 18:50:06 PDT
Size:
3.25 KB
patch
obsolete
>Subversion Revision: 231637 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 5b64ca863c11ceaa6671109508b8ce6fbb0ce6bb..fefd205ef679ff7a6c7b78f2068d2f65cb8c3f69 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,31 @@ >+2018-05-17 Yacine Bandou <yacine.bandou_ext@softathome.com> >+ >+ [GStreamer] Don't set the ReadyState to HaveNothing when an error occurs in playback pipeline >+ https://bugs.webkit.org/show_bug.cgi?id=185725 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ The ReadyState should not be set to HaveNothing when an error occurs in playback pipeline, because >+ at least we should have the metadata in order to have an error in pipeline. >+ >+ Here is the definition of HaveNothing state in W3C spec https://dev.w3.org/html5/spec-preview/media-elements.html#ready-states >+ "HAVE_NOTHING (numeric value 0): No information regarding the media resource is available. No data for the current >+ playback position is available. Media elements whose networkState attribute is NETWORK_EMPTY are always in the HAVE_NOTHING state." >+ >+ In MSE case, this patch fixes the crashes of the followings WPT encrypted-media tests: >+ - clearkey-mp4-playback-temporary-clear-encrypted.https.html >+ - clearkey-mp4-playback-temporary-multikey-sequential.https.html >+ - clearkey-mp4-playback-temporary-multikey-sequential-readyState.https.html >+ >+ Here is the cause of the crashes: When an error occurs in playback pipeline like no decipher key, in case of encrypted content, >+ the MediaPlayerPrivateGstreamer sets NetworkState to FormatError which causes the detachment of MediaElement from MediaSource, >+ then MediaPlayerPrivateGstreamer sets the ReadyState to HaveNothing which causes a trying again to play the same URI, >+ thus the crash occurs because the MediaElement is detached from MediaSource, see bugzilla for more details. >+ Note: these crashes should be fixed in 185242 but unfortunately it isn't the case. See bug 185242 for more details. >+ >+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: >+ (WebCore::MediaPlayerPrivateGStreamer::handleMessage): >+ > 2018-05-10 Yacine Bandou <yacine.bandou_ext@softathome.com> > > [EME][GStreamer] Handle the protection event in MediaPlayerPrivate >diff --git a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp >index ce0ab819e4c328e55904f9ef698bb9eaac9acc07..77295f1422a9c41d273a09135d0af8447892ed33 100644 >--- a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp >+++ b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp >@@ -1155,8 +1155,13 @@ void MediaPlayerPrivateGStreamer::handleMessage(GstMessage* message) > > if (attemptNextLocation) > issueError = !loadNextLocation(); >- if (issueError) >- loadingFailed(error); >+ if (issueError) { >+ m_errorOccured = true; >+ if (m_networkState != error) { >+ m_networkState = error; >+ m_player->networkStateChanged(); >+ } >+ } > break; > case GST_MESSAGE_EOS: > didEnd();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185725
:
340602
| 340790 |
340950