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

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

Issue 784493002: Encrypted Media: Rename NeedKey to EncryptedMediaInitData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments addressed Created 6 years 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/webm/webm_stream_parser.h ('k') | media/tools/player_x11/player_x11.cc » ('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/formats/webm/webm_cluster_parser.h" 12 #include "media/formats/webm/webm_cluster_parser.h"
13 #include "media/formats/webm/webm_constants.h" 13 #include "media/formats/webm/webm_constants.h"
14 #include "media/formats/webm/webm_content_encodings.h" 14 #include "media/formats/webm/webm_content_encodings.h"
15 #include "media/formats/webm/webm_crypto_helpers.h" 15 #include "media/formats/webm/webm_crypto_helpers.h"
16 #include "media/formats/webm/webm_info_parser.h" 16 #include "media/formats/webm/webm_info_parser.h"
17 #include "media/formats/webm/webm_tracks_parser.h" 17 #include "media/formats/webm/webm_tracks_parser.h"
18 18
19 namespace media { 19 namespace media {
20 20
21 WebMStreamParser::WebMStreamParser() 21 WebMStreamParser::WebMStreamParser()
22 : state_(kWaitingForInit), 22 : state_(kWaitingForInit),
23 unknown_segment_size_(false) { 23 unknown_segment_size_(false) {
24 } 24 }
25 25
26 WebMStreamParser::~WebMStreamParser() { 26 WebMStreamParser::~WebMStreamParser() {
27 } 27 }
28 28
29 void WebMStreamParser::Init(const InitCB& init_cb, 29 void WebMStreamParser::Init(
30 const NewConfigCB& config_cb, 30 const InitCB& init_cb,
31 const NewBuffersCB& new_buffers_cb, 31 const NewConfigCB& config_cb,
32 bool ignore_text_tracks, 32 const NewBuffersCB& new_buffers_cb,
33 const NeedKeyCB& need_key_cb, 33 bool ignore_text_tracks,
34 const NewMediaSegmentCB& new_segment_cb, 34 const EncryptedMediaInitDataCB& encrypted_media_init_data_cb,
35 const base::Closure& end_of_segment_cb, 35 const NewMediaSegmentCB& new_segment_cb,
36 const LogCB& log_cb) { 36 const base::Closure& end_of_segment_cb,
37 const LogCB& log_cb) {
37 DCHECK_EQ(state_, kWaitingForInit); 38 DCHECK_EQ(state_, kWaitingForInit);
38 DCHECK(init_cb_.is_null()); 39 DCHECK(init_cb_.is_null());
39 DCHECK(!init_cb.is_null()); 40 DCHECK(!init_cb.is_null());
40 DCHECK(!config_cb.is_null()); 41 DCHECK(!config_cb.is_null());
41 DCHECK(!new_buffers_cb.is_null()); 42 DCHECK(!new_buffers_cb.is_null());
42 DCHECK(!need_key_cb.is_null()); 43 DCHECK(!encrypted_media_init_data_cb.is_null());
43 DCHECK(!new_segment_cb.is_null()); 44 DCHECK(!new_segment_cb.is_null());
44 DCHECK(!end_of_segment_cb.is_null()); 45 DCHECK(!end_of_segment_cb.is_null());
45 46
46 ChangeState(kParsingHeaders); 47 ChangeState(kParsingHeaders);
47 init_cb_ = init_cb; 48 init_cb_ = init_cb;
48 config_cb_ = config_cb; 49 config_cb_ = config_cb;
49 new_buffers_cb_ = new_buffers_cb; 50 new_buffers_cb_ = new_buffers_cb;
50 ignore_text_tracks_ = ignore_text_tracks; 51 ignore_text_tracks_ = ignore_text_tracks;
51 need_key_cb_ = need_key_cb; 52 encrypted_media_init_data_cb_ = encrypted_media_init_data_cb;
52 new_segment_cb_ = new_segment_cb; 53 new_segment_cb_ = new_segment_cb;
53 end_of_segment_cb_ = end_of_segment_cb; 54 end_of_segment_cb_ = end_of_segment_cb;
54 log_cb_ = log_cb; 55 log_cb_ = log_cb;
55 } 56 }
56 57
57 void WebMStreamParser::Flush() { 58 void WebMStreamParser::Flush() {
58 DCHECK_NE(state_, kWaitingForInit); 59 DCHECK_NE(state_, kWaitingForInit);
59 60
60 byte_queue_.Reset(); 61 byte_queue_.Reset();
61 if (cluster_parser_) 62 if (cluster_parser_)
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 !info_parser.date_utc().is_null()) { 210 !info_parser.date_utc().is_null()) {
210 params.liveness = DemuxerStream::LIVENESS_LIVE; 211 params.liveness = DemuxerStream::LIVENESS_LIVE;
211 } else if (info_parser.duration() >= 0) { 212 } else if (info_parser.duration() >= 0) {
212 params.liveness = DemuxerStream::LIVENESS_RECORDED; 213 params.liveness = DemuxerStream::LIVENESS_RECORDED;
213 } else { 214 } else {
214 params.liveness = DemuxerStream::LIVENESS_UNKNOWN; 215 params.liveness = DemuxerStream::LIVENESS_UNKNOWN;
215 } 216 }
216 217
217 const AudioDecoderConfig& audio_config = tracks_parser.audio_decoder_config(); 218 const AudioDecoderConfig& audio_config = tracks_parser.audio_decoder_config();
218 if (audio_config.is_encrypted()) 219 if (audio_config.is_encrypted())
219 FireNeedKey(tracks_parser.audio_encryption_key_id()); 220 OnEncryptedMediaInitData(tracks_parser.audio_encryption_key_id());
220 221
221 const VideoDecoderConfig& video_config = tracks_parser.video_decoder_config(); 222 const VideoDecoderConfig& video_config = tracks_parser.video_decoder_config();
222 if (video_config.is_encrypted()) 223 if (video_config.is_encrypted())
223 FireNeedKey(tracks_parser.video_encryption_key_id()); 224 OnEncryptedMediaInitData(tracks_parser.video_encryption_key_id());
224 225
225 if (!config_cb_.Run(audio_config, 226 if (!config_cb_.Run(audio_config,
226 video_config, 227 video_config,
227 tracks_parser.text_tracks())) { 228 tracks_parser.text_tracks())) {
228 DVLOG(1) << "New config data isn't allowed."; 229 DVLOG(1) << "New config data isn't allowed.";
229 return -1; 230 return -1;
230 } 231 }
231 232
232 cluster_parser_.reset(new WebMClusterParser( 233 cluster_parser_.reset(new WebMClusterParser(
233 info_parser.timecode_scale(), 234 info_parser.timecode_scale(),
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 } 269 }
269 270
270 if (cluster_ended) { 271 if (cluster_ended) {
271 ChangeState(kParsingHeaders); 272 ChangeState(kParsingHeaders);
272 end_of_segment_cb_.Run(); 273 end_of_segment_cb_.Run();
273 } 274 }
274 275
275 return bytes_parsed; 276 return bytes_parsed;
276 } 277 }
277 278
278 void WebMStreamParser::FireNeedKey(const std::string& key_id) { 279 void WebMStreamParser::OnEncryptedMediaInitData(const std::string& key_id) {
279 std::vector<uint8> key_id_vector(key_id.begin(), key_id.end()); 280 std::vector<uint8> key_id_vector(key_id.begin(), key_id.end());
280 need_key_cb_.Run(kWebMInitDataType, key_id_vector); 281 encrypted_media_init_data_cb_.Run(kWebMInitDataType, key_id_vector);
281 } 282 }
282 283
283 } // namespace media 284 } // namespace media
OLDNEW
« no previous file with comments | « media/formats/webm/webm_stream_parser.h ('k') | media/tools/player_x11/player_x11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698