Bug 1319035 - handle fast seek without any seeked media sample; r?jwwang
MozReview-Commit-ID: DdUmM5hh3Qy
--- a/dom/media/AccurateSeekTask.cpp
+++ b/dom/media/AccurateSeekTask.cpp
@@ -90,17 +90,22 @@ AccurateSeekTask::CalculateNewCurrentTim
// the real decoded samples' start time.
if (mTarget.IsAccurate()) {
return seekTime;
}
// For the fast seek, we update the newCurrentTime with the decoded audio and
// video samples, set it to be the one which is closet to the seekTime.
if (mTarget.IsFast()) {
- MOZ_ASSERT(mSeekedAudioData || mSeekedVideoData);
+
+ // A situation that both audio and video approaches the end.
+ if (!mSeekedAudioData && !mSeekedVideoData) {
+ return seekTime;
+ }
+
const int64_t audioStart = mSeekedAudioData ? mSeekedAudioData->mTime : INT64_MAX;
const int64_t videoStart = mSeekedVideoData ? mSeekedVideoData->mTime : INT64_MAX;
const int64_t audioGap = std::abs(audioStart - seekTime);
const int64_t videoGap = std::abs(videoStart - seekTime);
return audioGap <= videoGap ? audioStart : videoStart;
}
MOZ_ASSERT(false, "AccurateSeekTask doesn't handle other seek types.");