diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-02 21:23:11 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-02 21:23:11 +0000 |
commit | ba65b1f642d37bf33ed99c66498110007d249c65 (patch) | |
tree | 08baa793c615ec0622e3e3191339ffb47c193434 /chrome/browser/renderer_host/video_layer_proxy.h | |
parent | 857bff35929a3af15166bd3e7f885e1d7113c050 (diff) | |
download | chromium_src-ba65b1f642d37bf33ed99c66498110007d249c65.zip chromium_src-ba65b1f642d37bf33ed99c66498110007d249c65.tar.gz chromium_src-ba65b1f642d37bf33ed99c66498110007d249c65.tar.bz2 |
Laying down the groundwork for GPU video layers.
This gets --enable-video-layering working when using the GPU backing store. No actual visuals yet, just IPC message passing and a lot of NOTIMPLEMENTED messages.
BUG=33329
TEST=try it out and see if you get lots of NOTIMPLEMENTED messages corresponding with video playback
Review URL: http://codereview.chromium.org/661344
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40434 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host/video_layer_proxy.h')
-rw-r--r-- | chrome/browser/renderer_host/video_layer_proxy.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/chrome/browser/renderer_host/video_layer_proxy.h b/chrome/browser/renderer_host/video_layer_proxy.h new file mode 100644 index 0000000..637525e --- /dev/null +++ b/chrome/browser/renderer_host/video_layer_proxy.h @@ -0,0 +1,43 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_RENDERER_HOST_VIDEO_LAYER_PROXY_H_ +#define CHROME_BROWSER_RENDERER_HOST_VIDEO_LAYER_PROXY_H_ + +#include "chrome/browser/renderer_host/video_layer.h" +#include "ipc/ipc_channel.h" + +class GpuProcessHost; + +// Proxies YUV video layer data to the GPU process for rendering. +class VideoLayerProxy : public VideoLayer, public IPC::Channel::Listener { + public: + VideoLayerProxy(RenderWidgetHost* widget, const gfx::Size& size, + GpuProcessHost* process, int32 routing_id); + virtual ~VideoLayerProxy(); + + // VideoLayer implementation. + virtual void CopyTransportDIB(RenderProcessHost* process, + TransportDIB::Id bitmap, + const gfx::Rect& bitmap_rect); + + // IPC::Channel::Listener implementation. + virtual void OnMessageReceived(const IPC::Message& message); + virtual void OnChannelConnected(int32 peer_pid); + virtual void OnChannelError(); + + private: + // Called when GPU process has finished painting the video layer. + void OnPaintToVideoLayerACK(); + + // GPU process receiving our proxied requests. + GpuProcessHost* process_; + + // IPC routing ID to use when communicating with the GPU process. + int32 routing_id_; + + DISALLOW_COPY_AND_ASSIGN(VideoLayerProxy); +}; + +#endif // CHROME_BROWSER_RENDERER_HOST_VIDEO_LAYER_PROXY_H_ |