Unreviewed, rolling out r114075.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 13 Apr 2012 03:51:43 +0000 (03:51 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 13 Apr 2012 03:51:43 +0000 (03:51 +0000)
http://trac.webkit.org/changeset/114075
https://bugs.webkit.org/show_bug.cgi?id=83857

Breaks compile (Requested by jamesr on #webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-04-12

Source/Platform:

* Platform.gypi:

Source/WebCore:

* WebCore.gypi:
* platform/graphics/chromium/LayerRendererChromium.cpp:
(WebCore::LayerRendererChromium::drawYUV):
(WebCore::LayerRendererChromium::drawRGBA):
(WebCore::LayerRendererChromium::copyFrameToTextures):
* platform/graphics/chromium/LayerRendererChromium.h:
* platform/graphics/chromium/VideoFrameChromium.cpp: Renamed from Source/Platform/chromium/src/WebVideoFrame.cpp.
(WebCore):
(WebCore::VideoFrameChromium::~VideoFrameChromium):
* platform/graphics/chromium/VideoFrameChromium.h: Copied from Source/Platform/chromium/public/WebVideoFrame.h.
(WebCore):
(VideoFrameChromium):
* platform/graphics/chromium/VideoFrameProvider.h:
(VideoFrameProvider):
* platform/graphics/chromium/cc/CCVideoDrawQuad.cpp:
(WebCore::CCVideoDrawQuad::create):
(WebCore::CCVideoDrawQuad::CCVideoDrawQuad):
* platform/graphics/chromium/cc/CCVideoDrawQuad.h:
(CCVideoDrawQuad):
(WebCore::CCVideoDrawQuad::frame):
* platform/graphics/chromium/cc/CCVideoLayerImpl.cpp:
(WebCore):
(WebCore::convertVFCFormatToGC3DFormat):
(WebCore::CCVideoLayerImpl::willDraw):
(WebCore::CCVideoLayerImpl::computeVisibleSize):
(WebCore::CCVideoLayerImpl::reserveTextures):
* platform/graphics/chromium/cc/CCVideoLayerImpl.h:

Source/WebKit/chromium:

* WebKit.gyp:
* public/WebVideoFrame.h:
(WebKit):
(WebVideoFrame):
(WebKit::WebVideoFrame::~WebVideoFrame):
(WebKit::WebVideoFrame::format):
(WebKit::WebVideoFrame::width):
(WebKit::WebVideoFrame::height):
(WebKit::WebVideoFrame::planes):
(WebKit::WebVideoFrame::stride):
(WebKit::WebVideoFrame::data):
(WebKit::WebVideoFrame::textureId):
(WebKit::WebVideoFrame::textureTarget):
* src/AssertMatchingEnums.cpp:
* src/VideoFrameChromiumImpl.cpp: Added.
(WebKit):
(WebKit::VideoFrameChromiumImpl::toWebVideoFrame):
(WebKit::VideoFrameChromiumImpl::VideoFrameChromiumImpl):
(WebKit::VideoFrameChromiumImpl::format):
(WebKit::VideoFrameChromiumImpl::width):
(WebKit::VideoFrameChromiumImpl::height):
(WebKit::VideoFrameChromiumImpl::planes):
(WebKit::VideoFrameChromiumImpl::stride):
(WebKit::VideoFrameChromiumImpl::data):
(WebKit::VideoFrameChromiumImpl::requiredTextureSize):
(WebKit::VideoFrameChromiumImpl::hasPaddingBytes):
(WebKit::VideoFrameChromiumImpl::textureId):
(WebKit::VideoFrameChromiumImpl::textureTarget):
* src/VideoFrameChromiumImpl.h: Renamed from Source/Platform/chromium/public/WebVideoFrame.h.
(WebKit):
(VideoFrameChromiumImpl):
* src/WebMediaPlayerClientImpl.cpp:
(WebKit::WebMediaPlayerClientImpl::getCurrentFrame):
(WebKit::WebMediaPlayerClientImpl::putCurrentFrame):
(WebKit::WebMediaPlayerClientImpl::supportsType):
* src/WebMediaPlayerClientImpl.h:
(WebMediaPlayerClientImpl):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@114078 268f45cc-cd09-0410-ab3c-d52691b4dbfc

21 files changed:
Source/Platform/ChangeLog
Source/Platform/Platform.gypi
Source/WebCore/ChangeLog
Source/WebCore/WebCore.gypi
Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h
Source/WebCore/platform/graphics/chromium/VideoFrameChromium.cpp [moved from Source/Platform/chromium/src/WebVideoFrame.cpp with 77% similarity]
Source/WebCore/platform/graphics/chromium/VideoFrameChromium.h [moved from Source/Platform/chromium/public/WebVideoFrame.h with 64% similarity]
Source/WebCore/platform/graphics/chromium/VideoFrameProvider.h
Source/WebCore/platform/graphics/chromium/cc/CCVideoDrawQuad.cpp
Source/WebCore/platform/graphics/chromium/cc/CCVideoDrawQuad.h
Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp
Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.h
Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/WebKit.gyp
Source/WebKit/chromium/public/WebVideoFrame.h
Source/WebKit/chromium/src/AssertMatchingEnums.cpp
Source/WebKit/chromium/src/VideoFrameChromiumImpl.cpp [new file with mode: 0644]
Source/WebKit/chromium/src/VideoFrameChromiumImpl.h [new file with mode: 0644]
Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
Source/WebKit/chromium/src/WebMediaPlayerClientImpl.h

index 4c589b9..bed4b42 100644 (file)
@@ -1,3 +1,13 @@
+2012-04-12  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r114075.
+        http://trac.webkit.org/changeset/114075
+        https://bugs.webkit.org/show_bug.cgi?id=83857
+
+        Breaks compile (Requested by jamesr on #webkit).
+
+        * Platform.gypi:
+
 2012-04-12  James Robinson  <jamesr@chromium.org>
 
         [chromium] Move WebVideoFrame into Platform and remove WebCore::VideoFrameChromium wrapper API
index a3ecbb8..8c54cac 100644 (file)
@@ -94,7 +94,6 @@
             'chromium/src/WebCString.cpp',
             'chromium/src/WebFloatQuad.cpp',
             'chromium/src/WebString.cpp',
-            'chromium/src/WebVideoFrame.cpp',
         ]
     }
 }
index 2963c21..a712bee 100644 (file)
@@ -1,3 +1,39 @@
+2012-04-12  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r114075.
+        http://trac.webkit.org/changeset/114075
+        https://bugs.webkit.org/show_bug.cgi?id=83857
+
+        Breaks compile (Requested by jamesr on #webkit).
+
+        * WebCore.gypi:
+        * platform/graphics/chromium/LayerRendererChromium.cpp:
+        (WebCore::LayerRendererChromium::drawYUV):
+        (WebCore::LayerRendererChromium::drawRGBA):
+        (WebCore::LayerRendererChromium::copyFrameToTextures):
+        * platform/graphics/chromium/LayerRendererChromium.h:
+        * platform/graphics/chromium/VideoFrameChromium.cpp: Renamed from Source/Platform/chromium/src/WebVideoFrame.cpp.
+        (WebCore):
+        (WebCore::VideoFrameChromium::~VideoFrameChromium):
+        * platform/graphics/chromium/VideoFrameChromium.h: Copied from Source/Platform/chromium/public/WebVideoFrame.h.
+        (WebCore):
+        (VideoFrameChromium):
+        * platform/graphics/chromium/VideoFrameProvider.h:
+        (VideoFrameProvider):
+        * platform/graphics/chromium/cc/CCVideoDrawQuad.cpp:
+        (WebCore::CCVideoDrawQuad::create):
+        (WebCore::CCVideoDrawQuad::CCVideoDrawQuad):
+        * platform/graphics/chromium/cc/CCVideoDrawQuad.h:
+        (CCVideoDrawQuad):
+        (WebCore::CCVideoDrawQuad::frame):
+        * platform/graphics/chromium/cc/CCVideoLayerImpl.cpp:
+        (WebCore):
+        (WebCore::convertVFCFormatToGC3DFormat):
+        (WebCore::CCVideoLayerImpl::willDraw):
+        (WebCore::CCVideoLayerImpl::computeVisibleSize):
+        (WebCore::CCVideoLayerImpl::reserveTextures):
+        * platform/graphics/chromium/cc/CCVideoLayerImpl.h:
+
 2012-04-12  Adam Barth  <abarth@webkit.org>
 
         Use _self to represnet self-navigation, like in the HTML5 spec
index 436392c..2f544f3 100644 (file)
             'platform/graphics/chromium/UniscribeHelperTextRun.h',
             'platform/graphics/chromium/VDMXParser.cpp',
             'platform/graphics/chromium/VDMXParser.h',
+            'platform/graphics/chromium/VideoFrameChromium.cpp',
+            'platform/graphics/chromium/VideoFrameChromium.h',
             'platform/graphics/chromium/VideoFrameProvider.h',
             'platform/graphics/chromium/VideoLayerChromium.cpp',
             'platform/graphics/chromium/VideoLayerChromium.h',
index 12b8666..f4a500a 100644 (file)
@@ -67,7 +67,6 @@
 #include "Extensions3D.h"
 #include "NativeImageSkia.h"
 #include "PlatformContextSkia.h"
-#include <public/WebVideoFrame.h>
 #include <wtf/CurrentTime.h>
 #include <wtf/MainThread.h>
 
@@ -771,9 +770,9 @@ void LayerRendererChromium::drawYUV(const CCVideoDrawQuad* quad)
     const CCVideoLayerImpl::YUVProgram* program = videoLayerYUVProgram();
     ASSERT(program && program->initialized());
 
-    const CCVideoLayerImpl::Texture& yTexture = quad->textures()[WebKit::WebVideoFrame::yPlane];
-    const CCVideoLayerImpl::Texture& uTexture = quad->textures()[WebKit::WebVideoFrame::uPlane];
-    const CCVideoLayerImpl::Texture& vTexture = quad->textures()[WebKit::WebVideoFrame::vPlane];
+    const CCVideoLayerImpl::Texture& yTexture = quad->textures()[VideoFrameChromium::yPlane];
+    const CCVideoLayerImpl::Texture& uTexture = quad->textures()[VideoFrameChromium::uPlane];
+    const CCVideoLayerImpl::Texture& vTexture = quad->textures()[VideoFrameChromium::vPlane];
 
     GLC(context(), context()->activeTexture(GraphicsContext3D::TEXTURE1));
     GLC(context(), context()->bindTexture(GraphicsContext3D::TEXTURE_2D, yTexture.m_texture->textureId()));
@@ -829,7 +828,7 @@ void LayerRendererChromium::drawSingleTextureVideoQuad(const CCVideoDrawQuad* qu
 void LayerRendererChromium::drawRGBA(const CCVideoDrawQuad* quad)
 {
     const CCVideoLayerImpl::RGBAProgram* program = videoLayerRGBAProgram();
-    const CCVideoLayerImpl::Texture& texture = quad->textures()[WebKit::WebVideoFrame::rgbPlane];
+    const CCVideoLayerImpl::Texture& texture = quad->textures()[VideoFrameChromium::rgbPlane];
     float widthScaleFactor = static_cast<float>(texture.m_visibleSize.width()) / texture.m_texture->size().width();
     drawSingleTextureVideoQuad(quad, program, widthScaleFactor, texture.m_texture->textureId(), GraphicsContext3D::TEXTURE_2D);
 }
@@ -854,11 +853,12 @@ void LayerRendererChromium::drawStreamTexture(const CCVideoDrawQuad* quad)
 
 bool LayerRendererChromium::copyFrameToTextures(const CCVideoDrawQuad* quad)
 {
-    const WebKit::WebVideoFrame* frame = quad->frame();
+    const VideoFrameChromium* frame = quad->frame();
 
-    for (unsigned plane = 0; plane < frame->planes(); ++plane)
+    for (unsigned plane = 0; plane < frame->planes(); ++plane) {
+        ASSERT(quad->frame()->requiredTextureSize(plane) == quad->textures()[plane].m_texture->size());
         copyPlaneToTexture(quad, frame->data(plane), plane);
-
+    }
     for (unsigned plane = frame->planes(); plane < CCVideoLayerImpl::MaxPlanes; ++plane) {
         CCVideoLayerImpl::Texture* texture = &quad->textures()[plane];
         texture->m_texture.clear();
index 40e9d56..7cb9eb5 100644 (file)
@@ -40,6 +40,7 @@
 #include "LayerChromium.h"
 #include "TextureCopier.h"
 #include "TrackingTextureAllocator.h"
+#include "VideoLayerChromium.h"
 #include "cc/CCDrawQuad.h"
 #include "cc/CCHeadsUpDisplay.h"
 #include "cc/CCLayerTreeHost.h"
 
 #include "config.h"
 
-#include <public/WebVideoFrame.h>
+#include "VideoFrameChromium.h"
 
-namespace WebKit {
+namespace WebCore {
 
-const unsigned WebVideoFrame::maxPlanes = 3;
-const unsigned WebVideoFrame::numRGBPlanes = 1;
-const unsigned WebVideoFrame::rgbPlane = 0;
-const unsigned WebVideoFrame::numYUVPlanes = 3;
-const unsigned WebVideoFrame::yPlane = 0;
-const unsigned WebVideoFrame::uPlane = 1;
-const unsigned WebVideoFrame::vPlane = 2;
+const unsigned VideoFrameChromium::maxPlanes = 3;
+const unsigned VideoFrameChromium::numRGBPlanes = 1;
+const unsigned VideoFrameChromium::rgbPlane = 0;
+const unsigned VideoFrameChromium::numYUVPlanes = 3;
+const unsigned VideoFrameChromium::yPlane = 0;
+const unsigned VideoFrameChromium::uPlane = 1;
+const unsigned VideoFrameChromium::vPlane = 2;
+
+VideoFrameChromium::~VideoFrameChromium() { }
+
+} // namespace WebCore
 
-} // namespace WebKit
 
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef WebVideoFrame_h
-#define WebVideoFrame_h
+#ifndef VideoFrameChromium_h
+#define VideoFrameChromium_h
 
-namespace WebKit {
+#include "IntSize.h"
 
-// A proxy video frame interface to communicate frame data between chromium
-// and WebKit.
-// Keep in sync with chromium's media::VideoFrame::Format.
-class WebVideoFrame {
+namespace WebCore {
+
+// A class that represents a video frame in chromium.
+class VideoFrameChromium {
 public:
     static const unsigned maxPlanes;
     static const unsigned numRGBPlanes;
@@ -46,27 +46,32 @@ public:
     static const unsigned uPlane;
     static const unsigned vPlane;
 
+    // These enums must be kept in sync with WebKit::WebVideoFrame.
     enum Format {
-        FormatInvalid = 0,
-        FormatRGB32 = 4,
-        FormatYV12 = 6,
-        FormatYV16 = 7,
-        FormatEmpty = 9,
-        FormatI420 = 11,
-        FormatNativeTexture = 12,
+        Invalid = 0,
+        RGB32 = 4,
+        YV12 = 6,
+        YV16 = 7,
+        Empty = 9,
+        I420 = 11,
+        NativeTexture = 12,
     };
 
-    virtual ~WebVideoFrame() { }
-    virtual Format format() const { return FormatInvalid; }
-    virtual unsigned width() const { return 0; }
-    virtual unsigned height() const { return 0; }
-    virtual unsigned planes() const { return 0; }
-    virtual int stride(unsigned plane) const { return 0; }
-    virtual const void* data(unsigned plane) const { return 0; }
-    virtual unsigned textureId() const { return 0; }
-    virtual unsigned textureTarget() const { return 0; }
+    virtual ~VideoFrameChromium();
+    virtual Format format() const = 0;
+    virtual unsigned width() const = 0;
+    virtual unsigned width(unsigned plane) const = 0;
+    virtual unsigned height() const = 0;
+    virtual unsigned height(unsigned plane) const = 0;
+    virtual unsigned planes() const = 0;
+    virtual int stride(unsigned plane) const = 0;
+    virtual const void* data(unsigned plane) const = 0;
+    virtual const IntSize requiredTextureSize(unsigned plane) const = 0;
+    virtual bool hasPaddingBytes(unsigned plane) const = 0;
+    virtual unsigned textureId() const = 0;
+    virtual unsigned textureTarget() const = 0;
 };
 
-} // namespace WebKit
+} // namespace WebCore
 
 #endif
index 0aa442d..9794794 100644 (file)
@@ -31,7 +31,7 @@
 #ifndef VideoFrameProvider_h
 #define VideoFrameProvider_h
 
-#include <public/WebVideoFrame.h>
+#include "VideoFrameChromium.h"
 
 namespace WebCore {
 
@@ -49,15 +49,17 @@ public:
 
     virtual void setVideoFrameProviderClient(Client*) = 0;
 
-    // This function places a lock on the current frame and returns a pointer to it.
-    // Calls to this method should always be followed with a call to putCurrentFrame().
+    // This function returns a pointer to a VideoFrameChromium, which is
+    // the WebCore wrapper for a video frame in Chromium. getCurrentFrame()
+    // places a lock on the frame in Chromium. Calls to this method should
+    // always be followed with a call to putCurrentFrame().
     // The ownership of the object is not transferred to the caller and
     // the caller should not free the returned object.
-    virtual WebKit::WebVideoFrame* getCurrentFrame() = 0;
+    virtual VideoFrameChromium* getCurrentFrame() = 0;
     // This function releases the lock on the video frame in chromium. It should
     // always be called after getCurrentFrame(). Frames passed into this method
     // should no longer be referenced after the call is made.
-    virtual void putCurrentFrame(WebKit::WebVideoFrame*) = 0;
+    virtual void putCurrentFrame(VideoFrameChromium*) = 0;
 };
 
 } // namespace WebCore
index 9cca714..ba57349 100644 (file)
 
 namespace WebCore {
 
-PassOwnPtr<CCVideoDrawQuad> CCVideoDrawQuad::create(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, CCVideoLayerImpl::Texture* textures, WebKit::WebVideoFrame* frame, GC3Denum format)
+PassOwnPtr<CCVideoDrawQuad> CCVideoDrawQuad::create(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, CCVideoLayerImpl::Texture* textures, VideoFrameChromium* frame, GC3Denum format)
 {
     return adoptPtr(new CCVideoDrawQuad(sharedQuadState, quadRect, textures, frame, format));
 }
 
-CCVideoDrawQuad::CCVideoDrawQuad(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, CCVideoLayerImpl::Texture* textures, WebKit::WebVideoFrame* frame, GC3Denum format)
+CCVideoDrawQuad::CCVideoDrawQuad(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, CCVideoLayerImpl::Texture* textures, VideoFrameChromium* frame, GC3Denum format)
     : CCDrawQuad(sharedQuadState, CCDrawQuad::VideoContent, quadRect)
     , m_textures(textures)
     , m_frame(frame)
index 9eb357f..aef7847 100644 (file)
 #include "cc/CCVideoLayerImpl.h"
 #include <wtf/PassOwnPtr.h>
 
-namespace WebKit {
-class WebVideoFrame;
-}
-
 namespace WebCore {
 
 class CCVideoDrawQuad : public CCDrawQuad {
     WTF_MAKE_NONCOPYABLE(CCVideoDrawQuad);
 public:
-    static PassOwnPtr<CCVideoDrawQuad> create(const CCSharedQuadState*, const IntRect&, CCVideoLayerImpl::Texture* textures, WebKit::WebVideoFrame*, GC3Denum format);
+    static PassOwnPtr<CCVideoDrawQuad> create(const CCSharedQuadState*, const IntRect&, CCVideoLayerImpl::Texture* textures, VideoFrameChromium*, GC3Denum format);
 
     CCVideoLayerImpl::Texture* textures() const { return m_textures; }
-    WebKit::WebVideoFrame* frame() const { return m_frame; }
+    VideoFrameChromium* frame() const { return m_frame; }
     GC3Denum format() const { return m_format; }
     const float* matrix() const { return m_matrix; }
 
     void setMatrix(const float* matrix) { m_matrix = matrix; }
 
 private:
-    CCVideoDrawQuad(const CCSharedQuadState*, const IntRect&, CCVideoLayerImpl::Texture* textures, WebKit::WebVideoFrame*, GC3Denum format);
+    CCVideoDrawQuad(const CCSharedQuadState*, const IntRect&, CCVideoLayerImpl::Texture* textures, VideoFrameChromium*, GC3Denum format);
 
     CCVideoLayerImpl::Texture* m_textures;
-    WebKit::WebVideoFrame* m_frame;
+    VideoFrameChromium* m_frame;
     GC3Denum m_format;
     const float* m_matrix;
 };
index c71e0e0..0e6dca7 100644 (file)
@@ -38,7 +38,6 @@
 #include "cc/CCProxy.h"
 #include "cc/CCQuadCuller.h"
 #include "cc/CCVideoDrawQuad.h"
-#include <public/WebVideoFrame.h>
 #include <wtf/text/WTFString.h>
 
 namespace WebCore {
@@ -100,19 +99,19 @@ void CCVideoLayerImpl::stopUsingProvider()
     m_provider = 0;
 }
 
-// Convert WebKit::WebVideoFrame::Format to GraphicsContext3D's format enum values.
-static GC3Denum convertVFCFormatToGC3DFormat(const WebKit::WebVideoFrame& frame)
+// Convert VideoFrameChromium::Format to GraphicsContext3D's format enum values.
+static GC3Denum convertVFCFormatToGC3DFormat(const VideoFrameChromium* frame)
 {
-    switch (frame.format()) {
-    case WebKit::WebVideoFrame::FormatYV12:
-    case WebKit::WebVideoFrame::FormatYV16:
+    switch (frame->format()) {
+    case VideoFrameChromium::YV12:
+    case VideoFrameChromium::YV16:
         return GraphicsContext3D::LUMINANCE;
-    case WebKit::WebVideoFrame::FormatNativeTexture:
-        return frame.textureTarget();
-    case WebKit::WebVideoFrame::FormatInvalid:
-    case WebKit::WebVideoFrame::FormatRGB32:
-    case WebKit::WebVideoFrame::FormatEmpty:
-    case WebKit::WebVideoFrame::FormatI420:
+    case VideoFrameChromium::NativeTexture:
+        return frame->textureTarget();
+    case VideoFrameChromium::Invalid:
+    case VideoFrameChromium::RGB32:
+    case VideoFrameChromium::Empty:
+    case VideoFrameChromium::I420:
         notImplemented();
     }
     return GraphicsContext3D::INVALID_VALUE;
@@ -134,7 +133,7 @@ void CCVideoLayerImpl::willDraw(LayerRendererChromium* layerRenderer)
     if (!m_frame)
         return;
 
-    m_format = convertVFCFormatToGC3DFormat(*m_frame);
+    m_format = convertVFCFormatToGC3DFormat(m_frame);
 
     if (m_format == GraphicsContext3D::INVALID_VALUE) {
         m_provider->putCurrentFrame(m_frame);
@@ -142,7 +141,7 @@ void CCVideoLayerImpl::willDraw(LayerRendererChromium* layerRenderer)
         return;
     }
 
-    if (!reserveTextures(*m_frame, m_format, layerRenderer)) {
+    if (!reserveTextures(m_frame, m_format, layerRenderer)) {
         m_provider->putCurrentFrame(m_frame);
         m_frame = 0;
     }
@@ -177,49 +176,37 @@ void CCVideoLayerImpl::didDraw()
     m_frame = 0;
 }
 
-static int videoFrameDimension(int originalDimension, unsigned plane, int format)
+IntSize CCVideoLayerImpl::computeVisibleSize(const VideoFrameChromium* frame, unsigned plane)
 {
-    if (format == WebKit::WebVideoFrame::FormatYV12 && plane != WebKit::WebVideoFrame::yPlane)
-        return originalDimension / 2;
-    return originalDimension;
-}
-
-static bool hasPaddingBytes(const WebKit::WebVideoFrame& frame, unsigned plane)
-{
-    return frame.stride(plane) > videoFrameDimension(frame.width(), plane, frame.format());
-}
-
-IntSize CCVideoLayerImpl::computeVisibleSize(const WebKit::WebVideoFrame& frame, unsigned plane)
-{
-    int visibleWidth = videoFrameDimension(frame.width(), plane, frame.format());
-    int originalWidth = visibleWidth;
-    int visibleHeight = videoFrameDimension(frame.height(), plane, frame.format());
-
+    int visibleWidth = frame->width(plane);
+    int visibleHeight = frame->height(plane);
     // When there are dead pixels at the edge of the texture, decrease
     // the frame width by 1 to prevent the rightmost pixels from
     // interpolating with the dead pixels.
-    if (hasPaddingBytes(frame, plane))
+    if (frame->hasPaddingBytes(plane))
         --visibleWidth;
 
     // In YV12, every 2x2 square of Y values corresponds to one U and
     // one V value. If we decrease the width of the UV plane, we must decrease the
     // width of the Y texture by 2 for proper alignment. This must happen
     // always, even if Y's texture does not have padding bytes.
-    if (plane == WebKit::WebVideoFrame::yPlane && frame.format() == WebKit::WebVideoFrame::FormatYV12) {
-        if (hasPaddingBytes(frame, WebKit::WebVideoFrame::uPlane))
+    if (plane == VideoFrameChromium::yPlane && frame->format() == VideoFrameChromium::YV12) {
+        if (frame->hasPaddingBytes(VideoFrameChromium::uPlane)) {
+            int originalWidth = frame->width(plane);
             visibleWidth = originalWidth - 2;
+        }
     }
 
     return IntSize(visibleWidth, visibleHeight);
 }
 
-bool CCVideoLayerImpl::reserveTextures(const WebKit::WebVideoFrame& frame, GC3Denum format, LayerRendererChromium* layerRenderer)
+bool CCVideoLayerImpl::reserveTextures(const VideoFrameChromium* frame, GC3Denum format, LayerRendererChromium* layerRenderer)
 {
-    if (frame.planes() > MaxPlanes)
+    if (frame->planes() > MaxPlanes)
         return false;
     int maxTextureSize = layerRenderer->capabilities().maxTextureSize;
-    for (unsigned plane = 0; plane < frame.planes(); ++plane) {
-        IntSize requiredTextureSize(frame.stride(plane), videoFrameDimension(frame.height(), plane, frame.format()));
+    for (unsigned plane = 0; plane < frame->planes(); ++plane) {
+        IntSize requiredTextureSize = frame->requiredTextureSize(plane);
         // If the renderer cannot handle this large of a texture, return false.
         // FIXME: Remove this test when tiled layers are implemented.
         if (requiredTextureSize.isZero() || requiredTextureSize.width() > maxTextureSize || requiredTextureSize.height() > maxTextureSize)
index e119230..39e2f22 100644 (file)
 
 #include "ManagedTexture.h"
 #include "ShaderChromium.h"
+#include "VideoFrameChromium.h"
 #include "VideoFrameProvider.h"
 #include "VideoLayerChromium.h"
 #include "cc/CCLayerImpl.h"
 
-namespace WebKit {
-class WebVideoFrame;
-}
-
 namespace WebCore {
 
 class CCLayerTreeHostImpl;
@@ -86,10 +83,10 @@ public:
 private:
     explicit CCVideoLayerImpl(int, VideoFrameProvider*);
 
-    static IntSize computeVisibleSize(const WebKit::WebVideoFrame&, unsigned plane);
+    static IntSize computeVisibleSize(const VideoFrameChromium*, unsigned plane);
     virtual const char* layerTypeAsString() const OVERRIDE { return "VideoLayer"; }
 
-    bool reserveTextures(const WebKit::WebVideoFrame&, GC3Denum format, LayerRendererChromium*);
+    bool reserveTextures(const VideoFrameChromium*, GC3Denum format, LayerRendererChromium*);
 
     Mutex m_providerMutex; // Guards m_provider below.
     VideoFrameProvider* m_provider;
@@ -99,7 +96,7 @@ private:
     float m_streamTextureMatrix[16];
     CCLayerTreeHostImpl* m_layerTreeHostImpl;
 
-    WebKit::WebVideoFrame* m_frame;
+    VideoFrameChromium* m_frame;
     GC3Denum m_format;
 };
 
index bde5966..ef30f6f 100644 (file)
@@ -1,3 +1,49 @@
+2012-04-12  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r114075.
+        http://trac.webkit.org/changeset/114075
+        https://bugs.webkit.org/show_bug.cgi?id=83857
+
+        Breaks compile (Requested by jamesr on #webkit).
+
+        * WebKit.gyp:
+        * public/WebVideoFrame.h:
+        (WebKit):
+        (WebVideoFrame):
+        (WebKit::WebVideoFrame::~WebVideoFrame):
+        (WebKit::WebVideoFrame::format):
+        (WebKit::WebVideoFrame::width):
+        (WebKit::WebVideoFrame::height):
+        (WebKit::WebVideoFrame::planes):
+        (WebKit::WebVideoFrame::stride):
+        (WebKit::WebVideoFrame::data):
+        (WebKit::WebVideoFrame::textureId):
+        (WebKit::WebVideoFrame::textureTarget):
+        * src/AssertMatchingEnums.cpp:
+        * src/VideoFrameChromiumImpl.cpp: Added.
+        (WebKit):
+        (WebKit::VideoFrameChromiumImpl::toWebVideoFrame):
+        (WebKit::VideoFrameChromiumImpl::VideoFrameChromiumImpl):
+        (WebKit::VideoFrameChromiumImpl::format):
+        (WebKit::VideoFrameChromiumImpl::width):
+        (WebKit::VideoFrameChromiumImpl::height):
+        (WebKit::VideoFrameChromiumImpl::planes):
+        (WebKit::VideoFrameChromiumImpl::stride):
+        (WebKit::VideoFrameChromiumImpl::data):
+        (WebKit::VideoFrameChromiumImpl::requiredTextureSize):
+        (WebKit::VideoFrameChromiumImpl::hasPaddingBytes):
+        (WebKit::VideoFrameChromiumImpl::textureId):
+        (WebKit::VideoFrameChromiumImpl::textureTarget):
+        * src/VideoFrameChromiumImpl.h: Renamed from Source/Platform/chromium/public/WebVideoFrame.h.
+        (WebKit):
+        (VideoFrameChromiumImpl):
+        * src/WebMediaPlayerClientImpl.cpp:
+        (WebKit::WebMediaPlayerClientImpl::getCurrentFrame):
+        (WebKit::WebMediaPlayerClientImpl::putCurrentFrame):
+        (WebKit::WebMediaPlayerClientImpl::supportsType):
+        * src/WebMediaPlayerClientImpl.h:
+        (WebMediaPlayerClientImpl):
+
 2012-04-12  James Robinson  <jamesr@chromium.org>
 
         [chromium] Move WebVideoFrame into Platform and remove WebCore::VideoFrameChromium wrapper API
index 23de32b..bceffaa 100644 (file)
                 'src/WebTextCheckingCompletionImpl.h',
                 'src/WebTextCheckingCompletionImpl.cpp',
                 'src/WebTextCheckingResult.cpp',
+                'src/VideoFrameChromiumImpl.cpp',
+                'src/VideoFrameChromiumImpl.h',
                 'src/WebAccessibilityObject.cpp',
                 'src/WebAnimationControllerImpl.cpp',
                 'src/WebAnimationControllerImpl.h',
index 948a7a4..4fab1f2 100644 (file)
@@ -1,26 +1,64 @@
 /*
- * Copyright (C) 2012 Google Inc. All rights reserved.
+ * Copyright (C) 2010 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ * modification, are permitted provided that the following conditions are
+ * met:
  *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
  *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "../../../Platform/chromium/public/WebVideoFrame.h"
+#ifndef WebVideoFrame_h
+#define WebVideoFrame_h
+
+namespace WebKit {
+
+// A proxy video frame interface to communicate frame data between chromium
+// and WebKit.
+// Keep in sync with VideoFrameChromium and chromium's media::VideoFrame::Format.
+class WebVideoFrame {
+public:
+    enum Format {
+        FormatInvalid = 0,
+        FormatRGB32 = 4,
+        FormatYV12 = 6,
+        FormatYV16 = 7,
+        FormatEmpty = 9,
+        FormatI420 = 11,
+        FormatNativeTexture = 12,
+    };
+
+    virtual ~WebVideoFrame() { }
+    virtual Format format() const { return FormatInvalid; }
+    virtual unsigned width() const { return 0; }
+    virtual unsigned height() const { return 0; }
+    virtual unsigned planes() const { return 0; }
+    virtual int stride(unsigned plane) const { return 0; }
+    virtual const void* data(unsigned plane) const { return 0; }
+    virtual unsigned textureId() const { return 0; }
+    virtual unsigned textureTarget() const { return 0; }
+};
+
+} // namespace WebKit
+
+#endif
index 4851ec9..72c2be6 100644 (file)
@@ -69,6 +69,7 @@
 #include "UserContentTypes.h"
 #include "UserScriptTypes.h"
 #include "UserStyleSheetTypes.h"
+#include "VideoFrameChromium.h"
 #include "WebAccessibilityNotification.h"
 #include "WebAccessibilityObject.h"
 #include "WebApplicationCacheHost.h"
@@ -98,6 +99,7 @@
 #include "WebTextCaseSensitivity.h"
 #include "WebTextCheckingResult.h"
 #include "WebTextCheckingType.h"
+#include "WebVideoFrame.h"
 #include "WebView.h"
 #include "platform/WebClipboard.h"
 #include "platform/WebFileSystem.h"
@@ -400,6 +402,11 @@ COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayerClient::HardwareChangeError, MediaPla
 COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayerClient::DomainError, MediaPlayerClient::DomainError);
 #endif
 
+COMPILE_ASSERT_MATCHING_ENUM(WebVideoFrame::FormatInvalid, VideoFrameChromium::Invalid);
+COMPILE_ASSERT_MATCHING_ENUM(WebVideoFrame::FormatRGB32, VideoFrameChromium::RGB32);
+COMPILE_ASSERT_MATCHING_ENUM(WebVideoFrame::FormatYV12, VideoFrameChromium::YV12);
+COMPILE_ASSERT_MATCHING_ENUM(WebVideoFrame::FormatYV16, VideoFrameChromium::YV16);
+COMPILE_ASSERT_MATCHING_ENUM(WebVideoFrame::FormatEmpty, VideoFrameChromium::Empty);
 #endif
 
 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
diff --git a/Source/WebKit/chromium/src/VideoFrameChromiumImpl.cpp b/Source/WebKit/chromium/src/VideoFrameChromiumImpl.cpp
new file mode 100644 (file)
index 0000000..fcce939
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "VideoFrameChromiumImpl.h"
+
+#include "VideoFrameChromium.h"
+#include "WebVideoFrame.h"
+
+using namespace WebCore;
+
+namespace WebKit {
+
+WebVideoFrame* VideoFrameChromiumImpl::toWebVideoFrame(VideoFrameChromium* videoFrame)
+{
+    VideoFrameChromiumImpl* wrappedFrame = static_cast<VideoFrameChromiumImpl*>(videoFrame);
+    if (wrappedFrame)
+        return wrappedFrame->m_webVideoFrame;
+    return 0;
+}
+
+VideoFrameChromiumImpl::VideoFrameChromiumImpl(WebVideoFrame* webVideoFrame)
+    : m_webVideoFrame(webVideoFrame)
+{
+}
+
+VideoFrameChromium::Format VideoFrameChromiumImpl::format() const
+{
+    if (m_webVideoFrame)
+        return static_cast<VideoFrameChromium::Format>(m_webVideoFrame->format());
+    return Invalid;
+}
+
+unsigned VideoFrameChromiumImpl::width() const
+{
+    if (m_webVideoFrame)
+        return m_webVideoFrame->width();
+    return 0;
+}
+
+unsigned VideoFrameChromiumImpl::width(unsigned plane) const
+{
+    unsigned planeWidth = width();
+    if (format() == YV12 && plane != static_cast<unsigned>(yPlane))
+        planeWidth /= 2;
+    return planeWidth;
+}
+
+unsigned VideoFrameChromiumImpl::height() const
+{
+    if (m_webVideoFrame)
+        return m_webVideoFrame->height();
+    return 0;
+}
+
+unsigned VideoFrameChromiumImpl::height(unsigned plane) const
+{
+    unsigned planeHeight = height();
+    if (format() == YV12 && plane != static_cast<unsigned>(yPlane))
+        planeHeight /= 2;
+    return planeHeight;
+}
+
+unsigned VideoFrameChromiumImpl::planes() const
+{
+    if (m_webVideoFrame)
+        return m_webVideoFrame->planes();
+    return 0;
+}
+
+int VideoFrameChromiumImpl::stride(unsigned plane) const
+{
+    if (m_webVideoFrame)
+        return m_webVideoFrame->stride(plane);
+    return 0;
+}
+
+const void* VideoFrameChromiumImpl::data(unsigned plane) const
+{
+    if (m_webVideoFrame)
+        return m_webVideoFrame->data(plane);
+    return 0;
+}
+
+const IntSize VideoFrameChromiumImpl::requiredTextureSize(unsigned plane) const
+{
+    return IntSize(stride(plane), height(plane));
+}
+
+bool VideoFrameChromiumImpl::hasPaddingBytes(unsigned plane) const
+{
+    if (m_webVideoFrame)
+        return stride(plane) - width(plane) > 0;
+    return false;
+}
+
+unsigned VideoFrameChromiumImpl::textureId() const
+{
+    if (m_webVideoFrame)
+        return m_webVideoFrame->textureId();
+    return 0;
+}
+
+unsigned VideoFrameChromiumImpl::textureTarget() const
+{
+    if (m_webVideoFrame)
+        return m_webVideoFrame->textureTarget();
+    return 0;
+}
+
+} // namespace WebKit
diff --git a/Source/WebKit/chromium/src/VideoFrameChromiumImpl.h b/Source/WebKit/chromium/src/VideoFrameChromiumImpl.h
new file mode 100644 (file)
index 0000000..6792086
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef VideoFrameChromiumImpl_h
+#define VideoFrameChromiumImpl_h
+
+#include "VideoFrameChromium.h"
+#include "WebVideoFrame.h"
+
+namespace WebKit {
+
+// A wrapper class for WebKit::WebVideoFrame. Objects can be created in WebKit
+// and used in WebCore because of the VideoFrameChromium interface.
+class VideoFrameChromiumImpl : public WebCore::VideoFrameChromium {
+public:
+    // Converts a WebCore::VideoFrameChromium to a WebKit::WebVideoFrame.
+    static WebVideoFrame* toWebVideoFrame(WebCore::VideoFrameChromium*);
+
+    // Creates a VideoFrameChromiumImpl object to wrap the given WebVideoFrame.
+    // The VideoFrameChromiumImpl does not take ownership of the WebVideoFrame
+    // and should not free the frame's memory.
+    VideoFrameChromiumImpl(WebVideoFrame*);
+    virtual Format format() const;
+    virtual unsigned width() const;
+    virtual unsigned width(unsigned plane) const;
+    virtual unsigned height() const;
+    virtual unsigned height(unsigned plane) const;
+    virtual unsigned planes() const;
+    virtual int stride(unsigned plane) const;
+    virtual const void* data(unsigned plane) const;
+    virtual const WebCore::IntSize requiredTextureSize(unsigned plane) const;
+    virtual bool hasPaddingBytes(unsigned plane) const;
+    virtual unsigned textureId() const;
+    virtual unsigned textureTarget() const;
+
+private:
+    WebVideoFrame* m_webVideoFrame;
+};
+
+} // namespace WebKit
+
+#endif
index 4600fb8..5c7b2c9 100644 (file)
@@ -19,6 +19,8 @@
 #include "PlatformContextSkia.h"
 #include "RenderView.h"
 #include "TimeRanges.h"
+#include "VideoFrameChromium.h"
+#include "VideoFrameChromiumImpl.h"
 #include "VideoLayerChromium.h"
 #include "WebAudioSourceProvider.h"
 #include "WebFrameClient.h"
@@ -661,24 +663,29 @@ void WebMediaPlayerClientImpl::setVideoFrameProviderClient(VideoFrameProvider::C
         m_webMediaPlayer->setStreamTextureClient(client ? this : 0);
 }
 
-WebVideoFrame* WebMediaPlayerClientImpl::getCurrentFrame()
+VideoFrameChromium* WebMediaPlayerClientImpl::getCurrentFrame()
 {
     MutexLocker locker(m_compositingMutex);
     ASSERT(!m_currentVideoFrame);
-    if (m_webMediaPlayer)
-        m_currentVideoFrame = m_webMediaPlayer->getCurrentFrame();
-    return m_currentVideoFrame;
+    if (m_webMediaPlayer) {
+        WebVideoFrame* webkitVideoFrame = m_webMediaPlayer->getCurrentFrame();
+        if (webkitVideoFrame)
+            m_currentVideoFrame = adoptPtr(new VideoFrameChromiumImpl(webkitVideoFrame));
+    }
+    return m_currentVideoFrame.get();
 }
 
-void WebMediaPlayerClientImpl::putCurrentFrame(WebVideoFrame* videoFrame)
+void WebMediaPlayerClientImpl::putCurrentFrame(VideoFrameChromium* videoFrame)
 {
     MutexLocker locker(m_compositingMutex);
     ASSERT(videoFrame == m_currentVideoFrame);
     if (!videoFrame)
         return;
-    if (m_webMediaPlayer)
-        m_webMediaPlayer->putCurrentFrame(videoFrame);
-    m_currentVideoFrame = 0;
+    if (m_webMediaPlayer) {
+        m_webMediaPlayer->putCurrentFrame(
+            VideoFrameChromiumImpl::toWebVideoFrame(videoFrame));
+    }
+    m_currentVideoFrame.clear();
 }
 #endif
 
@@ -760,7 +767,6 @@ void WebMediaPlayerClientImpl::didUpdateMatrix(const float* matrix)
 
 WebMediaPlayerClientImpl::WebMediaPlayerClientImpl()
     : m_mediaPlayer(0)
-    , m_currentVideoFrame(0)
     , m_delayingLoad(false)
     , m_preload(MediaPlayer::MetaData)
 #if USE(ACCELERATED_COMPOSITING)
index ba1730f..50bcc01 100644 (file)
@@ -35,6 +35,7 @@
 
 #include "AudioSourceProvider.h"
 #include "MediaPlayerPrivate.h"
+#include "VideoFrameChromium.h"
 #include "VideoFrameProvider.h"
 #include "VideoLayerChromium.h"
 #include "WebAudioSourceProviderClient.h"
@@ -144,8 +145,8 @@ public:
 
     // VideoFrameProvider methods:
     virtual void setVideoFrameProviderClient(VideoFrameProvider::Client*);
-    virtual WebVideoFrame* getCurrentFrame();
-    virtual void putCurrentFrame(WebVideoFrame*);
+    virtual WebCore::VideoFrameChromium* getCurrentFrame();
+    virtual void putCurrentFrame(WebCore::VideoFrameChromium*);
 #endif
 
 #if ENABLE(MEDIA_SOURCE)
@@ -184,7 +185,7 @@ private:
     Mutex m_compositingMutex; // Guards m_currentVideoFrame and m_videoFrameProviderClient.
     WebCore::MediaPlayer* m_mediaPlayer;
     OwnPtr<WebMediaPlayer> m_webMediaPlayer;
-    WebVideoFrame* m_currentVideoFrame;
+    OwnPtr<WebCore::VideoFrameChromium> m_currentVideoFrame;
     String m_url;
     bool m_delayingLoad;
     WebCore::MediaPlayer::Preload m_preload;