Index: media/base/media_tracks.cc |
diff --git a/media/base/media_tracks.cc b/media/base/media_tracks.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3012f762e0dc3a10697f64fa66c9fb4656262863 |
--- /dev/null |
+++ b/media/base/media_tracks.cc |
@@ -0,0 +1,80 @@ |
+// Copyright (c) 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "media/base/media_tracks.h" |
+ |
+#include "base/bind.h" |
+#include "media/base/audio_decoder_config.h" |
+#include "media/base/media_track.h" |
+#include "media/base/video_decoder_config.h" |
+ |
+namespace media { |
+ |
+MediaTracks::MediaTracks() {} |
+ |
+MediaTracks::~MediaTracks() {} |
+ |
+void MediaTracks::AddAudioTrack(const AudioDecoderConfig& config, |
+ const std::string& id, |
+ const std::string& kind, |
+ const std::string& label, |
+ const std::string& language) { |
+ DCHECK(config.IsValidConfig()); |
+ scoped_ptr<MediaTrack> track = make_scoped_ptr( |
+ new MediaTrack(MediaTrack::Audio, id, kind, label, language)); |
+ tracks_.push_back(std::move(track)); |
+ audio_configs_[id] = config; |
+} |
+ |
+void MediaTracks::AddVideoTrack(const VideoDecoderConfig& config, |
+ const std::string& id, |
+ const std::string& kind, |
+ const std::string& label, |
+ const std::string& language) { |
+ DCHECK(config.IsValidConfig()); |
+ scoped_ptr<MediaTrack> track = make_scoped_ptr( |
+ new MediaTrack(MediaTrack::Video, id, kind, label, language)); |
+ tracks_.push_back(std::move(track)); |
+ video_configs_[id] = config; |
+} |
+ |
+const AudioDecoderConfig& MediaTracks::getAudioConfig( |
+ const std::string& id) const { |
+ auto it = audio_configs_.find(id); |
+ if (it != audio_configs_.end()) |
+ return it->second; |
+ static AudioDecoderConfig invalidConfig; |
+ return invalidConfig; |
+} |
+ |
+const VideoDecoderConfig& MediaTracks::getVideoConfig( |
+ const std::string& id) const { |
+ auto it = video_configs_.find(id); |
+ if (it != video_configs_.end()) |
+ return it->second; |
+ static VideoDecoderConfig invalidConfig; |
+ return invalidConfig; |
+} |
+ |
+const AudioDecoderConfig& MediaTracks::getFirstAudioConfig() const { |
+ for (const auto& track : tracks()) { |
+ if (track->type() == MediaTrack::Audio) { |
+ return getAudioConfig(track->id()); |
+ } |
+ } |
+ static AudioDecoderConfig invalidConfig; |
+ return invalidConfig; |
+} |
+ |
+const VideoDecoderConfig& MediaTracks::getFirstVideoConfig() const { |
+ for (const auto& track : tracks()) { |
+ if (track->type() == MediaTrack::Video) { |
+ return getVideoConfig(track->id()); |
+ } |
+ } |
+ static VideoDecoderConfig invalidConfig; |
+ return invalidConfig; |
+} |
+ |
+} // namespace media |