Bug 1098126 - MoofParser fixes and disable for EME; r=mattwoodrow

This commit is contained in:
Anthony Jones 2014-12-05 14:01:44 -08:00
parent 346dfff41b
commit e67eb4ca12
3 changed files with 7 additions and 6 deletions

View File

@ -688,7 +688,9 @@ MP4Reader::ResetDecode()
{
MOZ_ASSERT(GetTaskQueue()->IsCurrentThreadIn());
Flush(kVideo);
mDemuxer->SeekVideo(0);
Flush(kAudio);
mDemuxer->SeekAudio(0);
return MediaDecoderReader::ResetDecode();
}

View File

@ -4,6 +4,7 @@
#include "mp4_demuxer/MoofParser.h"
#include "mp4_demuxer/Box.h"
#include <limits>
namespace mp4_demuxer
{
@ -72,10 +73,8 @@ bool
MoofParser::BlockingReadNextMoof()
{
nsTArray<MediaByteRange> byteRanges;
int64_t size;
bool hasSize = mSource->Length(&size);
byteRanges.AppendElement(
MediaByteRange(0,hasSize ? size : std::numeric_limits<int64_t>::max()));
MediaByteRange(0, std::numeric_limits<int64_t>::max()));
mp4_demuxer::BlockingStream* stream = new BlockingStream(mSource);
BoxContext context(stream, byteRanges);
@ -334,7 +333,7 @@ Moof::ParseTrun(Box& aBox, Tfhd& aTfhd, Tfdt& aTfdt, Mdhd& aMdhd, Edts& aEdts)
sample.mByteRange = MediaByteRange(offset, offset + sampleSize);
offset += sampleSize;
sample.mDecodeTime = decodeTime;
sample.mDecodeTime = aMdhd.ToMicroseconds(decodeTime);
sample.mCompositionRange = Interval<Microseconds>(
aMdhd.ToMicroseconds((int64_t)decodeTime + ctsOffset - aEdts.mMediaStart),
aMdhd.ToMicroseconds((int64_t)decodeTime + ctsOffset + sampleDuration - aEdts.mMediaStart));

View File

@ -111,7 +111,7 @@ MP4Demuxer::Init()
nsRefPtr<Index> index = new Index(mPrivate->mAudio->exportIndex(),
mSource, mAudioConfig.mTrackId);
mPrivate->mIndexes.AppendElement(index);
if (index->IsFragmented()) {
if (index->IsFragmented() && !mAudioConfig.crypto.valid) {
mPrivate->mAudioIterator = new SampleIterator(index);
}
} else if (!mPrivate->mVideo.get() && !strncmp(mimeType, "video/", 6)) {
@ -124,7 +124,7 @@ MP4Demuxer::Init()
nsRefPtr<Index> index = new Index(mPrivate->mVideo->exportIndex(),
mSource, mVideoConfig.mTrackId);
mPrivate->mIndexes.AppendElement(index);
if (index->IsFragmented()) {
if (index->IsFragmented() && !mVideoConfig.crypto.valid) {
mPrivate->mVideoIterator = new SampleIterator(index);
}
}