| Index: media/filters/frame_processor_base.cc
|
| diff --git a/media/filters/frame_processor_base.cc b/media/filters/frame_processor_base.cc
|
| index 3e088ed5dc2966926443e23717ddb7086d636a52..09b1b86c3b39011ce2d0a6cc406ebc80af98ef15 100644
|
| --- a/media/filters/frame_processor_base.cc
|
| +++ b/media/filters/frame_processor_base.cc
|
| @@ -10,7 +10,10 @@
|
| namespace media {
|
|
|
| MseTrackBuffer::MseTrackBuffer(ChunkDemuxerStream* stream)
|
| - : needs_random_access_point_(true),
|
| + : last_decode_timestamp_(kNoTimestamp()),
|
| + last_frame_duration_(kNoTimestamp()),
|
| + highest_presentation_timestamp_(kNoTimestamp()),
|
| + needs_random_access_point_(true),
|
| stream_(stream) {
|
| DCHECK(stream_);
|
| }
|
| @@ -22,11 +25,23 @@ MseTrackBuffer::~MseTrackBuffer() {
|
| void MseTrackBuffer::Reset() {
|
| DVLOG(2) << __FUNCTION__ << "()";
|
|
|
| + last_decode_timestamp_ = kNoTimestamp();
|
| + last_frame_duration_ = kNoTimestamp();
|
| + highest_presentation_timestamp_ = kNoTimestamp();
|
| needs_random_access_point_ = true;
|
| }
|
|
|
| +void MseTrackBuffer::SetHighestPresentationTimestampIfIncreased(
|
| + base::TimeDelta timestamp) {
|
| + if (highest_presentation_timestamp_ == kNoTimestamp() ||
|
| + timestamp > highest_presentation_timestamp_) {
|
| + highest_presentation_timestamp_ = timestamp;
|
| + }
|
| +}
|
| +
|
| FrameProcessorBase::FrameProcessorBase()
|
| - : sequence_mode_(false) {}
|
| + : sequence_mode_(false),
|
| + group_start_timestamp_(kNoTimestamp()) {}
|
|
|
| FrameProcessorBase::~FrameProcessorBase() {
|
| DVLOG(2) << __FUNCTION__ << "()";
|
| @@ -34,6 +49,14 @@ FrameProcessorBase::~FrameProcessorBase() {
|
| STLDeleteValues(&track_buffers_);
|
| }
|
|
|
| +void FrameProcessorBase::SetGroupStartTimestampIfInSequenceMode(
|
| + base::TimeDelta timestamp_offset) {
|
| + DVLOG(2) << __FUNCTION__ << "(" << timestamp_offset.InSecondsF() << ")";
|
| + DCHECK(kNoTimestamp() != timestamp_offset);
|
| + if (sequence_mode_)
|
| + group_start_timestamp_ = timestamp_offset;
|
| +}
|
| +
|
| bool FrameProcessorBase::AddTrack(StreamParser::TrackId id,
|
| ChunkDemuxerStream* stream) {
|
| DVLOG(2) << __FUNCTION__ << "(): id=" << id;
|
| @@ -63,4 +86,15 @@ MseTrackBuffer* FrameProcessorBase::FindTrack(StreamParser::TrackId id) {
|
| return itr->second;
|
| }
|
|
|
| +void FrameProcessorBase::NotifyNewMediaSegmentStarting(
|
| + base::TimeDelta segment_timestamp) {
|
| + DVLOG(2) << __FUNCTION__ << "(" << segment_timestamp.InSecondsF() << ")";
|
| +
|
| + for (TrackBufferMap::iterator itr = track_buffers_.begin();
|
| + itr != track_buffers_.end();
|
| + ++itr) {
|
| + itr->second->stream()->OnNewMediaSegment(segment_timestamp);
|
| + }
|
| +}
|
| +
|
| } // namespace media
|
|
|