Changeset 202641 in webkit


Ignore:
Timestamp:
Jun 29, 2016 12:22:59 PM (8 years ago)
Author:
jer.noble@apple.com
Message:

Cannot clear a MediaSource SourceBuffer in Safari 9 and WebKit nightly
https://bugs.webkit.org/show_bug.cgi?id=159230

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-remove.html (modified)

Move to using a MediaTime directly (rather than as a double) to add
and removed buffered ranges. Also, drop the use of the "microsecond"
fudge factor when adding buffered ranges.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::removeSamplesFromTrackBuffer):
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

LayoutTests:

  • media/media-source/media-source-remove.html:
  • media/media-source/media-source-remove-expected.txt:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r202634 r202641  
     12016-06-29  Jer Noble  <jer.noble@apple.com>
     2
     3        Cannot clear a MediaSource SourceBuffer in Safari 9 and WebKit nightly
     4        https://bugs.webkit.org/show_bug.cgi?id=159230
     5
     6        Reviewed by Eric Carlson.
     7
     8        * media/media-source/media-source-remove.html:
     9        * media/media-source/media-source-remove-expected.txt:
     10
    1112016-06-29  Joseph Pecoraro  <pecoraro@apple.com>
    212
  • trunk/LayoutTests/media/media-source/media-source-remove-expected.txt

    r166423 r202641  
    1010RUN(sourceBuffer.remove(0, 2))
    1111EVENT(updateend)
    12 EXPECTED (sourceBuffer.buffered.start(0).toFixed(1) == '4') OK
     12EXPECTED (sourceBuffer.buffered.start(0) == '4') OK
    1313END OF TEST
    1414
  • trunk/LayoutTests/media/media-source/media-source-remove.html

    r166423 r202641  
    4949
    5050    function checkRemoved() {
    51         testExpected('sourceBuffer.buffered.start(0).toFixed(1)', 4);
     51        testExpected('sourceBuffer.buffered.start(0)', 4);
    5252        endTest();
    5353    }
  • trunk/Source/WebCore/ChangeLog

    r202636 r202641  
     12016-06-29  Jer Noble  <jer.noble@apple.com>
     2
     3        Cannot clear a MediaSource SourceBuffer in Safari 9 and WebKit nightly
     4        https://bugs.webkit.org/show_bug.cgi?id=159230
     5
     6        Reviewed by Eric Carlson.
     7
     8        Test: media/media-source/media-source-remove.html (modified)
     9
     10        Move to using a MediaTime directly (rather than as a double) to add
     11        and removed buffered ranges. Also, drop the use of the "microsecond"
     12        fudge factor when adding buffered ranges.
     13
     14        * Modules/mediasource/SourceBuffer.cpp:
     15        (WebCore::removeSamplesFromTrackBuffer):
     16        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
     17
    1182016-06-29  Jiewen Tan  <jiewen_tan@apple.com>
    219
  • trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp

    r202242 r202641  
    656656{
    657657#if !LOG_DISABLED
    658     double earliestSample = std::numeric_limits<double>::infinity();
    659     double latestSample = 0;
     658    MediaTime earliestSample = MediaTime::positiveInfiniteTime();
     659    MediaTime latestSample = MediaTime::zeroTime();
    660660    size_t bytesRemoved = 0;
    661661#else
     
    665665
    666666    auto erasedRanges = TimeRanges::create();
    667     MediaTime microsecond(1, 1000000);
    668667    for (auto sampleIt : samples) {
    669668        const DecodeOrderSampleMap::KeyType& decodeKey = sampleIt.first;
     
    681680        trackBuffer.decodeQueue.erase(decodeKey);
    682681
    683         double startTime = sample->presentationTime().toDouble();
    684         double endTime = startTime + (sample->duration() + microsecond).toDouble();
    685         erasedRanges->add(startTime, endTime);
     682        auto startTime = sample->presentationTime();
     683        auto endTime = startTime + sample->duration();
     684        erasedRanges->ranges().add(startTime, endTime);
    686685
    687686#if !LOG_DISABLED
     
    696695#if !LOG_DISABLED
    697696    if (bytesRemoved)
    698         LOG(MediaSource, "SourceBuffer::%s(%p) removed %zu bytes, start(%lf), end(%lf)", logPrefix, buffer, bytesRemoved, earliestSample, latestSample);
     697        LOG(MediaSource, "SourceBuffer::%s(%p) removed %zu bytes, start(%lf), end(%lf)", logPrefix, buffer, bytesRemoved, earliestSample.toDouble(), latestSample.toDouble());
    699698#endif
    700699
     
    15871586            m_timestampOffset = frameEndTimestamp;
    15881587
    1589         m_buffered->add(presentationTimestamp.toDouble(), (presentationTimestamp + frameDuration + microsecond).toDouble());
     1588        m_buffered->ranges().add(presentationTimestamp, presentationTimestamp + frameDuration);
    15901589        m_bufferedSinceLastMonitor += frameDuration.toDouble();
    15911590        setBufferedDirty(true);
Note: See TracChangeset for help on using the changeset viewer.