Changeset 250922 in webkit


Ignore:
Timestamp:
Oct 9, 2019 12:40:05 PM (4 years ago)
Author:
aboya@igalia.com
Message:

[MSE][GStreamer] Fix video sometimes not appearing
https://bugs.webkit.org/show_bug.cgi?id=201401

Reviewed by Xabier Rodriguez-Calvar.

LayoutTests/imported/w3c:

Added a test that reproduces the sequence of operations that was
causing the video to not appear in WebKitGTK and checks that this time
there is visible output.

  • web-platform-tests/lint.whitelist:
  • web-platform-tests/media-source/mediasource-video-is-visible-expected.html: Added.
  • web-platform-tests/media-source/mediasource-video-is-visible.html: Added.
  • web-platform-tests/media-source/mp4/test-a-1s.mp4: Added.
  • web-platform-tests/media-source/mp4/test-a-1s.mp4-manifest.json: Added.
  • web-platform-tests/media-source/mp4/test-v-1s-blue.mp4: Added.
  • web-platform-tests/media-source/mp4/test-v-1s-blue.mp4-manifest.json: Added.
  • web-platform-tests/media-source/webm/test-a-1s.webm: Added.
  • web-platform-tests/media-source/webm/test-a-1s.webm-manifest.json: Added.
  • web-platform-tests/media-source/webm/test-v-1s-blue.webm: Added.
  • web-platform-tests/media-source/webm/test-v-1s-blue.webm-manifest.json: Added.

Source/WebCore:

The code in MediaPlayerPrivateGStreamer::changePipelineState() was
supposed to call ensureGLVideoSinkContext() on upwards transitions
to PAUSED but the code did not take into account non-step-by-step
state transitions, which happens frequently with playbin3 in the MSE
case.

Before the patch, when playbin3 transitioned from READY to PLAYING
without stopping for preroll this call would not be made and the
texture IDs received at the sink would not correspond to the
compositor GL context, leading to artifacts (often the player controls
or a blank screen).

Test: imported/w3c/web-platform-tests/media-source/mediasource-video-is-visible.html

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::changePipelineState):

LayoutTests:

Added an exact expectation picture to avoid errors in the test runner
(only a fuzzy match is expected, and different platforms render video
with slightly different colors).

  • platform/mac/imported/w3c/web-platform-tests/media-source/mediasource-video-is-visible-expected.html: Added.
  • platform/mac/TestExpectations:
Location:
trunk
Files:
11 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r250921 r250922  
     12019-10-09  Alicia Boya García  <aboya@igalia.com>
     2
     3        [MSE][GStreamer] Fix video sometimes not appearing
     4        https://bugs.webkit.org/show_bug.cgi?id=201401
     5
     6        Reviewed by Xabier Rodriguez-Calvar.
     7
     8        Added an exact expectation picture to avoid errors in the test runner
     9        (only a fuzzy match is expected, and different platforms render video
     10        with slightly different colors).
     11
     12        * platform/mac/imported/w3c/web-platform-tests/media-source/mediasource-video-is-visible-expected.html: Added.
     13        * platform/mac/TestExpectations:
     14
    1152019-10-09  Dean Jackson  <dino@apple.com>
    216
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r250856 r250922  
     12019-10-09  Alicia Boya García  <aboya@igalia.com>
     2
     3        [MSE][GStreamer] Fix video sometimes not appearing
     4        https://bugs.webkit.org/show_bug.cgi?id=201401
     5
     6        Reviewed by Xabier Rodriguez-Calvar.
     7
     8        Added a test that reproduces the sequence of operations that was
     9        causing the video to not appear in WebKitGTK and checks that this time
     10        there is visible output.
     11
     12        * web-platform-tests/lint.whitelist:
     13        * web-platform-tests/media-source/mediasource-video-is-visible-expected.html: Added.
     14        * web-platform-tests/media-source/mediasource-video-is-visible.html: Added.
     15        * web-platform-tests/media-source/mp4/test-a-1s.mp4: Added.
     16        * web-platform-tests/media-source/mp4/test-a-1s.mp4-manifest.json: Added.
     17        * web-platform-tests/media-source/mp4/test-v-1s-blue.mp4: Added.
     18        * web-platform-tests/media-source/mp4/test-v-1s-blue.mp4-manifest.json: Added.
     19        * web-platform-tests/media-source/webm/test-a-1s.webm: Added.
     20        * web-platform-tests/media-source/webm/test-a-1s.webm-manifest.json: Added.
     21        * web-platform-tests/media-source/webm/test-v-1s-blue.webm: Added.
     22        * web-platform-tests/media-source/webm/test-v-1s-blue.webm-manifest.json: Added.
     23
    1242019-10-08  Wenson Hsieh  <wenson_hsieh@apple.com>
    225
  • trunk/LayoutTests/imported/w3c/web-platform-tests/lint.whitelist

    r227521 r250922  
    880880LAYOUTTESTS APIS: css/work-in-progress/opera/css-device-adapt/template.blink.html
    881881LAYOUTTESTS APIS: webgl/conformance-1.0.3/*
     882LAYOUTTESTS APIS: media-source/mediasource-video-is-visible.html
  • trunk/LayoutTests/platform/mac/TestExpectations

    r250884 r250922  
    20232023webgpu/whlsl/separate-shader-modules/separate-shader-modules-26.html [ Pass ImageOnlyFailure ]
    20242024
     2025# The test runner is failing in an unrelated, unexplained, invisible to the human eye, 2 pixels difference.
     2026webkit.org/b/201401 imported/w3c/web-platform-tests/media-source/mediasource-video-is-visible.html [ Skip ]
     2027
    20252028# rdar://55484256 (REGRESSION: (Catalina) fast/images/async-image-multiple-clients-repaint.html is a flakey failure)
    20262029[ Catalina+ ] fast/images/async-image-multiple-clients-repaint.html [ Pass Failure ]
  • trunk/Source/WebCore/ChangeLog

    r250918 r250922  
     12019-10-09  Alicia Boya García  <aboya@igalia.com>
     2
     3        [MSE][GStreamer] Fix video sometimes not appearing
     4        https://bugs.webkit.org/show_bug.cgi?id=201401
     5
     6        Reviewed by Xabier Rodriguez-Calvar.
     7
     8        The code in MediaPlayerPrivateGStreamer::changePipelineState() was
     9        supposed to call `ensureGLVideoSinkContext()` on upwards transitions
     10        to PAUSED but the code did not take into account non-step-by-step
     11        state transitions, which happens frequently with playbin3 in the MSE
     12        case.
     13
     14        Before the patch, when playbin3 transitioned from READY to PLAYING
     15        without stopping for preroll this call would not be made and the
     16        texture IDs received at the sink would not correspond to the
     17        compositor GL context, leading to artifacts (often the player controls
     18        or a blank screen).
     19
     20        Test: imported/w3c/web-platform-tests/media-source/mediasource-video-is-visible.html
     21
     22        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
     23        (WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
     24
    1252019-10-09  Eric Carlson  <eric.carlson@apple.com>
    226
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

    r250853 r250922  
    422422
    423423#if USE(GSTREAMER_GL)
    424     if (currentState == GST_STATE_READY && newState == GST_STATE_PAUSED)
     424    if (currentState <= GST_STATE_READY && newState >= GST_STATE_PAUSED)
    425425        ensureGLVideoSinkContext();
    426426#endif
Note: See TracChangeset for help on using the changeset viewer.