[Webkit-unassigned] [Bug 177119] New: Creating a second AVPlayerItemVideoOutput causes flakey failures

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Sep 18 19:39:05 PDT 2017


https://bugs.webkit.org/show_bug.cgi?id=177119

            Bug ID: 177119
           Summary: Creating a second AVPlayerItemVideoOutput causes
                    flakey failures
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Media Elements
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: dino at apple.com

Since landing the flipY patch (176491), the WebGL conformance test that exercises video -> texture is flakey. This is strange because the test never actually exercises the GPU path: hasNewPixelBufferForItemTime always returns false. This happens in Safari too, as if it takes a little while before there is output to actually read.

LayoutTests/webgl/1.0.2/conformance/textures/tex-image-and-sub-image-2d-with-video.html

As far as I can tell, the first time through we create the AVPlayerItemVideoOutput, but do not have hasNewPixelBufferForItemTime. The second time through we have the AVPlayerItemVideoOutput, but still don't have hasNewPixelBufferForItemTime. The third time through we get true from hasNewPixelBufferForItemTime, and the fast path produces the texture.

We never hit this before because the previous code returned immediately if flipY was set, so it instantly fell back to the software path and never tried to create the AVPlayerItemVideoOutput. The failure is that the software path fails to produce a texture, simply uploading black. It doesn't produce an error, so we think it works.

Can you think of a reason why creating the AVPlayerItemVideoOutput and adding it to the AVPlayerItem would cause another output to stop working, but only sometimes? Note that even returning early from MediaPlayerPrivateAVFoundationObjC::copyVideoTextureToPlatformTexture, before we ask the output if there is a frame ready, causes the failure. It's just whether or not we created the AVPlayerItemVideoOutput.

The other thing to understand is why the AVPlayerItemVideoOutput doesn't have a pixel buffer available right away. I guess that's because it's waiting for a frame to decode?

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20170919/8162489f/attachment-0001.html>


More information about the webkit-unassigned mailing list