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 /** 7 * Defines the <code>PPB_VideoFrame</code> interface. 8 */ 9 10 [generate_thunk] 11 12 label Chrome { 13 [channel=dev] M34 = 0.1, 14 M35 = 0.1 15 }; 16 17 enum PP_VideoFrame_Format { 18 /** 19 * Unknown format value. 20 */ 21 PP_VIDEOFRAME_FORMAT_UNKNOWN = 0, 22 23 /** 24 * 12bpp YVU planar 1x1 Y, 2x2 VU samples. 25 */ 26 PP_VIDEOFRAME_FORMAT_YV12 = 1, 27 28 /** 29 * 12bpp YUV planar 1x1 Y, 2x2 UV samples. 30 */ 31 PP_VIDEOFRAME_FORMAT_I420 = 2, 32 33 /** 34 * 32bpp BGRA. 35 */ 36 PP_VIDEOFRAME_FORMAT_BGRA = 3, 37 38 /** 39 * The last format. 40 */ 41 PP_VIDEOFRAME_FORMAT_LAST = PP_VIDEOFRAME_FORMAT_BGRA 42 }; 43 44 [version=0.1] 45 interface PPB_VideoFrame { 46 /** 47 * Determines if a resource is a VideoFrame resource. 48 * 49 * @param[in] resource The <code>PP_Resource</code> to test. 50 * 51 * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given 52 * resource is a VideoFrame resource or <code>PP_FALSE</code> otherwise. 53 */ 54 PP_Bool IsVideoFrame([in] PP_Resource resource); 55 56 /** 57 * Gets the timestamp of the video frame. 58 * 59 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 60 * resource. 61 * 62 * @return A <code>PP_TimeDelta</code> containing the timestamp of the video 63 * frame. Given in seconds since the start of the containing video stream. 64 */ 65 [on_failure=0.0] 66 PP_TimeDelta GetTimestamp([in] PP_Resource frame); 67 68 /** 69 * Sets the timestamp of the video frame. Given in seconds since the 70 * start of the containing video stream. 71 * 72 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 73 * resource. 74 * @param[in] timestamp A <code>PP_TimeDelta</code> containing the timestamp 75 * of the video frame. Given in seconds since the start of the containing 76 * video stream. 77 */ 78 void SetTimestamp([in] PP_Resource frame, [in] PP_TimeDelta timestamp); 79 80 /** 81 * Gets the format of the video frame. 82 * 83 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 84 * resource. 85 * 86 * @return A <code>PP_VideoFrame_Format</code> containing the format of the 87 * video frame. 88 */ 89 [on_failure=PP_VIDEOFRAME_FORMAT_UNKNOWN] 90 PP_VideoFrame_Format GetFormat([in] PP_Resource frame); 91 92 /** 93 * Gets the size of the video frame. 94 * 95 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 96 * resource. 97 * @param[out] size A <code>PP_Size</code>. 98 * 99 * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> on success or 100 * <code>PP_FALSE</code> on failure. 101 */ 102 PP_Bool GetSize([in] PP_Resource frame, [out] PP_Size size); 103 104 /** 105 * Gets the data buffer for video frame pixels. 106 * 107 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 108 * resource. 109 * 110 * @return A pointer to the beginning of the data buffer. 111 */ 112 mem_t GetDataBuffer([in] PP_Resource frame); 113 114 /** 115 * Gets the size of data buffer. 116 * 117 * @param[in] frame A <code>PP_Resource</code> corresponding to a video frame 118 * resource. 119 * 120 * @return The size of the data buffer. 121 */ 122 uint32_t GetDataBufferSize([in] PP_Resource frame); 123 }; 124