Index: media/filters/chunk_demuxer.cc |
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
index 0c5608943725b41383b8aa278b056c792dbecf60..4bcfe28a55c06be40c42328d376728a61262496d 100644 |
--- a/media/filters/chunk_demuxer.cc |
+++ b/media/filters/chunk_demuxer.cc |
@@ -93,17 +93,6 @@ class SourceState { |
typedef base::Callback<void( |
ChunkDemuxerStream*, const TextTrackConfig&)> NewTextTrackCB; |
- // First parameter - Indicates initialization success. Set to true if |
- // initialization was successful. False if an error |
- // occurred. |
- // Second parameter - Indicates the stream duration. Only contains a valid |
- // value if the first parameter is true. |
- // Third parameter - Indicates the source Time associated with |
- // presentation timestamp 0. A null Time is returned if |
- // no mapping to Time exists. Only contains a |
- // valid value if the first parameter is true. |
- typedef base::Callback<void(bool, TimeDelta, base::Time)> InitCB; |
- |
SourceState( |
scoped_ptr<StreamParser> stream_parser, |
scoped_ptr<FrameProcessorBase> frame_processor, const LogCB& log_cb, |
@@ -111,7 +100,7 @@ class SourceState { |
~SourceState(); |
- void Init(const InitCB& init_cb, |
+ void Init(const StreamParser::InitCB& init_cb, |
bool allow_audio, |
bool allow_video, |
const StreamParser::NeedKeyCB& need_key_cb, |
@@ -193,9 +182,7 @@ class SourceState { |
const StreamParser::TextBufferQueueMap& text_map); |
void OnSourceInitDone(bool success, |
- TimeDelta duration, |
- base::Time timeline_offset, |
- bool auto_update_timestamp_offset); |
+ const StreamParser::StreamParameters& params); |
CreateDemuxerStreamCB create_demuxer_stream_cb_; |
NewTextTrackCB new_text_track_cb_; |
@@ -236,7 +223,7 @@ class SourceState { |
scoped_ptr<FrameProcessorBase> frame_processor_; |
LogCB log_cb_; |
- InitCB init_cb_; |
+ StreamParser::InitCB init_cb_; |
// Indicates that timestampOffset should be updated automatically during |
// OnNewBuffers() based on the earliest end timestamp of the buffers provided. |
@@ -269,7 +256,7 @@ SourceState::~SourceState() { |
STLDeleteValues(&text_stream_map_); |
} |
-void SourceState::Init(const InitCB& init_cb, |
+void SourceState::Init(const StreamParser::InitCB& init_cb, |
bool allow_audio, |
bool allow_video, |
const StreamParser::NeedKeyCB& need_key_cb, |
@@ -700,13 +687,11 @@ bool SourceState::OnNewBuffers( |
return true; |
} |
-void SourceState::OnSourceInitDone(bool success, |
- TimeDelta duration, |
- base::Time timeline_offset, |
- bool auto_update_timestamp_offset) { |
- auto_update_timestamp_offset_ = auto_update_timestamp_offset; |
- base::ResetAndReturn(&init_cb_).Run( |
- success, duration, timeline_offset); |
+void SourceState::OnSourceInitDone( |
+ bool success, |
+ const StreamParser::StreamParameters& params) { |
+ auto_update_timestamp_offset_ = params.auto_update_timestamp_offset; |
+ base::ResetAndReturn(&init_cb_).Run(success, params); |
} |
ChunkDemuxerStream::ChunkDemuxerStream(Type type, bool splice_frames_enabled) |
@@ -1497,10 +1482,11 @@ bool ChunkDemuxer::IsSeekWaitingForData_Locked() const { |
return false; |
} |
-void ChunkDemuxer::OnSourceInitDone(bool success, TimeDelta duration, |
- base::Time timeline_offset) { |
+void ChunkDemuxer::OnSourceInitDone( |
+ bool success, |
+ const StreamParser::StreamParameters& params) { |
DVLOG(1) << "OnSourceInitDone(" << success << ", " |
- << duration.InSecondsF() << ")"; |
+ << params.duration.InSecondsF() << ")"; |
lock_.AssertAcquired(); |
DCHECK_EQ(state_, INITIALIZING); |
if (!success || (!audio_ && !video_)) { |
@@ -1508,25 +1494,26 @@ void ChunkDemuxer::OnSourceInitDone(bool success, TimeDelta duration, |
return; |
} |
- if (duration != TimeDelta() && duration_ == kNoTimestamp()) |
- UpdateDuration(duration); |
+ if (params.duration != TimeDelta() && duration_ == kNoTimestamp()) |
+ UpdateDuration(params.duration); |
- if (!timeline_offset.is_null()) { |
+ if (!params.timeline_offset.is_null()) { |
if (!timeline_offset_.is_null() && |
- timeline_offset != timeline_offset_) { |
+ params.timeline_offset != timeline_offset_) { |
MEDIA_LOG(log_cb_) |
<< "Timeline offset is not the same across all SourceBuffers."; |
ReportError_Locked(DEMUXER_ERROR_COULD_NOT_OPEN); |
return; |
} |
- timeline_offset_ = timeline_offset; |
+ timeline_offset_ = params.timeline_offset; |
} |
// Wait until all streams have initialized. |
if ((!source_id_audio_.empty() && !audio_) || |
- (!source_id_video_.empty() && !video_)) |
+ (!source_id_video_.empty() && !video_)) { |
return; |
+ } |
SeekAllSources(GetStartTime()); |
StartReturningData(); |