Bug 1359058: P2. Rely on container flags when seeking in plain MP4. r=gerald
This reverts part of
bug 1300296. In the worse case we'll get a decoding error. But we're only trading a bad behaviour for another.
MozReview-Commit-ID: H0gF3FqZsU6
--- a/dom/media/fmp4/MP4Demuxer.cpp
+++ b/dom/media/fmp4/MP4Demuxer.cpp
@@ -410,32 +410,20 @@ RefPtr<MP4TrackDemuxer::SeekPromise>
MP4TrackDemuxer::Seek(const media::TimeUnit& aTime)
{
auto seekTime = aTime;
mQueuedSample = nullptr;
mIterator->Seek(seekTime.ToMicroseconds());
// Check what time we actually seeked to.
- RefPtr<MediaRawData> sample;
- do {
- sample = GetNextSample();
- if (!sample) {
- return SeekPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_END_OF_STREAM,
- __func__);
- }
- if (!sample->Size()) {
- // This sample can't be decoded, continue searching.
- continue;
- }
- if (sample->mKeyframe) {
- mQueuedSample = sample;
- seekTime = mQueuedSample->mTime;
- }
- } while (!mQueuedSample);
+ mQueuedSample = GetNextSample();
+ if (mQueuedSample) {
+ seekTime = mQueuedSample->mTime;
+ }
SetNextKeyFrameTime();
return SeekPromise::CreateAndResolve(seekTime, __func__);
}
already_AddRefed<MediaRawData>
MP4TrackDemuxer::GetNextSample()