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

Issue 612909 link

Starred by 3 users

Issue metadata

Status: Verified
Owner:
OOO Nov 9-12
Closed: Sep 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug

Blocking:
issue 597467



Sign in to add a comment

Aw,Snap occured when scrolling through vimeo.com web page on JB devices.

Project Member Reported by ram...@chromium.org, May 18 2016

Issue description

Application Version (from "Chrome Settings > About Chrome"):51.0.2704.54 
Android Build Number (from "Android Settings > About Phone/Tablet"): 4.3.0 
Device: Sony Xperia Z (C6602)

Steps to reproduce: 
1. Start Chrome.
2. Visit 'http://www.vimeo.com'
3. Quickly scroll down and then up on the web page.

Observed behavior: 
Aw, Snap

Expected behavior: 
Scrolling should not result in tab crash.

Frequency: 
5/5 times

Additional comments: 
Not able to repro with Chrome stable '50.0.2661.89'

05-17 22:58:54.785 I/chromium( 3434): [INFO:CONSOLE(0)] "Deferred long-running timer task(s) to improve scrolling smoothness. See  crbug.com/574343 .", source: https://vimeo.com/ (0)
05-17 22:58:54.785 W/qdhwcomposer(  319): Excessive delay reading vsync: took 517 ms
 

Comment 1 by ram...@chromium.org, May 18 2016

http://go/chrome-androidlogs1/6/612909

added files:
vimeocrash.txt
612909.mp4

Comment 2 by ram...@chromium.org, May 18 2016

Will biset later.
Labels: Stability-Sheriff-Android ReleaseBlock-Stable
What is a "JS device"?

Comment 5 by ram...@chromium.org, May 18 2016

Android with 4.3.0 OS.

Comment 6 by ram...@chromium.org, May 19 2016

Summary: Aw,Snap occured when scrolling through vimeo.com web page on JB devices. (was: Aw,Snap occured when scrolling through vimeo.com web page on JS device.)

Comment 7 by ram...@chromium.org, May 19 2016

Bisect info:
Good build: 51.0.2694.0
Bad build:  51.0.2695.0

Comment 8 by mlliu@chromium.org, May 19 2016

ramine@ you said you were not able to find a crash report for this crash?

Comment 9 by mlliu@chromium.org, May 19 2016

Cc: liber...@chromium.org
 liberato@, i see 
I/dalvikvm(29093): Could not find method android.media.MediaCodecInfo$CodecCapabilities.isFeatureSupported, referenced from method org.chromium.media.MediaCodecUtil.codecSupportsAdaptivePlayback
W/dalvikvm(29093): VFY: unable to resolve virtual method 1431: Landroid/media/MediaCodecInfo$CodecCapabilities;.isFeatureSupported (Ljava/lang/String;)Z

in the logcat before the renderer process died. is that something cautionable?
Cc: -liber...@chromium.org
Owner: liber...@chromium.org
Status: Started (was: Untriaged)
thanks for forwarding.  indeed, that sounds like a problem.  inspection of MediaCodecUtils.java shows a path to call isFeatureSupported that avoids the api level check.  this can affect all spitzer and all MSE non-spitzer playback.

i'll fix.
Cc: liber...@chromium.org
Owner: ----
Status: Available (was: Started)
actually, i'm wrong -- i don't know how old the code that i was looking at was.  codecSupportsAdaptivePlayback does properly check the API version in m51 (https://code.google.com/p/chromium/codesearch#chromium/src/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java&l=293)

un-assigning myself.

i'll flash JB onto something local to see if i can repro it.  i don't have an Xperia, though.

Comment 12 by mlliu@chromium.org, May 19 2016

#11, I think i have the phone the crash happens. i'll first repro and do bisect for the CL range 
Good build: 51.0.2694.0
Bad build:  51.0.2695.0

I think this may oom because the tester said there's no crash report
No crash report was generated when test was performed.

Comment 14 by mlliu@chromium.org, May 19 2016

liberato@, attached is a logcat i got from 51.0.2704.55. Note the following logcat

05-19 17:31:12.143 E/OMX-VDEC-1080P(  308): ERROR in allocating MV buffers
05-19 17:31:12.143 E/OMXNodeInstance(  308): OMX_UseBuffer failed with error -2147479552 (0x80001000)
05-19 17:31:12.143 E/ACodec  ( 6165): registering GraphicBuffer 0 with OMX IL component failed: -2147483648
05-19 17:31:12.143 E/ACodec  ( 6165): Failed to allocate buffers after transitioning to IDLE state (error 0x80000000)
05-19 17:31:12.143 E/MediaCodec( 6165): Codec reported an error. (omx error 0x80001001, internalError -2147483648)
05-19 17:31:12.143 E/cr_media( 6165): Cannot start the media codec
05-19 17:31:12.143 E/cr_media( 6165): java.lang.IllegalStateException: start failed
05-19 17:31:12.143 E/cr_media( 6165):   at android.media.MediaCodec.start(Native Method)
05-19 17:31:12.143 E/cr_media( 6165):   at org.chromium.media.MediaCodecBridge.start(MediaCodecBridge.java:245)
05-19 17:31:12.143 E/cr_media( 6165):   at dalvik.system.NativeStart.run(Native Method)
05-19 17:31:12.143 W/cr_media( 6165): calling MediaCodec.release()
05-19 17:31:12.143 E/OMX-VDEC-1080P(  308): 
05-19 17:31:12.143 E/OMX-VDEC-1080P(  308):  Error in ioctl read next msg
05-19 17:31:12.143 E/        (  308): 
05-19 17:31:12.143 E/        (  308):  Destroy C2D instance
05-19 17:31:12.143 E/        (  308): 
05-19 17:31:12.143 E/        (  308):  Destroy C2D instance
05-19 17:31:12.143 I/ActivityManager(  761): Process com.google.android.music:main (pid 10034) has died.
05-19 17:31:12.153 W/Adreno-ES20( 6165): <oglLinkEGLImage2GLTexture:1954>: GL_INVALID_OPERATION
05-19 17:31:12.153 E/chromium( 6165): [ERROR:gles2_cmd_decoder.cc(2167)] [.CommandBufferContext.RenderWorker-0x756aa800]GL ERROR :GL_INVALID_OPERATION : GLES2DecoderImpl::DoBindTexImage2DCHROMIUM: <- error from previous GL command
05-19 17:31:12.223 D/dalvikvm(10916): GC_CONCURRENT freed 2863K, 25% free 11346K/14956K, paused 6ms+78ms, total 228ms
05-19 17:31:12.703 E/chromium(10949): [ERROR:render_media_log.cc(23)] MediaEvent: PIPELINE_ERROR decoder: not supported
05-19 17:31:12.723 E/chromium(10949): [ERROR:render_media_log.cc(23)] MediaEvent: PIPELINE_ERROR decoder: not supported
05-19 17:31:12.723 E/chromium(10949): [ERROR:render_media_log.cc(23)] MediaEvent: PIPELINE_ERROR decoder: not supported
05-19 17:31:12.823 I/ActivityManager(  761): Process com.android.chrome:privileged_process0 (pid 9577) has died.


Also I want to point out that chrome was barely usable after I ran a couple of test runs this morning. I'm not even able to open the "vimeo" from the bookmark. It crashed before vimeo page loaded... Until  ramine@ factory restored the phone, i was able to proceed and get the attached logcat
betaCrash1.log
580 KB View Download
from the full log, starting at line 1891 there are about 72 instances where it fails to create a media codec.  above that, there are quite a few errors that i've never seen before that aren't related to chrome, such as:

05-19 17:31:04.195 D/PfOMXComponent(  308): OMX_GoogleAndroidIndexEnableAndroidNativeBuffers enable=1
05-19 17:31:04.295 I/ActivityManager(  761): Process com.sonyericsson.extras.liveware (pid 8202) has died.
05-19 17:31:04.355 I/ActivityManager(  761): Process com.sonyericsson.album (pid 5752) has died.
05-19 17:31:04.365 I/PeopleContactsSync(10916): CP2 sync: diff=PeopleSyncDiffs: circlesSync disabled; evergreenSync disabled; unchanged [a547e6b9]
05-19 17:31:04.395 I/ActivityManager(  761): Process com.google.android.gm (pid 11634) has died.
05-19 17:31:04.435 I/PeopleContactsSync(10916): Syncing people to contacts: PeopleSyncDiffs: circlesSync disabled; evergreenSync disabled; unchanged [a547e6b9]
05-19 17:31:04.435 I/ActivityManager(  761): Process com.google.android.play.games.ui (pid 11773) has died.
05-19 17:31:04.495 I/ActivityManager(  761): Process com.google.android.partnersetup (pid 5772) has died.
05-19 17:31:04.535 I/ActivityManager(  761): Process com.sonymobile.xperialink (pid 8293) has died.
05-19 17:31:04.615 I/ActivityManager(  761): Process com.android.keychain (pid 8186) has died.
05-19 17:31:04.675 I/ActivityManager(  761): Process com.android.providers.partnerbookmarks (pid 9796) has died.
05-19 17:31:04.695 I/ActivityManager(  761): Process com.android.defcontainer (pid 7906) has died.
05-19 17:31:04.715 D/dalvikvm(10916): GC_CONCURRENT freed 2717K, 23% free 11352K/14692K, paused 8ms+5ms, total 157ms


how much free memory is on this device before chrome starts?


Comment 16 by mlliu@chromium.org, May 19 2016

Cc: mlliu@chromium.org
MemTotal:        1839868 kB
MemFree:          263268 kB

After start of Chrome:
MemTotal:        1839868 kB
MemFree:          247460 kB

Comment 18 by mlliu@chromium.org, May 20 2016

liberato@ should i assign this bug to you?
Cc: -liber...@chromium.org
Owner: liber...@chromium.org
sure, though until i get an xperia i'm not going to be able to do much locally.

since we're not shipping spitzer for M51, let's see if about://flags 'disable unified media pipeline' still has the problem.  if not, then it's not RBS.

Comment 20 by mlliu@chromium.org, May 20 2016

Labels: -Stability-Sheriff-Android
#19, given the fact that there're a lot of gpu bugs, I think it's a very justified reason to buy some of the devices yourself and expense it. :) So that you have a small inventory there to help work locally on some of the devices

This is the one
http://www.amazon.com/Sony-Unlocked-Quad-Core-Processor--U-S-Warranty/dp/B00C7ATZMK/ref=sr_1_1?s=wireless&ie=UTF8&qid=1463779428&sr=1-1&keywords=sony+xperia+z+c6602
Tested latest '51.0.2704.56' having spitzer 9enable-unified-media-pipeline) on or off will generate tab crash.
Cc: crouleau@chromium.org
Status: Started (was: Available)
... with a delivery date in 1-2 months.. ouch!  i'll see if i can find a faster source.

caleb, do we have an Sony Xperia Z (C6602) in the av lab?  if not, do you have contact info for the android compat lab in MTV that you could send to me?
Cc: dalecur...@chromium.org
Frank, 

We don't have that device in the lab. :(

Are you talking about https://sites.google.com/a/google.com/android-cts/ ? I can set up an email thread if you would like an introduction.
Cc: qin...@chromium.org ti...@chromium.org
This is on JellyBean, Spitzer is not enabled on JellyBean for M51 (or at all on M51 anymore); so this is a crash related to the old media player framework.

timav@, qinmin@ can you help take a look?

Even if it's the old framework it's odd that the renderer process is crashing. This might be related to the issue qinmin@ fixed where we are accidentally calling MediaCodec APIs without the right permissions. See issue 568104.

I'm also not sure how we're seeing MediaCodec logs for this device, it should be using MediaPlayer as Vimeo does not use MSE.

Comment 26 by ti...@chromium.org, May 20 2016

Cc: -ti...@chromium.org liber...@chromium.org
Owner: ti...@chromium.org
Status: Assigned (was: Started)
I got Sony Xperia
thanks tima!

Comment 28 by ti...@chromium.org, May 21 2016

c#25: could you please clarify whether we disabled Spitzer on all JellyBeans or just for level 16 and 17?
This device is level 18 (Android 4.3.0) and on main branch I see the crash in Spitzer:

05-21 00:47:12.213 16378 16394 V timav   : [16378/16394] 00:47:12.222 Destroy
05-21 00:47:12.213 16378 16401 E chromium: [ERROR:node_controller.cc(906)] Could not be introduced to peer B748D768AF9C50D4.82E5BADAE6F3FF2E
05-21 00:47:12.213 16378 16401 E chromium: [ERROR:node_controller.cc(906)] Could not be introduced to peer B748D768AF9C50D4.82E5BADAE6F3FF2E
05-21 00:47:12.213 16378 16394 W Adreno-ES20: <oglLinkEGLImage2GLTexture:1954>: GL_INVALID_OPERATION
05-21 00:47:12.233 16378 16394 F chromium: [FATAL:android_deferred_rendering_backing_strategy.cc(381)] Check failed: static_cast<GLenum>(0x0) == ::gfx::g_current_gl_context_tls->Get()->glGetErrorFn() (0 vs. 1282)

Comment 29 by ti...@chromium.org, May 21 2016

For both pipelines I see GPU process keeps dying and being recreated in a loop.

in M51 (branch 2704), spitzer is off by default for all versions starting yesterday: https://codereview.chromium.org/1997783002/

at ToT, i think that it's still enabled.

can you test a current M51?  it should work fine, and we can remove RBS.  i'll try to build a current M51 also, since i think that it doesn't build cleanly without some edits.

as an aside, we decided today that we're removing CopySurfaceTextureToPictures.  it also leaks fds sometimes due to (we think) broken gl implementations.

Comment 32 by ti...@chromium.org, May 21 2016

I tested this build, it behaves very similar to the ToT build if I hardcode unified_pipeline=false.

Chrome does not crash with "Aw, snap!", but the screen start blinking erratically and sometimes Chrome disappears, e.g.

05-21 21:48:23.509   800   811 W ActivityManager: Force removing ActivityRecord{418c1af8 u0 org.chromium.chrome/.browser.ChromeTabbedActivity}: app died, no saved state

The first thing that happens though is that GPU process dies and gets recreated over and over. When it happens first time  I do not see any error conditions in the log, i.e.

05-21 21:47:42.089  3331  3689 I ExtendedCodec: Smoothstreaming Enabled
05-21 21:47:42.089  3331  3689 I ExtendedCodec: Enabling timestamp reordering
[...]
05-21 21:47:42.339   336  6008 E OMXNodeInstance: !!! Observer died. Quickly, do something, ... anything...
05-21 21:47:42.339  3248  3248 W cr_ChildProcessConnect: onServiceDisconnected (crash or killed by oom): pid=3331
05-21 21:47:42.339   800  1343 I ActivityManager: Process org.chromium.chrome:privileged_process0 (pid 3331) has died.
[...]
05-21 21:47:42.389   800  1386 I ActivityManager: Start proc org.chromium.chrome:privileged_process1 for service org.chromium.chrome/org.chromium.content.app.PrivilegedProcessService1: pid=3722 uid=10199 gids={50199, 3002, 3001, 3003, 1015, 1028}


After the creation of the second GPU process I get 

05-21 21:47:42.619  3722  3739 E libEGL  : validate_display:257 error 3008 (EGL_BAD_DISPLAY)

and maky errors like

05-21 21:47:42.920  3722  3739 E chromium: [ERROR:gles2_cmd_decoder.cc(14683)] [.CommandBufferContext.DisplayCompositor-0x7c503dd8]GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name
05-21 21:47:42.930  3722  3739 E chromium: [ERROR:gles2_cmd_decoder.cc(7857)] [.CommandBufferContext.DisplayCompositor-0x7c503dd8]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.

and eventually

05-21 21:47:43.490   800  1385 I ActivityManager: Process org.chromium.chrome:privileged_process1 (pid 3722) has died.


Attaching complete log just in case. It shows that several processes died, not only ours.

Any ideas?

adb.log
454 KB View Download
i started going through diffs from 2694 to 2695 per c#7.  not much changed in any of the areas of the tree that i'd expect to impact this.  will do a more careful search tomorrow.  maybe i've grabbed the wrong revision range or something.

i think that my diff command was broken.  the new one is:

git diff 51.0.2694.0 51.0.2695.0 .

based on c#12:

> Good build: 51.0.2694.0
> Bad build:  51.0.2695.0

there still aren't too many changes that would affect both WMPI and WMPA, that also seem at all related:

2f48766b1 - [merged] Use actual audio channel count in MediaSourcePlayer (interesting because it changes buffering amounts, though only for audio)

9268401fe - Make Android StreamTexture implement GLStreamTextureImage (interesting because it unifies how the SurfaceTexture texture matrix is handled between WMPI and WMPA)

note that i did this via looking at the diff in various directories (gpu/ media/base/android/ mostly).

Comment 35 by mlliu@chromium.org, May 23 2016

I'm not quite positive the bad build and good build in #7 though, because I downloaded 51.0.2695.0 but i don't see it crashes. 

Comment 36 Deleted

Comment 37 by ti...@chromium.org, May 23 2016

Cc: ti...@chromium.org
Owner: ram...@chromium.org
#32: Everything started working for me after I rebooted the device. Namely, the latest M51 Beta 51.0.2704.60 seemed to work fine, which is expected as Spitzer should be disabled there by default.

According to mariakhomenko@ the fact that device reboot helps indicates a memory leak in Android OS.

Please retest with the latest build.


ramine@ can you please test this ASAP?

Comment 39 by ti...@chromium.org, May 25 2016

The site is now using MSE.
Scrolling creates new video elements, and we do not seem to destroy them as they go out of the view. With the onld pipeline (MediaCodecPlayer in this case) I easily created 37 MediaCodecPlayer objects and only 2 were destroyed.

With the old pipeline the Android's MediaCodec creation is postponed till a user presses Play. If in Spitzer we create MediaCodec and start decoding right away we should probably limit the number of active <video> elements otherwise we will exhaust resources.
Hmm, these should be destroyed after a few seconds of idle activity. How long did you wait?

Comment 41 by ti...@chromium.org, May 26 2016

I need to rerun the experiment to see. There is no apparent problem in the old pipeline, I was talking about Spitzer where we could exhaust all system resources before an idle period begins.
Please note that this is marked as a release blocker for M51.  If we don't feel it should block then please let me know that.  But if it should (and the previous 2 comments worry me a bit) then we need it fixed on trunk by tomorrow and merged back to M51 on Friday.
Tested with latest chrome beta release '51.0.2704.64', not able to repro.

Comment 44 by ti...@chromium.org, May 26 2016

amineer@: Alex, comments #39, #40 and #41 talk about Spitzer which is disabled on M51
Labels: -M-51 M-52
OK, per timav@ we shouldn't see this bug manifest in M51 with the old media pipeline, so moving to M52.
Cc: boliu@chromium.org tobiasjs@chromium.org
https://bugs.chromium.org/p/chromium/issues/detail?id=614422 seems similar.  exynos, crazy crash.  however, the page in question didn't have a lot of video elements.  but otherwise, "phone shuts off" sounds pretty similar.

i didn't dupe because that one is not RVG.

+boliu and +tobiasjs, who are on the other bug.
ah, my bad.  i think that my reading skills failed me.  i must have misread "experia" as "exynos".  experia Z is QC.

nevermind me.
Owner: liber...@chromium.org
Labels: -Restrict-View-Google
Removing RVG since this is effectively an OOM crash.
I've reached out to Vimeo about this, we can alleviate the pressure a bit, but this is similar to issues we've had in the past with desktop sites that are leaking / never clearing unused video tags. What we'll probably do for now is throttle these older devices to only 1 or 2 active tags.
sandersd@ isn't able to repro this using a release build anymore on ToT; this may have been resolved by liberato@'s earlier patches (that are now in M52). Will do some more testing tomorrow.
ramine@ can you retest this on the Xperia Z using the latest Chrome Canary for Android? 54.0.2793.0	
I got message 'Aw, Snap' with chrome canary build '54.0.2794.0' on Sony Xperia Z.
Thanks ramine, I have a patch which should ease the load on this site, though we'll still need vimeo to change their design for optimal experience:

https://codereview.chromium.org/2147843002

Comment 55 by w...@chromium.org, Jul 14 2016

Alright. We've decided to blacklist spitzer on JB devices for M52. Requested approval to revert in  Issue 597467 .
Project Member

Comment 56 by bugdroid1@chromium.org, Jul 14 2016

Labels: merge-merged-2743
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0068affc7eb3c0e11dcb6a52108bcfe3e0723e99

commit 0068affc7eb3c0e11dcb6a52108bcfe3e0723e99
Author: Chris Watkins <watk@chromium.org>
Date: Thu Jul 14 21:30:33 2016

Revert "Re-enable the unified media pipeline for JellyBean"

This reverts commit 6e72427d55908dc1f44683bfe6c79847854abf40.

Re-disabling unified media pipeline due to crashes.

TBR=liberato
BUG= 597467 , 612909 

Review URL: https://codereview.chromium.org/2144733010 .

Cr-Commit-Position: refs/branch-heads/2743@{#632}
Cr-Branched-From: 2b3ae3b8090361f8af5a611712fc1a5ab2de53cb-refs/heads/master@{#394939}

[modify] https://crrev.com/0068affc7eb3c0e11dcb6a52108bcfe3e0723e99/media/base/media.cc

Project Member

Comment 57 by bugdroid1@chromium.org, Jul 14 2016

Labels: merge-merged-2785
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4467b42153c1fbec6e3dcfe30727e6ef2e2e615f

commit 4467b42153c1fbec6e3dcfe30727e6ef2e2e615f
Author: Chris Watkins <watk@chromium.org>
Date: Thu Jul 14 22:05:22 2016

Revert "Re-enable the unified media pipeline for JellyBean"

This reverts commit 1580687683f0814bfb8a6238b9b9243fff335ef9.

Disabling the unified media pipeline on JB until crashes are solved.

TBR=liberato
BUG= 612909 , 597467 

Review URL: https://codereview.chromium.org/2153623002 .

Cr-Commit-Position: refs/branch-heads/2785@{#127}
Cr-Branched-From: 68623971be0cfc492a2cb0427d7f478e7b214c24-refs/heads/master@{#403382}

[modify] https://crrev.com/4467b42153c1fbec6e3dcfe30727e6ef2e2e615f/media/base/media.cc

Owner: w...@chromium.org
reassigning to watk since you did the work on this one.  please remove releaseblock-stable if you're satisfied that it's fixed and merged to 52.
We should mark the bug as fixed rather than remove release block stable.

Comment 60 by w...@chromium.org, Jul 18 2016

Labels: -M-52 -ReleaseBlock-Stable
Status: Started (was: Assigned)
This bug still exists in ToT, amineer@. Would you prefer we opened a new bug for it?
Issue 629265 (unexplained crash in audio clock) is tied to enabling spitzer on JB. Since disabling the crash has disappeared. Just making a note to keep an eye on this as we decide what to do for JB in future releases. 
Project Member

Comment 62 by bugdroid1@chromium.org, Sep 3 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28

commit e7120dcf27938c9604ec03b3b574e1b4b3bf6c28
Author: dalecurtis <dalecurtis@chromium.org>
Date: Sat Sep 03 02:54:35 2016

Allow suspension prior to reaching kHaveFutureData.

This change rolls in a few changes:
- Removes DelegateState::PAUSED_BUT_NOT_IDLE state.
- Removes all blocks against suspending prior to kHaveFutureData.
- If suspended, triggers resume when prior to have kHaveFutureData
if the didLoadingProgress() timer reports true.
- Always notifies the delegate of DelegateState::GONE; this ensures
the idle timer is always restarted if we didn't quite get enough
data to reach kHaveFutureData.
- Fixes pause timer to handle newly supported background video;
which doesn't set a state of DelegateState::GONE

BUG= 612909 ,  643383 
TEST=new and updated unittests.

Review-Url: https://codereview.chromium.org/2289543005
Cr-Commit-Position: refs/heads/master@{#416431}

[modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/content/renderer/media/renderer_webmediaplayer_delegate.cc
[modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc
[modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/media/blink/webmediaplayer_impl.h
[modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/media/blink/webmediaplayer_impl_unittest.cc

Comment 63 by w...@chromium.org, Sep 13 2016

Owner: dalecur...@chromium.org
dalecurtis@ is actively doing a lot of work on this one. 
Project Member

Comment 64 by bugdroid1@chromium.org, Sep 16 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d71b1e5954c95ecde84b60228f12e74867a42ce5

commit d71b1e5954c95ecde84b60228f12e74867a42ce5
Author: dalecurtis <dalecurtis@chromium.org>
Date: Fri Sep 16 00:05:22 2016

Disallow vp8 MediaCodec in MediaCodecUtil instead of AVDA.

Needs to be done in MediaCodecUtil otherwise the EME types won't
incorrectly reject encrypted vp8 support.

BUG= 612909 
TEST=none

Review-Url: https://codereview.chromium.org/2348683002
Cr-Commit-Position: refs/heads/master@{#419045}

[modify] https://crrev.com/d71b1e5954c95ecde84b60228f12e74867a42ce5/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java
[modify] https://crrev.com/d71b1e5954c95ecde84b60228f12e74867a42ce5/media/gpu/android_video_decode_accelerator.cc

Cc: foolip@chromium.org mlamouri@chromium.org
+mlamouri, foolip: Do you have advice on how you would force preload=none for Android JellyBean / base::SysInfo::IsLowEnd() devices? I notice Blink code doesn't have any pre-existing usage of sdk_int() or #ANDROID for making decisions. The two naive choices seem to be to stash a force_preload_none setting somewhere in WebRuntimeFeatures or document().settings(). Is there a better place?
If this is something you expect to be around for a long time, then document().settings() is probably the better choice, there are plenty of things of a similar nature.
Thanks I'd expect it to remain around for the lifetime of JellyBean.
Project Member

Comment 68 by bugdroid1@chromium.org, Sep 17 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648

commit d0ab2edb1cd3b57fbc48b3b39492a8d23221e648
Author: dalecurtis <dalecurtis@chromium.org>
Date: Sat Sep 17 19:39:09 2016

Reduce number of active codecs on low end devices.

This fixes OOM crashes in the mediaserver process on older devices
by suspending players more frequently and preventing unused players
and SurfaceTextures from ever being created. Both fixes are required
to enable playback on JellyBean devices; independently neither is
sufficient for playback to succeed.

- On low end devices, suspends all idle players immediately upon
  playback of another player.
- On low end devices, if a codec already exists, codec creation is
  deferred until the first Decode() call. Resolves issues with sites
  like vimeo.com that are appending initialization segments to MSE
  but never any further data.
- Once more than 2 players exist on a low end device, every extra
  player will cause immediate idle player collection. Normal devices
  will now do this after 8 players.

A followup CL will set preload=none for all JellyBean devices.

BUG= 612909 
TEST=manual, new tests.

Review-Url: https://codereview.chromium.org/2333983002
Cr-Commit-Position: refs/heads/master@{#419375}

[modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/content/renderer/media/renderer_webmediaplayer_delegate.cc
[modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/content/renderer/media/renderer_webmediaplayer_delegate.h
[modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc
[modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/media/blink/webmediaplayer_impl_unittest.cc
[modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/media/gpu/android_video_decode_accelerator.cc
[modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/media/gpu/android_video_decode_accelerator.h

Project Member

Comment 69 by bugdroid1@chromium.org, Sep 20 2016

Labels: merge-merged-2840
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4c621e70b04fd5ae89a95d58c10d040c57af9f12

commit 4c621e70b04fd5ae89a95d58c10d040c57af9f12
Author: Dale Curtis <dalecurtis@chromium.org>
Date: Tue Sep 20 23:50:51 2016

Merge M54: "Allow suspension prior to reaching kHaveFutureData."

This change rolls in a few changes:
- Removes DelegateState::PAUSED_BUT_NOT_IDLE state.
- Removes all blocks against suspending prior to kHaveFutureData.
- If suspended, triggers resume when prior to have kHaveFutureData
if the didLoadingProgress() timer reports true.
- Always notifies the delegate of DelegateState::GONE; this ensures
the idle timer is always restarted if we didn't quite get enough
data to reach kHaveFutureData.
- Fixes pause timer to handle newly supported background video;
which doesn't set a state of DelegateState::GONE

BUG= 612909 ,  643383 
TEST=new and updated unittests.

Review-Url: https://codereview.chromium.org/2289543005
Cr-Commit-Position: refs/heads/master@{#416431}
(cherry picked from commit e7120dcf27938c9604ec03b3b574e1b4b3bf6c28)

Review URL: https://codereview.chromium.org/2355143002 .

Cr-Commit-Position: refs/branch-heads/2840@{#451}
Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607}

[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/content/renderer/media/renderer_webmediaplayer_delegate.cc
[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc
[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl.h
[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl_unittest.cc

Project Member

Comment 70 by bugdroid1@chromium.org, Sep 21 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cd97125235326c121186b01e0b3484a60a98e791

commit cd97125235326c121186b01e0b3484a60a98e791
Author: dalecurtis <dalecurtis@chromium.org>
Date: Wed Sep 21 16:09:00 2016

Force preload=none and disable autoplay on lowend Android devices.

Some older devices are unable to maintain multiple concurrent
players without borking the system badly enough that it needs
a reboot in order to continue playing media.

We also disable autoplay and preloading on low-memory devices to
avoid unnecessary codec churn.

BUG= 612909 , 622826
TEST=less crashy JB devices.

Review-Url: https://codereview.chromium.org/2344353003
Cr-Commit-Position: refs/heads/master@{#420073}

[modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/content/renderer/render_view_impl.cc
[add] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/LayoutTests/media/video-force-preload-none.html
[modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/Source/core/frame/Settings.in
[modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
[modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/Source/web/WebSettingsImpl.cpp
[modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/Source/web/WebSettingsImpl.h
[modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/public/web/WebSettings.h

Project Member

Comment 71 by bugdroid1@chromium.org, Sep 21 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dd027dcc981b471f916593b92d615b2c06595d78

commit dd027dcc981b471f916593b92d615b2c06595d78
Author: dalecurtis <dalecurtis@chromium.org>
Date: Wed Sep 21 18:20:13 2016

Remove field trial and enable JellyBean for Spitzer!

All known issues should be fixed.

BUG= 597467 ,  612909 
TEST=jb devices no longer crash while scrolling.

Review-Url: https://codereview.chromium.org/2349763003
Cr-Commit-Position: refs/heads/master@{#420108}

[modify] https://crrev.com/dd027dcc981b471f916593b92d615b2c06595d78/media/base/media.cc

Status: Verified (was: Started)
Verified with Chrome Beta '54.0.2840.34' on Sony Xperia Z(C6602)
Labels: M-55
Status: Fixed (was: Verified)
You won't be able to verify this until the next M-55 dev update; M-54 has this functionality disabled.
Status: Verified (was: Fixed)
Verified with chrome dev '55.0.2868.0' on Sony Xperia Z (C6602)/ 4.3.0
Project Member

Comment 75 by bugdroid1@chromium.org, Oct 27 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4c621e70b04fd5ae89a95d58c10d040c57af9f12

commit 4c621e70b04fd5ae89a95d58c10d040c57af9f12
Author: Dale Curtis <dalecurtis@chromium.org>
Date: Tue Sep 20 23:50:51 2016

Merge M54: "Allow suspension prior to reaching kHaveFutureData."

This change rolls in a few changes:
- Removes DelegateState::PAUSED_BUT_NOT_IDLE state.
- Removes all blocks against suspending prior to kHaveFutureData.
- If suspended, triggers resume when prior to have kHaveFutureData
if the didLoadingProgress() timer reports true.
- Always notifies the delegate of DelegateState::GONE; this ensures
the idle timer is always restarted if we didn't quite get enough
data to reach kHaveFutureData.
- Fixes pause timer to handle newly supported background video;
which doesn't set a state of DelegateState::GONE

BUG= 612909 ,  643383 
TEST=new and updated unittests.

Review-Url: https://codereview.chromium.org/2289543005
Cr-Commit-Position: refs/heads/master@{#416431}
(cherry picked from commit e7120dcf27938c9604ec03b3b574e1b4b3bf6c28)

Review URL: https://codereview.chromium.org/2355143002 .

Cr-Commit-Position: refs/branch-heads/2840@{#451}
Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607}

[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/content/renderer/media/renderer_webmediaplayer_delegate.cc
[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc
[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl.h
[modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl_unittest.cc

Sign in to add a comment