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

Unified Diff: content/renderer/gpu/gpu_video_decode_accelerator_host.cc

Issue 7659001: Support multiple HW video decoders per context. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 4 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: content/renderer/gpu/gpu_video_decode_accelerator_host.cc
diff --git a/content/renderer/gpu/gpu_video_decode_accelerator_host.cc b/content/renderer/gpu/gpu_video_decode_accelerator_host.cc
index 69ba6334243728b90b9d0fd8d6c4a1f0448bb9ac..2a58314c33e4403a919aca0acb4fb3aceb0f04ac 100644
--- a/content/renderer/gpu/gpu_video_decode_accelerator_host.cc
+++ b/content/renderer/gpu/gpu_video_decode_accelerator_host.cc
@@ -10,6 +10,7 @@
#include "base/task.h"
#include "content/common/gpu/gpu_messages.h"
#include "content/common/view_messages.h"
+#include "content/renderer/gpu/gpu_channel_host.h"
#include "content/renderer/render_thread.h"
#include "ipc/ipc_message_macros.h"
#include "ipc/ipc_message_utils.h"
@@ -17,13 +18,13 @@
using media::VideoDecodeAccelerator;
GpuVideoDecodeAcceleratorHost::GpuVideoDecodeAcceleratorHost(
- IPC::Message::Sender* ipc_sender,
- int32 command_buffer_route_id,
+ GpuChannelHost* channel,
+ int32 decoder_route_id,
VideoDecodeAccelerator::Client* client)
- : ipc_sender_(ipc_sender),
- command_buffer_route_id_(command_buffer_route_id),
+ : channel_(channel),
+ decoder_route_id_(decoder_route_id),
client_(client) {
- DCHECK(ipc_sender_);
+ DCHECK(channel_);
DCHECK(client_);
DCHECK(RenderThread::current());
DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current());
@@ -32,7 +33,7 @@ GpuVideoDecodeAcceleratorHost::GpuVideoDecodeAcceleratorHost(
GpuVideoDecodeAcceleratorHost::~GpuVideoDecodeAcceleratorHost() {}
void GpuVideoDecodeAcceleratorHost::OnChannelError() {
- ipc_sender_ = NULL;
+ channel_ = NULL;
}
bool GpuVideoDecodeAcceleratorHost::OnMessageReceived(const IPC::Message& msg) {
@@ -69,7 +70,7 @@ void GpuVideoDecodeAcceleratorHost::Decode(
const media::BitstreamBuffer& bitstream_buffer) {
DCHECK(CalledOnValidThread());
Send(new AcceleratedVideoDecoderMsg_Decode(
- command_buffer_route_id_, bitstream_buffer.handle(),
+ decoder_route_id_, bitstream_buffer.handle(),
bitstream_buffer.id(), bitstream_buffer.size()));
}
@@ -87,37 +88,38 @@ void GpuVideoDecodeAcceleratorHost::AssignPictureBuffers(
sizes.push_back(buffer.size());
}
Send(new AcceleratedVideoDecoderMsg_AssignPictureBuffers(
- command_buffer_route_id_, buffer_ids, texture_ids, sizes));
+ decoder_route_id_, buffer_ids, texture_ids, sizes));
}
void GpuVideoDecodeAcceleratorHost::ReusePictureBuffer(
int32 picture_buffer_id) {
DCHECK(CalledOnValidThread());
Send(new AcceleratedVideoDecoderMsg_ReusePictureBuffer(
- command_buffer_route_id_, picture_buffer_id));
+ decoder_route_id_, picture_buffer_id));
}
void GpuVideoDecodeAcceleratorHost::Flush() {
DCHECK(CalledOnValidThread());
- Send(new AcceleratedVideoDecoderMsg_Flush(command_buffer_route_id_));
+ Send(new AcceleratedVideoDecoderMsg_Flush(decoder_route_id_));
}
void GpuVideoDecodeAcceleratorHost::Reset() {
DCHECK(CalledOnValidThread());
- Send(new AcceleratedVideoDecoderMsg_Reset(command_buffer_route_id_));
+ Send(new AcceleratedVideoDecoderMsg_Reset(decoder_route_id_));
}
void GpuVideoDecodeAcceleratorHost::Destroy() {
DCHECK(CalledOnValidThread());
- Send(new AcceleratedVideoDecoderMsg_Destroy(command_buffer_route_id_));
+ channel_->RemoveRoute(decoder_route_id_);
client_ = NULL;
+ Send(new AcceleratedVideoDecoderMsg_Destroy(decoder_route_id_));
}
void GpuVideoDecodeAcceleratorHost::Send(IPC::Message* message) {
// After OnChannelError is called, the client should no longer send
// messages to the gpu channel through this object.
- DCHECK(ipc_sender_);
- if (!ipc_sender_ || !ipc_sender_->Send(message)) {
+ DCHECK(channel_);
+ if (!channel_ || !channel_->Send(message)) {
DLOG(ERROR) << "Send(" << message->type() << ") failed";
OnErrorNotification(PLATFORM_FAILURE);
}

Powered by Google App Engine
This is Rietveld 408576698