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

Side by Side Diff: webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.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 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/ffmpeg_cdm_video_decoder.h" 5 #include "webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "media/base/buffers.h" 9 #include "media/base/buffers.h"
10 #include "media/base/limits.h" 10 #include "media/base/limits.h"
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 121
122 for (int i = 0; i < rows; ++i) { 122 for (int i = 0; i < rows; ++i) {
123 const int source_offset = i * source_stride; 123 const int source_offset = i * source_stride;
124 const int target_offset = i * target_stride; 124 const int target_offset = i * target_stride;
125 memcpy(target + target_offset, 125 memcpy(target + target_offset,
126 source + source_offset, 126 source + source_offset,
127 copy_bytes_per_row); 127 copy_bytes_per_row);
128 } 128 }
129 } 129 }
130 130
131 FFmpegCdmVideoDecoder::FFmpegCdmVideoDecoder(cdm::Allocator* allocator) 131 FFmpegCdmVideoDecoder::FFmpegCdmVideoDecoder(cdm::Host* host)
132 : codec_context_(NULL), 132 : codec_context_(NULL),
133 av_frame_(NULL), 133 av_frame_(NULL),
134 is_initialized_(false), 134 is_initialized_(false),
135 allocator_(allocator) { 135 host_(host) {
136 } 136 }
137 137
138 FFmpegCdmVideoDecoder::~FFmpegCdmVideoDecoder() { 138 FFmpegCdmVideoDecoder::~FFmpegCdmVideoDecoder() {
139 ReleaseFFmpegResources(); 139 ReleaseFFmpegResources();
140 } 140 }
141 141
142 bool FFmpegCdmVideoDecoder::Initialize(const cdm::VideoDecoderConfig& config) { 142 bool FFmpegCdmVideoDecoder::Initialize(const cdm::VideoDecoderConfig& config) {
143 DVLOG(1) << "Initialize()"; 143 DVLOG(1) << "Initialize()";
144 144
145 if (!IsValidOutputConfig(config.format, config.coded_size)) { 145 if (!IsValidOutputConfig(config.format, config.coded_size)) {
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 DCHECK(cdm_video_frame); 268 DCHECK(cdm_video_frame);
269 DCHECK_EQ(av_frame_->format, PIX_FMT_YUV420P); 269 DCHECK_EQ(av_frame_->format, PIX_FMT_YUV420P);
270 DCHECK_EQ(av_frame_->width % 2, 0); 270 DCHECK_EQ(av_frame_->width % 2, 0);
271 DCHECK_EQ(av_frame_->height % 2, 0); 271 DCHECK_EQ(av_frame_->height % 2, 0);
272 272
273 const int y_size = av_frame_->width * av_frame_->height; 273 const int y_size = av_frame_->width * av_frame_->height;
274 const int uv_size = y_size / 2; 274 const int uv_size = y_size / 2;
275 const int space_required = y_size + (uv_size * 2); 275 const int space_required = y_size + (uv_size * 2);
276 276
277 DCHECK(!cdm_video_frame->FrameBuffer()); 277 DCHECK(!cdm_video_frame->FrameBuffer());
278 cdm_video_frame->SetFrameBuffer(allocator_->Allocate(space_required)); 278 cdm_video_frame->SetFrameBuffer(host_->Allocate(space_required));
279 if (!cdm_video_frame->FrameBuffer()) { 279 if (!cdm_video_frame->FrameBuffer()) {
280 LOG(ERROR) << "CopyAvFrameTo() cdm::Allocator::Allocate failed."; 280 LOG(ERROR) << "CopyAvFrameTo() cdm::Host::Allocate failed.";
281 return false; 281 return false;
282 } 282 }
283 cdm_video_frame->FrameBuffer()->SetSize(space_required); 283 cdm_video_frame->FrameBuffer()->SetSize(space_required);
284 284
285 CopyPlane(av_frame_->base[cdm::VideoFrame::kYPlane], 285 CopyPlane(av_frame_->base[cdm::VideoFrame::kYPlane],
286 av_frame_->linesize[cdm::VideoFrame::kYPlane], 286 av_frame_->linesize[cdm::VideoFrame::kYPlane],
287 av_frame_->width, 287 av_frame_->width,
288 av_frame_->height, 288 av_frame_->height,
289 av_frame_->width, 289 av_frame_->width,
290 cdm_video_frame->FrameBuffer()->Data()); 290 cdm_video_frame->FrameBuffer()->Data());
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 av_free(codec_context_); 336 av_free(codec_context_);
337 codec_context_ = NULL; 337 codec_context_ = NULL;
338 } 338 }
339 if (av_frame_) { 339 if (av_frame_) {
340 av_free(av_frame_); 340 av_free(av_frame_);
341 av_frame_ = NULL; 341 av_frame_ = NULL;
342 } 342 }
343 } 343 }
344 344
345 } // namespace webkit_media 345 } // namespace webkit_media
OLDNEW
« no previous file with comments | « webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.h ('k') | webkit/media/crypto/ppapi/libvpx_cdm_video_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698