Index: media/filters/ffmpeg_demuxer.cc |
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc |
index 27414974c798d1c6ba1b05d2b2a713b4847ff9a3..2cc89130b1c43a9e527cb0fe29ac8d7cb3b588d7 100644 |
--- a/media/filters/ffmpeg_demuxer.cc |
+++ b/media/filters/ffmpeg_demuxer.cc |
@@ -686,6 +686,10 @@ FFmpegDemuxerStream* FFmpegDemuxer::GetFFmpegStream( |
return NULL; |
} |
+base::TimeDelta FFmpegDemuxer::GetStartTime() const { |
+ return std::max(start_time_, base::TimeDelta()); |
+} |
+ |
Demuxer::Liveness FFmpegDemuxer::GetLiveness() const { |
DCHECK(task_runner_->BelongsToCurrentThread()); |
return liveness_; |
@@ -959,7 +963,7 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb, |
// Since we're shifting the externally visible start time to zero, we need to |
// adjust the timeline offset to compensate. |
- if (!timeline_offset_.is_null()) |
+ if (!timeline_offset_.is_null() && start_time_ < base::TimeDelta()) |
timeline_offset_ += start_time_; |
if (max_duration == kInfiniteDuration() && !timeline_offset_.is_null()) { |