Chromium Code Reviews| Index: media/filters/chunk_demuxer.cc |
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
| index fdd47e7fcf8cb4f2e3871fb82b03658d519bec51..bebd44388aa58d6a2cb4989c36fe9a166906cc3c 100644 |
| --- a/media/filters/chunk_demuxer.cc |
| +++ b/media/filters/chunk_demuxer.cc |
| @@ -406,11 +406,15 @@ bool ChunkDemuxerStream::GetNextBuffer_Locked( |
| ChunkDemuxer::ChunkDemuxer(const base::Closure& open_cb, |
| const NeedKeyCB& need_key_cb, |
| + const TextTrackCB& text_track_cb, |
| + const TextCB& text_cb, |
| const LogCB& log_cb) |
| : state_(WAITING_FOR_INIT), |
| host_(NULL), |
| open_cb_(open_cb), |
| need_key_cb_(need_key_cb), |
| + text_track_cb_(text_track_cb), |
| + text_cb_(text_cb), |
| log_cb_(log_cb), |
| duration_(kNoTimestamp()), |
| user_specified_duration_(-1) { |
| @@ -565,6 +569,11 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id, |
| base::Unretained(this)); |
| } |
| + // TODO(matthewjheaney): need a predicate here? |
| + StreamParser::NewBuffersCB text_cb; |
| + text_cb = base::Bind(&ChunkDemuxer::OnTextBuffers, |
|
acolwell GONE FROM CHROMIUM
2013/04/05 16:29:23
nit: Inline this in the Init() call like the other
Matthew Heaney (Chromium)
2013/05/09 03:53:11
I wasn't sure whether this is OBE or not. Some of
|
| + base::Unretained(this)); |
| + |
| stream_parser->Init( |
| base::Bind(&ChunkDemuxer::OnStreamParserInitDone, base::Unretained(this)), |
| base::Bind(&ChunkDemuxer::OnNewConfigs, base::Unretained(this), |
| @@ -572,6 +581,8 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id, |
| audio_cb, |
| video_cb, |
| base::Bind(&ChunkDemuxer::OnNeedKey, base::Unretained(this)), |
| + text_track_cb_, |
| + text_cb, |
| base::Bind(&ChunkDemuxer::OnNewMediaSegment, base::Unretained(this), id), |
| base::Bind(&ChunkDemuxer::OnEndOfMediaSegment, |
| base::Unretained(this), id), |
| @@ -1075,6 +1086,22 @@ bool ChunkDemuxer::OnNeedKey(const std::string& type, |
| return true; |
| } |
| +bool ChunkDemuxer::OnTextBuffers(const StreamParser::BufferQueue& buffers) { |
| + lock_.AssertAcquired(); |
| + DCHECK_NE(state_, SHUTDOWN); |
| + |
| + StreamParser::BufferQueue::const_iterator it = buffers.begin(); |
| + const StreamParser::BufferQueue::const_iterator it_end = buffers.end(); |
| + |
| + while (it != it_end) { |
| + const StreamParser::BufferQueue::value_type& buffer = *it++; |
|
acolwell GONE FROM CHROMIUM
2013/04/05 16:29:23
nit: Please don't use this construct. Use a normal
Matthew Heaney (Chromium)
2013/05/09 03:53:11
Done.
|
| + const base::TimeDelta time = buffer->GetDecodeTimestamp(); |
|
acolwell GONE FROM CHROMIUM
2013/04/05 16:29:23
AdjustBufferTimestamp() needs to be called here li
Matthew Heaney (Chromium)
2013/05/09 03:53:11
I did have a question about that, since some of th
|
| + text_cb_.Run(time); |
| + } |
| + |
| + return true; |
| +} |
| + |
| void ChunkDemuxer::OnNewMediaSegment(const std::string& source_id, |
| TimeDelta timestamp) { |
| DCHECK(timestamp != kNoTimestamp()); |