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

Side by Side Diff: webkit/media/crypto/ppapi/clear_key_cdm.cc

Issue 10900007: Add video decoding support in the CDM interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Resolve comments. Created 8 years, 3 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 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 "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
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
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
OLDNEW
« no previous file with comments | « webkit/media/crypto/ppapi/clear_key_cdm.h ('k') | webkit/media/crypto/ppapi/content_decryption_module.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698