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

Issue 781010 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 1
Type: Bug



Sign in to add a comment

Track changes may never resume if a client does not provide data at the resume point.

Project Member Reported by dalecur...@chromium.org, Nov 2 2017

Issue description

Can be seen by putting http://twitch.tv/ in the background, waiting for disable track to kick in (~10 seconds later). Letting this sit for some time and then returning to the tab. Sometimes the video will be frozen indefinitely; this does not always occur.

This shows up to users as a result of disabling background video tracks which launched in M62, but seems to be exacerbated by some unknown change in M63.
 
M63 Stable promotion is coming soon and your bug is labelled as Stable ReleaseBlock, pls make sure to land the fix and request a merge to M63 ASAP. Thank you.
Project Member

Comment 2 by bugdroid1@chromium.org, Nov 7 2017

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

commit 3defa5495fc19bb5115286876dc94e0887874cd2
Author: Dale Curtis <dalecurtis@chromium.org>
Date: Tue Nov 07 00:52:32 2017

Fix hung streams if a track change never reaches have_enough.

During a track change it's possible that a renderer will never
reach the have_enough state again. I.e., with MSE a client may
want to seek to a later location. The current code means the
renderer will get stuck forever waiting for data that never
comes.

Instead Flush() calls from the Pipeline should always take
precedence and cancel any track changes in progress. Upstream
of the renderer the demuxer has already had the track enabled,
so just letting the normal Flush() process occur is sufficient
to restart the track.

BUG= 781010 
TEST=updated unittest

Change-Id: I5c005e728d9c1babf2a95c2e603a75f7976ec16d
Reviewed-on: https://chromium-review.googlesource.com/752048
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Sergey Volk <servolk@chromium.org>
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#514324}
[modify] https://crrev.com/3defa5495fc19bb5115286876dc94e0887874cd2/media/renderers/renderer_impl.cc
[modify] https://crrev.com/3defa5495fc19bb5115286876dc94e0887874cd2/media/renderers/renderer_impl.h
[modify] https://crrev.com/3defa5495fc19bb5115286876dc94e0887874cd2/media/renderers/renderer_impl_unittest.cc

Labels: Merge-Request-63
Looks good on canary and user confirms fix.
Project Member

Comment 4 by sheriffbot@chromium.org, Nov 8 2017

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

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: -Merge-Review-63 Merge-Approved-63
Approving merge to M63 branch 3239 based on comment #3 and per offline chat with  dalecurtis@. 
Project Member

Comment 6 by bugdroid1@chromium.org, Nov 8 2017

Labels: -merge-approved-63 merge-merged-3239
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3eac11068c80b99e2f5304ae40d5e8e4ce65d1ea

commit 3eac11068c80b99e2f5304ae40d5e8e4ce65d1ea
Author: Dale Curtis <dalecurtis@chromium.org>
Date: Wed Nov 08 23:50:48 2017

Merge M63: "Fix hung streams if a track change never reaches have_enough."

During a track change it's possible that a renderer will never
reach the have_enough state again. I.e., with MSE a client may
want to seek to a later location. The current code means the
renderer will get stuck forever waiting for data that never
comes.

Instead Flush() calls from the Pipeline should always take
precedence and cancel any track changes in progress. Upstream
of the renderer the demuxer has already had the track enabled,
so just letting the normal Flush() process occur is sufficient
to restart the track.

BUG= 781010 
TEST=updated unittest
TBR=dalecurtis@chromium.org, xhwang

(cherry picked from commit 3defa5495fc19bb5115286876dc94e0887874cd2)

Change-Id: I5c005e728d9c1babf2a95c2e603a75f7976ec16d
Reviewed-on: https://chromium-review.googlesource.com/752048
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Sergey Volk <servolk@chromium.org>
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#514324}
Reviewed-on: https://chromium-review.googlesource.com/758967
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/branch-heads/3239@{#425}
Cr-Branched-From: adb61db19020ed8ecee5e91b1a0ea4c924ae2988-refs/heads/master@{#508578}
[modify] https://crrev.com/3eac11068c80b99e2f5304ae40d5e8e4ce65d1ea/media/renderers/renderer_impl.cc
[modify] https://crrev.com/3eac11068c80b99e2f5304ae40d5e8e4ce65d1ea/media/renderers/renderer_impl.h
[modify] https://crrev.com/3eac11068c80b99e2f5304ae40d5e8e4ce65d1ea/media/renderers/renderer_impl_unittest.cc

Status: Fixed (was: Started)

Sign in to add a comment