New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 591894 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Last visit > 30 days ago
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug



Sign in to add a comment

Black screen is shown if user rotate the screen during YouTube playback based on AVDA

Project Member Reported by william.xie@chromium.org, Mar 4 2016

Issue description

Steps to reproduce:
1: Enable ADVA by setting command line:--enable-unified-media-pipeline
2: Playback YouTube video, eg:http://m.youtube.com/watch?v=IdneKLhsWOQ
3: Enter to fullscreen
4: Rotate the screen

Expect result:
Rotation smoothly

Actual result:
Black screen is shown

See the attached video record for more details.
 
Issus.mp4
134 KB Download
To fix this issue, we need to either support overlay rotation or fallback to GLES path during screen rotation, however, both fallback to GLES and overlay_transform (rotation for this issue) are not implemented yet. 
Investigating the proper solution to fix it. 
Feel free to comment/feedback.
If we force to fallback (force to return false in OverlayStrategyUnderlay::Attempt), SurfaceView for fullscreen playback is not created successfully, investigating the reason.
do you mean the black rectangle in the upper left that shows up momentarily?  once the transition is over, does the video display in landscape correctly?

if so, that looks like we might be drawing the wrong transparent region during the transition.

forcing a fallback to GLES composition is going to be problematic, since we don't have the video texture to render from.  at best, we'd render black frames.

Comment 4 by w...@chromium.org, Mar 4 2016

I think we're seeing the portrait compositorview contents rotated to fit on the landscape surface momentarily, until the compositorview surface is resized and redrawn. Which means the black rectangle in landscape is the black bit you see above the video in portrait.
Cc: mlamouri@chromium.org
Labels: Proj-Spitzer

Comment 7 Deleted

@watk, you are correct!
However, the non-AVDA path works fine with the same rotation, investigating in progress to understand the root cause the solution to fix it. 
Welcome any suggestions if you have.

Comment 9 by w...@chromium.org, Mar 9 2016

Awesome. The non-AVDA fullscreen path is special-cased in blink. I believe it makes the whole CompositorView transparent. Have a look at WebMediaPlayer::supportsOverlayFullscreenVideo. "overlay fullscreen video" here is confusingly distinct from the overlays that we use for AVDA fullscreen. The original CL for that stuff is here: https://codereview.chromium.org/22454003/
Thanks so much, Chris.
That's exactly the root cause.
From the quick test by return true at WebMediaPlayer::supportsOverlayFullscreenVideo, we see the rotation behavior is the same as non-AVDA path, which means the pivot point of rotation is in the center of the screen to avoid this black screen issue.

However, the video frames are not shown out if we force to true at WebMediaPlayer::supportsOverlayFullscreenVideo, any suggestions?

Comment 11 by w...@chromium.org, Mar 10 2016

I think the problem is that the VideoLayer is no longer in the layer tree. You could try using Chrome tracing to see what layers are being composited. I'm not sure of all the details of the blink behavior when WebMediaPlayer::supportsOverlayFullscreenVideo() is true.

Also, this probably won't work for Spitzer as-is. The problem is that when supportsOverlayFullscreenVideo is called, we don't know whether we'll be using AVDA or software decoding. And if we're software decoding we won't be rendering to an overlay.
Status: WontFix (was: Started)

Sign in to add a comment