Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(878)

Issue 714643002: Pause EME player whose external surface is stolen by another player (Closed)

Created:
6 years, 1 month ago by Hugo Holgersson
Modified:
5 years, 11 months ago
CC:
chromium-reviews, avayvod+watch_chromium.org, darin-cc_chromium.org, jam, android-webview-reviews_chromium.org, feature-media-reviews_chromium.org, ycheo (away)
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Pause EME player whose external surface is stolen by another player Background: A surface is "external" when it is composited externally. As for now, we cannot have two external surfaces at once because risk of Z-fighting. This is why we abort the first EME video when a second EME video is started. Problem: User sees a black box but no "Play"-button on aborted video. Solution: Pause aborted player (but not if it's going to fullscreen). Example: Say player A is currently playing, player A's external surface will be released in these three cases: 1. Player B starts. 2. Player B enters fullscreen. 3. Player A enters fullscreen. This commit pauses player A in case 1, 2 but not in case 3. BUG=431318, 431705 TEST=Manual, 1. Open a webpage with two EME <video>s next to each other. 2. Start video A. 3. Start video B. 4. Notice: video A stops (its "Play"-button appears). TEST=Manual, 1. Open a webpage with two EME <video>s next to each other. 2. Start video A. 3. Click the fullscreen icon of video B. 4. Notice: video A stops (it will not Z-fight, i.e not seen on top). Committed: https://crrev.com/27e091ab97b6bd36c3a19c263d27d440bb71a9e0 Cr-Commit-Position: refs/heads/master@{#309918}

Patch Set 1 #

Total comments: 2

Patch Set 2 : Clarified commit message #

Patch Set 3 : player->Release() instead of player->Pause() #

Total comments: 1

Patch Set 4 : No misuse of fullscreen_player_id, introduce ReleasePlayerOfExternalVideoSurfaceIfNeeded() #

Patch Set 5 : Reuse Java_ExternalVideoSurfaceContainer_destroy() and OnMediaInterrupted() #

Total comments: 5

Patch Set 6 : Remove ReleaseCurrentExternalVideoSurface() #

Total comments: 5

Patch Set 7 : Add native version of INVALID_PLAYER_ID #

Total comments: 2

Patch Set 8 : Add Chromecast and remove unneeded JNI #

Total comments: 4

Patch Set 9 : Add extra assert and explicit initialization #

Patch Set 10 : Rebase #

Messages

Total messages: 34 (9 generated)
xhwang
+qinmin
6 years, 1 month ago (2014-11-10 17:05:13 UTC) #2
qinmin
https://codereview.chromium.org/714643002/diff/1/content/browser/media/android/browser_media_player_manager.cc File content/browser/media/android/browser_media_player_manager.cc (right): https://codereview.chromium.org/714643002/diff/1/content/browser/media/android/browser_media_player_manager.cc#newcode405 content/browser/media/android/browser_media_player_manager.cc:405: fullscreen_player_id_ = player_id; this logic is bad, we setting ...
6 years, 1 month ago (2014-11-10 18:37:24 UTC) #3
Hugo Holgersson
https://chromiumcodereview.appspot.com/714643002/diff/1/content/browser/media/android/browser_media_player_manager.cc File content/browser/media/android/browser_media_player_manager.cc (right): https://chromiumcodereview.appspot.com/714643002/diff/1/content/browser/media/android/browser_media_player_manager.cc#newcode405 content/browser/media/android/browser_media_player_manager.cc:405: fullscreen_player_id_ = player_id; On 2014/11/10 18:37:24, qinmin wrote: > ...
6 years, 1 month ago (2014-11-10 22:22:18 UTC) #4
Hugo Holgersson
>for the other change, we'd better do release >rather than simply pause PTAL I now ...
6 years, 1 month ago (2014-11-20 12:48:44 UTC) #5
qinmin
https://codereview.chromium.org/714643002/diff/40001/content/browser/media/android/browser_media_player_manager.cc File content/browser/media/android/browser_media_player_manager.cc (right): https://codereview.chromium.org/714643002/diff/40001/content/browser/media/android/browser_media_player_manager.cc#newcode404 content/browser/media/android/browser_media_player_manager.cc:404: fullscreen_player_id_ = player_id; As I mentioned earlier, using fullscreen_player_id ...
6 years, 1 month ago (2014-11-21 00:23:50 UTC) #6
Hugo Holgersson
> Since there can be at most one player_id associated with > external_video_surface_container, can't we ...
6 years ago (2014-12-01 15:56:18 UTC) #7
qinmin
lgtm
6 years ago (2014-12-04 19:31:09 UTC) #9
boliu
+ycheo fyi Note just adding a reviewer or uploading a new patch set does not ...
6 years ago (2014-12-04 23:33:26 UTC) #10
boliu
Super duper awesome CL description btw :) I'm gonna start linking to this for how ...
6 years ago (2014-12-04 23:35:59 UTC) #11
Hugo Holgersson
https://codereview.chromium.org/714643002/diff/80001/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java File android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java (right): https://codereview.chromium.org/714643002/diff/80001/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java#newcode134 android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java:134: return mPlayerId; On 2014/12/04 23:33:26, boliu wrote: > Is ...
6 years ago (2014-12-08 16:41:08 UTC) #12
boliu
https://codereview.chromium.org/714643002/diff/80001/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java File android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java (right): https://codereview.chromium.org/714643002/diff/80001/android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java#newcode134 android_webview/java/src/org/chromium/android_webview/ExternalVideoSurfaceContainer.java:134: return mPlayerId; On 2014/12/08 16:41:08, Hugo Holgersson wrote: > ...
6 years ago (2014-12-08 17:51:47 UTC) #13
Hugo Holgersson
https://codereview.chromium.org/714643002/diff/100001/content/browser/media/android/browser_media_player_manager.cc File content/browser/media/android/browser_media_player_manager.cc (right): https://codereview.chromium.org/714643002/diff/100001/content/browser/media/android/browser_media_player_manager.cc#newcode382 content/browser/media/android/browser_media_player_manager.cc:382: external_video_surface_container_->ReleaseExternalVideoSurface(player_id); > Shouldn't this be the player id of ...
6 years ago (2014-12-09 15:35:28 UTC) #14
boliu
android_webview % last comment Min, you probably want to scan the content change although I ...
6 years ago (2014-12-09 18:15:18 UTC) #15
boliu
err, meant to say android_webview lgtm % last comment
6 years ago (2014-12-09 18:15:39 UTC) #16
Hugo Holgersson
> We basically never write manual jni code in chromium. Done. I removed the JNI. ...
6 years ago (2014-12-10 09:51:51 UTC) #18
gunsch
chromecast/ rs lgtm
6 years ago (2014-12-10 16:45:52 UTC) #19
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/714643002/140001
6 years ago (2014-12-22 09:47:51 UTC) #21
commit-bot: I haz the power
Try jobs failed on following builders: chromium_presubmit on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presubmit/builds/31949)
6 years ago (2014-12-22 09:53:51 UTC) #23
Hugo Holgersson
@mkosiba, could you look at content/public/browser/android/external_video_surface_container.h ? chromium_presubmit reminded me that an OWNER never lgtm'ed ...
6 years ago (2014-12-22 10:15:05 UTC) #25
Hugo Holgersson
I imagine mkosiba is out of office. @tedchoc, would you mind reviewing content/public/browser/android ?
5 years, 11 months ago (2015-01-05 11:44:35 UTC) #27
mkosiba (inactive)
On 2014/12/22 10:15:05, Hugo Holgersson wrote: > @mkosiba, could you look at > content/public/browser/android/external_video_surface_container.h ? ...
5 years, 11 months ago (2015-01-05 14:58:24 UTC) #28
Hugo Holgersson
Thanks! https://codereview.chromium.org/714643002/diff/140001/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/ExternalVideoSurfaceContainer.java File chromecast/browser/android/apk/src/org/chromium/chromecast/shell/ExternalVideoSurfaceContainer.java (right): https://codereview.chromium.org/714643002/diff/140001/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/ExternalVideoSurfaceContainer.java#newcode129 chromecast/browser/android/apk/src/org/chromium/chromecast/shell/ExternalVideoSurfaceContainer.java:129: mPlayerId = playerId; On 2015/01/05 14:58:23, mkosiba wrote: ...
5 years, 11 months ago (2015-01-05 16:02:24 UTC) #30
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/714643002/200001
5 years, 11 months ago (2015-01-05 17:04:09 UTC) #32
commit-bot: I haz the power
Committed patchset #10 (id:200001)
5 years, 11 months ago (2015-01-05 17:52:57 UTC) #33
commit-bot: I haz the power
5 years, 11 months ago (2015-01-05 17:53:37 UTC) #34
Message was sent while issue was closed.
Patchset 10 (id:??) landed as
https://crrev.com/27e091ab97b6bd36c3a19c263d27d440bb71a9e0
Cr-Commit-Position: refs/heads/master@{#309918}

Powered by Google App Engine
This is Rietveld 408576698