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

Unified Diff: media/cdm/cdm_adapter.cc

Issue 1673383002: Add allocator interface for use by cdm_adapter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
Index: media/cdm/cdm_adapter.cc
diff --git a/media/cdm/cdm_adapter.cc b/media/cdm/cdm_adapter.cc
index fb89e1a2db31d1400c70011f81203e6e0f5c8f30..4832edc278015f40639e47ae2b6bfe99ca72e0a6 100644
--- a/media/cdm/cdm_adapter.cc
+++ b/media/cdm/cdm_adapter.cc
@@ -25,7 +25,8 @@
#include "media/base/video_decoder_config.h"
#include "media/base/video_frame.h"
#include "media/base/video_types.h"
-#include "media/cdm/cdm_buffer_impl.h"
+#include "media/cdm/cdm_buffer.h"
+#include "media/cdm/cdm_buffer_allocator.h"
#include "media/cdm/cdm_helpers.h"
#include "media/cdm/cdm_wrapper.h"
#include "ui/gfx/geometry/rect.h"
@@ -330,7 +331,8 @@ void CdmAdapter::Create(
const LegacySessionErrorCB& legacy_session_error_cb,
const SessionKeysChangeCB& session_keys_change_cb,
const SessionExpirationUpdateCB& session_expiration_update_cb,
- const CdmCreatedCB& cdm_created_cb) {
+ const CdmCreatedCB& cdm_created_cb,
+ CdmBufferAllocator* allocator) {
xhwang 2016/02/09 18:27:32 who owns the allocator?
xhwang 2016/02/09 18:27:32 The |allocator| seems an input, while the callback
jrummell 2016/02/11 01:39:38 Done.
jrummell 2016/02/11 01:39:38 Changed to scoped_ptr<> to be clear.
DCHECK(!key_system.empty());
DCHECK(!session_message_cb.is_null());
DCHECK(!session_closed_cb.is_null());
@@ -338,10 +340,10 @@ void CdmAdapter::Create(
DCHECK(!session_keys_change_cb.is_null());
DCHECK(!session_expiration_update_cb.is_null());
- scoped_refptr<CdmAdapter> cdm =
- new CdmAdapter(key_system, cdm_config, session_message_cb,
- session_closed_cb, legacy_session_error_cb,
- session_keys_change_cb, session_expiration_update_cb);
+ scoped_refptr<CdmAdapter> cdm = new CdmAdapter(
+ key_system, cdm_config, session_message_cb, session_closed_cb,
+ legacy_session_error_cb, session_keys_change_cb,
+ session_expiration_update_cb, allocator);
// |cdm| ownership passed to the promise.
scoped_ptr<CdmInitializedPromise> cdm_created_promise(
@@ -357,7 +359,8 @@ CdmAdapter::CdmAdapter(
const SessionClosedCB& session_closed_cb,
const LegacySessionErrorCB& legacy_session_error_cb,
const SessionKeysChangeCB& session_keys_change_cb,
- const SessionExpirationUpdateCB& session_expiration_update_cb)
+ const SessionExpirationUpdateCB& session_expiration_update_cb,
+ CdmBufferAllocator* allocator)
: key_system_(key_system),
cdm_config_(cdm_config),
session_message_cb_(session_message_cb),
@@ -367,6 +370,7 @@ CdmAdapter::CdmAdapter(
session_expiration_update_cb_(session_expiration_update_cb),
audio_samples_per_second_(0),
audio_channel_layout_(CHANNEL_LAYOUT_NONE),
+ allocator_(allocator),
task_runner_(base::ThreadTaskRunnerHandle::Get()),
weak_factory_(this) {
DCHECK(!key_system_.empty());
@@ -375,6 +379,7 @@ CdmAdapter::CdmAdapter(
DCHECK(!legacy_session_error_cb_.is_null());
DCHECK(!session_keys_change_cb_.is_null());
DCHECK(!session_expiration_update_cb_.is_null());
+ DCHECK(allocator_);
}
CdmAdapter::~CdmAdapter() {}
@@ -675,17 +680,10 @@ void CdmAdapter::DecryptAndDecodeVideo(
return;
}
- uint8_t* frame_data = video_frame->FrameBuffer()->Data();
- gfx::Size frame_size(video_frame->Size().width, video_frame->Size().height);
- scoped_refptr<VideoFrame> decoded_frame = VideoFrame::WrapExternalYuvData(
- PIXEL_FORMAT_YV12, frame_size, gfx::Rect(frame_size), natural_size_,
- video_frame->Stride(VideoFrameImpl::kYPlane),
- video_frame->Stride(VideoFrameImpl::kUPlane),
- video_frame->Stride(VideoFrameImpl::kVPlane),
- frame_data + video_frame->PlaneOffset(VideoFrameImpl::kYPlane),
- frame_data + video_frame->PlaneOffset(VideoFrameImpl::kUPlane),
- frame_data + video_frame->PlaneOffset(VideoFrameImpl::kVPlane),
- base::TimeDelta::FromMicroseconds(video_frame->Timestamp()));
+ CdmBuffer* cdm_buffer =
+ reinterpret_cast<CdmBuffer*>(video_frame->FrameBuffer());
xhwang 2016/02/09 18:27:32 Can we do static cast?
jrummell 2016/02/11 01:39:38 Done (now moved elsewhere).
+ scoped_refptr<VideoFrame> decoded_frame =
+ cdm_buffer->MakeVideoFrame(video_frame.get(), natural_size_);
video_decode_cb.Run(Decryptor::kSuccess, decoded_frame);
}
@@ -712,7 +710,7 @@ void CdmAdapter::DeinitializeDecoder(StreamType stream_type) {
cdm::Buffer* CdmAdapter::Allocate(uint32_t capacity) {
DCHECK(task_runner_->BelongsToCurrentThread());
- return CdmBuffer::Create(capacity);
+ return allocator_->Allocate(capacity);
}
void CdmAdapter::SetTimer(int64_t delay_ms, void* context) {

Powered by Google App Engine
This is Rietveld 408576698