1 /* Copyright 2014 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 6 /* From ppb_video_frame.idl modified Tue Mar 25 18:28:57 2014. */ 7 8 #ifndef PPAPI_C_PPB_VIDEO_FRAME_H_ 9 #define PPAPI_C_PPB_VIDEO_FRAME_H_ 10 11 #include "ppapi/c/pp_bool.h" 12 #include "ppapi/c/pp_macros.h" 13 #include "ppapi/c/pp_resource.h" 14 #include "ppapi/c/pp_size.h" 15 #include "ppapi/c/pp_stdint.h" 16 #include "ppapi/c/pp_time.h" 17 18 #define PPB_VIDEOFRAME_INTERFACE_0_1 "PPB_VideoFrame;0.1" 19 #define PPB_VIDEOFRAME_INTERFACE PPB_VIDEOFRAME_INTERFACE_0_1 20 21 /** 22 * @file 23 * Defines the <code>PPB_VideoFrame</code> interface. 24 */ 25 26 27 /** 28 * @addtogroup Enums 29 * @{ 30 */ 31 typedef enum { 32 /** 33 * Unknown format value. 34 */ 35 PP_VIDEOFRAME_FORMAT_UNKNOWN = 0, 36 /** 37 * 12bpp YVU planar 1x1 Y, 2x2 VU samples. 38 */ 39 PP_VIDEOFRAME_FORMAT_YV12 = 1, 40 /** 41 * 12bpp YUV planar 1x1 Y, 2x2 UV samples. 42 */ 43 PP_VIDEOFRAME_FORMAT_I420 = 2, 44 /** 45 * 32bpp BGRA. 46 */ 47 PP_VIDEOFRAME_FORMAT_BGRA = 3, 48 /** 49 * The last format. 50 */ 51 PP_VIDEOFRAME_FORMAT_LAST = PP_VIDEOFRAME_FORMAT_BGRA 52 } PP_VideoFrame_Format; 53 /** 54 * @} 55 */ 56 57 /** 58 * @addtogroup Interfaces 59 * @{ 60 */ 61 struct PPB_VideoFrame_0_1 { 62 /** 63 * Determines if a resource is a VideoFrame resource. 64 * 65 * @param[in] resource The <code>PP_Resource</code> to test. 66 * 67 * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given 68 * resource is a VideoFrame resource or <code>PP_FALSE</code> otherwise. 69 */ 70 PP_Bool (*IsVideoFrame)(PP_Resource resource); 71 /** 72 * Gets the timestamp of the video frame. 73 * 74 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 75 * resource. 76 * 77 * @return A <code>PP_TimeDelta</code> containing the timestamp of the video 78 * frame. Given in seconds since the start of the containing video stream. 79 */ 80 PP_TimeDelta (*GetTimestamp)(PP_Resource frame); 81 /** 82 * Sets the timestamp of the video frame. Given in seconds since the 83 * start of the containing video stream. 84 * 85 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 86 * resource. 87 * @param[in] timestamp A <code>PP_TimeDelta</code> containing the timestamp 88 * of the video frame. Given in seconds since the start of the containing 89 * video stream. 90 */ 91 void (*SetTimestamp)(PP_Resource frame, PP_TimeDelta timestamp); 92 /** 93 * Gets the format of the video frame. 94 * 95 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 96 * resource. 97 * 98 * @return A <code>PP_VideoFrame_Format</code> containing the format of the 99 * video frame. 100 */ 101 PP_VideoFrame_Format (*GetFormat)(PP_Resource frame); 102 /** 103 * Gets the size of the video frame. 104 * 105 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 106 * resource. 107 * @param[out] size A <code>PP_Size</code>. 108 * 109 * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> on success or 110 * <code>PP_FALSE</code> on failure. 111 */ 112 PP_Bool (*GetSize)(PP_Resource frame, struct PP_Size* size); 113 /** 114 * Gets the data buffer for video frame pixels. 115 * 116 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 117 * resource. 118 * 119 * @return A pointer to the beginning of the data buffer. 120 */ 121 void* (*GetDataBuffer)(PP_Resource frame); 122 /** 123 * Gets the size of data buffer. 124 * 125 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 126 * resource. 127 * 128 * @return The size of the data buffer. 129 */ 130 uint32_t (*GetDataBufferSize)(PP_Resource frame); 131 }; 132 133 typedef struct PPB_VideoFrame_0_1 PPB_VideoFrame; 134 /** 135 * @} 136 */ 137 138 #endif /* PPAPI_C_PPB_VIDEO_FRAME_H_ */ 139 140