Home | History | Annotate | Download | only in layers
      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 
     12 namespace media { class VideoFrame; }
     13 
     14 namespace cc {
     15 
     16 class VideoFrameProvider;
     17 class VideoLayerImpl;
     18 
     19 // A Layer that contains a Video element.
     20 class 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