Bug 1330254. Part 3 - remove some checks from NeedToSkipToNextKeyframe(). draft
authorJW Wang <jwwang@mozilla.com>
Mon, 09 Jan 2017 22:17:21 +0800
changeset 459493 a67c83e171f2c88b23c3ff694ea45318893bcb62
parent 459492 f58e436a5e59265a49a747881670c37881866e9f
child 459494 38f1ee8f5349f7b546c5529d3511b8cc763c8907
push id41235
push userjwwang@mozilla.com
push dateThu, 12 Jan 2017 02:06:10 +0000
bugs1330254
milestone53.0a1
Bug 1330254. Part 3 - remove some checks from NeedToSkipToNextKeyframe(). 1. we assert mSentFirstFrameLoadedEvent in DecodingState::Enter() 2. NeedToSkipToNextKeyframe() is called by EnsureVideoDecodeTaskQueued() when IsVideoDecoding() is true. MozReview-Commit-ID: O6rkCBVmNu
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -2181,32 +2181,23 @@ DecodingState::EnsureVideoDecodeTaskQueu
   mMaster->RequestVideoData(NeedToSkipToNextKeyframe(),
                             media::TimeUnit::FromMicroseconds(mMaster->GetMediaTime()));
 }
 
 bool
 MediaDecoderStateMachine::
 DecodingState::NeedToSkipToNextKeyframe()
 {
-  // Don't skip when we're still decoding first frames.
-  if (!mMaster->mSentFirstFrameLoadedEvent) {
-    return false;
-  }
-
   // Since GetClock() can only be called after starting MediaSink, we return
   // false quickly if it is not started because we won't fall behind playback
   // when not consuming media data.
   if (!mMaster->mMediaSink->IsStarted()) {
     return false;
   }
 
-  if (!mMaster->IsVideoDecoding()) {
-    return false;
-  }
-
   // Don't skip frame for video-only decoded stream because the clock time of
   // the stream relies on the video frame.
   if (mMaster->mAudioCaptured && !mMaster->HasAudio()) {
     return false;
   }
 
   // We'll skip the video decode to the next keyframe if we're low on
   // audio, or if we're low on video, provided we're not running low on