Bug 1269408: P7. Start skip to next keyframe logic when resume point is behind current time. r?gerald draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Fri, 06 May 2016 15:54:49 +1000
changeset 364204 d839ee5f7e64423eaef5236a1b9a0cda5a4201d0
parent 364203 e0590174f7587c9a1ffbbe4e7a065a5af2706271
child 364205 b5073a84782ace986e1e9cc58f866f21b4207f5e
push id17383
push userbmo:jyavenard@mozilla.com
push dateFri, 06 May 2016 06:16:15 +0000
reviewersgerald
bugs1269408
milestone49.0a1
Bug 1269408: P7. Start skip to next keyframe logic when resume point is behind current time. r?gerald There is no point decoding up to the internal seek time if it's already behind the current playback time. MozReview-Commit-ID: ErPrjEPFCOH
dom/media/MediaFormatReader.cpp
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -484,17 +484,20 @@ bool
 MediaFormatReader::ShouldSkip(bool aSkipToNextKeyframe, media::TimeUnit aTimeThreshold)
 {
   MOZ_ASSERT(HasVideo());
   media::TimeUnit nextKeyframe;
   nsresult rv = mVideo.mTrackDemuxer->GetNextRandomAccessPoint(&nextKeyframe);
   if (NS_FAILED(rv)) {
     return aSkipToNextKeyframe;
   }
-  return nextKeyframe < aTimeThreshold && nextKeyframe.ToMicroseconds() >= 0;
+  return (nextKeyframe < aTimeThreshold ||
+          (mVideo.mTimeThreshold &&
+           mVideo.mTimeThreshold.ref().mTime < aTimeThreshold)) &&
+         nextKeyframe.ToMicroseconds() >= 0;
 }
 
 RefPtr<MediaDecoderReader::MediaDataPromise>
 MediaFormatReader::RequestVideoData(bool aSkipToNextKeyframe,
                                     int64_t aTimeThreshold)
 {
   MOZ_ASSERT(OnTaskQueue());
   MOZ_DIAGNOSTIC_ASSERT(mSeekPromise.IsEmpty(), "No sample requests allowed while seeking");