Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(326)

Side by Side Diff: media/formats/webm/webm_stream_parser.cc

Issue 1716503002: Basic media tracks implementation for media stream parsers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/formats/mpeg/mpeg_audio_stream_parser_base.cc ('k') | media/media.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "media/base/media_track.h"
13 #include "media/base/media_tracks.h"
12 #include "media/base/timestamp_constants.h" 14 #include "media/base/timestamp_constants.h"
13 #include "media/formats/webm/webm_cluster_parser.h" 15 #include "media/formats/webm/webm_cluster_parser.h"
14 #include "media/formats/webm/webm_constants.h" 16 #include "media/formats/webm/webm_constants.h"
15 #include "media/formats/webm/webm_content_encodings.h" 17 #include "media/formats/webm/webm_content_encodings.h"
16 #include "media/formats/webm/webm_info_parser.h" 18 #include "media/formats/webm/webm_info_parser.h"
17 #include "media/formats/webm/webm_tracks_parser.h" 19 #include "media/formats/webm/webm_tracks_parser.h"
18 20
19 namespace media { 21 namespace media {
20 22
21 WebMStreamParser::WebMStreamParser() 23 WebMStreamParser::WebMStreamParser()
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 } 217 }
216 218
217 const AudioDecoderConfig& audio_config = tracks_parser.audio_decoder_config(); 219 const AudioDecoderConfig& audio_config = tracks_parser.audio_decoder_config();
218 if (audio_config.is_encrypted()) 220 if (audio_config.is_encrypted())
219 OnEncryptedMediaInitData(tracks_parser.audio_encryption_key_id()); 221 OnEncryptedMediaInitData(tracks_parser.audio_encryption_key_id());
220 222
221 const VideoDecoderConfig& video_config = tracks_parser.video_decoder_config(); 223 const VideoDecoderConfig& video_config = tracks_parser.video_decoder_config();
222 if (video_config.is_encrypted()) 224 if (video_config.is_encrypted())
223 OnEncryptedMediaInitData(tracks_parser.video_encryption_key_id()); 225 OnEncryptedMediaInitData(tracks_parser.video_encryption_key_id());
224 226
225 if (!config_cb_.Run(audio_config, 227 scoped_ptr<MediaTracks> media_tracks(new MediaTracks());
226 video_config, 228 // TODO(servolk): Implement proper sourcing of media track info as described
227 tracks_parser.text_tracks())) { 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())) {
228 DVLOG(1) << "New config data isn't allowed."; 237 DVLOG(1) << "New config data isn't allowed.";
229 return -1; 238 return -1;
230 } 239 }
231 240
232 cluster_parser_.reset(new WebMClusterParser( 241 cluster_parser_.reset(new WebMClusterParser(
233 info_parser.timecode_scale(), tracks_parser.audio_track_num(), 242 info_parser.timecode_scale(), tracks_parser.audio_track_num(),
234 tracks_parser.GetAudioDefaultDuration(timecode_scale_in_us), 243 tracks_parser.GetAudioDefaultDuration(timecode_scale_in_us),
235 tracks_parser.video_track_num(), 244 tracks_parser.video_track_num(),
236 tracks_parser.GetVideoDefaultDuration(timecode_scale_in_us), 245 tracks_parser.GetVideoDefaultDuration(timecode_scale_in_us),
237 tracks_parser.text_tracks(), tracks_parser.ignored_tracks(), 246 tracks_parser.text_tracks(), tracks_parser.ignored_tracks(),
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 281
273 return bytes_parsed; 282 return bytes_parsed;
274 } 283 }
275 284
276 void WebMStreamParser::OnEncryptedMediaInitData(const std::string& key_id) { 285 void WebMStreamParser::OnEncryptedMediaInitData(const std::string& key_id) {
277 std::vector<uint8_t> key_id_vector(key_id.begin(), key_id.end()); 286 std::vector<uint8_t> key_id_vector(key_id.begin(), key_id.end());
278 encrypted_media_init_data_cb_.Run(EmeInitDataType::WEBM, key_id_vector); 287 encrypted_media_init_data_cb_.Run(EmeInitDataType::WEBM, key_id_vector);
279 } 288 }
280 289
281 } // namespace media 290 } // namespace media
OLDNEW
« no previous file with comments | « media/formats/mpeg/mpeg_audio_stream_parser_base.cc ('k') | media/media.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698