// 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. #include "webkit/glue/webvideoframe_impl.h" #include "media/base/video_frame.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebVideoFrame.h" using namespace WebKit; namespace webkit_glue { media::VideoFrame* WebVideoFrameImpl::toVideoFrame( WebVideoFrame* web_video_frame) { WebVideoFrameImpl* wrapped_frame = static_cast<WebVideoFrameImpl*>(web_video_frame); if (wrapped_frame) return wrapped_frame->video_frame_.get(); return NULL; } WebVideoFrameImpl::WebVideoFrameImpl( scoped_refptr<media::VideoFrame> video_frame) : video_frame_(video_frame) { } WebVideoFrameImpl::~WebVideoFrameImpl() {} #define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, chromium_name) \ COMPILE_ASSERT(int(WebKit::WebVideoFrame::webkit_name) == \ int(media::VideoFrame::chromium_name), \ mismatching_enums) COMPILE_ASSERT_MATCHING_ENUM(FormatInvalid, INVALID); COMPILE_ASSERT_MATCHING_ENUM(FormatRGB555, RGB555); COMPILE_ASSERT_MATCHING_ENUM(FormatRGB565, RGB565); COMPILE_ASSERT_MATCHING_ENUM(FormatRGB24, RGB24); COMPILE_ASSERT_MATCHING_ENUM(FormatRGB32, RGB32); COMPILE_ASSERT_MATCHING_ENUM(FormatRGBA, RGBA); COMPILE_ASSERT_MATCHING_ENUM(FormatYV12, YV12); COMPILE_ASSERT_MATCHING_ENUM(FormatYV16, YV16); COMPILE_ASSERT_MATCHING_ENUM(FormatNV12, NV12); COMPILE_ASSERT_MATCHING_ENUM(FormatEmpty, EMPTY); COMPILE_ASSERT_MATCHING_ENUM(FormatASCII, ASCII); COMPILE_ASSERT_MATCHING_ENUM(SurfaceTypeSystemMemory, TYPE_SYSTEM_MEMORY); // TODO(hclam): Add checks for newly added surface types like GL texture and // D3D texture. WebVideoFrame::SurfaceType WebVideoFrameImpl::surfaceType() const { if (video_frame_.get()) return static_cast<WebVideoFrame::SurfaceType>(video_frame_->type()); return WebVideoFrame::SurfaceTypeSystemMemory; } WebVideoFrame::Format WebVideoFrameImpl::format() const { if (video_frame_.get()) return static_cast<WebVideoFrame::Format>(video_frame_->format()); return WebVideoFrame::FormatInvalid; } unsigned WebVideoFrameImpl::width() const { if (video_frame_.get()) return video_frame_->width(); return 0; } unsigned WebVideoFrameImpl::height() const { if (video_frame_.get()) return video_frame_->height(); return 0; } unsigned WebVideoFrameImpl::planes() const { if (video_frame_.get()) return video_frame_->planes(); return 0; } int WebVideoFrameImpl::stride(unsigned plane) const { if (video_frame_.get()) return static_cast<int>(video_frame_->stride(plane)); return 0; } const void* WebVideoFrameImpl::data(unsigned plane) const { if (video_frame_.get()) return static_cast<const void*>(video_frame_->data(plane)); return NULL; } unsigned WebVideoFrameImpl::texture(unsigned plane) const { if (video_frame_.get()) return video_frame_->gl_texture(plane); return 0; } } // namespace webkit_glue