Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/formats/webm/webm_tracks_parser.h" | 5 #include "media/formats/webm/webm_tracks_parser.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "media/base/timestamp_constants.h" | 10 #include "media/base/timestamp_constants.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 70 track_name_.clear(); | 70 track_name_.clear(); |
| 71 track_language_.clear(); | 71 track_language_.clear(); |
| 72 audio_track_num_ = -1; | 72 audio_track_num_ = -1; |
| 73 audio_default_duration_ = -1; | 73 audio_default_duration_ = -1; |
| 74 audio_decoder_config_ = AudioDecoderConfig(); | 74 audio_decoder_config_ = AudioDecoderConfig(); |
| 75 video_track_num_ = -1; | 75 video_track_num_ = -1; |
| 76 video_default_duration_ = -1; | 76 video_default_duration_ = -1; |
| 77 video_decoder_config_ = VideoDecoderConfig(); | 77 video_decoder_config_ = VideoDecoderConfig(); |
| 78 text_tracks_.clear(); | 78 text_tracks_.clear(); |
| 79 ignored_tracks_.clear(); | 79 ignored_tracks_.clear(); |
| 80 media_tracks_.reset(new MediaTracks()); | |
| 80 | 81 |
| 81 WebMListParser parser(kWebMIdTracks, this); | 82 WebMListParser parser(kWebMIdTracks, this); |
| 82 int result = parser.Parse(buf, size); | 83 int result = parser.Parse(buf, size); |
| 83 | 84 |
| 84 if (result <= 0) | 85 if (result <= 0) |
| 85 return result; | 86 return result; |
| 86 | 87 |
| 87 // For now we do all or nothing parsing. | 88 // For now we do all or nothing parsing. |
| 88 return parser.IsParsingComplete() ? result : 0; | 89 return parser.IsParsingComplete() ? result : 0; |
| 89 } | 90 } |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 203 return false; | 204 return false; |
| 204 } | 205 } |
| 205 audio_default_duration_ = default_duration_; | 206 audio_default_duration_ = default_duration_; |
| 206 | 207 |
| 207 DCHECK(!audio_decoder_config_.IsValidConfig()); | 208 DCHECK(!audio_decoder_config_.IsValidConfig()); |
| 208 if (!audio_client_.InitializeConfig( | 209 if (!audio_client_.InitializeConfig( |
| 209 codec_id_, codec_private_, seek_preroll_, codec_delay_, | 210 codec_id_, codec_private_, seek_preroll_, codec_delay_, |
| 210 !audio_encryption_key_id_.empty(), &audio_decoder_config_)) { | 211 !audio_encryption_key_id_.empty(), &audio_decoder_config_)) { |
| 211 return false; | 212 return false; |
| 212 } | 213 } |
| 214 media_tracks_->AddAudioTrack(audio_decoder_config_, | |
| 215 base::Uint64ToString(track_num_), "main", | |
| 216 track_name_, track_language_); | |
| 213 } else { | 217 } else { |
| 214 MEDIA_LOG(DEBUG, media_log_) << "Ignoring audio track " << track_num_; | 218 MEDIA_LOG(DEBUG, media_log_) << "Ignoring audio track " << track_num_; |
| 215 ignored_tracks_.insert(track_num_); | 219 ignored_tracks_.insert(track_num_); |
| 216 } | 220 } |
| 217 } else if (track_type_ == kWebMTrackTypeVideo) { | 221 } else if (track_type_ == kWebMTrackTypeVideo) { |
| 218 if (video_track_num_ == -1) { | 222 if (video_track_num_ == -1) { |
| 219 video_track_num_ = track_num_; | 223 video_track_num_ = track_num_; |
| 220 video_encryption_key_id_ = encryption_key_id; | 224 video_encryption_key_id_ = encryption_key_id; |
| 221 | 225 |
| 222 if (default_duration_ == 0) { | 226 if (default_duration_ == 0) { |
| 223 MEDIA_LOG(ERROR, media_log_) << "Illegal 0ns video TrackEntry " | 227 MEDIA_LOG(ERROR, media_log_) << "Illegal 0ns video TrackEntry " |
| 224 "DefaultDuration"; | 228 "DefaultDuration"; |
| 225 return false; | 229 return false; |
| 226 } | 230 } |
| 227 video_default_duration_ = default_duration_; | 231 video_default_duration_ = default_duration_; |
| 228 | 232 |
| 229 DCHECK(!video_decoder_config_.IsValidConfig()); | 233 DCHECK(!video_decoder_config_.IsValidConfig()); |
| 230 if (!video_client_.InitializeConfig( | 234 if (!video_client_.InitializeConfig( |
| 231 codec_id_, codec_private_, !video_encryption_key_id_.empty(), | 235 codec_id_, codec_private_, !video_encryption_key_id_.empty(), |
| 232 &video_decoder_config_)) { | 236 &video_decoder_config_)) { |
| 233 return false; | 237 return false; |
| 234 } | 238 } |
| 239 media_tracks_->AddVideoTrack(video_decoder_config_, | |
| 240 base::Uint64ToString(track_num_), "main", | |
| 241 track_name_, track_language_); | |
| 235 } else { | 242 } else { |
| 236 MEDIA_LOG(DEBUG, media_log_) << "Ignoring video track " << track_num_; | 243 MEDIA_LOG(DEBUG, media_log_) << "Ignoring video track " << track_num_; |
| 237 ignored_tracks_.insert(track_num_); | 244 ignored_tracks_.insert(track_num_); |
| 238 } | 245 } |
| 239 } else if (track_type_ == kWebMTrackTypeSubtitlesOrCaptions || | 246 } else if (track_type_ == kWebMTrackTypeSubtitlesOrCaptions || |
| 240 track_type_ == kWebMTrackTypeDescriptionsOrMetadata) { | 247 track_type_ == kWebMTrackTypeDescriptionsOrMetadata) { |
| 241 if (ignore_text_tracks_) { | 248 if (ignore_text_tracks_) { |
| 242 MEDIA_LOG(DEBUG, media_log_) << "Ignoring text track " << track_num_; | 249 MEDIA_LOG(DEBUG, media_log_) << "Ignoring text track " << track_num_; |
| 243 ignored_tracks_.insert(track_num_); | 250 ignored_tracks_.insert(track_num_); |
| 244 } else { | 251 } else { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 328 codec_id_ = str; | 335 codec_id_ = str; |
| 329 return true; | 336 return true; |
| 330 } | 337 } |
| 331 | 338 |
| 332 if (id == kWebMIdName) { | 339 if (id == kWebMIdName) { |
| 333 track_name_ = str; | 340 track_name_ = str; |
| 334 return true; | 341 return true; |
| 335 } | 342 } |
| 336 | 343 |
| 337 if (id == kWebMIdLanguage) { | 344 if (id == kWebMIdLanguage) { |
| 338 track_language_ = str; | 345 track_language_ = str; |
|
wolenetz
2016/03/05 03:26:21
Either here or when using track_language_ elsewher
servolk
2016/03/07 23:45:02
Done.
| |
| 339 return true; | 346 return true; |
| 340 } | 347 } |
| 341 | 348 |
| 342 return true; | 349 return true; |
| 343 } | 350 } |
| 344 | 351 |
| 345 } // namespace media | 352 } // namespace media |
| OLD | NEW |