15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef PPAPI_CPP_VIDEO_FRAME_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define PPAPI_CPP_VIDEO_FRAME_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/ppb_video_frame.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/cpp/resource.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/cpp/size.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace pp { 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class VideoFrame : public Resource { 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// Default constructor for creating an is_null() 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// <code>VideoFrame</code> object. 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VideoFrame(); 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// The copy constructor for <code>VideoFrame</code>. 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @param[in] other A reference to a <code>VideoFrame</code>. 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VideoFrame(const VideoFrame& other); 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// Constructs a <code>VideoFrame</code> from a <code>Resource</code>. 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @param[in] resource A <code>PPB_VideoFrame</code> resource. 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) explicit VideoFrame(const Resource& resource); 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// A constructor used when you have received a <code>PP_Resource</code> as a 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// return value that has had 1 ref added for you. 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @param[in] resource A <code>PPB_VideoFrame</code> resource. 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VideoFrame(PassRef, PP_Resource resource); 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~VideoFrame(); 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// Gets the timestamp of the video frame. 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @return A <code>PP_TimeDelta</code> containing the timestamp of the video 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// frame. Given in seconds since the start of the containing video stream. 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_TimeDelta GetTimestamp() const; 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// Sets the timestamp of the video frame. 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @param[in] timestamp A <code>PP_TimeDelta</code> containing the timestamp 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// of the video frame. Given in seconds since the start of the containing 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// video stream. 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SetTimestamp(PP_TimeDelta timestamp); 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// Gets the format of the video frame. 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @return A <code>PP_VideoFrame_Format</code> containing the format of the 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// video frame. 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_VideoFrame_Format GetFormat() const; 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// Gets the size of the video frame. 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @param[out] size A <code>Size</code>. 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @return True on success or false on failure. 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool GetSize(Size* size) const; 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// Gets the data buffer for video frame pixels. 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @return A pointer to the beginning of the data buffer. 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void* GetDataBuffer(); 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// Gets the size of data buffer in bytes. 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /// @return The size of the data buffer in bytes. 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t GetDataBufferSize() const; 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace pp 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // PPAPI_CPP_VIDEO_FRAME_H_ 78