Bug 1363668: P4. Don't attempt to skip to next keyframe if there are none. r?jwwang
Demuxers don't typically return an error when they don't have a future keyframe, they return infinity.
MozReview-Commit-ID: L3Jj8h6zb1f
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -2369,17 +2369,18 @@ MediaFormatReader::Update(TrackType aTra
decoder.mFirstFrameTime.ref());
InternalSeek(aTrack, InternalSeekTarget(seekInterval, false));
return;
}
TimeUnit nextKeyframe;
if (aTrack == TrackType::kVideoTrack &&
NS_SUCCEEDED(
- decoder.mTrackDemuxer->GetNextRandomAccessPoint(&nextKeyframe))) {
+ decoder.mTrackDemuxer->GetNextRandomAccessPoint(&nextKeyframe)) &&
+ !nextKeyframe.IsInfinite()) {
SkipVideoDemuxToNextKeyFrame(
decoder.mLastDecodedSampleTime.refOr(TimeInterval()).Length());
} else if (aTrack == TrackType::kAudioTrack) {
decoder.Flush();
} else {
// We can't recover from this error.
NotifyError(aTrack, NS_ERROR_DOM_MEDIA_FATAL_ERR);
}