Chromium Code Reviews| Index: media/filters/chunk_demuxer.cc |
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
| index c1232f6d2010540c5d5835e9d5a84784ad0d81f2..8076a0659d9a73c686787424d974f43ff8d0cfb7 100644 |
| --- a/media/filters/chunk_demuxer.cc |
| +++ b/media/filters/chunk_demuxer.cc |
| @@ -30,7 +30,9 @@ class SourceState { |
| const StreamParser::NewConfigCB& config_cb, |
| const StreamParser::NewBuffersCB& audio_cb, |
| const StreamParser::NewBuffersCB& video_cb, |
| + const StreamParser::NewBuffersCB& text_cb, |
| const StreamParser::NeedKeyCB& need_key_cb, |
| + const AddTextTrackCB& add_text_track_cb, |
| const StreamParser::NewMediaSegmentCB& new_segment_cb, |
| const LogCB& log_cb); |
| @@ -92,7 +94,9 @@ void SourceState::Init(const StreamParser::InitCB& init_cb, |
| const StreamParser::NewConfigCB& config_cb, |
| const StreamParser::NewBuffersCB& audio_cb, |
| const StreamParser::NewBuffersCB& video_cb, |
| + const StreamParser::NewBuffersCB& text_cb, |
| const StreamParser::NeedKeyCB& need_key_cb, |
| + const AddTextTrackCB& add_text_track_cb, |
| const StreamParser::NewMediaSegmentCB& new_segment_cb, |
| const LogCB& log_cb) { |
| stream_parser_->Init(init_cb, config_cb, |
| @@ -100,7 +104,10 @@ void SourceState::Init(const StreamParser::InitCB& init_cb, |
| base::Unretained(this), audio_cb), |
| base::Bind(&SourceState::OnBuffers, |
| base::Unretained(this), video_cb), |
| + base::Bind(&SourceState::OnBuffers, |
| + base::Unretained(this), text_cb), |
| need_key_cb, |
| + add_text_track_cb, |
| base::Bind(&SourceState::OnNewMediaSegment, |
| base::Unretained(this), new_segment_cb), |
| base::Bind(&SourceState::OnEndOfMediaSegment, |
| @@ -545,11 +552,13 @@ bool ChunkDemuxerStream::GetNextBuffer_Locked( |
| ChunkDemuxer::ChunkDemuxer(const base::Closure& open_cb, |
| const NeedKeyCB& need_key_cb, |
| + const AddTextTrackCB& add_text_track_cb, |
| const LogCB& log_cb) |
| : state_(WAITING_FOR_INIT), |
| host_(NULL), |
| open_cb_(open_cb), |
| need_key_cb_(need_key_cb), |
| + add_text_track_cb_(add_text_track_cb), |
| log_cb_(log_cb), |
| duration_(kNoTimestamp()), |
| user_specified_duration_(-1) { |
| @@ -703,6 +712,10 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id, |
| base::Unretained(this)); |
| } |
| + StreamParser::NewBuffersCB text_cb; |
| + text_cb = base::Bind(&ChunkDemuxer::OnTextBuffers, |
|
acolwell GONE FROM CHROMIUM
2013/05/10 18:41:39
nit: Please inline like the other Bind calls below
Matthew Heaney (Chromium)
2013/05/11 07:29:13
Done.
|
| + base::Unretained(this)); |
| + |
| scoped_ptr<SourceState> source_state(new SourceState(stream_parser.Pass())); |
| source_state->Init( |
| base::Bind(&ChunkDemuxer::OnSourceInitDone, base::Unretained(this)), |
| @@ -710,7 +723,9 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id, |
| has_audio, has_video), |
| audio_cb, |
| video_cb, |
| + text_cb, |
| base::Bind(&ChunkDemuxer::OnNeedKey, base::Unretained(this)), |
| + add_text_track_cb_, |
| base::Bind(&ChunkDemuxer::OnNewMediaSegment, base::Unretained(this), id), |
| log_cb_); |
| @@ -1186,6 +1201,17 @@ bool ChunkDemuxer::OnVideoBuffers(const StreamParser::BufferQueue& buffers) { |
| return true; |
| } |
| +bool ChunkDemuxer::OnTextBuffers(const StreamParser::BufferQueue& buffers) { |
| + lock_.AssertAcquired(); |
| + DCHECK_NE(state_, SHUTDOWN); |
| + |
| + // TODO(matthewjheaney): |
| + // The text buffers are pushed up the stack directly by the stream parser, |
| + // so it doesn't appear that there's anything we need to do here. |
|
acolwell GONE FROM CHROMIUM
2013/05/10 18:41:39
Text tracks need to be able to update the duration
Matthew Heaney (Chromium)
2013/05/11 07:29:13
Done.
|
| + |
| + return true; |
| +} |
| + |
| // TODO(acolwell): Remove bool from StreamParser::NeedKeyCB so that |
| // this method can be removed and need_key_cb_ can be passed directly |
| // to the parser. |