diff --git a/dom/media/mediasource/ContainerParser.cpp b/dom/media/mediasource/ContainerParser.cpp index afb3f8c0e2..98e7f89751 100644 --- a/dom/media/mediasource/ContainerParser.cpp +++ b/dom/media/mediasource/ContainerParser.cpp @@ -98,7 +98,13 @@ ContainerParser::InitData() MediaByteRange ContainerParser::MediaSegmentRange() { - return mCompleteByteRange; + return mCompleteMediaSegmentRange; +} + +MediaByteRange +ContainerParser::InitSegmentRange() +{ + return mCompleteInitSegmentRange; } class WebMContainerParser : public ContainerParser { @@ -209,6 +215,7 @@ public: // Super unlikely OOM return false; } + mCompleteInitSegmentRange = MediaByteRange(0, mParser.mInitEndOffset); char* buffer = reinterpret_cast(mInitData->Elements()); mResource->ReadFromCache(buffer, 0, mParser.mInitEndOffset); MSE_DEBUG(WebMContainerParser, "Stashed init of %u bytes.", @@ -337,6 +344,7 @@ public: if (initSegment || !HasCompleteInitData()) { MediaByteRange& range = mParser->mInitRange; if (range.Length()) { + mCompleteInitSegmentRange = range; if (!mInitData->SetLength(range.Length())) { // Super unlikely OOM return false; @@ -354,7 +362,7 @@ public: mp4_demuxer::Interval compositionRange = mParser->GetCompositionRange(byteRanges); - mCompleteByteRange = mParser->FirstCompleteMediaSegment(); + mCompleteMediaSegmentRange = mParser->FirstCompleteMediaSegment(); mResource->EvictData(mParser->mOffset, mParser->mOffset); if (compositionRange.IsNull()) { diff --git a/dom/media/mediasource/ContainerParser.h b/dom/media/mediasource/ContainerParser.h index 12c008828e..868f7dd0b8 100644 --- a/dom/media/mediasource/ContainerParser.h +++ b/dom/media/mediasource/ContainerParser.h @@ -55,6 +55,7 @@ public: // Return the byte range of the first complete media segment or an empty // range if not complete. MediaByteRange MediaSegmentRange(); + MediaByteRange InitSegmentRange(); static ContainerParser* CreateForMIMEType(const nsACString& aType); @@ -62,7 +63,8 @@ protected: nsRefPtr mInitData; nsRefPtr mResource; bool mHasInitData; - MediaByteRange mCompleteByteRange; + MediaByteRange mCompleteMediaSegmentRange; + MediaByteRange mCompleteInitSegmentRange; const nsCString mType; };