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

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug-Regression


Show other hotlists

Hotlists containing this issue:
Hotlist-1


Sign in to add a comment

When playback video in background for a while and switch back, videos lags and even freezes (Optimize background video playback disabled)

Reported by human.p...@gmail.com, Aug 5 2017

Issue description

UserAgent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.31 Safari/537.36

Example URL:
https://www.twitch.tv/dota2ti

Steps to reproduce the problem:
I can reliably reproduce it on *my computer* with a new profile, at least.

1. Disable "Optimize background video playback" in chrome://flags
2. Open any channel on Twitter, preferably 1080p60 ones (e.g. https://www.twitch.tv/dota2ti)
3. Watch video any check everything is fine. Put the video tab in the background, and then put Chrome application on the background too.
4. Switch to other programs and wait for a few minutes. The audio of the stream is totally working during the whole time.
5. Switch back to Chrome and the video-playing tab.

What is the expected behavior?
The video should be instantly playing without any delay, since "Optimize background video playback" is disabled.

What went wrong?
Video lags, stutters, and sometimes totally freezes (together with the audio). You have to refresh the webpage to make it work again.

Did this work before? Yes Can't remember

Is it a problem with Flash or HTML5? HTML5

Does this work in other browsers? Yes

Chrome version: 61.0.3163.31  Channel: beta
OS Version: 6.1 (Windows 7, Windows Server 2008 R2)
Flash Version: Shockwave Flash 26.0 r0

Contents of chrome://gpu: 
Note: To properly save this page, select the "Webpage, Complete" option in the Save File dialog.
Graphics Feature Status
Canvas: Hardware accelerated
CheckerImaging: Disabled
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Rasterization: Hardware accelerated
Video Decode: Hardware accelerated
Video Encode: Hardware accelerated
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Driver Bug Workarounds
clear_uniforms_before_first_program_use
decode_encode_srgb_for_generatemipmap
disable_accelerated_vpx_decode
disable_delayed_copy_nv12
disable_direct_composition
disable_discard_framebuffer
disable_dxgi_zero_copy_video
disable_framebuffer_cmaa
exit_on_context_lost
force_cube_complete
scalarize_vec_and_mat_constructor_args
texsubimage_faster_than_teximage
Problems Detected
Some drivers are unable to reset the D3D device in the GPU process sandbox
Applied Workarounds: exit_on_context_lost
TexSubImage is faster for full uploads on ANGLE
Applied Workarounds: texsubimage_faster_than_teximage
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
ANGLE crash on glReadPixels from incomplete cube map texture: 518889
Applied Workarounds: force_cube_complete
Framebuffer discarding can hurt performance on non-tilers: 570897
Applied Workarounds: disable_discard_framebuffer
Direct composition flashes black initially on Win <10: 588588
Applied Workarounds: disable_direct_composition
Zero copy DXGI video hangs on shutdown on Win < 8.1: 621190
Applied Workarounds: disable_dxgi_zero_copy_video
Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198
Applied Workarounds: disable_framebuffer_cmaa
Zero-copy NV12 video displays incorrect colors on NVIDIA drivers.: 635319
Applied Workarounds: disable_dxgi_zero_copy_video
Disable KHR_blend_equation_advanced until cc shaders are updated: 661715
Decode and Encode before generateMipmap for srgb format textures on Windows: 634519
Applied Workarounds: decode_encode_srgb_for_generatemipmap
VPx decoding isn't supported well before Windows 10 creators update.: 616318, 667532
Applied Workarounds: disable_accelerated_vpx_decode
Delayed copy NV12 displays incorrect colors on NVIDIA drivers.: 728670
Applied Workarounds: disable_delayed_copy_nv12
Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
Checker-imaging has been disabled via finch trial or the command line.
Disabled Features: checker_imaging
Version Information
Data exported	8/4/2017, 11:24:01 PM
Chrome version	Chrome/61.0.3163.31
Operating system	Windows NT 6.1.7601 SP1
Software rendering list version	13.10
Driver bug list version	10.21
ANGLE commit id	0d2ecb4ea992
2D graphics backend	Skia/61 218b516e7b2248bae53132b97822702dac4c8abc-
Command Line	"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --flag-switches-begin --disable-smooth-scrolling --disable-features=BackgroundVideoTrackOptimization --flag-switches-end
Driver Information
Initialization time	26
In-process GPU	false
Passthrough Command Decoder	false
Supports overlays	false
Sandboxed	false
GPU0	VENDOR = 0x10de, DEVICE= 0x11c0 *ACTIVE*
GPU1	VENDOR = 0x8086, DEVICE= 0x0412
Optimus	false
Optimus	false
AMD switchable	false
Desktop compositing	Aero Glass
Diagonal Monitor Size of \\.\DISPLAY1	23.0"
Driver vendor	NVIDIA
Driver version	22.21.13.8253
Driver date	6-7-2017
Pixel shader version	5.0
Vertex shader version	5.0
Max. MSAA samples	8
Machine model name	
Machine model version	
GL_VENDOR	Google Inc.
GL_RENDERER	ANGLE (NVIDIA GeForce GTX 660 Direct3D11 vs_5_0 ps_5_0)
GL_VERSION	OpenGL ES 3.0 (ANGLE 2.1.0.0d2ecb4ea992)
GL_EXTENSIONS	GL_ANGLE_client_arrays GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_lossy_etc_decode GL_ANGLE_pack_reverse_row_order GL_ANGLE_program_cache_control GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_robust_resource_initialization GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_color_buffer_float_rgb GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_sync_query GL_EXT_blend_minmax GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_frag_depth GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc_srgb GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_norm16 GL_EXT_texture_rg GL_EXT_texture_storage GL_EXT_unpack_subimage GL_KHR_debug GL_NV_EGL_stream_consumer_external GL_NV_fence GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth32 GL_OES_element_index_uint GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object
Disabled Extensions	GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent
Window system binding vendor	Google Inc. (adapter LUID: 000000000000aeb4)
Window system binding version	1.4 (ANGLE 2.1.0.0d2ecb4ea992)
Window system binding extensions	EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_d3d_texture_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_EXT_pixel_format_float EGL_KHR_surfaceless_context EGL_ANGLE_display_texture_share_group EGL_ANGLE_create_context_client_arrays EGL_ANGLE_program_cache_control
Direct rendering	Yes
Reset notification strategy	0x8252
GPU process crash count	0
Compositor Information
Tile Update Mode	One-copy
Partial Raster	Enabled
GpuMemoryBuffers Status
ATC	Software only
ATCIA	Software only
DXT1	Software only
DXT5	Software only
ETC1	Software only
R_8	Software only
R_16	Software only
RG_88	Software only
BGR_565	Software only
RGBA_4444	Software only
RGBX_8888	Software only
RGBA_8888	Software only
BGRX_8888	Software only
BGRA_8888	Software only
RGBA_F16	Software only
YVU_420	Software only
YUV_420_BIPLANAR	Software only
UYVY_422	Software only
Diagnostics
... loading ...
Log Messages
[4512:6960:0804/182624.538:WARNING:angle_platform_impl.cc(41)] : rx::HLSLCompiler::compileToBinary(224): C:\fakepath(69,10-34): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them C:\fakepath(91,10-34): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them
[4512:10324:0804/194404.162:ERROR:gles2_cmd_decoder.cc(17777)] : [.DisplayCompositor-00000000118AA170]GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name
[4512:10324:0804/194404.162:ERROR:gles2_cmd_decoder.cc(17777)] : [.DisplayCompositor-00000000118AA170]GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name
[4512:10324:0804/194404.162:ERROR:gles2_cmd_decoder.cc(9787)] : [.DisplayCompositor-00000000118AA170]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
[4512:10324:0804/194404.163:ERROR:gles2_cmd_decoder.cc(9787)] : [.DisplayCompositor-00000000118AA170]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
[4512:10324:0804/211642.417:ERROR:gles2_cmd_decoder.cc(9781)] : [.Offscreen-For-WebGL-000000000554BCC0]RENDER WARNING: there is no texture bound to the unit 0
[4512:10324:0804/211642.417:ERROR:gles2_cmd_decoder.cc(9781)] : [.Offscreen-For-WebGL-000000000554BCC0]RENDER WARNING: there is no texture bound to the unit 0
[4512:9760:0804/211714.119:WARNING:angle_platform_impl.cc(41)] : rx::HLSLCompiler::compileToBinary(224): C:\fakepath(97,32-88): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them
[4512:9616:0804/211714.129:WARNING:angle_platform_impl.cc(41)] : rx::HLSLCompiler::compileToBinary(224): C:\fakepath(208,32-88): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them C:\fakepath(209,32-88): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them
[4512:12332:0804/211715.614:WARNING:angle_platform_impl.cc(41)] : rx::HLSLCompiler::compileToBinary(224): C:\fakepath(98,32-88): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them
[4512:9616:0804/211715.628:WARNING:angle_platform_impl.cc(41)] : rx::HLSLCompiler::compileToBinary(224): C:\fakepath(256,32-88): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them C:\fakepath(257,32-88): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them
[4512:12332:0804/211716.923:WARNING:angle_platform_impl.cc(41)] : rx::HLSLCompiler::compileToBinary(224): C:\fakepath(129,2-41): warning X4121: gradient-based operations must be moved out of flow control to prevent divergence. Performance may improve by using a non-gradient operation C:\fakepath(120,2-41): warning X4121: gradient-based operations must be moved out of flow control to prevent divergence. Performance may improve by using a non-gradient operation
[4512:10324:0804/221716.815:ERROR:gles2_cmd_decoder.cc(17777)] : [.DisplayCompositor-000000001AA37220]GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name
[4512:10324:0804/221716.815:ERROR:gles2_cmd_decoder.cc(9787)] : [.DisplayCompositor-000000001AA37220]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
GpuProcessHostUIShim: The GPU process exited normally. Everything is okay.

It happens to at least YouTube and Twitch, but on Twitch is worse. I often get lags on YouTube, bug on Twitch it constantly freezes.

To make it more clear, I made a video to showcase the problem (with captions): https://www.youtube.com/watch?v=k3jv-2wjC1k
 
Cc: avayvod@chromium.org johnpallett@chromium.org
Owner: dalecur...@chromium.org
Status: Assigned (was: Unconfirmed)
Thanks for the report, we've enabled this feature by default for MSE now, but it definitely should not be breaking the stream. I'll take a look.
Labels: -Pri-2 M-61 ReleaseBlock-Stable Pri-1
Setting appropriate labels so we either disable or fix this before release.
Seems to be working fine on Linux, so maybe something specific with Windows hardware decoder.  human.peng@ can you try disabling accelerated video decode in chrome://flags and see if that helps you? I'll work on reproducing on Windows now.
Cc: jbau...@chromium.org sande...@chromium.org
Hmm, doesn't repro for me on Windows either. +gpu folk in case the error messages in the log are responsible for these errors.
Did you at least see some delay, lagging, or fast-forwarding effect when switching back? While i can constantly reproduce it on my Win 7 Desktop, it's much better on my Win 10 laptop: still have weird video fast-forwarding or pause problem when switching back, but totally freezing is rare.
The about:gpu messages seem unrelated - they'll happen occasionally even without video at all.
There's some fast-forwarding, but for me it only lasts a ~hundred milliseconds or so which about what we expect. How long would you estimate you see it lagging / fast forwarding for?

Comment 8 Deleted

I sometimes can have fast-forwarding or pause effect lasting for 2 sec+ on my laptop (tested just now). 

Regardless, I will test my desktop (which will freeze) with the flag mentioned before disabled later today and focus on that, since that is the core problem I have.

Also, per comment #1 does it mean there is no way to disable "Optimize background video playback" for MSE video/stream any more? Because even if it's just a few hundred ms, it is still quite annoying if you're switching back and forth frequently, not to mention the fast-forwarding effect is unpleasant (compared to just pause).
2 sec is much higher than expected. Did you test with that twitch stream in your original link on 1080p60? What are the specs on your laptop?

Yes, we turned off the ability to disable this for MSE since test results since experiment showed little to no difference in time to return to a valid frame; 2 seconds is way beyond the expected time to return though.

Fast-forwarding is an artifact of how twitch is serving their stream, but we can definitely do better. I'll put a fix so that it just freezes on the last frame until ready instead of fast-forwarding.
Just did a few more tests. Disabling "Hardware-accelerated video decode" seems to fix it on my desktop. Actually, with this flag disabled, there is virtually no delay of video *at all* when I switch back.

My laptop is with Intel Core i7-7500U Processor + 12GB RAM + 256 SSD (it has a GeForce 940MX too, but it doesn't get used by browsers).


OK after more testing, I'm confident to say "Optimize background video playback" still plays a role despite what you said (it can't be disabled for MSE) at least for Twitch.

Here is some brief results:

"Optimize background video playback" disabled + "Hardware-accelerated video decode" disabled: 

As I mentioned in last comment, it makes that there is no delay or whatnot AT ALL no matter I'm switching from another tab, or from another program.

"Optimize background video playback" disabled + "Hardware-accelerated video decode" enabled:

My original problem. There is no video delay when I switch back from other *tabs*, but if I put the whole Chrome on background for too long time, the video freezes or have long (>2s) pause when I switch back.


"Optimize background video playback" enabled + "Hardware-accelerated video decode" disabled: 

It will have delay ANYTIME I switched back from other *tabs*, even when I just switched there for 1 sec. But, the delay is short (a few hundred ms as you said), and never freezes. And, switching from other program doesn't have any effect (i.e. no delay if the video is in the foreground tab).

"Optimize background video playback" enabled + "Hardware-accelerated video decode" enabled: 

Basically same to the previous one, just slightly worse. Sometimes there is some weird "shaking" problem when recovering the video. Doesn't seem to freeze, either. Again, switching from other program doesn't seem to have effect.
When you were reproducing, did you actually disable "Optimize background video playback"? Because it does make difference (see above) here.

>Did you test with that twitch stream in your original link on 1080p60 

Yes.
Thanks for the tests, the optimize flag will only affect non-twitch/YT playbacks right now; it's disconnected from MSE playbacks like Twitch/YT use.

You might try checking if there are video driver updates for your graphics cards; it seems like there are some issues with the hardware decoding pipeline if the software one is working better.

Comment 15 Deleted

>Thanks for the tests, the optimize flag will only affect non-twitch/YT playbacks right now; it's disconnected from MSE playbacks like Twitch/YT use.

As I mentioned in comment 12, my test shows otherwise:

when the flag is default/enabled (has "optimization"), every time I switch to another tab and switch back, there is a small delay or fast-forwarding to recover the video. 
When the flag is disabled (no "optimization"), there is no such delay at all when switching from another tab.

Also, the resource usage (CPU) supports my observation: 

When "Optimize background video playback" is disabled, switching to another tab will NOT reduce CPU usage (stay at ~20%);
When "Optimize background video playback" is enabled, switching to another tab WILL reduce CPU usage (to ~10%).

So, this flag is NOT disconnected from MSE playbacks like Twitch/YT: it still has effect to it. I also tested with newest canary: 62.0.3178.0 (Official Build) canary (64-bit) (cohort: Clang-64) All the testing is with that channel: https://www.twitch.tv/dota2ti (1080p60), software decoding (hardware video decoding flag disabled).

If you don't believe me, I can record another video.

Before we go any further, we need to reach consensus about this flag. You tell me it won't affect Twitch at all, but it does here.
Video to support my observation: https://www.youtube.com/watch?v=pQBV9o0Je08
Ah, you're right it looks like it was only disconnected from setting the value, but still controls if the feature is enabled or not:

https://cs.chromium.org/chromium/src/media/blink/webmediaplayer_impl.cc?l=131

Sorry for my confusion.
Project Member

Comment 19 by bugdroid1@chromium.org, Aug 9 2017

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

commit a75a7894ee30bee8676c4f2db0fc171c7d5b5948
Author: Dale Curtis <dalecurtis@chromium.org>
Date: Wed Aug 09 20:21:51 2017

Only optimize background video after a timeout.

After some further testing, I concur that it's super annoying for
background tab optimizations to kick in and out if you happen to
be moving between tabs relatively frequently. Say for watching a
live stream, it may take a second or so to resume even though you
just left that tab.

As such, impose a 10s delay before background "disable track"
optimizations. Pause optimizations are left in place since pause
w/o suspend is expected to be very low cost for resume.

Additionally if we add this deferred timeout we eliminate part of
the reason we didn't ship this feature for src=. It's not possible
to trigger track changes fast enough that we will lose av sync.
Unfortunately src= track changes still work by returning the next
keyframe, which may be up to 5s ahead which is too far, so we still
can't enable until http://crbug.com/709302 is fixed.

BUG=678663,752726
TEST=manually verify that bg opts don't occur until after 10s.

Change-Id: I8cc4b81bbc91bd9a1f0777dd137d9c2940325e86
Reviewed-on: https://chromium-review.googlesource.com/607154
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493122}
[modify] https://crrev.com/a75a7894ee30bee8676c4f2db0fc171c7d5b5948/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/a75a7894ee30bee8676c4f2db0fc171c7d5b5948/media/blink/webmediaplayer_impl.h

[Bulk Edit]
URGENT - PTAL.
Your bug is labelled as M61 Stable ReleaseBlock, pls make sure to land the fix and get it merged into the release branch ASAP.

Know that this issue shouldn't block the release?  Remove the ReleaseBlock-Stable label.

Thank you.

Cc: pbomm...@chromium.org
dalecurtis@ can you please merge request of CL from comment#19 to M61(branch: 3163),so that we can pick the change to M61 beta refresh this week.
human.peng@ can you try Chrome Canary and see what you think of the new behavior? You'll need to wait 10s for disable track to kick in now.
[Bulk Edit]
URGENT - PTAL.
Your bug is labelled as Stable ReleaseBlock, pls make sure to land the fix and get it merged into the release branch ASAP. Thank you!

Know that this issue shouldn't block the release?  Remove the ReleaseBlock-Stable label or move to M62.

Project Member

Comment 24 by bugdroid1@chromium.org, Aug 18 2017

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

commit dcbb81a3ed5ff9bff681d3227bbb30e403239eea
Author: Dale Curtis <dalecurtis@chromium.org>
Date: Fri Aug 18 01:06:12 2017

Ensure delayed background optimize calls are actually cancelled.

When delayed background optimization was added, the shown call
did not properly cancel the outstanding disable call since it
didn't call the full background state update function.

BUG=752726
TEST=new unittest

Change-Id: Ic1b7f4a49ebaf3192c6de0fcd67f35414ed70ed8
Reviewed-on: https://chromium-review.googlesource.com/619615
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#495410}
[modify] https://crrev.com/dcbb81a3ed5ff9bff681d3227bbb30e403239eea/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/dcbb81a3ed5ff9bff681d3227bbb30e403239eea/media/blink/webmediaplayer_impl_unittest.cc

[Bulk Edit]
URGENT - PTAL.
M61 Stable promotion is coming soon and your bug is labelled as Stable ReleaseBlock, pls make sure to land the fix and get it merged into the release branch ASAP. 

Know that this issue shouldn't block the release?  Remove the ReleaseBlock-Stable label or move to M62. Thank you!

Note: We will only have 2 beta releases before Stable promotion. Plan is to cut M61 Stable RC on 08/31/17.

Labels: Merge-Request-61
There are a few too many issues here, so let's go ahead and revert df848adb8eb6bf9be13ed82e1b2156b8ae93615a from the M61 branch and try again for M62. Merge-Request-61 to disable this feature for M61.
Project Member

Comment 27 by sheriffbot@chromium.org, Aug 21 2017

Labels: -Merge-Request-61 Merge-Review-61 Hotlist-Merge-Review
This bug requires manual review: M61 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: amineer@(Android), cmasso@(iOS), ketakid@(ChromeOS), govind@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Thank you  dalecurtis@.

Will this be a (df848adb8eb6bf9be13ed82e1b2156b8ae93615a) safe revert from the M61 branch? 
Yes, it just disable the feature again.
Labels: -Merge-Review-61 Merge-Approved-61
Approving merge to M61 branch 3163 based on comment #29. Please merge ASAP. Thank you.
Project Member

Comment 31 by bugdroid1@chromium.org, Aug 21 2017

Labels: -merge-approved-61 merge-merged-3163
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/98a3688d7f731de09493cd37d57b51612dae8f22

commit 98a3688d7f731de09493cd37d57b51612dae8f22
Author: Dale Curtis <dalecurtis@chromium.org>
Date: Mon Aug 21 20:49:18 2017

Revert "Enable background video track optimization for MSE content."

This reverts commit df848adb8eb6bf9be13ed82e1b2156b8ae93615a for
the M61 branch due to bugs.

BUG=752726
TEST=none
TBR=tguilbert

Change-Id: I200d16cdbbe982b2723f066414cfb5f64159fd77
Reviewed-on: https://chromium-review.googlesource.com/624663
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/branch-heads/3163@{#712}
Cr-Branched-From: ff259bab28b35d242e10186cd63af7ed404fae0d-refs/heads/master@{#488528}
[modify] https://crrev.com/98a3688d7f731de09493cd37d57b51612dae8f22/content/renderer/media/media_factory.cc
[modify] https://crrev.com/98a3688d7f731de09493cd37d57b51612dae8f22/media/base/media_switches.cc

Status: Fixed (was: Assigned)
Disabled for M61, but should be fixed now in M62.

@human.peng can you verify the fixed behavior? I've tried it on canary and the experience is much better.
I didn't comment before because it seems to me your fix (Aug 9 one at least) is about adding more time before "Optimize background video playback" kicked in? 

But my original report is about video being totally freezing when switching back, WITHOUT even using "Optimize background video playback" option (also see Comment 12 for a comprehensive test results).

If you think your patch(es) will help in that regard, sure I'm more than happy to do another batch of tests later. 
Only one of the patches delays the feature until the tab is in the background for a while. The rest should improve that experience, so it'd be helpful to see if they resolved your issues.

The issues where the feature is not even enabled are interesting and may need more work, but should be helped by my changes too.
Just did a quick test again with the repro in comment #1 with newest canary (call settings default, except "Optimize background video playback" disabled).

The problem consists: once I switched from outside (other program) the video-playing Chrome, the video starts to lag and eventually stops for a few seconds. Good news is, now it will resume after those long pause (i.e. not totally freeze anymore), but still doesn't look like the intended behavior.

Cc: rbasuvula@chromium.org
Labels: Needs-Feedback
Tested the issue on Windows-7 using chrome latest Beta M61-61.0.3163.59 by following steps mentioned in the original comment. Observed that video lags & stuck and playing with delay.Please find the screen cast for reference.

Steps Followed:
--------------
1.Install chrome and disable "Optimize background video playback" flag in chrome://flags.
2.Navigate to provided URL: https://www.twitch.tv/dota2ti and video played.
3.Switch to other programs and wait for a few minutes.
4.Back to video.

@ dalecurtis: Could you please let me know if i have missed anything and if possible,Please provide the missing steps of the issue which would help us to verify the issue further.

Thanks in Advance!




Thank you!
752726.mp4
13.0 MB View Download
Status: Assigned (was: Fixed)
Thanks will take a closer look at the disabled-bg optimize case and see if we need to do anything for M61.
human.peng: Was this on Windows 7 or Windows 10?

I don't see any issues on Windows 10 with this feature disabled and putting things in the background.
@rbasuvula: Can you retest using Chrome M60 on Windows 7? I'd like to see if this is a regression or not. If it's not we can remove the ReleaseBlock M-61 label. I don't have a Windows 7 test machine so I won't be able to test this for a couple days.
As per above comment, rechecked this issue on chrome stable version# 60.0.3112.113 on Windows 7. Below are the observations

1) Navigated to chrome and disabled flag "Optimize background video playback"
2) Navigate to provided URL: https://www.twitch.tv/dota2ti and observed that Video is not played (a 404 error is displayed in console). Screen shot attached.
3) Hence Navigated to another URL from the same website: https://www.twitch.tv/videos/166172514
4) Switched to other application or tabs and waited for few time (60 to 110 Seconds)
5) Re navigated back to the video

On stable as well we are observing the delay or lag while playing the video. How ever did not observe any freeze. Please do let us know if any other details are required.

Thanks.!
404 Error.png
2.4 MB View Download
Well dota2ti channel is not streaming any more. Please use any of the live channel here: https://www.twitch.tv/directory/all
Labels: -ReleaseBlock-Stable -M-61 M-62
@ranjitkan, can you confirm you are seeing the same issues as the video in c#36? I'm not clear on what you mean by seeing delay and lag but not temporary freezing since those are the same to me :)

In any case it seems like this is not a new issue unfortunately, so we can drop the RBS label. I'm working on getting a Windows 7 machine to dig into this more.

You might try closing the chat window on left hand screen to see if things improve. Since it may be contending for video resources due to the way MSE works.
Cc: liber...@chromium.org
Owner: liber...@chromium.org
liberato@ is looking into the Windows 7 issues. Seems we may have larger h264 decoder issues there.
Status: Started (was: Assigned)
@human.peng: does the video play smoothly while you're watching it, or do you see video frames that seem to be out of order sometimes?  on my win7 laptop, with hw decoding enabled on twitch/dota, i see some of out of order frames.  i.e., what should be smooth motion has some discontinuities in it.

turning off hw decoding seems to fix it.
I don't seem to find obvious frame skipping phenomenon when watching.

According to the “video stats” provided by Twitch, frame skipping does happen from time to time; but since it is 60fps, it is not noticeable here. 
it's likely that my laptop is having an entirely different issue.  dale mentioned that out-of-order timestamps could result in the freezing that you're seeing, which is why i thought that they might be related.

i don't see any out of order frames coming out of the decoder, or later in the pipeline locally.  so, my issue might be related to displaying the wrong image for the right video frame.  i.e., it could be a GL fence issue or something.

yours seems to be higher in the pipeline.  i'll try to repro it more exactly.
i've managed to get it to freeze once or twice.

what i've noticed is that, while it's in the background, the difference between the frame deadline (VideoRendererAlgorithm::Render) and the only queued VideoFrame keeps getting bigger, up to > 1 second.  this happens regardless of whether it freezes when it's brought back to the foreground.

when the video is playing, that doesn't happen.  it stays bounded at 1/10 sec or so.

will keep looking.
on my next attempt, i got it to freeze with more debugging enabled.  the general sequence was:

- VRA::Renderer reports a growing delta between current time and the queued frame.
- At about ~1 second of difference, the decoder quits getting new bitstream buffers via Decode()
- ~six picture buffers are re-used in the VDA after decoding stops.
- VRA continues to report the delta growing in realtime.
- when un-minimized, VideoLayerImpl starts rendering on vsync again, but it has no new frames.

it seems that the 'source' quality stream is required to get either of the weird behaviors that i was seeing locally.  on anything else (e.g. 720p60), the out-of-order frame issue is gone, and i can no longer repro the OP issue.

with "source" quality, the underlying cause of the stalls was that the video decoder couldn't keep up with real-time playback.  when chrome is put into the background, the audio would play perfectly but the (unseen) video would fall further and further behind it.  when chrome is brought back to the foreground, playback would pause / stutter trying to catch up the video to the audio.

however, for this to be the same problem, foreground video / audio playback would have to stall regularly.  the difference is that, in foreground mode, chrome is willing to pause the audio to let the video catch up; the video decoder still can't keep up with real-time.

based on c#46, it sounds like foreground playback is working fine.

so, it seems like i don't have a repro case.
Is this still an issue? It's out of SLO for a P1 bug; which must be closed in 30 days. Please close as fixed or mark as P3.
Labels: -Pri-1 Pri-3

Sign in to add a comment