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 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
708 | 708 |
709 void ChunkDemuxer::OnEnabledAudioTracksChanged( | 709 void ChunkDemuxer::OnEnabledAudioTracksChanged( |
710 const std::vector<MediaTrack::Id>& track_ids, | 710 const std::vector<MediaTrack::Id>& track_ids, |
711 base::TimeDelta curr_time) { | 711 base::TimeDelta curr_time) { |
712 base::AutoLock auto_lock(lock_); | 712 base::AutoLock auto_lock(lock_); |
713 std::set<ChunkDemuxerStream*> enabled_streams; | 713 std::set<ChunkDemuxerStream*> enabled_streams; |
714 for (const auto& id : track_ids) { | 714 for (const auto& id : track_ids) { |
715 ChunkDemuxerStream* stream = track_id_to_demux_stream_map_[id]; | 715 ChunkDemuxerStream* stream = track_id_to_demux_stream_map_[id]; |
716 DCHECK(stream); | 716 DCHECK(stream); |
717 DCHECK_EQ(DemuxerStream::AUDIO, stream->type()); | 717 DCHECK_EQ(DemuxerStream::AUDIO, stream->type()); |
| 718 // TODO(servolk): Remove after multiple enabled audio tracks are supported |
| 719 // by the media::RendererImpl. |
| 720 if (!enabled_streams.empty()) { |
| 721 MEDIA_LOG(INFO, media_log_) |
| 722 << "Only one enabled audio track is supported, ignoring track " << id; |
| 723 continue; |
| 724 } |
718 enabled_streams.insert(stream); | 725 enabled_streams.insert(stream); |
719 } | 726 } |
720 | 727 |
721 // First disable all streams that need to be disabled and then enable streams | 728 // First disable all streams that need to be disabled and then enable streams |
722 // that are enabled. | 729 // that are enabled. |
723 for (const auto& stream : audio_streams_) { | 730 for (const auto& stream : audio_streams_) { |
724 if (enabled_streams.find(stream.get()) == enabled_streams.end()) { | 731 if (enabled_streams.find(stream.get()) == enabled_streams.end()) { |
725 DVLOG(1) << __func__ << ": disabling stream " << stream.get(); | 732 DVLOG(1) << __func__ << ": disabling stream " << stream.get(); |
726 stream->set_enabled(false, curr_time); | 733 stream->set_enabled(false, curr_time); |
727 } | 734 } |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1220 NOTREACHED(); | 1227 NOTREACHED(); |
1221 return nullptr; | 1228 return nullptr; |
1222 } | 1229 } |
1223 | 1230 |
1224 std::unique_ptr<ChunkDemuxerStream> stream = | 1231 std::unique_ptr<ChunkDemuxerStream> stream = |
1225 base::MakeUnique<ChunkDemuxerStream>(type, media_track_id); | 1232 base::MakeUnique<ChunkDemuxerStream>(type, media_track_id); |
1226 DCHECK(track_id_to_demux_stream_map_.find(media_track_id) == | 1233 DCHECK(track_id_to_demux_stream_map_.find(media_track_id) == |
1227 track_id_to_demux_stream_map_.end()); | 1234 track_id_to_demux_stream_map_.end()); |
1228 track_id_to_demux_stream_map_[media_track_id] = stream.get(); | 1235 track_id_to_demux_stream_map_[media_track_id] = stream.get(); |
1229 id_to_streams_map_[source_id].push_back(stream.get()); | 1236 id_to_streams_map_[source_id].push_back(stream.get()); |
| 1237 stream->set_enabled(owning_vector->empty(), base::TimeDelta()); |
1230 owning_vector->push_back(std::move(stream)); | 1238 owning_vector->push_back(std::move(stream)); |
1231 return owning_vector->back().get(); | 1239 return owning_vector->back().get(); |
1232 } | 1240 } |
1233 | 1241 |
1234 void ChunkDemuxer::OnNewTextTrack(ChunkDemuxerStream* text_stream, | 1242 void ChunkDemuxer::OnNewTextTrack(ChunkDemuxerStream* text_stream, |
1235 const TextTrackConfig& config) { | 1243 const TextTrackConfig& config) { |
1236 lock_.AssertAcquired(); | 1244 lock_.AssertAcquired(); |
1237 DCHECK_NE(state_, SHUTDOWN); | 1245 DCHECK_NE(state_, SHUTDOWN); |
1238 host_->AddTextStream(text_stream, config); | 1246 host_->AddTextStream(text_stream, config); |
1239 } | 1247 } |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1342 } | 1350 } |
1343 | 1351 |
1344 void ChunkDemuxer::ShutdownAllStreams() { | 1352 void ChunkDemuxer::ShutdownAllStreams() { |
1345 for (auto itr = source_state_map_.begin(); itr != source_state_map_.end(); | 1353 for (auto itr = source_state_map_.begin(); itr != source_state_map_.end(); |
1346 ++itr) { | 1354 ++itr) { |
1347 itr->second->Shutdown(); | 1355 itr->second->Shutdown(); |
1348 } | 1356 } |
1349 } | 1357 } |
1350 | 1358 |
1351 } // namespace media | 1359 } // namespace media |
OLD | NEW |