| Index: ppapi/c/dev/pp_video_dev.h
|
| ===================================================================
|
| --- ppapi/c/dev/pp_video_dev.h (revision 68374)
|
| +++ ppapi/c/dev/pp_video_dev.h (working copy)
|
| @@ -39,6 +39,7 @@
|
| PP_VIDEOKEY_H264FEATURE_CABAC,
|
| PP_VIDEOKEY_H264FEATURE_WEIGHTEDPREDICTION
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoKey_Dev, 4);
|
|
|
| enum PP_VideoDecoderEvent_Dev {
|
| PP_VIDEODECODEREVENT_NONE = 0,
|
| @@ -49,6 +50,7 @@
|
| // Signaling new cropping rectangle
|
| PP_VIDEODECODEREVENT_NEWCROP
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoDecoderEvent_Dev, 4);
|
|
|
| enum PP_VideoDecodeError_Dev {
|
| PP_VIDEODECODEERROR_NONE = 0,
|
| @@ -58,6 +60,7 @@
|
| PP_VIDEODECODEERROR_BADINPUT,
|
| PP_VIDEODECODEERROR_HARDWARE
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoDecodeError_Dev, 4);
|
|
|
| enum PP_VideoCodecId_Dev {
|
| PP_VIDEODECODECID_NONE = 0,
|
| @@ -66,12 +69,14 @@
|
| PP_VIDEODECODECID_MPEG2,
|
| PP_VIDEODECODECID_VP8
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoCodecId_Dev, 4);
|
|
|
| enum PP_VideoOperation_Dev {
|
| PP_VIDEOOPERATION_NONE = 0,
|
| PP_VIDEOOPERATION_DECODE,
|
| PP_VIDEOOPERATION_ENCODE
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoOperation_Dev, 4);
|
|
|
| enum PP_VideoCodecProfile_Dev {
|
| PP_VIDEOCODECPROFILE_NONE = 0,
|
| @@ -94,6 +99,7 @@
|
| PP_VIDEOCODECPROFILE_MPEG2_SPATIAL,
|
| PP_VIDEOCODECPROFILE_MPEG2_HIGH
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoCodecProfile_Dev, 4);
|
|
|
| enum PP_VideoCodecLevel_Dev {
|
| PP_VIDEOCODECLEVEL_NONE = 0,
|
| @@ -128,12 +134,14 @@
|
| PP_VIDEOCODECLEVEL_MPEG2_HIGH1440,
|
| PP_VIDEOCODECLEVEL_MPEG2_HIGH
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoCodecLevel_Dev, 4);
|
|
|
| enum PP_VideoPayloadFormat_Dev {
|
| PP_VIDEOPAYLOADFORMAT_NONE = 0,
|
| PP_VIDEOPAYLOADFORMAT_BYTESTREAM,
|
| PP_VIDEOPAYLOADFORMAT_RTPPAYLOAD
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoPayloadFormat_Dev, 4);
|
|
|
| enum PP_VideoFrameColorType_Dev {
|
| PP_VIDEOFRAMECOLORTYPE_NONE = 0,
|
| @@ -145,6 +153,7 @@
|
| PP_VIDEOFRAMECOLORTYPE_YUV422PLANAR,
|
| PP_VIDEOFRAMECOLORTYPE_YUV444PLANAR
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoFrameColorType_Dev, 4);
|
|
|
| enum PP_VideoFrameSurfaceType_Dev {
|
| PP_VIDEOFRAMESURFACETYPE_NONE = 0,
|
| @@ -152,6 +161,7 @@
|
| PP_VIDEOFRAMESURFACETYPE_GLTEXTURE,
|
| PP_VIDEOFRAMESURFACETYPE_PIXMAP
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoFrameSurfaceType_Dev, 4);
|
|
|
| enum PP_VideoFrameInfoFlag_Dev {
|
| PP_VIDEOFRAMEINFOFLAG_NONE = 0,
|
| @@ -164,6 +174,7 @@
|
| // Indicate the decoded frame has data corruption. Used by browser.
|
| PP_VIDEOFRAMEINFOFLAG_DATACORRUPT = 1 << 3
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoFrameInfoFlag_Dev, 4);
|
|
|
| enum PP_VideoFrameBufferConst_Dev {
|
| // YUV formats
|
| @@ -178,8 +189,10 @@
|
|
|
| PP_VIDEOFRAMEBUFFER_MAXNUMBERPLANES = 4
|
| };
|
| +PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_VideoFrameBufferConst_Dev, 4);
|
|
|
| typedef int64_t PP_VideoDecodeData_Dev;
|
| +PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VideoDecodeData_Dev, 8);
|
|
|
| // Array of key/value pairs describing video configuration.
|
| // It could include any keys from PP_VideoKey. Its last element shall be
|
| @@ -195,34 +208,44 @@
|
| // };
|
| typedef int32_t* PP_VideoConfig_Dev;
|
| typedef int32_t PP_VideoConfigElement_Dev;
|
| +PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VideoConfigElement_Dev, 4);
|
|
|
| // The data structure for compressed data buffer.
|
| struct PP_VideoCompressedDataBuffer_Dev {
|
| // The buffer is created through PPB_Buffer API.
|
| // TODO(wjia): would uint8_t* be good, too?
|
| PP_Resource buffer;
|
| +
|
| // number of bytes with real data in the buffer.
|
| int32_t filled_size;
|
|
|
| + // Bit mask of PP_VideoFrameInfoFlag.
|
| + uint32_t flags;
|
| +
|
| // Time stamp of the frame in microsecond.
|
| uint64_t time_stamp_us;
|
| -
|
| - // Bit mask of PP_VideoFrameInfoFlag.
|
| - uint32_t flags;
|
| };
|
| +PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_VideoCompressedDataBuffer_Dev, 24);
|
|
|
| struct PP_VideoFrameBuffer_Dev {
|
| union {
|
| struct {
|
| - int32_t planes;
|
| struct {
|
| int32_t width;
|
| int32_t height;
|
| int32_t stride;
|
|
|
| + // Padding to ensure the PP_Resource is 8-byte aligned relative to the
|
| + // start of the struct. This helps ensure PP_VideoFrameBuffer_Dev has
|
| + // consistent size and alignment across compilers.
|
| + int32_t padding;
|
| +
|
| // TODO(wjia): uint8* would be better for some cases.
|
| PP_Resource buffer;
|
| } data_plane[PP_VIDEOFRAMEBUFFER_MAXNUMBERPLANES];
|
| +
|
| + int32_t planes;
|
| + int32_t padding;
|
| } sys_mem;
|
|
|
| // Handle for pixmap, gl texture, etc.
|
| @@ -232,23 +255,35 @@
|
| // Storage for decoder to save some private data. It could be useful when
|
| // plugin returns frame buffer to decoder.
|
| void* private_handle;
|
| +
|
| + // In some 32-bit platforms (NaCl and Win32), this struct is 8-byte aligned
|
| + // due to the PP_Resource above. That causes the compiler to pad it an extra
|
| + // 4 bytes on the end. In other 32-bit platforms, there is no such pad. This
|
| + // padding ensures that the size is consistent on 32-bit platforms (and it
|
| + // is still consistent on 64-bit platforms, just bigger than it would be
|
| + // without the padding).
|
| + int32_t padding;
|
| };
|
|
|
| struct PP_VideoUncompressedDataBuffer_Dev {
|
| PP_VideoConfig_Dev format;
|
| - struct PP_VideoFrameBuffer_Dev buffer;
|
|
|
| + // Bit mask of PP_VideoFrameInfoFlag.
|
| + uint32_t flags;
|
| +
|
| // Time stamp of the frame in microsecond.
|
| uint64_t time_stamp_us;
|
|
|
| - // Bit mask of PP_VideoFrameInfoFlag.
|
| - uint32_t flags;
|
| + struct PP_VideoFrameBuffer_Dev buffer;
|
|
|
| // Output from decoder, indicating the decoded frame has error pixels. This
|
| // could be resulted from corrupted input bit stream and error concealment
|
| // in decoding. PP_TRUE indicates error.
|
| // TODO(wjia): add more info about error pixels, such as error MB map, etc.
|
| PP_Bool error;
|
| +
|
| + // TODO(dmichael): document
|
| + int32_t padding;
|
| };
|
|
|
| // Plugin callback for decoder to deliver decoded frame buffers.
|
|
|