mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-30 00:01:50 +00:00
Bug 1098126
- MoofParser fixes and disable for EME; r=mattwoodrow
This commit is contained in:
parent
346dfff41b
commit
e67eb4ca12
@ -688,7 +688,9 @@ MP4Reader::ResetDecode()
|
||||
{
|
||||
MOZ_ASSERT(GetTaskQueue()->IsCurrentThreadIn());
|
||||
Flush(kVideo);
|
||||
mDemuxer->SeekVideo(0);
|
||||
Flush(kAudio);
|
||||
mDemuxer->SeekAudio(0);
|
||||
return MediaDecoderReader::ResetDecode();
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user