OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/filters/chunk_demuxer.h" | 5 #include "media/filters/chunk_demuxer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
705 | 705 |
706 void ChunkDemuxer::OnEnabledAudioTracksChanged( | 706 void ChunkDemuxer::OnEnabledAudioTracksChanged( |
707 const std::vector<MediaTrack::Id>& track_ids, | 707 const std::vector<MediaTrack::Id>& track_ids, |
708 base::TimeDelta curr_time) { | 708 base::TimeDelta curr_time) { |
709 base::AutoLock auto_lock(lock_); | 709 base::AutoLock auto_lock(lock_); |
710 std::set<ChunkDemuxerStream*> enabled_streams; | 710 std::set<ChunkDemuxerStream*> enabled_streams; |
711 for (const auto& id : track_ids) { | 711 for (const auto& id : track_ids) { |
712 ChunkDemuxerStream* stream = track_id_to_demux_stream_map_[id]; | 712 ChunkDemuxerStream* stream = track_id_to_demux_stream_map_[id]; |
713 DCHECK(stream); | 713 DCHECK(stream); |
714 DCHECK_EQ(DemuxerStream::AUDIO, stream->type()); | 714 DCHECK_EQ(DemuxerStream::AUDIO, stream->type()); |
| 715 // TODO(servolk): Remove after multiple enabled audio tracks are supported |
| 716 // by the media::RendererImpl. |
| 717 if (!enabled_streams.empty()) { |
| 718 MEDIA_LOG(INFO, media_log_) |
| 719 << "Only one enabled audio track is supported, ignoring track " << id; |
| 720 continue; |
| 721 } |
715 enabled_streams.insert(stream); | 722 enabled_streams.insert(stream); |
716 } | 723 } |
717 | 724 |
718 // First disable all streams that need to be disabled and then enable streams | 725 // First disable all streams that need to be disabled and then enable streams |
719 // that are enabled. | 726 // that are enabled. |
720 for (const auto& stream : audio_streams_) { | 727 for (const auto& stream : audio_streams_) { |
721 if (enabled_streams.find(stream.get()) == enabled_streams.end()) { | 728 if (enabled_streams.find(stream.get()) == enabled_streams.end()) { |
722 DVLOG(1) << __func__ << ": disabling stream " << stream.get(); | 729 DVLOG(1) << __func__ << ": disabling stream " << stream.get(); |
723 stream->set_enabled(false, curr_time); | 730 stream->set_enabled(false, curr_time); |
724 } | 731 } |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1217 NOTREACHED(); | 1224 NOTREACHED(); |
1218 return nullptr; | 1225 return nullptr; |
1219 } | 1226 } |
1220 | 1227 |
1221 std::unique_ptr<ChunkDemuxerStream> stream = | 1228 std::unique_ptr<ChunkDemuxerStream> stream = |
1222 base::MakeUnique<ChunkDemuxerStream>(type, media_track_id); | 1229 base::MakeUnique<ChunkDemuxerStream>(type, media_track_id); |
1223 DCHECK(track_id_to_demux_stream_map_.find(media_track_id) == | 1230 DCHECK(track_id_to_demux_stream_map_.find(media_track_id) == |
1224 track_id_to_demux_stream_map_.end()); | 1231 track_id_to_demux_stream_map_.end()); |
1225 track_id_to_demux_stream_map_[media_track_id] = stream.get(); | 1232 track_id_to_demux_stream_map_[media_track_id] = stream.get(); |
1226 id_to_streams_map_[source_id].push_back(stream.get()); | 1233 id_to_streams_map_[source_id].push_back(stream.get()); |
| 1234 stream->set_enabled(owning_vector->empty(), base::TimeDelta()); |
1227 owning_vector->push_back(std::move(stream)); | 1235 owning_vector->push_back(std::move(stream)); |
1228 return owning_vector->back().get(); | 1236 return owning_vector->back().get(); |
1229 } | 1237 } |
1230 | 1238 |
1231 void ChunkDemuxer::OnNewTextTrack(ChunkDemuxerStream* text_stream, | 1239 void ChunkDemuxer::OnNewTextTrack(ChunkDemuxerStream* text_stream, |
1232 const TextTrackConfig& config) { | 1240 const TextTrackConfig& config) { |
1233 lock_.AssertAcquired(); | 1241 lock_.AssertAcquired(); |
1234 DCHECK_NE(state_, SHUTDOWN); | 1242 DCHECK_NE(state_, SHUTDOWN); |
1235 host_->AddTextStream(text_stream, config); | 1243 host_->AddTextStream(text_stream, config); |
1236 } | 1244 } |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1339 } | 1347 } |
1340 | 1348 |
1341 void ChunkDemuxer::ShutdownAllStreams() { | 1349 void ChunkDemuxer::ShutdownAllStreams() { |
1342 for (auto itr = source_state_map_.begin(); itr != source_state_map_.end(); | 1350 for (auto itr = source_state_map_.begin(); itr != source_state_map_.end(); |
1343 ++itr) { | 1351 ++itr) { |
1344 itr->second->Shutdown(); | 1352 itr->second->Shutdown(); |
1345 } | 1353 } |
1346 } | 1354 } |
1347 | 1355 |
1348 } // namespace media | 1356 } // namespace media |
OLD | NEW |