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/webm/webm_tracks_parser.h" | 5 #include "media/webm/webm_tracks_parser.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
9 #include "media/base/buffers.h" | 9 #include "media/base/buffers.h" |
10 #include "media/webm/webm_constants.h" | 10 #include "media/webm/webm_constants.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 | 24 |
25 if (codec_id == kWebMCodecMetadata) | 25 if (codec_id == kWebMCodecMetadata) |
26 return kTextMetadata; | 26 return kTextMetadata; |
27 | 27 |
28 return kTextNone; | 28 return kTextNone; |
29 } | 29 } |
30 | 30 |
31 WebMTracksParser::WebMTracksParser(const LogCB& log_cb, bool ignore_text_tracks) | 31 WebMTracksParser::WebMTracksParser(const LogCB& log_cb, bool ignore_text_tracks) |
32 : track_type_(-1), | 32 : track_type_(-1), |
33 track_num_(-1), | 33 track_num_(-1), |
| 34 seek_pre_roll_(-1), |
| 35 codec_delay_(-1), |
34 audio_track_num_(-1), | 36 audio_track_num_(-1), |
35 video_track_num_(-1), | 37 video_track_num_(-1), |
36 ignore_text_tracks_(ignore_text_tracks), | 38 ignore_text_tracks_(ignore_text_tracks), |
37 log_cb_(log_cb), | 39 log_cb_(log_cb), |
38 audio_client_(log_cb), | 40 audio_client_(log_cb), |
39 video_client_(log_cb) { | 41 video_client_(log_cb) { |
40 } | 42 } |
41 | 43 |
42 WebMTracksParser::~WebMTracksParser() {} | 44 WebMTracksParser::~WebMTracksParser() {} |
43 | 45 |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 content_encodings()[0]->encryption_key_id(); | 156 content_encodings()[0]->encryption_key_id(); |
155 } | 157 } |
156 | 158 |
157 if (track_type_ == kWebMTrackTypeAudio) { | 159 if (track_type_ == kWebMTrackTypeAudio) { |
158 if (audio_track_num_ == -1) { | 160 if (audio_track_num_ == -1) { |
159 audio_track_num_ = track_num_; | 161 audio_track_num_ = track_num_; |
160 audio_encryption_key_id_ = encryption_key_id; | 162 audio_encryption_key_id_ = encryption_key_id; |
161 | 163 |
162 DCHECK(!audio_decoder_config_.IsValidConfig()); | 164 DCHECK(!audio_decoder_config_.IsValidConfig()); |
163 if (!audio_client_.InitializeConfig( | 165 if (!audio_client_.InitializeConfig( |
164 codec_id_, codec_private_, !audio_encryption_key_id_.empty(), | 166 codec_id_, codec_private_, seek_pre_roll_, codec_delay_, |
165 &audio_decoder_config_)) { | 167 !audio_encryption_key_id_.empty(), &audio_decoder_config_)) { |
166 return false; | 168 return false; |
167 } | 169 } |
168 } else { | 170 } else { |
169 MEDIA_LOG(log_cb_) << "Ignoring audio track " << track_num_; | 171 MEDIA_LOG(log_cb_) << "Ignoring audio track " << track_num_; |
170 ignored_tracks_.insert(track_num_); | 172 ignored_tracks_.insert(track_num_); |
171 } | 173 } |
172 } else if (track_type_ == kWebMTrackTypeVideo) { | 174 } else if (track_type_ == kWebMTrackTypeVideo) { |
173 if (video_track_num_ == -1) { | 175 if (video_track_num_ == -1) { |
174 video_track_num_ = track_num_; | 176 video_track_num_ = track_num_; |
175 video_encryption_key_id_ = encryption_key_id; | 177 video_encryption_key_id_ = encryption_key_id; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 bool WebMTracksParser::OnUInt(int id, int64 val) { | 221 bool WebMTracksParser::OnUInt(int id, int64 val) { |
220 int64* dst = NULL; | 222 int64* dst = NULL; |
221 | 223 |
222 switch (id) { | 224 switch (id) { |
223 case kWebMIdTrackNumber: | 225 case kWebMIdTrackNumber: |
224 dst = &track_num_; | 226 dst = &track_num_; |
225 break; | 227 break; |
226 case kWebMIdTrackType: | 228 case kWebMIdTrackType: |
227 dst = &track_type_; | 229 dst = &track_type_; |
228 break; | 230 break; |
| 231 case kWebMIdSeekPreRoll: |
| 232 dst = &seek_pre_roll_; |
| 233 break; |
| 234 case kWebMIdCodecDelay: |
| 235 dst = &codec_delay_; |
| 236 break; |
229 default: | 237 default: |
230 return true; | 238 return true; |
231 } | 239 } |
232 | 240 |
233 if (*dst != -1) { | 241 if (*dst != -1) { |
234 MEDIA_LOG(log_cb_) << "Multiple values for id " << std::hex << id | 242 MEDIA_LOG(log_cb_) << "Multiple values for id " << std::hex << id |
235 << " specified"; | 243 << " specified"; |
236 return false; | 244 return false; |
237 } | 245 } |
238 | 246 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 | 283 |
276 if (id == kWebMIdLanguage) { | 284 if (id == kWebMIdLanguage) { |
277 track_language_ = str; | 285 track_language_ = str; |
278 return true; | 286 return true; |
279 } | 287 } |
280 | 288 |
281 return true; | 289 return true; |
282 } | 290 } |
283 | 291 |
284 } // namespace media | 292 } // namespace media |
OLD | NEW |