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

Side by Side Diff: media/filters/decrypting_audio_decoder.cc

Issue 11342031: Add DecryptingDemuxerStream. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 1 month 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 | Annotate | Revision Log
OLDNEW
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/filters/decrypting_audio_decoder.h" 5 #include "media/filters/decrypting_audio_decoder.h"
6 6
7 #include <cstdlib> 7 #include <cstdlib>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
11 #include "base/location.h" 11 #include "base/location.h"
12 #include "base/logging.h"
12 #include "base/message_loop_proxy.h" 13 #include "base/message_loop_proxy.h"
13 #include "base/logging.h"
14 #include "media/base/audio_decoder_config.h" 14 #include "media/base/audio_decoder_config.h"
15 #include "media/base/bind_to_loop.h" 15 #include "media/base/bind_to_loop.h"
16 #include "media/base/buffers.h" 16 #include "media/base/buffers.h"
17 #include "media/base/data_buffer.h" 17 #include "media/base/data_buffer.h"
18 #include "media/base/decoder_buffer.h" 18 #include "media/base/decoder_buffer.h"
19 #include "media/base/decryptor.h" 19 #include "media/base/decryptor.h"
20 #include "media/base/demuxer_stream.h" 20 #include "media/base/demuxer_stream.h"
21 #include "media/base/pipeline.h" 21 #include "media/base/pipeline.h"
22 22
23 namespace media { 23 namespace media {
(...skipping 10 matching lines...) Expand all
34 kOutOfSyncThresholdInMicroseconds; 34 kOutOfSyncThresholdInMicroseconds;
35 } 35 }
36 36
37 DecryptingAudioDecoder::DecryptingAudioDecoder( 37 DecryptingAudioDecoder::DecryptingAudioDecoder(
38 const MessageLoopFactoryCB& message_loop_factory_cb, 38 const MessageLoopFactoryCB& message_loop_factory_cb,
39 const RequestDecryptorNotificationCB& request_decryptor_notification_cb) 39 const RequestDecryptorNotificationCB& request_decryptor_notification_cb)
40 : message_loop_factory_cb_(message_loop_factory_cb), 40 : message_loop_factory_cb_(message_loop_factory_cb),
41 state_(kUninitialized), 41 state_(kUninitialized),
42 request_decryptor_notification_cb_(request_decryptor_notification_cb), 42 request_decryptor_notification_cb_(request_decryptor_notification_cb),
43 decryptor_(NULL), 43 decryptor_(NULL),
44 key_added_while_pending_decode_(false), 44 key_added_while_decode_pending_(false),
45 bits_per_channel_(0), 45 bits_per_channel_(0),
46 channel_layout_(CHANNEL_LAYOUT_NONE), 46 channel_layout_(CHANNEL_LAYOUT_NONE),
47 samples_per_second_(0), 47 samples_per_second_(0),
48 bytes_per_sample_(0), 48 bytes_per_sample_(0),
49 output_timestamp_base_(kNoTimestamp()), 49 output_timestamp_base_(kNoTimestamp()),
50 total_samples_decoded_(0) { 50 total_samples_decoded_(0) {
51 } 51 }
52 52
53 void DecryptingAudioDecoder::Initialize( 53 void DecryptingAudioDecoder::Initialize(
54 const scoped_refptr<DemuxerStream>& stream, 54 const scoped_refptr<DemuxerStream>& stream,
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 int buffer_size, 321 int buffer_size,
322 Decryptor::Status status, 322 Decryptor::Status status,
323 const Decryptor::AudioBuffers& frames) { 323 const Decryptor::AudioBuffers& frames) {
324 DVLOG(3) << "DoDeliverFrame() - status: " << status; 324 DVLOG(3) << "DoDeliverFrame() - status: " << status;
325 DCHECK(message_loop_->BelongsToCurrentThread()); 325 DCHECK(message_loop_->BelongsToCurrentThread());
326 DCHECK_EQ(state_, kPendingDecode) << state_; 326 DCHECK_EQ(state_, kPendingDecode) << state_;
327 DCHECK(!read_cb_.is_null()); 327 DCHECK(!read_cb_.is_null());
328 DCHECK(pending_buffer_to_decode_); 328 DCHECK(pending_buffer_to_decode_);
329 DCHECK(queued_audio_frames_.empty()); 329 DCHECK(queued_audio_frames_.empty());
330 330
331 bool need_to_try_again_if_nokey_is_returned = key_added_while_pending_decode_; 331 bool need_to_try_again_if_nokey_is_returned = key_added_while_decode_pending_;
332 key_added_while_pending_decode_ = false; 332 key_added_while_decode_pending_ = false;
333 333
334 scoped_refptr<DecoderBuffer> scoped_pending_buffer_to_decode = 334 scoped_refptr<DecoderBuffer> scoped_pending_buffer_to_decode =
335 pending_buffer_to_decode_; 335 pending_buffer_to_decode_;
336 pending_buffer_to_decode_ = NULL; 336 pending_buffer_to_decode_ = NULL;
337 337
338 if (!reset_cb_.is_null()) { 338 if (!reset_cb_.is_null()) {
339 base::ResetAndReturn(&read_cb_).Run(kAborted, NULL); 339 base::ResetAndReturn(&read_cb_).Run(kAborted, NULL);
340 DoReset(); 340 DoReset();
341 return; 341 return;
342 } 342 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 393
394 state_ = kIdle; 394 state_ = kIdle;
395 base::ResetAndReturn(&read_cb_).Run(kOk, queued_audio_frames_.front()); 395 base::ResetAndReturn(&read_cb_).Run(kOk, queued_audio_frames_.front());
396 queued_audio_frames_.pop_front(); 396 queued_audio_frames_.pop_front();
397 } 397 }
398 398
399 void DecryptingAudioDecoder::OnKeyAdded() { 399 void DecryptingAudioDecoder::OnKeyAdded() {
400 DCHECK(message_loop_->BelongsToCurrentThread()); 400 DCHECK(message_loop_->BelongsToCurrentThread());
401 401
402 if (state_ == kPendingDecode) { 402 if (state_ == kPendingDecode) {
403 key_added_while_pending_decode_ = true; 403 key_added_while_decode_pending_ = true;
404 return; 404 return;
405 } 405 }
406 406
407 if (state_ == kWaitingForKey) { 407 if (state_ == kWaitingForKey) {
408 state_ = kPendingDecode; 408 state_ = kPendingDecode;
409 DecodePendingBuffer(); 409 DecodePendingBuffer();
410 } 410 }
411 } 411 }
412 412
413 void DecryptingAudioDecoder::DoReset() { 413 void DecryptingAudioDecoder::DoReset() {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 456
457 base::TimeDelta DecryptingAudioDecoder::NumberOfSamplesToDuration( 457 base::TimeDelta DecryptingAudioDecoder::NumberOfSamplesToDuration(
458 int number_of_samples) const { 458 int number_of_samples) const {
459 DCHECK(samples_per_second_); 459 DCHECK(samples_per_second_);
460 return base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond * 460 return base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond *
461 number_of_samples / 461 number_of_samples /
462 samples_per_second_); 462 samples_per_second_);
463 } 463 }
464 464
465 } // namespace media 465 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/decrypting_audio_decoder.h ('k') | media/filters/decrypting_audio_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698