mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1060704
- Save MP4 init segment for later; r=kinetik
This commit is contained in:
parent
d8db640996
commit
521d1bcd79
@ -197,6 +197,16 @@ public:
|
||||
byteRanges.AppendElement(MediaByteRange(0, aLength));
|
||||
parser.RebuildFragmentedIndex(byteRanges);
|
||||
|
||||
if (IsInitSegmentPresent(aData, aLength)) {
|
||||
const MediaByteRange& range = parser.mInitRange;
|
||||
MSE_DEBUG("MP4ContainerParser(%p)::ParseStartAndEndTimestamps: Stashed init of %u bytes.",
|
||||
this, range.mEnd - range.mStart);
|
||||
|
||||
mInitData.ReplaceElementsAt(0, mInitData.Length(),
|
||||
aData + range.mStart,
|
||||
range.mEnd - range.mStart);
|
||||
}
|
||||
|
||||
// Persist the timescale for when it is absent in later chunks
|
||||
mTimescale = parser.mMdhd.mTimescale;
|
||||
|
||||
@ -208,6 +218,8 @@ public:
|
||||
}
|
||||
aStart = static_cast<double>(compositionRange.start) / USECS_PER_S;
|
||||
aEnd = static_cast<double>(compositionRange.end) / USECS_PER_S;
|
||||
MSE_DEBUG("MP4ContainerParser(%p)::ParseStartAndEndTimestamps: [%f, %f]",
|
||||
this, aStart, aEnd);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@ MoofParser::RebuildFragmentedIndex(const nsTArray<MediaByteRange>& aByteRanges)
|
||||
Box box(&context, mOffset);
|
||||
for (; box.IsAvailable(); box = box.Next()) {
|
||||
if (box.IsType("moov")) {
|
||||
mInitRange = MediaByteRange(0, box.Range().mEnd);
|
||||
ParseMoov(box);
|
||||
} else if (box.IsType("moof")) {
|
||||
Moof moof(box, mTrex, mMdhd);
|
||||
|
@ -138,6 +138,7 @@ public:
|
||||
void ParseMdia(Box& aBox, Tkhd& aTkhd);
|
||||
void ParseMvex(Box& aBox);
|
||||
|
||||
mozilla::MediaByteRange mInitRange;
|
||||
nsRefPtr<Stream> mSource;
|
||||
uint64_t mOffset;
|
||||
nsTArray<uint64_t> mMoofOffsets;
|
||||
|
Loading…
Reference in New Issue
Block a user