| /* 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 Oct 24 13:14:42 2017. */ |
| |
| #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_PROFILE_FIRST = PP_VIDEODECODER_PROFILE_UNKNOWN, |
| 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_ANY = 12, |
| PP_VIDEODECODER_PROFILE_LAST = PP_VIDEODECODER_VP8PROFILE_ANY |
| } 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, |
| PP_VIDEODECODERERROR_FIRST = PP_VIDEODECODERERROR_ILLEGAL_STATE, |
| /** |
| * 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_VIDEODECODERERROR_LAST = PP_VIDEODECODERERROR_PLATFORM_FAILURE |
| } PP_VideoDecodeError_Dev; |
| PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VideoDecodeError_Dev, 4); |
| /** |
| * @} |
| */ |
| |
| #endif /* PPAPI_C_DEV_PP_VIDEO_DEV_H_ */ |
| |