1ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org/* 2ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 3ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org * 4ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org * Use of this source code is governed by a BSD-style license 5ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org * that can be found in the LICENSE file in the root of the source 6ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org * tree. An additional intellectual property rights grant can be found 7ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org * in the file PATENTS. All contributing project authors may 8ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org */ 10ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 11ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org#ifndef COMMON_VIDEO_INTERFACE_TEXTURE_VIDEO_FRAME_H 12ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org#define COMMON_VIDEO_INTERFACE_TEXTURE_VIDEO_FRAME_H 13ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 14ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org// TextureVideoFrame class 15ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org// 16ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org// Storing and handling of video frames backed by textures. 17ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 18ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org#include "webrtc/common_video/interface/i420_video_frame.h" 19ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org#include "webrtc/common_video/interface/native_handle.h" 20ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org#include "webrtc/system_wrappers/interface/scoped_refptr.h" 21ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org#include "webrtc/typedefs.h" 22ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 23ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.orgnamespace webrtc { 24ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 25ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.orgclass TextureVideoFrame : public I420VideoFrame { 26ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org public: 27ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org TextureVideoFrame(NativeHandle* handle, 28ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int width, 29ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int height, 30ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org uint32_t timestamp, 31ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int64_t render_time_ms); 32ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual ~TextureVideoFrame(); 33ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 34ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org // I420VideoFrame implementation 35ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual int CreateEmptyFrame(int width, 36ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int height, 37ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int stride_y, 38ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int stride_u, 39ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int stride_v) OVERRIDE; 40ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual int CreateFrame(int size_y, 41ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org const uint8_t* buffer_y, 42ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int size_u, 43ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org const uint8_t* buffer_u, 44ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int size_v, 45ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org const uint8_t* buffer_v, 46ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int width, 47ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int height, 48ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int stride_y, 49ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int stride_u, 50ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int stride_v) OVERRIDE; 51ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual int CopyFrame(const I420VideoFrame& videoFrame) OVERRIDE; 521bdf186e6ae8d2f1a7d055237a75c0d7fd189624wuchengli@chromium.org virtual I420VideoFrame* CloneFrame() const OVERRIDE; 53ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual void SwapFrame(I420VideoFrame* videoFrame) OVERRIDE; 54ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual uint8_t* buffer(PlaneType type) OVERRIDE; 55ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual const uint8_t* buffer(PlaneType type) const OVERRIDE; 56ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual int allocated_size(PlaneType type) const OVERRIDE; 57ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual int stride(PlaneType type) const OVERRIDE; 58ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual bool IsZeroSize() const OVERRIDE; 59ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual void ResetSize() OVERRIDE; 60ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual void* native_handle() const OVERRIDE; 61ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 62ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org protected: 63ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org virtual int CheckDimensions( 64ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org int width, int height, int stride_y, int stride_u, int stride_v) OVERRIDE; 65ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 66ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org private: 67ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org // An opaque handle that stores the underlying video frame. 68ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org scoped_refptr<NativeHandle> handle_; 69ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org}; 70ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 71ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org} // namespace webrtc 72ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org 73ea7b33ee032bd2d1528384e26ba079dee0d280fbwu@webrtc.org#endif // COMMON_VIDEO_INTERFACE_TEXTURE_VIDEO_FRAME_H 74