| 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 <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 | 130 |
| 131 cdm::Status ClearKeyCdm::GenerateKeyRequest(const uint8_t* init_data, | 131 cdm::Status ClearKeyCdm::GenerateKeyRequest(const uint8_t* init_data, |
| 132 int init_data_size, | 132 int init_data_size, |
| 133 cdm::KeyMessage* key_request) { | 133 cdm::KeyMessage* key_request) { |
| 134 DVLOG(1) << "GenerateKeyRequest()"; | 134 DVLOG(1) << "GenerateKeyRequest()"; |
| 135 base::AutoLock auto_lock(client_lock_); | 135 base::AutoLock auto_lock(client_lock_); |
| 136 ScopedResetter<Client> auto_resetter(&client_); | 136 ScopedResetter<Client> auto_resetter(&client_); |
| 137 decryptor_.GenerateKeyRequest("", init_data, init_data_size); | 137 decryptor_.GenerateKeyRequest("", init_data, init_data_size); |
| 138 | 138 |
| 139 if (client_.status() != Client::kKeyMessage) | 139 if (client_.status() != Client::kKeyMessage) |
| 140 return cdm::kErrorUnknown; | 140 return cdm::kError; |
| 141 | 141 |
| 142 DCHECK(key_request); | 142 DCHECK(key_request); |
| 143 key_request->session_id = AllocateAndCopy(client_.session_id().data(), | 143 key_request->session_id = AllocateAndCopy(client_.session_id().data(), |
| 144 client_.session_id().size()); | 144 client_.session_id().size()); |
| 145 key_request->session_id_size = client_.session_id().size(); | 145 key_request->session_id_size = client_.session_id().size(); |
| 146 key_request->message = AllocateAndCopy(client_.key_message(), | 146 key_request->message = AllocateAndCopy(client_.key_message(), |
| 147 client_.key_message_length()); | 147 client_.key_message_length()); |
| 148 key_request->message_size = client_.key_message_length(); | 148 key_request->message_size = client_.key_message_length(); |
| 149 key_request->default_url = AllocateAndCopy(client_.default_url().data(), | 149 key_request->default_url = AllocateAndCopy(client_.default_url().data(), |
| 150 client_.default_url().size()); | 150 client_.default_url().size()); |
| 151 key_request->default_url_size = client_.default_url().size(); | 151 key_request->default_url_size = client_.default_url().size(); |
| 152 return cdm::kSuccess; | 152 return cdm::kSuccess; |
| 153 } | 153 } |
| 154 | 154 |
| 155 cdm::Status ClearKeyCdm::AddKey(const char* session_id, | 155 cdm::Status ClearKeyCdm::AddKey(const char* session_id, |
| 156 int session_id_size, | 156 int session_id_size, |
| 157 const uint8_t* key, | 157 const uint8_t* key, |
| 158 int key_size, | 158 int key_size, |
| 159 const uint8_t* key_id, | 159 const uint8_t* key_id, |
| 160 int key_id_size) { | 160 int key_id_size) { |
| 161 DVLOG(1) << "AddKey()"; | 161 DVLOG(1) << "AddKey()"; |
| 162 base::AutoLock auto_lock(client_lock_); | 162 base::AutoLock auto_lock(client_lock_); |
| 163 ScopedResetter<Client> auto_resetter(&client_); | 163 ScopedResetter<Client> auto_resetter(&client_); |
| 164 decryptor_.AddKey("", key, key_size, key_id, key_id_size, | 164 decryptor_.AddKey("", key, key_size, key_id, key_id_size, |
| 165 std::string(session_id, session_id_size)); | 165 std::string(session_id, session_id_size)); |
| 166 | 166 |
| 167 if (client_.status() != Client::kKeyAdded) | 167 if (client_.status() != Client::kKeyAdded) |
| 168 return cdm::kErrorUnknown; | 168 return cdm::kError; |
| 169 | 169 |
| 170 return cdm::kSuccess; | 170 return cdm::kSuccess; |
| 171 } | 171 } |
| 172 | 172 |
| 173 cdm::Status ClearKeyCdm::CancelKeyRequest(const char* session_id, | 173 cdm::Status ClearKeyCdm::CancelKeyRequest(const char* session_id, |
| 174 int session_id_size) { | 174 int session_id_size) { |
| 175 DVLOG(1) << "CancelKeyRequest()"; | 175 DVLOG(1) << "CancelKeyRequest()"; |
| 176 base::AutoLock auto_lock(client_lock_); | 176 base::AutoLock auto_lock(client_lock_); |
| 177 ScopedResetter<Client> auto_resetter(&client_); | 177 ScopedResetter<Client> auto_resetter(&client_); |
| 178 decryptor_.CancelKeyRequest("", std::string(session_id, session_id_size)); | 178 decryptor_.CancelKeyRequest("", std::string(session_id, session_id_size)); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 196 scoped_refptr<media::DecoderBuffer> decoder_buffer = | 196 scoped_refptr<media::DecoderBuffer> decoder_buffer = |
| 197 CopyDecoderBufferFrom(encrypted_buffer); | 197 CopyDecoderBufferFrom(encrypted_buffer); |
| 198 | 198 |
| 199 // Callback is called synchronously, so we can use variables on the stack. | 199 // Callback is called synchronously, so we can use variables on the stack. |
| 200 media::Decryptor::Status status; | 200 media::Decryptor::Status status; |
| 201 scoped_refptr<media::DecoderBuffer> buffer; | 201 scoped_refptr<media::DecoderBuffer> buffer; |
| 202 decryptor_.Decrypt(decoder_buffer, | 202 decryptor_.Decrypt(decoder_buffer, |
| 203 base::Bind(&CopyDecryptResults, &status, &buffer)); | 203 base::Bind(&CopyDecryptResults, &status, &buffer)); |
| 204 | 204 |
| 205 if (status == media::Decryptor::kError) | 205 if (status == media::Decryptor::kError) |
| 206 return cdm::kErrorUnknown; | 206 return cdm::kError; |
| 207 | 207 |
| 208 if (status == media::Decryptor::kNoKey) | 208 if (status == media::Decryptor::kNoKey) |
| 209 return cdm::kErrorNoKey; | 209 return cdm::kNoKey; |
| 210 | 210 |
| 211 DCHECK(buffer); | 211 DCHECK(buffer); |
| 212 int data_size = buffer->GetDataSize(); | 212 int data_size = buffer->GetDataSize(); |
| 213 decrypted_buffer->data = AllocateAndCopy(buffer->GetData(), data_size); | 213 decrypted_buffer->data = AllocateAndCopy(buffer->GetData(), data_size); |
| 214 decrypted_buffer->data_size = data_size; | 214 decrypted_buffer->data_size = data_size; |
| 215 decrypted_buffer->timestamp = buffer->GetTimestamp().InMicroseconds(); | 215 decrypted_buffer->timestamp = buffer->GetTimestamp().InMicroseconds(); |
| 216 return cdm::kSuccess; | 216 return cdm::kSuccess; |
| 217 } | 217 } |
| 218 | 218 |
| 219 cdm::Status ClearKeyCdm::InitializeVideoDecoder( |
| 220 const cdm::VideoDecoderConfig& video_decoder_config) { |
| 221 NOTIMPLEMENTED(); |
| 222 return cdm::kError; |
| 223 } |
| 224 |
| 225 cdm::Status ClearKeyCdm::DecryptAndDecodeVideo( |
| 226 const cdm::InputBuffer& encrypted_buffer, |
| 227 cdm::VideoFrame* video_frame) { |
| 228 NOTIMPLEMENTED(); |
| 229 return cdm::kError; |
| 230 } |
| 231 |
| 232 void ClearKeyCdm::ResetVideoDecoder() { |
| 233 NOTIMPLEMENTED(); |
| 234 } |
| 235 |
| 236 void ClearKeyCdm::StopVideoDecoder() { |
| 237 NOTIMPLEMENTED(); |
| 238 } |
| 239 |
| 219 } // namespace webkit_media | 240 } // namespace webkit_media |
| OLD | NEW |