/* Copyright (c) 2012 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /* From dev/pp_video_dev.idl modified Tue Apr 30 14:58:38 2013. */ #ifndef PPAPI_C_DEV_PP_VIDEO_DEV_H_ #define PPAPI_C_DEV_PP_VIDEO_DEV_H_ #include "ppapi/c/pp_macros.h" #include "ppapi/c/pp_resource.h" #include "ppapi/c/pp_size.h" #include "ppapi/c/pp_stdint.h" /** * @file * NOTE: these must be kept in sync with the versions in media/! */ /** * @addtogroup Enums * @{ */ /** * Video format. * * Keep the values in this enum unique, as they imply format (h.264 vs. VP8, * for example), and keep the values for a particular format grouped together * for clarity. * Note: Keep these in sync with media::VideoCodecProfile. */ typedef enum { PP_VIDEODECODER_PROFILE_UNKNOWN = -1, PP_VIDEODECODER_H264PROFILE_NONE = 0, PP_VIDEODECODER_H264PROFILE_BASELINE = 1, PP_VIDEODECODER_H264PROFILE_MAIN = 2, PP_VIDEODECODER_H264PROFILE_EXTENDED = 3, PP_VIDEODECODER_H264PROFILE_HIGH = 4, PP_VIDEODECODER_H264PROFILE_HIGH10PROFILE = 5, PP_VIDEODECODER_H264PROFILE_HIGH422PROFILE = 6, PP_VIDEODECODER_H264PROFILE_HIGH444PREDICTIVEPROFILE = 7, PP_VIDEODECODER_H264PROFILE_SCALABLEBASELINE = 8, PP_VIDEODECODER_H264PROFILE_SCALABLEHIGH = 9, PP_VIDEODECODER_H264PROFILE_STEREOHIGH = 10, PP_VIDEODECODER_H264PROFILE_MULTIVIEWHIGH = 11, PP_VIDEODECODER_VP8PROFILE_MAIN = 12 } PP_VideoDecoder_Profile; PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VideoDecoder_Profile, 4); /** * @} */ /** * @addtogroup Structs * @{ */ /** * The data structure for video bitstream buffer. */ struct PP_VideoBitstreamBuffer_Dev { /** * Client-specified identifier for the bitstream buffer. Valid values are * non-negative. */ int32_t id; /** * Buffer to hold the bitstream data. Should be allocated using the * PPB_Buffer interface for consistent interprocess behaviour. */ PP_Resource data; /** * Size of the bitstream contained in buffer (in bytes). */ uint32_t size; }; PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_VideoBitstreamBuffer_Dev, 12); /** * Struct for specifying texture-backed picture data. */ struct PP_PictureBuffer_Dev { /** * Client-specified id for the picture buffer. By using this value client can * keep track of the buffers it has assigned to the video decoder and how they * are passed back to it. Valid values are non-negative. */ int32_t id; /** * Dimensions of the buffer. */ struct PP_Size size; /** * Texture ID in the given context where picture is stored. */ uint32_t texture_id; }; PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_PictureBuffer_Dev, 16); /** * Structure to describe a decoded output frame. */ struct PP_Picture_Dev { /** * ID of the picture buffer where the picture is stored. */ int32_t picture_buffer_id; /** * ID of the bitstream from which this data was decoded. */ int32_t bitstream_buffer_id; }; PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_Picture_Dev, 8); /** * @} */ /** * @addtogroup Enums * @{ */ /** * Decoder error codes reported to the plugin. A reasonable naive * error handling policy is for the plugin to Destroy() the decoder on error. */ typedef enum { /** * An operation was attempted during an incompatible decoder state. */ PP_VIDEODECODERERROR_ILLEGAL_STATE = 1, /** * Invalid argument was passed to an API method. */ PP_VIDEODECODERERROR_INVALID_ARGUMENT = 2, /** * Encoded input is unreadable. */ PP_VIDEODECODERERROR_UNREADABLE_INPUT = 3, /** * A failure occurred at the browser layer or lower. Examples of such * failures include GPU hardware failures, GPU driver failures, GPU library * failures, browser programming errors, and so on. */ PP_VIDEODECODERERROR_PLATFORM_FAILURE = 4 } PP_VideoDecodeError_Dev; PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VideoDecodeError_Dev, 4); /** * @} */ #endif /* PPAPI_C_DEV_PP_VIDEO_DEV_H_ */