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

Issue 836033 link

Starred by 3 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug



Sign in to add a comment

MSE decoding occasionally fails to initialize on Android

Reported by dustin.k...@gmail.com, Apr 23 2018

Issue description

Steps to reproduce the problem:
1. Go to https://jsfiddle.net/fqoahvqo/ on a Samsung S6 or S9 (these are the only devices I've seen this issue on so far)
2. SMPTE Color Bar video should start playing
3. Keep hitting the "Run" button on the top left (or refresh the page) until you see the video fail to load (bottom right screen will stay black).

I see a fail rate of about 1/5 times on these devices, but it seems to vary.

What is the expected behavior?
Video should play correctly when using Media Source Extensions

What went wrong?
Not sure. This works 100% correctly on a Pixel XL and Moto Z (and OSX/Windows Chrome).

Did this work before? Yes Unsure

Does this work in other browsers? Yes

Chrome version: 66.0.3359.126  Channel: n/a
OS Version: 10.0
Flash Version: 

This test video forces "Low Delay" mode so it's possible it's related to that. When the video plays correctly, Media Internals looks like:

debug				Video rendering in low delay mode.
duration			unknown
found_video_stream		true
frame_title			
frame_url			http://fiddle.jshell.net/_display/
height				1024
info				Selected GpuVideoDecoder for video decoding, config: codec: h264 format: 1 profile: h264 high coded size: [1024,1024] visible rect: [0,0,1024,1024] natural size: [2048,1024] has extra data? false encrypted? false rotation: 0°
origin_url			http://fiddle.jshell.net/
pipeline_buffering_state	BUFFERING_HAVE_ENOUGH
pipeline_state			kSuspended
player_id			4
render_id			17
seek_target			42
url				blob:http://fiddle.jshell.net/47aacc34-7baf-453f-894c-078edf87e10a
video_buffering_state		BUFFERING_HAVE_NOTHING
video_codec_name		h264
video_dds			false
video_decoder			GpuVideoDecoder
width				2048

And when it breaks (notice the lack of width/height):

debug				Video rendering in low delay mode.
duration			unknown
found_video_stream		true
frame_title	
frame_url			http://fiddle.jshell.net/_display/
info				Selected GpuVideoDecoder for video decoding, config: codec: h264 format: 1 profile: h264 high coded size: [1024,1024] visible rect: [0,0,1024,1024] natural size: [2048,1024] has extra data? false encrypted? false rotation: 0°
origin_url			http://fiddle.jshell.net/
pipeline_state			kPlaying
player_id			48
render_id			3
seek_target			1
url				blob:http://fiddle.jshell.net/f87bed89-1fe4-4e64-9eb1-cf2705445699
video_codec_name		h264
video_dds			false
video_decoder			GpuVideoDecoder
 
Labels: Needs-triage-Mobile
After a little more digging it appears that sourceBuffer.appendBuffer() is silently failing. I noticed that if I call it a second time after waiting ~500ms it would get things working. I poked around the MSE spec and all of the available fields/events but I wasn't able to find anything the correlated to when it failed. Luckily I was able to find a field in Three.js that does: texture._listeners

Now I fire off a setTimeout and check texture._listeners. If it's null I retry the append. It's quite ugly, but I now have a way to workaround this issue.
Cc: sandeepkumars@chromium.org
Labels: FoundIn-66 M-68 FoundIn-67 Triaged-Mobile FoundIn-68
Status: Untriaged (was: Unconfirmed)
Tested the issue using #Tested the issue in Android and able to reproduce the issue. Similar behavior is observed since Chrome #60.0.3072.0 and M58

Steps Followed:
1. Launched the Chrome Browser.
2. Navigated to https://jsfiddle.net/fqoahvqo/
3. Observed isn't playing

Chrome versions tested:
60.0.3072.0, 66.0.3359.106(Stable), 68.0.3404.0(Canary)

OS:
Android 7.0.0

Android Devices:
Samsung J7

This seems to be a Non-Regression issue as same behavior is seen since M60.  Untriaged for further input's on this issue.

Please navigate to below link for log's and screen cast--
go/chrome-androidlogs/836033

Thanks!


Labels: -Type-Bug-Regression Type-Bug
FYI, my workaround posted above seems to fix only the S6 I have locally and does not fix the issue on an S9 (tested at a T-Mobile store running Chrome 65.x).
Can I get you anything else regarding this issue?
Components: -Blink>Media Internals>Media>Source
Status: Unconfirmed (was: Untriaged)
Cc: chcunningham@chromium.org wolenetz@chromium.org
+MSE folks. I missed this when it was filed. Append() should never be failing silently. Is there nothing from more recent chrome version within chrome://media-internals indicating what's wrong?
Owner: wolenetz@chromium.org
Status: Assigned (was: Unconfirmed)
Cc: liber...@chromium.org
+liberato in case there's a underlying decoder failure
Dale, I no longer have one of these devices to test on, but I might be able to get one in a week or so. Does Chrome >=66 have additional info in media-internals compared to 65?
If it's not easy to re-test that's okay, we have an S6 we can test on I believe and if we don't have an S9 yet we should probably order one. It's unusual for MSE to fail silently, so it's possible this is a codec bug instead.
K, sounds good. Let me know how I can help otherwise.

Sign in to add a comment