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 "webkit/media/crypto/ppapi/clear_key_cdm.h" | 5 #include "webkit/media/crypto/ppapi/clear_key_cdm.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <sstream> | 8 #include <sstream> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 cdm::VideoFrame* decoded_frame) { | 405 cdm::VideoFrame* decoded_frame) { |
406 DVLOG(1) << "DecryptAndDecodeFrame()"; | 406 DVLOG(1) << "DecryptAndDecodeFrame()"; |
407 TRACE_EVENT0("eme", "ClearKeyCdm::DecryptAndDecodeFrame"); | 407 TRACE_EVENT0("eme", "ClearKeyCdm::DecryptAndDecodeFrame"); |
408 | 408 |
409 scoped_refptr<media::DecoderBuffer> buffer; | 409 scoped_refptr<media::DecoderBuffer> buffer; |
410 cdm::Status status = DecryptToMediaDecoderBuffer(encrypted_buffer, &buffer); | 410 cdm::Status status = DecryptToMediaDecoderBuffer(encrypted_buffer, &buffer); |
411 | 411 |
412 if (status != cdm::kSuccess) | 412 if (status != cdm::kSuccess) |
413 return status; | 413 return status; |
414 | 414 |
415 DCHECK(status == cdm::kSuccess); | 415 const uint8_t* data = NULL; |
416 DCHECK(buffer); | 416 int32_t size = 0; |
417 return video_decoder_->DecodeFrame(buffer.get()->GetData(), | 417 int64_t timestamp = 0; |
418 buffer->GetDataSize(), | 418 if (!buffer->IsEndOfStream()) { |
419 encrypted_buffer.timestamp, | 419 data = buffer->GetData(); |
420 decoded_frame); | 420 size = buffer->GetDataSize(); |
| 421 timestamp = encrypted_buffer.timestamp; |
| 422 } |
| 423 |
| 424 return video_decoder_->DecodeFrame(data, size, timestamp, decoded_frame); |
421 } | 425 } |
422 | 426 |
423 cdm::Status ClearKeyCdm::DecryptAndDecodeSamples( | 427 cdm::Status ClearKeyCdm::DecryptAndDecodeSamples( |
424 const cdm::InputBuffer& encrypted_buffer, | 428 const cdm::InputBuffer& encrypted_buffer, |
425 cdm::AudioFrames* audio_frames) { | 429 cdm::AudioFrames* audio_frames) { |
426 DVLOG(1) << "DecryptAndDecodeSamples()"; | 430 DVLOG(1) << "DecryptAndDecodeSamples()"; |
427 | 431 |
428 scoped_refptr<media::DecoderBuffer> buffer; | 432 scoped_refptr<media::DecoderBuffer> buffer; |
429 cdm::Status status = DecryptToMediaDecoderBuffer(encrypted_buffer, &buffer); | 433 cdm::Status status = DecryptToMediaDecoderBuffer(encrypted_buffer, &buffer); |
430 | 434 |
431 if (status != cdm::kSuccess) | 435 if (status != cdm::kSuccess) |
432 return status; | 436 return status; |
433 | 437 |
434 #if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER) | 438 #if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER) |
435 DCHECK(status == cdm::kSuccess); | 439 const uint8_t* data = NULL; |
436 DCHECK(buffer); | 440 int32_t size = 0; |
437 return audio_decoder_->DecodeBuffer(buffer.get()->GetData(), | 441 int64_t timestamp = 0; |
438 buffer->GetDataSize(), | 442 if (!buffer->IsEndOfStream()) { |
439 encrypted_buffer.timestamp, | 443 data = buffer->GetData(); |
440 audio_frames); | 444 size = buffer->GetDataSize(); |
| 445 timestamp = encrypted_buffer.timestamp; |
| 446 } |
| 447 |
| 448 return audio_decoder_->DecodeBuffer(data, size, timestamp, audio_frames); |
441 #elif defined(CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER) | 449 #elif defined(CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER) |
442 int64 timestamp_in_microseconds = kNoTimestamp; | 450 int64 timestamp_in_microseconds = kNoTimestamp; |
443 if (!buffer->IsEndOfStream()) { | 451 if (!buffer->IsEndOfStream()) { |
444 timestamp_in_microseconds = buffer->GetTimestamp().InMicroseconds(); | 452 timestamp_in_microseconds = buffer->GetTimestamp().InMicroseconds(); |
445 DCHECK(timestamp_in_microseconds != kNoTimestamp); | 453 DCHECK(timestamp_in_microseconds != kNoTimestamp); |
446 } | 454 } |
447 return GenerateFakeAudioFrames(timestamp_in_microseconds, audio_frames); | 455 return GenerateFakeAudioFrames(timestamp_in_microseconds, audio_frames); |
448 #else | 456 #else |
449 return cdm::kSuccess; | 457 return cdm::kSuccess; |
450 #endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER | 458 #endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
549 int samples_generated = GenerateFakeAudioFramesFromDuration( | 557 int samples_generated = GenerateFakeAudioFramesFromDuration( |
550 timestamp_in_microseconds - CurrentTimeStampInMicroseconds(), | 558 timestamp_in_microseconds - CurrentTimeStampInMicroseconds(), |
551 audio_frames); | 559 audio_frames); |
552 total_samples_generated_ += samples_generated; | 560 total_samples_generated_ += samples_generated; |
553 | 561 |
554 return samples_generated == 0 ? cdm::kNeedMoreData : cdm::kSuccess; | 562 return samples_generated == 0 ? cdm::kNeedMoreData : cdm::kSuccess; |
555 } | 563 } |
556 #endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER | 564 #endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER |
557 | 565 |
558 } // namespace webkit_media | 566 } // namespace webkit_media |
OLD | NEW |