Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: ppapi/c/dev/pp_video_dev.h

Issue 5674004: Add compile assertions to enforce the sizes of all structs and enums in the C... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/c/dev/pp_file_info_dev.h ('k') | ppapi/c/dev/ppb_audio_config_dev.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PPAPI_C_DEV_PP_VIDEO_DEV_H_ 5 #ifndef PPAPI_C_DEV_PP_VIDEO_DEV_H_
6 #define PPAPI_C_DEV_PP_VIDEO_DEV_H_ 6 #define PPAPI_C_DEV_PP_VIDEO_DEV_H_
7 7
8 #include "ppapi/c/pp_bool.h" 8 #include "ppapi/c/pp_bool.h"
9 #include "ppapi/c/pp_instance.h" 9 #include "ppapi/c/pp_instance.h"
10 #include "ppapi/c/pp_macros.h"
10 #include "ppapi/c/pp_resource.h" 11 #include "ppapi/c/pp_resource.h"
11 #include "ppapi/c/pp_stdint.h" 12 #include "ppapi/c/pp_stdint.h"
12 13
13 enum PP_VideoKey_Dev { 14 enum PP_VideoKey_Dev {
14 PP_VIDEOKEY_NONE = 0, 15 PP_VIDEOKEY_NONE = 0,
15 // Value is type of PP_VideoCodecId. 16 // Value is type of PP_VideoCodecId.
16 PP_VIDEOKEY_CODECID, 17 PP_VIDEOKEY_CODECID,
17 // Value is type of PP_VideoOperation. 18 // Value is type of PP_VideoOperation.
18 PP_VIDEOKEY_OPERATION, 19 PP_VIDEOKEY_OPERATION,
19 // Value is type of PP_VideoCodecProfile. 20 // Value is type of PP_VideoCodecProfile.
(...skipping 12 matching lines...) Expand all
32 PP_VIDEOKEY_FRAMEINFOFLAG, 33 PP_VIDEOKEY_FRAMEINFOFLAG,
33 34
34 // Subset for H.264 features, value of 1 means supported. This is needed in 35 // Subset for H.264 features, value of 1 means supported. This is needed in
35 // case decoder has partial support for certain profile. 36 // case decoder has partial support for certain profile.
36 PP_VIDEOKEY_H264FEATURE_FMO = 0x100, 37 PP_VIDEOKEY_H264FEATURE_FMO = 0x100,
37 PP_VIDEOKEY_H264FEATURE_ASO, 38 PP_VIDEOKEY_H264FEATURE_ASO,
38 PP_VIDEOKEY_H264FEATURE_INTERLACE, 39 PP_VIDEOKEY_H264FEATURE_INTERLACE,
39 PP_VIDEOKEY_H264FEATURE_CABAC, 40 PP_VIDEOKEY_H264FEATURE_CABAC,
40 PP_VIDEOKEY_H264FEATURE_WEIGHTEDPREDICTION 41 PP_VIDEOKEY_H264FEATURE_WEIGHTEDPREDICTION
41 }; 42 };
43 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoKey_Dev, 4);
42 44
43 enum PP_VideoDecoderEvent_Dev { 45 enum PP_VideoDecoderEvent_Dev {
44 PP_VIDEODECODEREVENT_NONE = 0, 46 PP_VIDEODECODEREVENT_NONE = 0,
45 // Signaling that an error has been hit. 47 // Signaling that an error has been hit.
46 PP_VIDEODECODEREVENT_ERROR, 48 PP_VIDEODECODEREVENT_ERROR,
47 // Signaling new width/height of video frame 49 // Signaling new width/height of video frame
48 PP_VIDEODECODEREVENT_NEWDIMENSION, 50 PP_VIDEODECODEREVENT_NEWDIMENSION,
49 // Signaling new cropping rectangle 51 // Signaling new cropping rectangle
50 PP_VIDEODECODEREVENT_NEWCROP 52 PP_VIDEODECODEREVENT_NEWCROP
51 }; 53 };
54 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoDecoderEvent_Dev, 4);
52 55
53 enum PP_VideoDecodeError_Dev { 56 enum PP_VideoDecodeError_Dev {
54 PP_VIDEODECODEERROR_NONE = 0, 57 PP_VIDEODECODEERROR_NONE = 0,
55 PP_VIDEODECODEERROR_NOTSUPPORTED, 58 PP_VIDEODECODEERROR_NOTSUPPORTED,
56 PP_VIDEODECODEERROR_INSUFFICIENTRESOURCES, 59 PP_VIDEODECODEERROR_INSUFFICIENTRESOURCES,
57 PP_VIDEODECODEERROR_UNDEFINED, 60 PP_VIDEODECODEERROR_UNDEFINED,
58 PP_VIDEODECODEERROR_BADINPUT, 61 PP_VIDEODECODEERROR_BADINPUT,
59 PP_VIDEODECODEERROR_HARDWARE 62 PP_VIDEODECODEERROR_HARDWARE
60 }; 63 };
64 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoDecodeError_Dev, 4);
61 65
62 enum PP_VideoCodecId_Dev { 66 enum PP_VideoCodecId_Dev {
63 PP_VIDEODECODECID_NONE = 0, 67 PP_VIDEODECODECID_NONE = 0,
64 PP_VIDEODECODECID_H264, 68 PP_VIDEODECODECID_H264,
65 PP_VIDEODECODECID_VC1, 69 PP_VIDEODECODECID_VC1,
66 PP_VIDEODECODECID_MPEG2, 70 PP_VIDEODECODECID_MPEG2,
67 PP_VIDEODECODECID_VP8 71 PP_VIDEODECODECID_VP8
68 }; 72 };
73 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoCodecId_Dev, 4);
69 74
70 enum PP_VideoOperation_Dev { 75 enum PP_VideoOperation_Dev {
71 PP_VIDEOOPERATION_NONE = 0, 76 PP_VIDEOOPERATION_NONE = 0,
72 PP_VIDEOOPERATION_DECODE, 77 PP_VIDEOOPERATION_DECODE,
73 PP_VIDEOOPERATION_ENCODE 78 PP_VIDEOOPERATION_ENCODE
74 }; 79 };
80 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoOperation_Dev, 4);
75 81
76 enum PP_VideoCodecProfile_Dev { 82 enum PP_VideoCodecProfile_Dev {
77 PP_VIDEOCODECPROFILE_NONE = 0, 83 PP_VIDEOCODECPROFILE_NONE = 0,
78 PP_VIDEOCODECPROFILE_H264_BASELINE, 84 PP_VIDEOCODECPROFILE_H264_BASELINE,
79 PP_VIDEOCODECPROFILE_H264_MAIN, 85 PP_VIDEOCODECPROFILE_H264_MAIN,
80 PP_VIDEOCODECPROFILE_H264_EXTENDED, 86 PP_VIDEOCODECPROFILE_H264_EXTENDED,
81 PP_VIDEOCODECPROFILE_H264_HIGH, 87 PP_VIDEOCODECPROFILE_H264_HIGH,
82 PP_VIDEOCODECPROFILE_H264_SCALABLEBASELINE, 88 PP_VIDEOCODECPROFILE_H264_SCALABLEBASELINE,
83 PP_VIDEOCODECPROFILE_H264_SCALABLEHIGH, 89 PP_VIDEOCODECPROFILE_H264_SCALABLEHIGH,
84 PP_VIDEOCODECPROFILE_H264_STEREOHIGH, 90 PP_VIDEOCODECPROFILE_H264_STEREOHIGH,
85 PP_VIDEOCODECPROFILE_H264_MULTIVIEWHIGH, 91 PP_VIDEOCODECPROFILE_H264_MULTIVIEWHIGH,
86 92
87 PP_VIDEOCODECPROFILE_VC1_SIMPLE = 0x40, 93 PP_VIDEOCODECPROFILE_VC1_SIMPLE = 0x40,
88 PP_VIDEOCODECPROFILE_VC1_MAIN, 94 PP_VIDEOCODECPROFILE_VC1_MAIN,
89 PP_VIDEOCODECPROFILE_VC1_ADVANCED, 95 PP_VIDEOCODECPROFILE_VC1_ADVANCED,
90 96
91 PP_VIDEOCODECPROFILE_MPEG2_SIMPLE = 0x80, 97 PP_VIDEOCODECPROFILE_MPEG2_SIMPLE = 0x80,
92 PP_VIDEOCODECPROFILE_MPEG2_MAIN, 98 PP_VIDEOCODECPROFILE_MPEG2_MAIN,
93 PP_VIDEOCODECPROFILE_MPEG2_SNR, 99 PP_VIDEOCODECPROFILE_MPEG2_SNR,
94 PP_VIDEOCODECPROFILE_MPEG2_SPATIAL, 100 PP_VIDEOCODECPROFILE_MPEG2_SPATIAL,
95 PP_VIDEOCODECPROFILE_MPEG2_HIGH 101 PP_VIDEOCODECPROFILE_MPEG2_HIGH
96 }; 102 };
103 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoCodecProfile_Dev, 4);
97 104
98 enum PP_VideoCodecLevel_Dev { 105 enum PP_VideoCodecLevel_Dev {
99 PP_VIDEOCODECLEVEL_NONE = 0, 106 PP_VIDEOCODECLEVEL_NONE = 0,
100 PP_VIDEOCODECLEVEL_H264_10, 107 PP_VIDEOCODECLEVEL_H264_10,
101 PP_VIDEOCODECLEVEL_H264_1B, 108 PP_VIDEOCODECLEVEL_H264_1B,
102 PP_VIDEOCODECLEVEL_H264_11, 109 PP_VIDEOCODECLEVEL_H264_11,
103 PP_VIDEOCODECLEVEL_H264_12, 110 PP_VIDEOCODECLEVEL_H264_12,
104 PP_VIDEOCODECLEVEL_H264_13, 111 PP_VIDEOCODECLEVEL_H264_13,
105 PP_VIDEOCODECLEVEL_H264_20, 112 PP_VIDEOCODECLEVEL_H264_20,
106 PP_VIDEOCODECLEVEL_H264_21, 113 PP_VIDEOCODECLEVEL_H264_21,
(...skipping 14 matching lines...) Expand all
121 PP_VIDEOCODECLEVEL_VC1_L1, 128 PP_VIDEOCODECLEVEL_VC1_L1,
122 PP_VIDEOCODECLEVEL_VC1_L2, 129 PP_VIDEOCODECLEVEL_VC1_L2,
123 PP_VIDEOCODECLEVEL_VC1_L3, 130 PP_VIDEOCODECLEVEL_VC1_L3,
124 PP_VIDEOCODECLEVEL_VC1_L4, 131 PP_VIDEOCODECLEVEL_VC1_L4,
125 132
126 PP_VIDEOCODECLEVEL_MPEG2_LOW = 0x80, 133 PP_VIDEOCODECLEVEL_MPEG2_LOW = 0x80,
127 PP_VIDEOCODECLEVEL_MPEG2_MAIN, 134 PP_VIDEOCODECLEVEL_MPEG2_MAIN,
128 PP_VIDEOCODECLEVEL_MPEG2_HIGH1440, 135 PP_VIDEOCODECLEVEL_MPEG2_HIGH1440,
129 PP_VIDEOCODECLEVEL_MPEG2_HIGH 136 PP_VIDEOCODECLEVEL_MPEG2_HIGH
130 }; 137 };
138 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoCodecLevel_Dev, 4);
131 139
132 enum PP_VideoPayloadFormat_Dev { 140 enum PP_VideoPayloadFormat_Dev {
133 PP_VIDEOPAYLOADFORMAT_NONE = 0, 141 PP_VIDEOPAYLOADFORMAT_NONE = 0,
134 PP_VIDEOPAYLOADFORMAT_BYTESTREAM, 142 PP_VIDEOPAYLOADFORMAT_BYTESTREAM,
135 PP_VIDEOPAYLOADFORMAT_RTPPAYLOAD 143 PP_VIDEOPAYLOADFORMAT_RTPPAYLOAD
136 }; 144 };
145 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoPayloadFormat_Dev, 4);
137 146
138 enum PP_VideoFrameColorType_Dev { 147 enum PP_VideoFrameColorType_Dev {
139 PP_VIDEOFRAMECOLORTYPE_NONE = 0, 148 PP_VIDEOFRAMECOLORTYPE_NONE = 0,
140 PP_VIDEOFRAMECOLORTYPE_RGB565, 149 PP_VIDEOFRAMECOLORTYPE_RGB565,
141 PP_VIDEOFRAMECOLORTYPE_ARGB8888, 150 PP_VIDEOFRAMECOLORTYPE_ARGB8888,
142 PP_VIDEOFRAMECOLORTYPE_YUV, 151 PP_VIDEOFRAMECOLORTYPE_YUV,
143 PP_VIDEOFRAMECOLORTYPE_Monochrome, 152 PP_VIDEOFRAMECOLORTYPE_Monochrome,
144 PP_VIDEOFRAMECOLORTYPE_YUV420PLANAR, 153 PP_VIDEOFRAMECOLORTYPE_YUV420PLANAR,
145 PP_VIDEOFRAMECOLORTYPE_YUV422PLANAR, 154 PP_VIDEOFRAMECOLORTYPE_YUV422PLANAR,
146 PP_VIDEOFRAMECOLORTYPE_YUV444PLANAR 155 PP_VIDEOFRAMECOLORTYPE_YUV444PLANAR
147 }; 156 };
157 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoFrameColorType_Dev, 4);
148 158
149 enum PP_VideoFrameSurfaceType_Dev { 159 enum PP_VideoFrameSurfaceType_Dev {
150 PP_VIDEOFRAMESURFACETYPE_NONE = 0, 160 PP_VIDEOFRAMESURFACETYPE_NONE = 0,
151 PP_VIDEOFRAMESURFACETYPE_SYSTEMMEMORY, 161 PP_VIDEOFRAMESURFACETYPE_SYSTEMMEMORY,
152 PP_VIDEOFRAMESURFACETYPE_GLTEXTURE, 162 PP_VIDEOFRAMESURFACETYPE_GLTEXTURE,
153 PP_VIDEOFRAMESURFACETYPE_PIXMAP 163 PP_VIDEOFRAMESURFACETYPE_PIXMAP
154 }; 164 };
165 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoFrameSurfaceType_Dev, 4);
155 166
156 enum PP_VideoFrameInfoFlag_Dev { 167 enum PP_VideoFrameInfoFlag_Dev {
157 PP_VIDEOFRAMEINFOFLAG_NONE = 0, 168 PP_VIDEOFRAMEINFOFLAG_NONE = 0,
158 // Indicate this is the end of stream. Used by both plugin and browser. 169 // Indicate this is the end of stream. Used by both plugin and browser.
159 PP_VIDEOFRAMEINFOFLAG_EOS = 1 << 0, 170 PP_VIDEOFRAMEINFOFLAG_EOS = 1 << 0,
160 // Decode the frame only, don't return decoded frame. Used by plugin. 171 // Decode the frame only, don't return decoded frame. Used by plugin.
161 PP_VIDEOFRAMEINFOFLAG_NOEMIT = 1 << 1, 172 PP_VIDEOFRAMEINFOFLAG_NOEMIT = 1 << 1,
162 // Indicate this is an anchor frame. Used by plugin. 173 // Indicate this is an anchor frame. Used by plugin.
163 PP_VIDEOFRAMEINFOFLAG_SYNCFRAME = 1 << 2, 174 PP_VIDEOFRAMEINFOFLAG_SYNCFRAME = 1 << 2,
164 // Indicate the decoded frame has data corruption. Used by browser. 175 // Indicate the decoded frame has data corruption. Used by browser.
165 PP_VIDEOFRAMEINFOFLAG_DATACORRUPT = 1 << 3 176 PP_VIDEOFRAMEINFOFLAG_DATACORRUPT = 1 << 3
166 }; 177 };
178 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoFrameInfoFlag_Dev, 4);
167 179
168 enum PP_VideoFrameBufferConst_Dev { 180 enum PP_VideoFrameBufferConst_Dev {
169 // YUV formats 181 // YUV formats
170 PP_VIDEOFRAMEBUFFER_YPLANE = 0, 182 PP_VIDEOFRAMEBUFFER_YPLANE = 0,
171 PP_VIDEOFRAMEBUFFER_UPLANE = 1, 183 PP_VIDEOFRAMEBUFFER_UPLANE = 1,
172 PP_VIDEOFRAMEBUFFER_VPLANE = 2, 184 PP_VIDEOFRAMEBUFFER_VPLANE = 2,
173 PP_VIDEOFRAMEBUFFER_NUMBERYUVPLANES = 3, 185 PP_VIDEOFRAMEBUFFER_NUMBERYUVPLANES = 3,
174 186
175 // RGBA formats 187 // RGBA formats
176 PP_VIDEOFRAMEBUFFER_RGBAPLANE = 0, 188 PP_VIDEOFRAMEBUFFER_RGBAPLANE = 0,
177 PP_VIDEOFRAMEBUFFER_NUMBERRGBAPLANES = 1, 189 PP_VIDEOFRAMEBUFFER_NUMBERRGBAPLANES = 1,
178 190
179 PP_VIDEOFRAMEBUFFER_MAXNUMBERPLANES = 4 191 PP_VIDEOFRAMEBUFFER_MAXNUMBERPLANES = 4
180 }; 192 };
193 PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoFrameBufferConst_Dev, 4);
181 194
182 typedef int64_t PP_VideoDecodeData_Dev; 195 typedef int64_t PP_VideoDecodeData_Dev;
196 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VideoDecodeData_Dev, 8);
183 197
184 // Array of key/value pairs describing video configuration. 198 // Array of key/value pairs describing video configuration.
185 // It could include any keys from PP_VideoKey. Its last element shall be 199 // It could include any keys from PP_VideoKey. Its last element shall be
186 // PP_VIDEOKEY_NONE with no corresponding value. 200 // PP_VIDEOKEY_NONE with no corresponding value.
187 // An example: 201 // An example:
188 // { 202 // {
189 // PP_VIDEOKEY_CODECID, PP_VIDEODECODECID_H264, 203 // PP_VIDEOKEY_CODECID, PP_VIDEODECODECID_H264,
190 // PP_VIDEOKEY_OPERATION, PP_VIDEOOPERATION_DECODE, 204 // PP_VIDEOKEY_OPERATION, PP_VIDEOOPERATION_DECODE,
191 // PP_VIDEOKEY_CODECPROFILE, PP_VIDEOCODECPROFILE_H264_HIGH, 205 // PP_VIDEOKEY_CODECPROFILE, PP_VIDEOCODECPROFILE_H264_HIGH,
192 // PP_VIDEOKEY_CODECLEVEL, PP_VIDEOCODECLEVEL_H264_41, 206 // PP_VIDEOKEY_CODECLEVEL, PP_VIDEOCODECLEVEL_H264_41,
193 // PP_VIDEOKEY_ACCELERATION, 1 207 // PP_VIDEOKEY_ACCELERATION, 1
194 // PP_VIDEOKEY_NONE, 208 // PP_VIDEOKEY_NONE,
195 // }; 209 // };
196 typedef int32_t* PP_VideoConfig_Dev; 210 typedef int32_t* PP_VideoConfig_Dev;
197 typedef int32_t PP_VideoConfigElement_Dev; 211 typedef int32_t PP_VideoConfigElement_Dev;
212 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VideoConfigElement_Dev, 4);
198 213
199 // The data structure for compressed data buffer. 214 // The data structure for compressed data buffer.
200 struct PP_VideoCompressedDataBuffer_Dev { 215 struct PP_VideoCompressedDataBuffer_Dev {
201 // The buffer is created through PPB_Buffer API. 216 // The buffer is created through PPB_Buffer API.
202 // TODO(wjia): would uint8_t* be good, too? 217 // TODO(wjia): would uint8_t* be good, too?
203 PP_Resource buffer; 218 PP_Resource buffer;
219
204 // number of bytes with real data in the buffer. 220 // number of bytes with real data in the buffer.
205 int32_t filled_size; 221 int32_t filled_size;
206 222
223 // Bit mask of PP_VideoFrameInfoFlag.
224 uint32_t flags;
225
207 // Time stamp of the frame in microsecond. 226 // Time stamp of the frame in microsecond.
208 uint64_t time_stamp_us; 227 uint64_t time_stamp_us;
209
210 // Bit mask of PP_VideoFrameInfoFlag.
211 uint32_t flags;
212 }; 228 };
229 PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_VideoCompressedDataBuffer_Dev, 24);
213 230
214 struct PP_VideoFrameBuffer_Dev { 231 struct PP_VideoFrameBuffer_Dev {
215 union { 232 union {
216 struct { 233 struct {
217 int32_t planes;
218 struct { 234 struct {
219 int32_t width; 235 int32_t width;
220 int32_t height; 236 int32_t height;
221 int32_t stride; 237 int32_t stride;
222 238
239 // Padding to ensure the PP_Resource is 8-byte aligned relative to the
240 // start of the struct. This helps ensure PP_VideoFrameBuffer_Dev has
241 // consistent size and alignment across compilers.
242 int32_t padding;
243
223 // TODO(wjia): uint8* would be better for some cases. 244 // TODO(wjia): uint8* would be better for some cases.
224 PP_Resource buffer; 245 PP_Resource buffer;
225 } data_plane[PP_VIDEOFRAMEBUFFER_MAXNUMBERPLANES]; 246 } data_plane[PP_VIDEOFRAMEBUFFER_MAXNUMBERPLANES];
247
248 int32_t planes;
249
250 // This padding makes sure the sys_mem struct's size is a multiple of 8
251 // bytes, ensuring that handle is always 8-byte aligned relative to the
252 // start of the PP_VideoFrameBuffer_Dev struct.
253 int32_t padding;
226 } sys_mem; 254 } sys_mem;
227 255
228 // Handle for pixmap, gl texture, etc. 256 // Handle for pixmap, gl texture, etc.
229 void* handle; 257 void* handle;
230 } buffer; 258 } buffer;
231 259
232 // Storage for decoder to save some private data. It could be useful when 260 // Storage for decoder to save some private data. It could be useful when
233 // plugin returns frame buffer to decoder. 261 // plugin returns frame buffer to decoder.
234 void* private_handle; 262 void* private_handle;
263
264 // In some 32-bit platforms (NaCl and Win32), this struct is 8-byte aligned
darin (slow to review) 2010/12/13 08:24:57 Is this comment out-dated now that PP_Resource has
265 // due to the PP_Resource above. That causes the compiler to pad it an extra
266 // 4 bytes on the end. In other 32-bit platforms, there is no such pad. This
267 // padding ensures that the size is consistent on 32-bit platforms (and it
268 // is still consistent on 64-bit platforms, just bigger than it would be
269 // without the padding).
270 int32_t padding;
235 }; 271 };
236 272
237 struct PP_VideoUncompressedDataBuffer_Dev { 273 struct PP_VideoUncompressedDataBuffer_Dev {
238 PP_VideoConfig_Dev format; 274 PP_VideoConfig_Dev format;
239 struct PP_VideoFrameBuffer_Dev buffer; 275
276 // Bit mask of PP_VideoFrameInfoFlag.
277 uint32_t flags;
240 278
241 // Time stamp of the frame in microsecond. 279 // Time stamp of the frame in microsecond.
242 uint64_t time_stamp_us; 280 uint64_t time_stamp_us;
243 281
244 // Bit mask of PP_VideoFrameInfoFlag. 282 struct PP_VideoFrameBuffer_Dev buffer;
245 uint32_t flags;
246 283
247 // Output from decoder, indicating the decoded frame has error pixels. This 284 // Output from decoder, indicating the decoded frame has error pixels. This
248 // could be resulted from corrupted input bit stream and error concealment 285 // could be resulted from corrupted input bit stream and error concealment
249 // in decoding. PP_TRUE indicates error. 286 // in decoding. PP_TRUE indicates error.
250 // TODO(wjia): add more info about error pixels, such as error MB map, etc. 287 // TODO(wjia): add more info about error pixels, such as error MB map, etc.
251 PP_Bool error; 288 PP_Bool error;
289
290 // In some 32-bit platforms (NaCl and Win32), this struct is 8-byte aligned
291 // due to the uint64_t and buffer above. That causes the compiler to pad it
292 // an extra 4 bytes on the end. In other 32-bit platforms, there is no such
293 // pad. This padding ensures that the size is consistent on 32-bit platforms
294 // (and it is still consistent on 64-bit platforms, just bigger than it would
295 // be without the padding).
296 int32_t padding;
252 }; 297 };
253 298
254 // Plugin callback for decoder to deliver decoded frame buffers. 299 // Plugin callback for decoder to deliver decoded frame buffers.
255 // |format| in |buffer| specifies the format of decoded frame, with 300 // |format| in |buffer| specifies the format of decoded frame, with
256 // PP_VIDEOKEY_COLORTYPE and PP_VIDEOKEY_SURFACETYPE required. 301 // PP_VIDEOKEY_COLORTYPE and PP_VIDEOKEY_SURFACETYPE required.
257 typedef void (*PP_VideoDecodeOutputCallback_Func_Dev)( 302 typedef void (*PP_VideoDecodeOutputCallback_Func_Dev)(
258 PP_Instance instance, 303 PP_Instance instance,
259 struct PP_VideoUncompressedDataBuffer_Dev* buffer); 304 struct PP_VideoUncompressedDataBuffer_Dev* buffer);
260 305
261 // Plugin callback for decoder to return input data buffers. 306 // Plugin callback for decoder to return input data buffers.
(...skipping 20 matching lines...) Expand all
282 // Requested decoder configuration and callback from plugin. 327 // Requested decoder configuration and callback from plugin.
283 struct PP_VideoDecoderConfig_Dev { 328 struct PP_VideoDecoderConfig_Dev {
284 PP_VideoConfig_Dev input_format; 329 PP_VideoConfig_Dev input_format;
285 PP_VideoConfig_Dev output_format; 330 PP_VideoConfig_Dev output_format;
286 PP_VideoDecodeOutputCallback_Func_Dev output_callback; 331 PP_VideoDecodeOutputCallback_Func_Dev output_callback;
287 PP_VideoDecodeInputCallback_Func_Dev input_callback; 332 PP_VideoDecodeInputCallback_Func_Dev input_callback;
288 PP_VideoDecodeEventHandler_Func_Dev event_handler; 333 PP_VideoDecodeEventHandler_Func_Dev event_handler;
289 }; 334 };
290 335
291 #endif // PPAPI_C_DEV_PP_VIDEO_DEV_H_ 336 #endif // PPAPI_C_DEV_PP_VIDEO_DEV_H_
OLDNEW
« no previous file with comments | « ppapi/c/dev/pp_file_info_dev.h ('k') | ppapi/c/dev/ppb_audio_config_dev.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698