New issue
Advanced search Search tips

Issue 873871 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Dec 13
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android , Chrome
Pri: 2
Type: Bug

Blocked on:
issue 877673



Sign in to add a comment

Video codec switching flashes a white frame when SurfaceLayer is enabled.

Project Member Reported by wolenetz@chromium.org, Aug 14

Issue description

Repro steps:

Android Chrome 69 or above

1. chrome://flags#enable-experimental-web-platform-features -> enable and relaunch (to enable SourceBuffer.changeType() API)
2. Browse to [**] https://rawgit.com/wolenetz/shaka-player/mse-codec-switching-demo-using-shaka-player/demo/#asset=https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd;lang=en-US;logtoscreen;debug;build=uncompiled
3. Select load
4. Observe that video codec switches yield brief white frames. On one of the h264->vp9 transitions, I encountered decode error, but was unable to reproduce that later to get a full log.

[**] Note: I'll update this repro link once I make a specific fork for this crbug.

 
Cc: sande...@chromium.org liber...@chromium.org
Status: Assigned (was: Untriaged)
I was able to repro the video decode error. Due to the pattern of repro, it might be associated with chrome/shaka doing initial data fetches of the demo/assets. Or just coincidence.

Regardless, repro adblog for decode error on Google Pixel 2 XL is attached.
crbug_873871_google_pixel_2_xl_DECODE_ERROR_adblog
19.1 KB View Download
@#3 I might also be incorrectly assuming it's *video* decode err.
Labels: OS-Chrome
Summary: Video codec switching on Android or CrOS flickers through white frame briefly (may also give decode error on Android) (was: Video codec switching on Android flickers through white frame briefly (may also give decode error))
Flickering through white also occurs on Chromebook (v1 Pixel). Same repro steps.
Thanks the Android one might be us not tearing down the codec before the switch. Can you confirm if you saw the flashes on Windows and Mac? I'll try on my windows machine which has h264+vp9 hardware decode too. I suspect sw <=> hw is okay, since that's a similar path to suspend, but when it's hw <==> hw we might be encountering some surprises.
Dan points out that it's currently impossible to do a hw ==> hw transition. Both GVD and MCVD prevent codec switches, so we run through decoder selection again with the hardware decoder blacklisted. So this flickering must be coming from a hw ==> sw transition.
No flashes on windows or mac - I tried again this morning.

Also, with chrome://flags#enable-surfaces-for-videos *DISABLED*, there is no repro of flashing on either my google pixel 2 xl or on my pixel v1 chromebook.

I've updated the demo to include the mime type in the buffering log entries. It'll at least help understand what mime-types are being buffered (though media-internals is necessary to see what's decoded).
Cc: mlamouri@chromium.org
cc:mlamouri for white flashes relative to c#8.
The decode error is definitely due to no support for fall-forward. We end up on the vp9 hardware decoder and the reinitialize (with hardware decoder blacklisted) for h264 fails. sandersd@ do you already have a bug filed for adding that support for resolution changes? If not we can file one and leave this for the white frame flash with surface layer.

As discussed it seems fairly simple to add an exception to the blacklist when codec changes occur. Probably the simplest way to do this is to modify the DecoderStreamTraits to save the decoder config (audio already does this). Then during receipt of kConfigChanged save a flag indicator this is a codec change.
Blockedon: 684792
Cc: -mlamouri@chromium.org dalecur...@chromium.org
Owner: mlamouri@chromium.org
Summary: Video codec switching flashes a white frame when SurfaceLayer is enabled. (was: Video codec switching on Android or CrOS flickers through white frame briefly (may also give decode error on Android))
=>mlamouri@ for tracking since this one is now just for the white flash on Android/CrOS, but probably happens on any platform with surfaces enabled.
Blockedon: 877673
Blockedon: -684792
Cc: mlamouri@chromium.org
Labels: Needs-Feedback
Owner: wolenetz@chromium.org
I cannot reproduce this on Linux with the right flags enabled on m71. Can you still repro this issue?
Status: WontFix (was: Assigned)
I never saw this on Linux.

It only occurred on android pixel 2 and chromebook pixel (v1) for me previously. With m71 on same android device, no repro. With old m69 (and default enable-surface-layers setting plus (to get changeType API) enable-experimental-web-platform-features enabled), no repro on that chromebook pixel. It may still be lurking, though, since I recall it was hard to get a repro. I tried to repro several times today on each of those two devices (including with m71 enable-surface-layers enabled on my android attempts) with no repro.

So, suspecting that this flashing might have instead been due to a bug in the demo that was fixed after this crbug was filed (https://github.com/wolenetz/shaka-player/commit/41d7ba121cce9f5a90d26c973746c4a7b20d5053), I retried android pixel 2 m71 repro attempts (with enable-surfaces-for-video enabled) against the unfixed demo (https://rawgit.com/wolenetz/shaka-player/f01389b6329a7889a999ad5d9bc6f5fba3fc6274/demo/#asset=https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd;lang=en-US;logtoscreen;debug;build=uncompiled) : no repro

Seems fixed somehow.
Labels: -Needs-Feedback

Sign in to add a comment