Bug 1274626 part 6 - make MDSM change video decoder dynamically; r=jwwang draft
authorKaku Kuo <tkuo@mozilla.com>
Mon, 25 Jul 2016 17:08:28 +0800
changeset 396021 bb308422cb06039fdf8b4b971fc4a063c3aeee35
parent 396020 43d69e89e24fdbdf62a89a7a1f4511066f6fee3c
child 527104 855c20614a27fc19dbb2857fd91cba4aebf330e9
push id24896
push usertkuo@mozilla.com
push dateWed, 03 Aug 2016 07:58:00 +0000
reviewersjwwang
bugs1274626
milestone51.0a1
Bug 1274626 part 6 - make MDSM change video decoder dynamically; r=jwwang MozReview-Commit-ID: LK0gt8HhnVn
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1357,16 +1357,17 @@ void MediaDecoderStateMachine::Visibilit
 
   // Resuming from suspended decoding
 
   // If suspend timer exists, destroy it.
   mVideoDecodeSuspendTimer.Reset();
 
   if (mVideoDecodeSuspended) {
     mVideoDecodeSuspended = false;
+    mReader->SetVideoBlankDecode(false);
 
     if (mIsReaderSuspended) {
       return;
     }
 
     // If an existing seek is in flight don't bother creating a new
     // one to catch up.
     if (mSeekTask || mQueuedSeek.Exists()) {
@@ -2635,17 +2636,17 @@ bool MediaDecoderStateMachine::IsStateMa
 {
   MOZ_ASSERT(OnTaskQueue());
   return mDispatchedStateMachine || mDelayedScheduler.IsScheduled();
 }
 
 bool MediaDecoderStateMachine::IsVideoDecodeSuspended() const
 {
   MOZ_ASSERT(OnTaskQueue());
-  return mVideoDecodeSuspended || mIsReaderSuspended;
+  return mIsReaderSuspended;
 }
 
 void
 MediaDecoderStateMachine::LogicalPlaybackRateChanged()
 {
   MOZ_ASSERT(OnTaskQueue());
 
   if (mLogicalPlaybackRate == 0) {
@@ -2927,16 +2928,17 @@ MediaDecoderStateMachine::VideoRequestSt
 }
 
 void
 MediaDecoderStateMachine::OnSuspendTimerResolved()
 {
   DECODER_LOG("OnSuspendTimerResolved");
   mVideoDecodeSuspendTimer.CompleteRequest();
   mVideoDecodeSuspended = true;
+  mReader->SetVideoBlankDecode(true);
 }
 
 void
 MediaDecoderStateMachine::OnSuspendTimerRejected()
 {
   DECODER_LOG("OnSuspendTimerRejected");
   MOZ_ASSERT(OnTaskQueue());
   MOZ_ASSERT(!mVideoDecodeSuspended);