CCVideoLayerImpl.h [plain text]
#ifndef CCVideoLayerImpl_h
#define CCVideoLayerImpl_h
#include "ProgramBinding.h"
#include "ShaderChromium.h"
#include "VideoFrameChromium.h"
#include "VideoLayerChromium.h"
#include "cc/CCLayerImpl.h"
namespace WebCore {
class VideoFrameProvider;
class CCVideoLayerImpl : public CCLayerImpl {
public:
static PassRefPtr<CCVideoLayerImpl> create(LayerChromium* owner, int id)
{
return adoptRef(new CCVideoLayerImpl(owner, id));
}
virtual ~CCVideoLayerImpl();
typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexFlipAlpha> RGBAProgram;
typedef ProgramBinding<VertexShaderPosTexYUVStretch, FragmentShaderYUVVideo> YUVProgram;
virtual void draw(const IntRect&);
virtual void dumpLayerProperties(TextStream&, int indent) const;
void setSkipsDraw(bool skipsDraw) { m_skipsDraw = skipsDraw; }
void setFrameFormat(VideoFrameChromium::Format format) { m_frameFormat = format; }
void setTexture(size_t, VideoLayerChromium::Texture);
private:
CCVideoLayerImpl(LayerChromium*, int);
void drawYUV(const YUVProgram*) const;
void drawRGBA(const RGBAProgram*) const;
static const float yuv2RGB[9];
static const float yuvAdjust[3];
bool m_skipsDraw;
VideoFrameChromium::Format m_frameFormat;
VideoLayerChromium::Texture m_textures[3];
};
}
#endif // CCVideoLayerImpl_h