Changeset 223168 in webkit


Ignore:
Timestamp:
Oct 10, 2017 10:48:47 PM (7 years ago)
Author:
calvaris@igalia.com
Message:

[GStreamer] Fix double seek requested by downloadbuffer GStreamer element in webkibwebsrc
https://bugs.webkit.org/show_bug.cgi?id=178079

Reviewed by Žan Doberšek.

When the downloadbuffer GStreamer element requests two seeks too
close to each other there's some rare race condition where our
source answers that it is not seekable and ends up with
downloadbuffer element to seek beyond the file size, which causes
the server to issue a 416 HTTP error code eventually, causing our
MediaPlayer to stop.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcStop): We only unset he seekable attribute if we are
not seeking.

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r223167 r223168  
     12017-10-10  Xabier Rodriguez Calvar  <calvaris@igalia.com>
     2
     3        [GStreamer] Fix double seek requested by downloadbuffer GStreamer element in webkibwebsrc
     4        https://bugs.webkit.org/show_bug.cgi?id=178079
     5
     6        Reviewed by Žan Doberšek.
     7
     8        When the downloadbuffer GStreamer element requests two seeks too
     9        close to each other there's some rare race condition where our
     10        source answers that it is not seekable and ends up with
     11        downloadbuffer element to seek beyond the file size, which causes
     12        the server to issue a 416 HTTP error code eventually, causing our
     13        MediaPlayer to stop.
     14
     15        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
     16        (webKitWebSrcStop): We only unset he seekable attribute if we are
     17        not seeking.
     18
    1192017-10-10  Ryosuke Niwa  <rniwa@webkit.org>
    220
  • trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp

    r219959 r223168  
    5959private:
    6060#if USE(SOUP)
    61     char* getOrCreateReadBuffer(PlatformMediaResource&, size_t requestedSize, size_t& actualSize);
     61    char* getOrCreateReadBuffer(PlatformMediaResource&, size_t requestedSize, size_t& actualSize) override;
    6262#endif
    6363    // PlatformMediaResourceClient virtual methods.
     
    374374
    375375    priv->offset = 0;
    376     priv->seekable = FALSE;
    377376
    378377    if (!wasSeeking) {
     
    380379        priv->requestedOffset = 0;
    381380        priv->player = nullptr;
     381        priv->seekable = FALSE;
    382382    }
    383383
Note: See TracChangeset for help on using the changeset viewer.