Chromium Code Reviews| 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" |
|
wolenetz
2016/02/26 00:06:20
nit: this is already included by this class' heade
servolk
2016/02/26 01:56:31
Done.
|
| +#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)); |
|
wolenetz
2016/02/26 00:06:20
What if there is already an audio track with same
|
| + 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)); |
|
wolenetz
2016/02/26 00:06:20
Ditto (what if there is already a video track with
|
| + 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()); |
|
wolenetz
2016/02/26 00:06:20
for example, this would return probably an unexpec
|
| + } |
| + } |
| + static AudioDecoderConfig invalidConfig; |
| + return invalidConfig; |
| +} |
| + |
| +const VideoDecoderConfig& MediaTracks::getFirstVideoConfig() const { |
| + for (const auto& track : tracks()) { |
| + if (track->type() == MediaTrack::Video) { |
| + return getVideoConfig(track->id()); |
|
wolenetz
2016/02/26 00:06:20
ditto example
|
| + } |
| + } |
| + static VideoDecoderConfig invalidConfig; |
| + return invalidConfig; |
| +} |
| + |
| +} // namespace media |