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

Unified Diff: webkit/media/crypto/ppapi/clear_key_cdm.cc

Issue 12212079: Update Cdm Wrapper and ClearKeyCdm to work with CDM interface version 4. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/media/crypto/ppapi/clear_key_cdm.h ('k') | webkit/media/crypto/ppapi/fake_cdm_video_decoder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/media/crypto/ppapi/clear_key_cdm.cc
diff --git a/webkit/media/crypto/ppapi/clear_key_cdm.cc b/webkit/media/crypto/ppapi/clear_key_cdm.cc
index 5192041a259830698d30ec205e3869903dedd868..1665588e1b9305f2dd60f65b62526ef5e5199224 100644
--- a/webkit/media/crypto/ppapi/clear_key_cdm.cc
+++ b/webkit/media/crypto/ppapi/clear_key_cdm.cc
@@ -125,18 +125,22 @@ void INITIALIZE_CDM_MODULE() {
void DeinitializeCdmModule() {
}
-cdm::ContentDecryptionModule* CreateCdmInstance(const char* key_system_arg,
- int key_system_size,
- cdm::Allocator* allocator,
- cdm::Host* host) {
+void* CreateCdmInstance(
+ int cdm_interface_version,
+ const char* key_system, int key_system_size,
+ GetCdmHostFunc get_cdm_host_func, void* user_data) {
DVLOG(1) << "CreateCdmInstance()";
- DCHECK_EQ(std::string(key_system_arg, key_system_size), kExternalClearKey);
- return new webkit_media::ClearKeyCdm(allocator, host);
-}
-void DestroyCdmInstance(cdm::ContentDecryptionModule* instance) {
- DVLOG(1) << "DestroyCdmInstance()";
- delete instance;
+ if (cdm_interface_version != cdm::kCdmInterfaceVersion)
+ return NULL;
+
+ cdm::Host* host = static_cast<cdm::Host*>(
+ get_cdm_host_func(cdm::kHostInterfaceVersion, user_data));
+ if (!host)
+ return NULL;
+
+ return static_cast<cdm::ContentDecryptionModule*>(
+ new webkit_media::ClearKeyCdm(host));
}
const char* GetCdmVersion() {
@@ -191,16 +195,14 @@ void ClearKeyCdm::Client::NeedKey(const std::string& key_system,
NOTREACHED();
}
-ClearKeyCdm::ClearKeyCdm(cdm::Allocator* allocator, cdm::Host* host)
+ClearKeyCdm::ClearKeyCdm(cdm::Host* host)
: decryptor_(base::Bind(&Client::KeyAdded, base::Unretained(&client_)),
base::Bind(&Client::KeyError, base::Unretained(&client_)),
base::Bind(&Client::KeyMessage, base::Unretained(&client_)),
base::Bind(&Client::NeedKey, base::Unretained(&client_))),
- allocator_(allocator),
host_(host),
timer_delay_ms_(kInitialTimerDelayMs),
timer_set_(false) {
- DCHECK(allocator_);
#if defined(CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER)
channel_count_ = 0;
bits_per_channel_ = 0;
@@ -314,7 +316,7 @@ cdm::Status ClearKeyCdm::Decrypt(
DCHECK(buffer->GetData());
decrypted_block->SetDecryptedBuffer(
- allocator_->Allocate(buffer->GetDataSize()));
+ host_->Allocate(buffer->GetDataSize()));
memcpy(reinterpret_cast<void*>(decrypted_block->DecryptedBuffer()->Data()),
buffer->GetData(),
buffer->GetDataSize());
@@ -328,7 +330,7 @@ cdm::Status ClearKeyCdm::InitializeAudioDecoder(
const cdm::AudioDecoderConfig& audio_decoder_config) {
#if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER)
if (!audio_decoder_)
- audio_decoder_.reset(new webkit_media::FFmpegCdmAudioDecoder(allocator_));
+ audio_decoder_.reset(new webkit_media::FFmpegCdmAudioDecoder(host_));
if (!audio_decoder_->Initialize(audio_decoder_config))
return cdm::kSessionError;
@@ -353,7 +355,7 @@ cdm::Status ClearKeyCdm::InitializeVideoDecoder(
}
// Any uninitialized decoder will be replaced.
- video_decoder_ = CreateVideoDecoder(allocator_, video_decoder_config);
+ video_decoder_ = CreateVideoDecoder(host_, video_decoder_config);
if (!video_decoder_)
return cdm::kSessionError;
@@ -458,6 +460,11 @@ cdm::Status ClearKeyCdm::DecryptAndDecodeSamples(
#endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER
}
+void ClearKeyCdm::Destroy() {
+ DVLOG(1) << "Destroy()";
+ delete this;
+}
+
void ClearKeyCdm::ScheduleNextHeartBeat() {
// Prepare the next heartbeat message and set timer.
std::ostringstream msg_stream;
@@ -526,7 +533,7 @@ int ClearKeyCdm::GenerateFakeAudioFramesFromDuration(
int64 timestamp = CurrentTimeStampInMicroseconds();
const int kHeaderSize = sizeof(timestamp) + sizeof(frame_size);
- audio_frames->SetFrameBuffer(allocator_->Allocate(kHeaderSize + frame_size));
+ audio_frames->SetFrameBuffer(host_->Allocate(kHeaderSize + frame_size));
uint8_t* data = audio_frames->FrameBuffer()->Data();
memcpy(data, &timestamp, sizeof(timestamp));
« no previous file with comments | « webkit/media/crypto/ppapi/clear_key_cdm.h ('k') | webkit/media/crypto/ppapi/fake_cdm_video_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698