video_layer.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CC_LAYERS_VIDEO_LAYER_H_
6#define CC_LAYERS_VIDEO_LAYER_H_
7
8#include "base/callback.h"
9#include "cc/base/cc_export.h"
10#include "cc/layers/layer.h"
11
12namespace media { class VideoFrame; }
13
14namespace cc {
15
16class VideoFrameProvider;
17class VideoLayerImpl;
18
19// A Layer that contains a Video element.
20class CC_EXPORT VideoLayer : public Layer {
21 public:
22  static scoped_refptr<VideoLayer> Create(VideoFrameProvider* provider);
23
24  virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl)
25      OVERRIDE;
26
27  virtual bool Update(ResourceUpdateQueue* queue,
28                      const OcclusionTracker<Layer>* occlusion) OVERRIDE;
29
30 private:
31  explicit VideoLayer(VideoFrameProvider* provider);
32  virtual ~VideoLayer();
33
34  // This pointer is only for passing to VideoLayerImpl's constructor. It should
35  // never be dereferenced by this class.
36  VideoFrameProvider* provider_;
37
38  DISALLOW_COPY_AND_ASSIGN(VideoLayer);
39};
40
41}  // namespace cc
42
43#endif  // CC_LAYERS_VIDEO_LAYER_H_
44