⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 282205 in webkit


Ignore:
Timestamp:
Sep 9, 2021, 3:02:34 AM (5 years ago)
Author:
eocanha@igalia.com
Message:

[Gstreamer] timeouts in media/media-source/media-source-has-audio-video.html and media/media-source/media-source-seek-unbuffered.html
​https://bugs.webkit.org/show_bug.cgi?id=227258
<rdar://problem/79625722>

Reviewed by Alicia Boya Garcia.

The media-source-seek-unbuffered.html test was feeding only one segment
(1 second) to the SourceBuffer, but the libav h264 decoder used by the
glib ports needs more data to start producing decoded output.
The test was modified to append two segments (2 seconds) instead and now
the test passes.

The concatArrayBuffers() function from the media-source-error-crash.html
test was refactored as MediaSourceLoader.concatenateMediaSegments() and
reused in media-source-seek-unbuffered.html.

  • media/media-source/media-source-error-crash-expected.txt: Expect different concatenation expression.
  • media/media-source/media-source-error-crash.html: Removed concatArrayBuffers() and use MediaSourceLoader.concatenateMediaSegments() instead.
  • media/media-source/media-source-loader.js:

(MediaSourceLoader.prototype.concatenateMediaSegments): New method that concatenates two media segments (ArrayBuffers).

  • media/media-source/media-source-seek-unbuffered-expected.txt: Modified expectations to expect a different removed range and a more legible currentTime check.
  • media/media-source/media-source-seek-unbuffered.html: Append 2 segments, remove [0.5, 2] instead of [0.5, 1] and improve legibility of currentTime check.
  • platform/glib/TestExpectations: Unskipped test.
Location:
trunk/LayoutTests
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r282203 r282205  
     12021-09-09  Enrique Ocaña González  <eocanha@igalia.com>
     2
     3        [Gstreamer] timeouts in media/media-source/media-source-has-audio-video.html and media/media-source/media-source-seek-unbuffered.html
     4        https://bugs.webkit.org/show_bug.cgi?id=227258
     5        <rdar://problem/79625722>
     6
     7        Reviewed by Alicia Boya Garcia.
     8
     9        The media-source-seek-unbuffered.html test was feeding only one segment
     10        (1 second) to the SourceBuffer, but the libav h264 decoder used by the
     11        glib ports needs more data to start producing decoded output.
     12        The test was modified to append two segments (2 seconds) instead and now
     13        the test passes.
     14
     15        The concatArrayBuffers() function from the media-source-error-crash.html
     16        test was refactored as MediaSourceLoader.concatenateMediaSegments() and
     17        reused in media-source-seek-unbuffered.html.
     18
     19        * media/media-source/media-source-error-crash-expected.txt: Expect different concatenation expression.
     20        * media/media-source/media-source-error-crash.html: Removed concatArrayBuffers() and use MediaSourceLoader.concatenateMediaSegments() instead.
     21        * media/media-source/media-source-loader.js:
     22        (MediaSourceLoader.prototype.concatenateMediaSegments): New method that concatenates two media segments (ArrayBuffers).
     23        * media/media-source/media-source-seek-unbuffered-expected.txt: Modified expectations to expect a different removed range and a more legible currentTime check.
     24        * media/media-source/media-source-seek-unbuffered.html: Append 2 segments, remove [0.5, 2] instead of [0.5, 1] and improve legibility of currentTime check.
     25        * platform/glib/TestExpectations: Unskipped test.
     26
    1272021-09-09  Cameron McCormack  <heycam@apple.com>
    228
  • trunk/LayoutTests/media/media-source/media-source-error-crash-expected.txt

    r210945 r282205  
    66RUN(sourceBuffer2 = source.addSourceBuffer(loader.type()))
    77Append an invalid media segment; should not crash.
    8 RUN(sourceBuffer.appendBuffer(concatArrayBuffers(loader.initSegment(), new ArrayBuffer(512))))
     8RUN(sourceBuffer.appendBuffer(loader.concatenateMediaSegments([loader.initSegment(), new ArrayBuffer(512)])))
    99EVENT(error)
    1010END OF TEST
  • trunk/LayoutTests/media/media-source/media-source-error-crash.html

    r210945 r282205  
    1010    var sourceBuffer;
    1111    var sourceBuffer2;
    12 
    13     function concatArrayBuffers(buffer1, buffer2) {
    14         var view = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
    15         view.set(new Uint8Array(buffer1), 0);
    16         view.set(new Uint8Array(buffer2), buffer1.byteLength);
    17         return view.buffer;
    18     }
    1912
    2013    function runTest() {
    … …  
    4235        waitForEventAndEnd('error');
    4336        consoleWrite('Append an invalid media segment; should not crash.')
    44         run('sourceBuffer.appendBuffer(concatArrayBuffers(loader.initSegment(), new ArrayBuffer(512)))');
     37        run('sourceBuffer.appendBuffer(loader.concatenateMediaSegments([loader.initSegment(), new ArrayBuffer(512)]))');
    4538    }
    4639
  • trunk/LayoutTests/media/media-source/media-source-loader.js

    r221098 r282205  
    9696        return this._mediaData.slice(media.offset, media.offset + media.size);
    9797    },
     98
     99    concatenateMediaSegments: function(segmentDataList)
     100    {
     101        var totalLength = 0;
     102        segmentDataList.forEach(segment => totalLength += segment.byteLength);
     103        var view = new Uint8Array(totalLength);
     104        var offset = 0;
     105        segmentDataList.forEach(segment => {
     106            view.set(new Uint8Array(segment), offset);
     107            offset += segment.byteLength;
     108        });
     109        return view.buffer;
     110    },
    98111};
  • trunk/LayoutTests/media/media-source/media-source-seek-unbuffered-expected.txt

    r278917 r282205  
    99Seek and append a media segment.
    1010RUN(video.currentTime = 0.8)
    11 RUN(sourceBuffer.appendBuffer(loader.mediaSegment(0)))
     11RUN(sourceBuffer.appendBuffer(loader.concatenateMediaSegments([loader.mediaSegment(0), loader.mediaSegment(1)])))
    1212EVENT(seeked)
    13 RUN(sourceBuffer.remove(0.5, 1))
    14 EXPECTED (true == 'true') OK
     13RUN(sourceBuffer.remove(0.5, 2))
     14EXPECTED (oldCurrentTime <= video.currentTime == 'true') OK
    1515END OF TEST
    1616
  • trunk/LayoutTests/media/media-source/media-source-seek-unbuffered.html

    r278917 r282205  
    4444        consoleWrite('Seek and append a media segment.')
    4545        run('video.currentTime = 0.8');
    46         run('sourceBuffer.appendBuffer(loader.mediaSegment(0))');
     46        run('sourceBuffer.appendBuffer(loader.concatenateMediaSegments([loader.mediaSegment(0), loader.mediaSegment(1)]))');
    4747    }
    4848
     49    var oldCurrentTime;
     50
    4951    async function videoSeeked() {
    50         run('sourceBuffer.remove(0.5, 1)');
     52        run('sourceBuffer.remove(0.5, 2)');
    5153        await video.play();
    52         const oldCurrentTime = video.currentTime;
     54        oldCurrentTime = video.currentTime;
    5355        await sleep(100);
    54         testExpected(oldCurrentTime <= video.currentTime , true);
     56        testExpected('oldCurrentTime <= video.currentTime' , true);
    5557        endTest();
    5658    }
  • trunk/LayoutTests/platform/glib/TestExpectations

    r282119 r282205  
    678678
    679679webkit.org/b/199617 http/tests/media/hls/hls-video-resize.html [ Skip ]
    680 
    681 webkit.org/b/227258 media/media-source/media-source-seek-unbuffered.html [ Timeout ]
    682680
    683681webkit.org/b/227661 http/tests/media/hls/hls-webvtt-seek-backwards.html [ Timeout ]
Note: See TracChangeset for help on using the changeset viewer.