author | Jean-Yves Avenard <jyavenard@mozilla.com> |
Mon, 26 Oct 2015 17:49:00 +1100 | |
changeset 269707 | 5304f2ce54aa7423ff6af560b3c202fc0c060e93 |
parent 269706 | 90edb8c62dee69fe55faf84507d70570f9d8eaad |
child 269708 | 1c75443c6026daca3d7677613dd0fcf01be59deb |
push id | 29588 |
push user | kwierso@gmail.com |
push date | Tue, 27 Oct 2015 19:18:01 +0000 |
treeherder | mozilla-central@5430b2dba98b [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | gerald |
bugs | 1215370, 29133 |
milestone | 44.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/media/mediasource/TrackBuffersManager.cpp +++ b/dom/media/mediasource/TrackBuffersManager.cpp @@ -371,17 +371,23 @@ TrackBuffersManager::CompleteResetParser // 4. Unset the highest end timestamp on all track buffers. // 5. Set the need random access point flag on all track buffers to true. track->ResetAppendState(); // if we have been aborted, we may have pending frames that we are going // to discard now. track->mQueuedSamples.Clear(); } - // 6. Remove all bytes from the input buffer. + + // 6. If the mode attribute equals "sequence", then set the group start timestamp to the group end timestamp + if (mSourceBufferAttributes->GetAppendMode() == SourceBufferAppendMode::Sequence) { + mGroupStartTimestamp = Some(mGroupEndTimestamp); + } + + // 7. Remove all bytes from the input buffer. mIncomingBuffers.Clear(); mInputBuffer = nullptr; if (mCurrentInputBuffer) { mCurrentInputBuffer->EvictAll(); // The demuxer will be recreated during the next run of SegmentParserLoop. // As such we don't need to notify it that data has been removed. mCurrentInputBuffer = new SourceBufferResource(mType); } @@ -396,17 +402,17 @@ TrackBuffersManager::CompleteResetParser CreateDemuxerforMIMEType(); // Recreate our input buffer. We can't directly assign the initData buffer // to mInputBuffer as it will get modified in the Segment Parser Loop. mInputBuffer = new MediaByteBuffer; mInputBuffer->AppendElements(*mInitData); } RecreateParser(true); - // 7. Set append state to WAITING_FOR_SEGMENT. + // 8. Set append state to WAITING_FOR_SEGMENT. SetAppendState(AppendState::WAITING_FOR_SEGMENT); // Reject our promise immediately. mAppendPromise.RejectIfExists(NS_ERROR_ABORT, __func__); } void TrackBuffersManager::DoEvictData(const TimeUnit& aPlaybackTime,