1 // Copyright (c) 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 #include "webkit/glue/webvideoframe_impl.h" 6 7 #include "media/base/video_frame.h" 8 #include "third_party/WebKit/Source/WebKit/chromium/public/WebVideoFrame.h" 9 10 using namespace WebKit; 11 12 namespace webkit_glue { 13 14 media::VideoFrame* WebVideoFrameImpl::toVideoFrame( 15 WebVideoFrame* web_video_frame) { 16 WebVideoFrameImpl* wrapped_frame = 17 static_cast<WebVideoFrameImpl*>(web_video_frame); 18 if (wrapped_frame) 19 return wrapped_frame->video_frame_.get(); 20 return NULL; 21 } 22 23 WebVideoFrameImpl::WebVideoFrameImpl( 24 scoped_refptr<media::VideoFrame> video_frame) 25 : video_frame_(video_frame) { 26 } 27 28 WebVideoFrameImpl::~WebVideoFrameImpl() {} 29 30 #define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, chromium_name) \ 31 COMPILE_ASSERT(int(WebKit::WebVideoFrame::webkit_name) == \ 32 int(media::VideoFrame::chromium_name), \ 33 mismatching_enums) 34 COMPILE_ASSERT_MATCHING_ENUM(FormatInvalid, INVALID); 35 COMPILE_ASSERT_MATCHING_ENUM(FormatRGB555, RGB555); 36 COMPILE_ASSERT_MATCHING_ENUM(FormatRGB565, RGB565); 37 COMPILE_ASSERT_MATCHING_ENUM(FormatRGB24, RGB24); 38 COMPILE_ASSERT_MATCHING_ENUM(FormatRGB32, RGB32); 39 COMPILE_ASSERT_MATCHING_ENUM(FormatRGBA, RGBA); 40 COMPILE_ASSERT_MATCHING_ENUM(FormatYV12, YV12); 41 COMPILE_ASSERT_MATCHING_ENUM(FormatYV16, YV16); 42 COMPILE_ASSERT_MATCHING_ENUM(FormatNV12, NV12); 43 COMPILE_ASSERT_MATCHING_ENUM(FormatEmpty, EMPTY); 44 COMPILE_ASSERT_MATCHING_ENUM(FormatASCII, ASCII); 45 46 COMPILE_ASSERT_MATCHING_ENUM(SurfaceTypeSystemMemory, TYPE_SYSTEM_MEMORY); 47 // TODO(hclam): Add checks for newly added surface types like GL texture and 48 // D3D texture. 49 50 WebVideoFrame::SurfaceType WebVideoFrameImpl::surfaceType() const { 51 if (video_frame_.get()) 52 return static_cast<WebVideoFrame::SurfaceType>(video_frame_->type()); 53 return WebVideoFrame::SurfaceTypeSystemMemory; 54 } 55 56 WebVideoFrame::Format WebVideoFrameImpl::format() const { 57 if (video_frame_.get()) 58 return static_cast<WebVideoFrame::Format>(video_frame_->format()); 59 return WebVideoFrame::FormatInvalid; 60 } 61 62 unsigned WebVideoFrameImpl::width() const { 63 if (video_frame_.get()) 64 return video_frame_->width(); 65 return 0; 66 } 67 68 unsigned WebVideoFrameImpl::height() const { 69 if (video_frame_.get()) 70 return video_frame_->height(); 71 return 0; 72 } 73 74 unsigned WebVideoFrameImpl::planes() const { 75 if (video_frame_.get()) 76 return video_frame_->planes(); 77 return 0; 78 } 79 80 int WebVideoFrameImpl::stride(unsigned plane) const { 81 if (video_frame_.get()) 82 return static_cast<int>(video_frame_->stride(plane)); 83 return 0; 84 } 85 86 const void* WebVideoFrameImpl::data(unsigned plane) const { 87 if (video_frame_.get()) 88 return static_cast<const void*>(video_frame_->data(plane)); 89 return NULL; 90 } 91 92 unsigned WebVideoFrameImpl::texture(unsigned plane) const { 93 if (video_frame_.get()) 94 return video_frame_->gl_texture(plane); 95 return 0; 96 } 97 98 } // namespace webkit_glue 99