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

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

Issue 11144036: Update Decryptor interface to support audio decoding. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove leftover unretained Created 8 years, 2 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
« no previous file with comments | « media/filters/ffmpeg_video_decoder_unittest.cc ('k') | webkit/media/crypto/ppapi_decryptor.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 const cdm::InputBuffer& encrypted_buffer, 206 const cdm::InputBuffer& encrypted_buffer,
207 cdm::DecryptedBlock* decrypted_block) { 207 cdm::DecryptedBlock* decrypted_block) {
208 DVLOG(1) << "Decrypt()"; 208 DVLOG(1) << "Decrypt()";
209 209
210 scoped_refptr<media::DecoderBuffer> decoder_buffer = 210 scoped_refptr<media::DecoderBuffer> decoder_buffer =
211 CopyDecoderBufferFrom(encrypted_buffer); 211 CopyDecoderBufferFrom(encrypted_buffer);
212 212
213 // Callback is called synchronously, so we can use variables on the stack. 213 // Callback is called synchronously, so we can use variables on the stack.
214 media::Decryptor::Status status; 214 media::Decryptor::Status status;
215 scoped_refptr<media::DecoderBuffer> buffer; 215 scoped_refptr<media::DecoderBuffer> buffer;
216 decryptor_.Decrypt(decoder_buffer, 216 // We don't care what stream type it is here. So just pick video.
217 decryptor_.Decrypt(media::Decryptor::kVideo,
218 decoder_buffer,
217 base::Bind(&CopyDecryptResults, &status, &buffer)); 219 base::Bind(&CopyDecryptResults, &status, &buffer));
218 220
219 if (status == media::Decryptor::kError) 221 if (status == media::Decryptor::kError)
220 return cdm::kDecryptError; 222 return cdm::kDecryptError;
221 223
222 if (status == media::Decryptor::kNoKey) 224 if (status == media::Decryptor::kNoKey)
223 return cdm::kNoKey; 225 return cdm::kNoKey;
224 226
225 DCHECK(buffer); 227 DCHECK(buffer);
226 int data_size = buffer->GetDataSize(); 228 int data_size = buffer->GetDataSize();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 video_frame->set_format(cdm::kEmptyVideoFrame); 262 video_frame->set_format(cdm::kEmptyVideoFrame);
261 return cdm::kSuccess; 263 return cdm::kSuccess;
262 } 264 }
263 265
264 scoped_refptr<media::DecoderBuffer> decoder_buffer = 266 scoped_refptr<media::DecoderBuffer> decoder_buffer =
265 CopyDecoderBufferFrom(encrypted_buffer); 267 CopyDecoderBufferFrom(encrypted_buffer);
266 268
267 // Callback is called synchronously, so we can use variables on the stack. 269 // Callback is called synchronously, so we can use variables on the stack.
268 media::Decryptor::Status status; 270 media::Decryptor::Status status;
269 scoped_refptr<media::DecoderBuffer> buffer; 271 scoped_refptr<media::DecoderBuffer> buffer;
270 decryptor_.Decrypt(decoder_buffer, 272 decryptor_.Decrypt(media::Decryptor::kVideo,
273 decoder_buffer,
271 base::Bind(&CopyDecryptResults, &status, &buffer)); 274 base::Bind(&CopyDecryptResults, &status, &buffer));
272 275
273 if (status == media::Decryptor::kError) 276 if (status == media::Decryptor::kError)
274 return cdm::kDecryptError; 277 return cdm::kDecryptError;
275 278
276 if (status == media::Decryptor::kNoKey) 279 if (status == media::Decryptor::kNoKey)
277 return cdm::kNoKey; 280 return cdm::kNoKey;
278 281
279 #if !defined(CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER) 282 #if !defined(CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER)
280 NOTIMPLEMENTED(); 283 NOTIMPLEMENTED();
281 return cdm::kDecodeError; 284 return cdm::kDecodeError;
282 #else 285 #else
283 GenerateFakeVideoFrame(decoder_buffer->GetTimestamp(), video_frame); 286 GenerateFakeVideoFrame(decoder_buffer->GetTimestamp(), video_frame);
284 return cdm::kSuccess; 287 return cdm::kSuccess;
285 #endif // CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER 288 #endif // CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER
286 } 289 }
287 290
288 #if defined(CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER) 291 #if defined(CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER)
289 void ClearKeyCdm::GenerateFakeVideoFrame(base::TimeDelta timestamp, 292 void ClearKeyCdm::GenerateFakeVideoFrame(base::TimeDelta timestamp,
290 cdm::VideoFrame* video_frame) { 293 cdm::VideoFrame* video_frame) {
291 // Choose non-zero alignment and padding on purpose for testing. 294 // Choose non-zero alignment and padding on purpose for testing.
292 const int kAlignment = 8; 295 const int kAlignment = 8;
293 const int kPadding = 16; 296 const int kPadding = 16;
294 const int kPlanePadding = 128; 297 const int kPlanePadding = 128;
295 298
296 int width = video_size_.width; 299 int width = video_size_.width;
297 int height = video_size_.height; 300 int height = video_size_.height;
298 DCHECK(width % 2 == 0); 301 DCHECK_EQ(width % 2, 0);
299 DCHECK(height % 2 == 0); 302 DCHECK_EQ(height % 2, 0);
300 303
301 int y_stride = (width + kAlignment - 1) / kAlignment * kAlignment + kPadding; 304 int y_stride = (width + kAlignment - 1) / kAlignment * kAlignment + kPadding;
302 int uv_stride = 305 int uv_stride =
303 (width / 2 + kAlignment - 1) / kAlignment * kAlignment + kPadding; 306 (width / 2 + kAlignment - 1) / kAlignment * kAlignment + kPadding;
304 int y_rows = height; 307 int y_rows = height;
305 int uv_rows = height / 2; 308 int uv_rows = height / 2;
306 int y_offset = 0; 309 int y_offset = 0;
307 int v_offset = y_stride * y_rows + kPlanePadding; 310 int v_offset = y_stride * y_rows + kPlanePadding;
308 int u_offset = v_offset + uv_stride * uv_rows + kPlanePadding; 311 int u_offset = v_offset + uv_stride * uv_rows + kPlanePadding;
309 int frame_size = u_offset + uv_stride * uv_rows + kPlanePadding; 312 int frame_size = u_offset + uv_stride * uv_rows + kPlanePadding;
(...skipping 11 matching lines...) Expand all
321 324
322 static unsigned char color = 0; 325 static unsigned char color = 0;
323 color += 10; 326 color += 10;
324 327
325 memset(reinterpret_cast<void*>(video_frame->frame_buffer()->data()), 328 memset(reinterpret_cast<void*>(video_frame->frame_buffer()->data()),
326 color, frame_size); 329 color, frame_size);
327 } 330 }
328 #endif // CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER 331 #endif // CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER
329 332
330 } // namespace webkit_media 333 } // namespace webkit_media
OLDNEW
« no previous file with comments | « media/filters/ffmpeg_video_decoder_unittest.cc ('k') | webkit/media/crypto/ppapi_decryptor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698