Changeset 244641 in webkit


Ignore:
Timestamp:
Apr 25, 2019 12:52:36 AM (5 years ago)
Author:
Philippe Normand
Message:

[GStreamer] gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed in WebCore::MediaPlayerPrivateGStreamer::paused
https://bugs.webkit.org/show_bug.cgi?id=196691

Reviewed by Eric Carlson.

Source/WebCore:

For gif assets, fail media loading early and notify the
MediaPlayer by setting both network and ready states, so that the
MediaPlayer will try with with the next media engine or pass the
error to HTMLMediaElement if there are none.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::loadFull):
(WebCore::MediaPlayerPrivateGStreamer::loadingFailed):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

LayoutTests:

Unflag test no longer crashing.

  • platform/gtk/TestExpectations:
  • platform/gtk/fast/replaced/border-radius-clip-expected.txt:
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r244635 r244641  
     12019-04-25  Philippe Normand  <pnormand@igalia.com>
     2
     3        [GStreamer] gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed in WebCore::MediaPlayerPrivateGStreamer::paused
     4        https://bugs.webkit.org/show_bug.cgi?id=196691
     5
     6        Reviewed by Eric Carlson.
     7
     8        Unflag test no longer crashing.
     9
     10        * platform/gtk/TestExpectations:
     11        * platform/gtk/fast/replaced/border-radius-clip-expected.txt:
     12
    1132019-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>
    214
  • trunk/LayoutTests/platform/gtk/TestExpectations

    r244635 r244641  
    16421642webkit.org/b/133869 media/video-seek-after-end.html [ Failure Pass ]
    16431643
    1644 # Crash is webkit.org/b/176802
    1645 webkit.org/b/36642 fast/replaced/border-radius-clip.html [ Failure Pass Crash ]
     1644webkit.org/b/36642 fast/replaced/border-radius-clip.html [ Failure Pass ]
    16461645
    16471646webkit.org/b/134573 media/track/audio-track.html [ Failure Timeout Pass ]
  • trunk/LayoutTests/platform/gtk/fast/replaced/border-radius-clip-expected.txt

    r159017 r244641  
    1 layer at (0,0) size 785x947
     1layer at (0,0) size 785x952
    22  RenderView at (0,0) size 785x600
    3 layer at (0,0) size 785x923
    4   RenderBlock {HTML} at (0,0) size 785x923
    5     RenderBody {BODY} at (8,8) size 769x907
     3layer at (0,0) size 785x928
     4  RenderBlock {HTML} at (0,0) size 785x928
     5    RenderBody {BODY} at (8,8) size 769x912
    66      RenderText {#text} at (0,0) size 457x17
    77        text run at (0,0) width 457: "All of the replaced elements below should be clipped to a border-radius. "
    88      RenderBR {BR} at (0,0) size 0x0
    9       RenderImage {IMG} at (0,17) size 100x100
    10       RenderText {#text} at (100,103) size 4x17
    11         text run at (100,103) width 4: " "
     9      RenderImage {IMG} at (0,18) size 100x100
     10      RenderText {#text} at (100,104) size 4x17
     11        text run at (100,104) width 4: " "
    1212      RenderBR {BR} at (0,0) size 0x0
    13       RenderImage {INPUT} at (0,120) size 100x100
    14       RenderText {#text} at (100,206) size 4x17
    15         text run at (100,206) width 4: " "
     13      RenderImage {INPUT} at (0,122) size 100x100
     14      RenderText {#text} at (100,208) size 4x17
     15        text run at (100,208) width 4: " "
    1616      RenderBR {BR} at (0,0) size 0x0
    17       RenderIFrame {IFRAME} at (0,223) size 304x154 [border: (2px inset #000000)]
     17      RenderIFrame {IFRAME} at (0,226) size 304x154 [border: (2px inset #000000)]
    1818        layer at (0,0) size 300x150
    1919          RenderView at (0,0) size 300x150
     
    2222            RenderBody {BODY} at (0,0) size 300x150
    2323              RenderImage {IMG} at (0,0) size 100x100
    24       RenderText {#text} at (304,363) size 4x17
    25         text run at (304,363) width 4: " "
     24      RenderText {#text} at (304,366) size 4x17
     25        text run at (304,366) width 4: " "
    2626      RenderBR {BR} at (0,0) size 0x0
    27       RenderText {#text} at (300,516) size 4x17
    28         text run at (300,516) width 4: " "
     27      RenderText {#text} at (300,520) size 4x17
     28        text run at (300,520) width 4: " "
    2929      RenderBR {BR} at (0,0) size 0x0
    30       RenderEmbeddedObject {EMBED} at (0,533) size 556x406 [bgcolor=#00FF00] [border: (3px solid #000000)]
     30      RenderEmbeddedObject {EMBED} at (0,538) size 556x406 [bgcolor=#00FF00] [border: (3px solid #000000)]
    3131      RenderText {#text} at (0,0) size 0x0
    32 layer at (8,388) size 300x150
    33   RenderVideo {VIDEO} at (0,380) size 300x150
     32layer at (8,392) size 300x150
     33  RenderVideo {VIDEO} at (0,384) size 300x150
  • trunk/Source/WebCore/ChangeLog

    r244640 r244641  
     12019-04-25  Philippe Normand  <pnormand@igalia.com>
     2
     3        [GStreamer] gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed in WebCore::MediaPlayerPrivateGStreamer::paused
     4        https://bugs.webkit.org/show_bug.cgi?id=196691
     5
     6        Reviewed by Eric Carlson.
     7
     8        For gif assets, fail media loading early and notify the
     9        MediaPlayer by setting both network and ready states, so that the
     10        MediaPlayer will try with with the next media engine or pass the
     11        error to HTMLMediaElement if there are none.
     12
     13        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
     14        (WebCore::MediaPlayerPrivateGStreamer::loadFull):
     15        (WebCore::MediaPlayerPrivateGStreamer::loadingFailed):
     16        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
     17
    1182019-04-25  Philippe Normand  <pnormand@igalia.com>
    219
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

    r244584 r244641  
    276276void MediaPlayerPrivateGStreamer::loadFull(const String& urlString, const String& pipelineName)
    277277{
    278     // FIXME: This method is still called even if supportsType() returned
    279     // IsNotSupported. This would deserve more investigation but meanwhile make
    280     // sure we don't ever try to play animated gif assets.
    281278    if (m_player->contentMIMEType() == "image/gif") {
    282         loadingFailed(MediaPlayer::FormatError);
     279        loadingFailed(MediaPlayer::FormatError, MediaPlayer::HaveNothing, true);
    283280        return;
    284281    }
     
    22232220}
    22242221
    2225 void MediaPlayerPrivateGStreamer::loadingFailed(MediaPlayer::NetworkState error)
    2226 {
    2227     GST_WARNING("Loading failed, error: %d", error);
     2222void MediaPlayerPrivateGStreamer::loadingFailed(MediaPlayer::NetworkState networkError, MediaPlayer::ReadyState readyState, bool forceNotifications)
     2223{
     2224    GST_WARNING("Loading failed, error: %s", convertEnumerationToString(networkError).utf8().data());
    22282225
    22292226    m_errorOccured = true;
    2230     if (m_networkState != error) {
    2231         m_networkState = error;
     2227    if (forceNotifications || m_networkState != networkError) {
     2228        m_networkState = networkError;
    22322229        m_player->networkStateChanged();
    22332230    }
    2234     if (m_readyState != MediaPlayer::HaveNothing) {
    2235         m_readyState = MediaPlayer::HaveNothing;
     2231    if (forceNotifications || m_readyState != readyState) {
     2232        m_readyState = readyState;
    22362233        m_player->readyStateChanged();
    22372234    }
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h

    r244584 r244641  
    117117    void didEnd();
    118118    virtual void durationChanged();
    119     void loadingFailed(MediaPlayer::NetworkState);
     119    void loadingFailed(MediaPlayer::NetworkState, MediaPlayer::ReadyState = MediaPlayer::HaveNothing, bool forceNotifications = false);
    120120
    121121    virtual void sourceSetup(GstElement*);
Note: See TracChangeset for help on using the changeset viewer.