diff options
Diffstat (limited to 'chrome/browser/renderer_host/video_layer.h')
-rw-r--r-- | chrome/browser/renderer_host/video_layer.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/chrome/browser/renderer_host/video_layer.h b/chrome/browser/renderer_host/video_layer.h new file mode 100644 index 0000000..66a084f --- /dev/null +++ b/chrome/browser/renderer_host/video_layer.h @@ -0,0 +1,51 @@ +// 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_H_ +#define CHROME_BROWSER_RENDERER_HOST_VIDEO_LAYER_H_ + +#include "base/gfx/size.h" +#include "base/scoped_ptr.h" +#include "chrome/common/transport_dib.h" + +class RenderProcessHost; +class RenderWidgetHost; + +namespace gfx { +class Rect; +} + +// Represents a layer of YUV data owned by RenderWidgetHost and composited with +// the backing store. VideoLayer is responsible for converting to RGB as +// needed. +class VideoLayer { + public: + virtual ~VideoLayer(); + + RenderWidgetHost* render_widget_host() const { return render_widget_host_; } + const gfx::Size& size() { return size_; } + + // Copy the incoming bitmap into this video layer. |bitmap| contains YUV + // pixel data in YV12 format and must be the same dimensions as this video + // layer. |bitmap_rect| specifies the absolute position and destination size + // of the bitmap on the backing store. + virtual void CopyTransportDIB(RenderProcessHost* process, + TransportDIB::Id bitmap, + const gfx::Rect& bitmap_rect) = 0; + + protected: + // Can only be constructed via subclasses. + VideoLayer(RenderWidgetHost* widget, const gfx::Size& size); + + private: + // The owner of this video layer. + RenderWidgetHost* render_widget_host_; + + // The size of the video layer. + gfx::Size size_; + + DISALLOW_COPY_AND_ASSIGN(VideoLayer); +}; + +#endif // CHROME_BROWSER_RENDERER_HOST_VIDEO_LAYER_H_ |