Index: media/remoting/remoting_renderer_controller.cc |
diff --git a/media/remoting/remoting_renderer_controller.cc b/media/remoting/remoting_renderer_controller.cc |
index 40506d8251839278c751f63123a2e2ee45a1cd8f..c58c17a5b3678cfab28ca256cd09a9e49c36f9a8 100644 |
--- a/media/remoting/remoting_renderer_controller.cc |
+++ b/media/remoting/remoting_renderer_controller.cc |
@@ -204,6 +204,19 @@ bool RemotingRendererController::IsAudioCodecSupported() { |
} |
} |
+void RemotingRendererController::OnPlaying() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ |
+ is_paused_ = false; |
+ UpdateAndMaybeSwitch(); |
+} |
+ |
+void RemotingRendererController::OnPaused() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ |
+ is_paused_ = true; |
+} |
+ |
bool RemotingRendererController::ShouldBeRemoting() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
@@ -265,6 +278,13 @@ void RemotingRendererController::UpdateAndMaybeSwitch() { |
if (remote_rendering_started_ == should_be_remoting) |
return; |
+ // Only switch to remoting when media is playing. Since the renderer is |
+ // created when video starts loading/playing, receiver will display a black |
+ // screen before video starts playing if switching to remoting when paused. |
+ // Keep mirroring the video in this case is good for the user experience. |
+ if (should_be_remoting && is_paused_) |
+ return; |
+ |
// Switch between local renderer and remoting renderer. |
remote_rendering_started_ = should_be_remoting; |