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_stream_parser.h" | 5 #include "media/formats/webm/webm_stream_parser.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/strings/string_number_conversions.h" |
12 #include "media/base/media_track.h" | 13 #include "media/base/media_track.h" |
13 #include "media/base/media_tracks.h" | 14 #include "media/base/media_tracks.h" |
14 #include "media/base/timestamp_constants.h" | 15 #include "media/base/timestamp_constants.h" |
15 #include "media/formats/webm/webm_cluster_parser.h" | 16 #include "media/formats/webm/webm_cluster_parser.h" |
16 #include "media/formats/webm/webm_constants.h" | 17 #include "media/formats/webm/webm_constants.h" |
17 #include "media/formats/webm/webm_content_encodings.h" | 18 #include "media/formats/webm/webm_content_encodings.h" |
18 #include "media/formats/webm/webm_info_parser.h" | 19 #include "media/formats/webm/webm_info_parser.h" |
19 #include "media/formats/webm/webm_tracks_parser.h" | 20 #include "media/formats/webm/webm_tracks_parser.h" |
20 | 21 |
21 namespace media { | 22 namespace media { |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 } | 218 } |
218 | 219 |
219 const AudioDecoderConfig& audio_config = tracks_parser.audio_decoder_config(); | 220 const AudioDecoderConfig& audio_config = tracks_parser.audio_decoder_config(); |
220 if (audio_config.is_encrypted()) | 221 if (audio_config.is_encrypted()) |
221 OnEncryptedMediaInitData(tracks_parser.audio_encryption_key_id()); | 222 OnEncryptedMediaInitData(tracks_parser.audio_encryption_key_id()); |
222 | 223 |
223 const VideoDecoderConfig& video_config = tracks_parser.video_decoder_config(); | 224 const VideoDecoderConfig& video_config = tracks_parser.video_decoder_config(); |
224 if (video_config.is_encrypted()) | 225 if (video_config.is_encrypted()) |
225 OnEncryptedMediaInitData(tracks_parser.video_encryption_key_id()); | 226 OnEncryptedMediaInitData(tracks_parser.video_encryption_key_id()); |
226 | 227 |
227 scoped_ptr<MediaTracks> media_tracks(new MediaTracks()); | 228 scoped_ptr<MediaTracks> media_tracks = tracks_parser.media_tracks(); |
228 // TODO(servolk): Implement proper sourcing of media track info as described | 229 CHECK(media_tracks.get()); |
229 // in crbug.com/590085 | |
230 if (audio_config.IsValidConfig()) { | |
231 media_tracks->AddAudioTrack(audio_config, "audio", "", "", ""); | |
232 } | |
233 if (video_config.IsValidConfig()) { | |
234 media_tracks->AddVideoTrack(video_config, "video", "", "", ""); | |
235 } | |
236 if (!config_cb_.Run(std::move(media_tracks), tracks_parser.text_tracks())) { | 230 if (!config_cb_.Run(std::move(media_tracks), tracks_parser.text_tracks())) { |
237 DVLOG(1) << "New config data isn't allowed."; | 231 DVLOG(1) << "New config data isn't allowed."; |
238 return -1; | 232 return -1; |
239 } | 233 } |
240 | 234 |
241 cluster_parser_.reset(new WebMClusterParser( | 235 cluster_parser_.reset(new WebMClusterParser( |
242 info_parser.timecode_scale(), tracks_parser.audio_track_num(), | 236 info_parser.timecode_scale(), tracks_parser.audio_track_num(), |
243 tracks_parser.GetAudioDefaultDuration(timecode_scale_in_us), | 237 tracks_parser.GetAudioDefaultDuration(timecode_scale_in_us), |
244 tracks_parser.video_track_num(), | 238 tracks_parser.video_track_num(), |
245 tracks_parser.GetVideoDefaultDuration(timecode_scale_in_us), | 239 tracks_parser.GetVideoDefaultDuration(timecode_scale_in_us), |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 | 275 |
282 return bytes_parsed; | 276 return bytes_parsed; |
283 } | 277 } |
284 | 278 |
285 void WebMStreamParser::OnEncryptedMediaInitData(const std::string& key_id) { | 279 void WebMStreamParser::OnEncryptedMediaInitData(const std::string& key_id) { |
286 std::vector<uint8_t> key_id_vector(key_id.begin(), key_id.end()); | 280 std::vector<uint8_t> key_id_vector(key_id.begin(), key_id.end()); |
287 encrypted_media_init_data_cb_.Run(EmeInitDataType::WEBM, key_id_vector); | 281 encrypted_media_init_data_cb_.Run(EmeInitDataType::WEBM, key_id_vector); |
288 } | 282 } |
289 | 283 |
290 } // namespace media | 284 } // namespace media |
OLD | NEW |