Bug 1110608 - Add CENC support to MoofParser; r=edwin

This commit is contained in:
Anthony Jones 2014-12-15 17:43:59 +13:00
parent 588e681cfe
commit 0b7ceea197
3 changed files with 11 additions and 12 deletions

View File

@ -126,6 +126,8 @@ MP4Sample* SampleIterator::GetNext()
sample->crypto.plain_sizes.AppendElement(reader.ReadU16());
sample->crypto.encrypted_sizes.AppendElement(reader.ReadU32());
}
reader.ReadArray(sample->crypto.iv, 16);
sample->crypto.iv_size = 16;
}
}

View File

@ -247,18 +247,16 @@ Moof::ParseTraf(Box& aBox, Trex& aTrex, Mdhd& aMdhd, Edts& aEdts)
for (Box box = aBox.FirstChild(); box.IsAvailable(); box = box.Next()) {
if (box.IsType("tfhd")) {
tfhd = Tfhd(box, aTrex);
} else if (box.IsType("tfdt")) {
if (!aTrex.mTrackId || tfhd.mTrackId == aTrex.mTrackId) {
} else if (!aTrex.mTrackId || tfhd.mTrackId == aTrex.mTrackId) {
if (box.IsType("tfdt")) {
tfdt = Tfdt(box);
}
} else if (box.IsType("trun")) {
if (!aTrex.mTrackId || tfhd.mTrackId == aTrex.mTrackId) {
} else if (box.IsType("trun")) {
ParseTrun(box, tfhd, tfdt, aMdhd, aEdts);
} else if (box.IsType("saiz")) {
mSaizs.AppendElement(Saiz(box));
} else if (box.IsType("saio")) {
mSaios.AppendElement(Saio(box));
}
} else if (box.IsType("saiz")) {
mSaizs.AppendElement(Saiz(box));
} else if (box.IsType("saio")) {
mSaios.AppendElement(Saio(box));
}
}
}

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() && !mAudioConfig.crypto.valid) {
if (index->IsFragmented()) {
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() && !mVideoConfig.crypto.valid) {
if (index->IsFragmented()) {
mPrivate->mVideoIterator = new SampleIterator(index);
}
}
@ -219,7 +219,6 @@ MP4Demuxer::DemuxVideoSample()
sample->prefix_data = mVideoConfig.annex_b;
if (sample->crypto.valid) {
sample->crypto.mode = mVideoConfig.crypto.mode;
sample->crypto.iv_size = mVideoConfig.crypto.iv_size;
sample->crypto.key.AppendElements(mVideoConfig.crypto.key);
}
}