Chromium Code Reviews| Index: media/filters/chunk_demuxer.cc |
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
| index 1302aa531a87e405aafd14d75a96ae3bf1001e48..70b1b346b633082939ccb3b08818597f5cc0583f 100644 |
| --- a/media/filters/chunk_demuxer.cc |
| +++ b/media/filters/chunk_demuxer.cc |
| @@ -308,7 +308,7 @@ void ChunkDemuxerStream::set_enabled(bool enabled, base::TimeDelta timestamp) { |
| StreamParserBuffer::CreateEOSBuffer()); |
| } |
| if (!stream_status_change_cb_.is_null()) |
| - stream_status_change_cb_.Run(is_enabled_, timestamp); |
| + stream_status_change_cb_.Run(this, is_enabled_, timestamp); |
| } |
| void ChunkDemuxerStream::SetStreamStatusChangeCB( |
| @@ -491,26 +491,25 @@ base::Time ChunkDemuxer::GetTimelineOffset() const { |
| return timeline_offset_; |
| } |
| -DemuxerStream* ChunkDemuxer::GetStream(DemuxerStream::Type type) { |
| - DCHECK_NE(type, DemuxerStream::TEXT); |
| +std::vector<DemuxerStream*> ChunkDemuxer::GetStreams() { |
| base::AutoLock auto_lock(lock_); |
| - // TODO(servolk): For now return only the first enabled audio/video stream, |
| - // since this GetStream method is part of the implementation of the |
| - // DemuxerStreamProvider interface that is used in many places and can't be |
| - // changed easily. It will be fixed later, when we add support for multiple |
| - // streams/tracks in DemuxerStreamProvider, tracked by crbug.com/646669 |
| - if (type == DemuxerStream::AUDIO) |
| - for (const auto& s : audio_streams_) |
| - if (s->enabled()) |
| - return s.get(); |
| + std::vector<DemuxerStream*> result; |
| + for (const auto& s : audio_streams_) |
| + result.push_back(s.get()); |
| - if (type == DemuxerStream::VIDEO) |
| - for (const auto& s : video_streams_) |
| - if (s->enabled()) |
| - return s.get(); |
| + for (const auto& s : video_streams_) |
| + result.push_back(s.get()); |
|
xhwang
2017/02/01 18:26:03
ditto: Are we also pushing disabled streams here?
|
| - return NULL; |
| + return result; |
| +} |
| + |
| +void ChunkDemuxer::SetStreamStatusChangeCB(const StreamStatusChangeCB& cb) { |
| + DCHECK(!cb.is_null()); |
| + for (const auto& s : audio_streams_) |
| + s->SetStreamStatusChangeCB(cb); |
| + for (const auto& s : video_streams_) |
| + s->SetStreamStatusChangeCB(cb); |
| } |
| TimeDelta ChunkDemuxer::GetStartTime() const { |