mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-24 10:40:46 +00:00
Add statically linked libvpx to tree, built with gcc-4.5 mingw and
./configure --disable-vp8-encoder --disable-multithread Also add VPX/VP8 headers for an easy build on Windows. Throw in the necessary lines into the Makefile but do not enable VPX support yet. git-svn-id: https://svn.eduke32.com/eduke32@2036 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
1203b4b213
commit
d4572c8957
12 changed files with 2026 additions and 0 deletions
|
@ -58,6 +58,10 @@ ifeq ($(PLATFORM),WINDOWS)
|
||||||
OBJ=obj_win
|
OBJ=obj_win
|
||||||
EOBJ=eobj_win
|
EOBJ=eobj_win
|
||||||
LIBS+= $(L_SSP) -Wl,--enable-auto-import
|
LIBS+= $(L_SSP) -Wl,--enable-auto-import
|
||||||
|
ifneq (0,$(USE_LIBVPX))
|
||||||
|
LIBS+= -L$(OBJ)/../Windows/lib
|
||||||
|
OURCFLAGS+= -I$(OBJ)/../Windows/include #-I$(OBJ)/../Windows/include/vpx
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
ifeq ($(PLATFORM),LINUX)
|
ifeq ($(PLATFORM),LINUX)
|
||||||
LIBS+= -ldl -pthread
|
LIBS+= -ldl -pthread
|
||||||
|
|
130
polymer/eduke32/Windows/include/vpx/vp8.h
Normal file
130
polymer/eduke32/Windows/include/vpx/vp8.h
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\defgroup vp8 VP8
|
||||||
|
* \ingroup codecs
|
||||||
|
* VP8 is vpx's newest video compression algorithm that uses motion
|
||||||
|
* compensated prediction, Discrete Cosine Transform (DCT) coding of the
|
||||||
|
* prediction error signal and context dependent entropy coding techniques
|
||||||
|
* based on arithmetic principles. It features:
|
||||||
|
* - YUV 4:2:0 image format
|
||||||
|
* - Macro-block based coding (16x16 luma plus two 8x8 chroma)
|
||||||
|
* - 1/4 (1/8) pixel accuracy motion compensated prediction
|
||||||
|
* - 4x4 DCT transform
|
||||||
|
* - 128 level linear quantizer
|
||||||
|
* - In loop deblocking filter
|
||||||
|
* - Context-based entropy coding
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/*!\file
|
||||||
|
* \brief Provides controls common to both the VP8 encoder and decoder.
|
||||||
|
*/
|
||||||
|
#ifndef VP8_H
|
||||||
|
#define VP8_H
|
||||||
|
#include "vpx_codec_impl_top.h"
|
||||||
|
|
||||||
|
/*!\brief Control functions
|
||||||
|
*
|
||||||
|
* The set of macros define the control functions of VP8 interface
|
||||||
|
*/
|
||||||
|
enum vp8_com_control_id
|
||||||
|
{
|
||||||
|
VP8_SET_REFERENCE = 1, /**< pass in an external frame into decoder to be used as reference frame */
|
||||||
|
VP8_COPY_REFERENCE = 2, /**< get a copy of reference frame from the decoder */
|
||||||
|
VP8_SET_POSTPROC = 3, /**< set the decoder's post processing settings */
|
||||||
|
VP8_SET_DBG_COLOR_REF_FRAME = 4, /**< set the reference frames to color for each macroblock */
|
||||||
|
VP8_SET_DBG_COLOR_MB_MODES = 5, /**< set which macro block modes to color */
|
||||||
|
VP8_SET_DBG_COLOR_B_MODES = 6, /**< set which blocks modes to color */
|
||||||
|
VP8_SET_DBG_DISPLAY_MV = 7, /**< set which motion vector modes to draw */
|
||||||
|
VP8_COMMON_CTRL_ID_MAX,
|
||||||
|
VP8_DECODER_CTRL_ID_START = 256,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!\brief post process flags
|
||||||
|
*
|
||||||
|
* The set of macros define VP8 decoder post processing flags
|
||||||
|
*/
|
||||||
|
enum vp8_postproc_level
|
||||||
|
{
|
||||||
|
VP8_NOFILTERING = 0,
|
||||||
|
VP8_DEBLOCK = 1<<0,
|
||||||
|
VP8_DEMACROBLOCK = 1<<1,
|
||||||
|
VP8_ADDNOISE = 1<<2,
|
||||||
|
VP8_DEBUG_TXT_FRAME_INFO = 1<<3, /**< print frame information */
|
||||||
|
VP8_DEBUG_TXT_MBLK_MODES = 1<<4, /**< print macro block modes over each macro block */
|
||||||
|
VP8_DEBUG_TXT_DC_DIFF = 1<<5, /**< print dc diff for each macro block */
|
||||||
|
VP8_DEBUG_TXT_RATE_INFO = 1<<6, /**< print video rate info (encoder only) */
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!\brief post process flags
|
||||||
|
*
|
||||||
|
* This define a structure that describe the post processing settings. For
|
||||||
|
* the best objective measure (using the PSNR metric) set post_proc_flag
|
||||||
|
* to VP8_DEBLOCK and deblocking_level to 1.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct vp8_postproc_cfg
|
||||||
|
{
|
||||||
|
int post_proc_flag; /**< the types of post processing to be done, should be combination of "vp8_postproc_level" */
|
||||||
|
int deblocking_level; /**< the strength of deblocking, valid range [0, 16] */
|
||||||
|
int noise_level; /**< the strength of additive noise, valid range [0, 16] */
|
||||||
|
} vp8_postproc_cfg_t;
|
||||||
|
|
||||||
|
/*!\brief reference frame type
|
||||||
|
*
|
||||||
|
* The set of macros define the type of VP8 reference frames
|
||||||
|
*/
|
||||||
|
typedef enum vpx_ref_frame_type
|
||||||
|
{
|
||||||
|
VP8_LAST_FRAME = 1,
|
||||||
|
VP8_GOLD_FRAME = 2,
|
||||||
|
VP8_ALTR_FRAME = 4
|
||||||
|
} vpx_ref_frame_type_t;
|
||||||
|
|
||||||
|
/*!\brief reference frame data struct
|
||||||
|
*
|
||||||
|
* define the data struct to access vp8 reference frames
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct vpx_ref_frame
|
||||||
|
{
|
||||||
|
vpx_ref_frame_type_t frame_type; /**< which reference frame */
|
||||||
|
vpx_image_t img; /**< reference frame data in image format */
|
||||||
|
} vpx_ref_frame_t;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief vp8 decoder control function parameter type
|
||||||
|
*
|
||||||
|
* defines the data type for each of VP8 decoder control function requires
|
||||||
|
*/
|
||||||
|
|
||||||
|
VPX_CTRL_USE_TYPE(VP8_SET_REFERENCE, vpx_ref_frame_t *)
|
||||||
|
VPX_CTRL_USE_TYPE(VP8_COPY_REFERENCE, vpx_ref_frame_t *)
|
||||||
|
VPX_CTRL_USE_TYPE(VP8_SET_POSTPROC, vp8_postproc_cfg_t *)
|
||||||
|
VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_REF_FRAME, int)
|
||||||
|
VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_MB_MODES, int)
|
||||||
|
VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_B_MODES, int)
|
||||||
|
VPX_CTRL_USE_TYPE(VP8_SET_DBG_DISPLAY_MV, int)
|
||||||
|
|
||||||
|
|
||||||
|
/*! @} - end defgroup vp8 */
|
||||||
|
|
||||||
|
#if !defined(VPX_CODEC_DISABLE_COMPAT) || !VPX_CODEC_DISABLE_COMPAT
|
||||||
|
/* The following definitions are provided for backward compatibility with
|
||||||
|
* the VP8 1.0.x SDK. USE IN PRODUCTION CODE IS NOT RECOMMENDED.
|
||||||
|
*/
|
||||||
|
|
||||||
|
DECLSPEC_DEPRECATED extern vpx_codec_iface_t vpx_codec_vp8_algo DEPRECATED;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "vpx_codec_impl_bottom.h"
|
||||||
|
#endif
|
78
polymer/eduke32/Windows/include/vpx/vp8dx.h
Normal file
78
polymer/eduke32/Windows/include/vpx/vp8dx.h
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "vp8.h"
|
||||||
|
|
||||||
|
/*!\defgroup vp8_decoder WebM VP8 Decoder
|
||||||
|
* \ingroup vp8
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/*!\file
|
||||||
|
* \brief Provides definitions for using the VP8 algorithm within the vpx Decoder
|
||||||
|
* interface.
|
||||||
|
*/
|
||||||
|
#ifndef VP8DX_H
|
||||||
|
#define VP8DX_H
|
||||||
|
#include "vpx_codec_impl_top.h"
|
||||||
|
|
||||||
|
/*!\name Algorithm interface for VP8
|
||||||
|
*
|
||||||
|
* This interface provides the capability to decode raw VP8 streams, as would
|
||||||
|
* be found in AVI files and other non-Flash uses.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
extern vpx_codec_iface_t vpx_codec_vp8_dx_algo;
|
||||||
|
extern vpx_codec_iface_t* vpx_codec_vp8_dx(void);
|
||||||
|
/*!@} - end algorithm interface member group*/
|
||||||
|
|
||||||
|
/* Include controls common to both the encoder and decoder */
|
||||||
|
#include "vp8.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief VP8 decoder control functions
|
||||||
|
*
|
||||||
|
* This set of macros define the control functions available for the VP8
|
||||||
|
* decoder interface.
|
||||||
|
*
|
||||||
|
* \sa #vpx_codec_control
|
||||||
|
*/
|
||||||
|
enum vp8_dec_control_id
|
||||||
|
{
|
||||||
|
/** control function to get info on which reference frames were updated
|
||||||
|
* by the last decode
|
||||||
|
*/
|
||||||
|
VP8D_GET_LAST_REF_UPDATES = VP8_DECODER_CTRL_ID_START,
|
||||||
|
|
||||||
|
/** check if the indicated frame is corrupted */
|
||||||
|
VP8D_GET_FRAME_CORRUPTED,
|
||||||
|
|
||||||
|
VP8_DECODER_CTRL_ID_MAX
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief VP8 decoder control function parameter type
|
||||||
|
*
|
||||||
|
* Defines the data types that VP8D control functions take. Note that
|
||||||
|
* additional common controls are defined in vp8.h
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_UPDATES, int *)
|
||||||
|
VPX_CTRL_USE_TYPE(VP8D_GET_FRAME_CORRUPTED, int *)
|
||||||
|
|
||||||
|
|
||||||
|
/*! @} - end defgroup vp8_decoder */
|
||||||
|
|
||||||
|
|
||||||
|
#include "vpx_codec_impl_bottom.h"
|
||||||
|
#endif
|
554
polymer/eduke32/Windows/include/vpx/vpx_codec.h
Normal file
554
polymer/eduke32/Windows/include/vpx/vpx_codec.h
Normal file
|
@ -0,0 +1,554 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\defgroup codec Common Algorithm Interface
|
||||||
|
* This abstraction allows applications to easily support multiple video
|
||||||
|
* formats with minimal code duplication. This section describes the interface
|
||||||
|
* common to all codecs (both encoders and decoders).
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\file
|
||||||
|
* \brief Describes the codec algorithm interface to applications.
|
||||||
|
*
|
||||||
|
* This file describes the interface between an application and a
|
||||||
|
* video codec algorithm.
|
||||||
|
*
|
||||||
|
* An application instantiates a specific codec instance by using
|
||||||
|
* vpx_codec_init() and a pointer to the algorithm's interface structure:
|
||||||
|
* <pre>
|
||||||
|
* my_app.c:
|
||||||
|
* extern vpx_codec_iface_t my_codec;
|
||||||
|
* {
|
||||||
|
* vpx_codec_ctx_t algo;
|
||||||
|
* res = vpx_codec_init(&algo, &my_codec);
|
||||||
|
* }
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* Once initialized, the instance is manged using other functions from
|
||||||
|
* the vpx_codec_* family.
|
||||||
|
*/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef VPX_CODEC_H
|
||||||
|
#define VPX_CODEC_H
|
||||||
|
#include "vpx_integer.h"
|
||||||
|
#include "vpx_image.h"
|
||||||
|
|
||||||
|
/*!\brief Decorator indicating a function is deprecated */
|
||||||
|
#ifndef DEPRECATED
|
||||||
|
#if defined(__GNUC__) && __GNUC__
|
||||||
|
#define DEPRECATED __attribute__ ((deprecated))
|
||||||
|
#define DECLSPEC_DEPRECATED /**< \copydoc #DEPRECATED */
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
#define DEPRECATED
|
||||||
|
#define DECLSPEC_DEPRECATED __declspec(deprecated) /**< \copydoc #DEPRECATED */
|
||||||
|
#else
|
||||||
|
#define DEPRECATED
|
||||||
|
#define DECLSPEC_DEPRECATED /**< \copydoc #DEPRECATED */
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*!\brief Decorator indicating a function is potentially unused */
|
||||||
|
#ifdef UNUSED
|
||||||
|
#elif __GNUC__
|
||||||
|
#define UNUSED __attribute__ ((unused))
|
||||||
|
#else
|
||||||
|
#define UNUSED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*!\brief Current ABI version number
|
||||||
|
*
|
||||||
|
* \internal
|
||||||
|
* If this file is altered in any way that changes the ABI, this value
|
||||||
|
* must be bumped. Examples include, but are not limited to, changing
|
||||||
|
* types, removing or reassigning enums, adding/removing/rearranging
|
||||||
|
* fields to structures
|
||||||
|
*/
|
||||||
|
#define VPX_CODEC_ABI_VERSION (2 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/
|
||||||
|
|
||||||
|
/*!\brief Algorithm return codes */
|
||||||
|
typedef enum {
|
||||||
|
/*!\brief Operation completed without error */
|
||||||
|
VPX_CODEC_OK,
|
||||||
|
|
||||||
|
/*!\brief Unspecified error */
|
||||||
|
VPX_CODEC_ERROR,
|
||||||
|
|
||||||
|
/*!\brief Memory operation failed */
|
||||||
|
VPX_CODEC_MEM_ERROR,
|
||||||
|
|
||||||
|
/*!\brief ABI version mismatch */
|
||||||
|
VPX_CODEC_ABI_MISMATCH,
|
||||||
|
|
||||||
|
/*!\brief Algorithm does not have required capability */
|
||||||
|
VPX_CODEC_INCAPABLE,
|
||||||
|
|
||||||
|
/*!\brief The given bitstream is not supported.
|
||||||
|
*
|
||||||
|
* The bitstream was unable to be parsed at the highest level. The decoder
|
||||||
|
* is unable to proceed. This error \ref SHOULD be treated as fatal to the
|
||||||
|
* stream. */
|
||||||
|
VPX_CODEC_UNSUP_BITSTREAM,
|
||||||
|
|
||||||
|
/*!\brief Encoded bitstream uses an unsupported feature
|
||||||
|
*
|
||||||
|
* The decoder does not implement a feature required by the encoder. This
|
||||||
|
* return code should only be used for features that prevent future
|
||||||
|
* pictures from being properly decoded. This error \ref MAY be treated as
|
||||||
|
* fatal to the stream or \ref MAY be treated as fatal to the current GOP.
|
||||||
|
*/
|
||||||
|
VPX_CODEC_UNSUP_FEATURE,
|
||||||
|
|
||||||
|
/*!\brief The coded data for this stream is corrupt or incomplete
|
||||||
|
*
|
||||||
|
* There was a problem decoding the current frame. This return code
|
||||||
|
* should only be used for failures that prevent future pictures from
|
||||||
|
* being properly decoded. This error \ref MAY be treated as fatal to the
|
||||||
|
* stream or \ref MAY be treated as fatal to the current GOP. If decoding
|
||||||
|
* is continued for the current GOP, artifacts may be present.
|
||||||
|
*/
|
||||||
|
VPX_CODEC_CORRUPT_FRAME,
|
||||||
|
|
||||||
|
/*!\brief An application-supplied parameter is not valid.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
VPX_CODEC_INVALID_PARAM,
|
||||||
|
|
||||||
|
/*!\brief An iterator reached the end of list.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
VPX_CODEC_LIST_END
|
||||||
|
|
||||||
|
}
|
||||||
|
vpx_codec_err_t;
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief Codec capabilities bitfield
|
||||||
|
*
|
||||||
|
* Each codec advertises the capabilities it supports as part of its
|
||||||
|
* ::vpx_codec_iface_t interface structure. Capabilities are extra interfaces
|
||||||
|
* or functionality, and are not required to be supported.
|
||||||
|
*
|
||||||
|
* The available flags are specified by VPX_CODEC_CAP_* defines.
|
||||||
|
*/
|
||||||
|
typedef long vpx_codec_caps_t;
|
||||||
|
#define VPX_CODEC_CAP_DECODER 0x1 /**< Is a decoder */
|
||||||
|
#define VPX_CODEC_CAP_ENCODER 0x2 /**< Is an encoder */
|
||||||
|
#define VPX_CODEC_CAP_XMA 0x4 /**< Supports eXternal Memory Allocation */
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief Initialization-time Feature Enabling
|
||||||
|
*
|
||||||
|
* Certain codec features must be known at initialization time, to allow for
|
||||||
|
* proper memory allocation.
|
||||||
|
*
|
||||||
|
* The available flags are specified by VPX_CODEC_USE_* defines.
|
||||||
|
*/
|
||||||
|
typedef long vpx_codec_flags_t;
|
||||||
|
#define VPX_CODEC_USE_XMA 0x00000001 /**< Use eXternal Memory Allocation mode */
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Codec interface structure.
|
||||||
|
*
|
||||||
|
* Contains function pointers and other data private to the codec
|
||||||
|
* implementation. This structure is opaque to the application.
|
||||||
|
*/
|
||||||
|
typedef const struct vpx_codec_iface vpx_codec_iface_t;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Codec private data structure.
|
||||||
|
*
|
||||||
|
* Contains data private to the codec implementation. This structure is opaque
|
||||||
|
* to the application.
|
||||||
|
*/
|
||||||
|
typedef struct vpx_codec_priv vpx_codec_priv_t;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Iterator
|
||||||
|
*
|
||||||
|
* Opaque storage used for iterating over lists.
|
||||||
|
*/
|
||||||
|
typedef const void *vpx_codec_iter_t;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Codec context structure
|
||||||
|
*
|
||||||
|
* All codecs \ref MUST support this context structure fully. In general,
|
||||||
|
* this data should be considered private to the codec algorithm, and
|
||||||
|
* not be manipulated or examined by the calling application. Applications
|
||||||
|
* may reference the 'name' member to get a printable description of the
|
||||||
|
* algorithm.
|
||||||
|
*/
|
||||||
|
typedef struct vpx_codec_ctx
|
||||||
|
{
|
||||||
|
const char *name; /**< Printable interface name */
|
||||||
|
vpx_codec_iface_t *iface; /**< Interface pointers */
|
||||||
|
vpx_codec_err_t err; /**< Last returned error */
|
||||||
|
const char *err_detail; /**< Detailed info, if available */
|
||||||
|
vpx_codec_flags_t init_flags; /**< Flags passed at init time */
|
||||||
|
union
|
||||||
|
{
|
||||||
|
struct vpx_codec_dec_cfg *dec; /**< Decoder Configuration Pointer */
|
||||||
|
struct vpx_codec_enc_cfg *enc; /**< Encoder Configuration Pointer */
|
||||||
|
void *raw;
|
||||||
|
} config; /**< Configuration pointer aliasing union */
|
||||||
|
vpx_codec_priv_t *priv; /**< Algorithm private storage */
|
||||||
|
} vpx_codec_ctx_t;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Library Version Number Interface
|
||||||
|
*
|
||||||
|
* For example, see the following sample return values:
|
||||||
|
* vpx_codec_version() (1<<16 | 2<<8 | 3)
|
||||||
|
* vpx_codec_version_str() "v1.2.3-rc1-16-gec6a1ba"
|
||||||
|
* vpx_codec_version_extra_str() "rc1-16-gec6a1ba"
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\brief Return the version information (as an integer)
|
||||||
|
*
|
||||||
|
* Returns a packed encoding of the library version number. This will only include
|
||||||
|
* the major.minor.patch component of the version number. Note that this encoded
|
||||||
|
* value should be accessed through the macros provided, as the encoding may change
|
||||||
|
* in the future.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int vpx_codec_version(void);
|
||||||
|
#define VPX_VERSION_MAJOR(v) ((v>>16)&0xff) /**< extract major from packed version */
|
||||||
|
#define VPX_VERSION_MINOR(v) ((v>>8)&0xff) /**< extract minor from packed version */
|
||||||
|
#define VPX_VERSION_PATCH(v) ((v>>0)&0xff) /**< extract patch from packed version */
|
||||||
|
|
||||||
|
/*!\brief Return the version major number */
|
||||||
|
#define vpx_codec_version_major() ((vpx_codec_version()>>16)&0xff)
|
||||||
|
|
||||||
|
/*!\brief Return the version minor number */
|
||||||
|
#define vpx_codec_version_minor() ((vpx_codec_version()>>8)&0xff)
|
||||||
|
|
||||||
|
/*!\brief Return the version patch number */
|
||||||
|
#define vpx_codec_version_patch() ((vpx_codec_version()>>0)&0xff)
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Return the version information (as a string)
|
||||||
|
*
|
||||||
|
* Returns a printable string containing the full library version number. This may
|
||||||
|
* contain additional text following the three digit version number, as to indicate
|
||||||
|
* release candidates, prerelease versions, etc.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_codec_version_str(void);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Return the version information (as a string)
|
||||||
|
*
|
||||||
|
* Returns a printable "extra string". This is the component of the string returned
|
||||||
|
* by vpx_codec_version_str() following the three digit version number.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_codec_version_extra_str(void);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Return the build configuration
|
||||||
|
*
|
||||||
|
* Returns a printable string containing an encoded version of the build
|
||||||
|
* configuration. This may be useful to vpx support.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_codec_build_config(void);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Return the name for a given interface
|
||||||
|
*
|
||||||
|
* Returns a human readable string for name of the given codec interface.
|
||||||
|
*
|
||||||
|
* \param[in] iface Interface pointer
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_codec_iface_name(vpx_codec_iface_t *iface);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Convert error number to printable string
|
||||||
|
*
|
||||||
|
* Returns a human readable string for the last error returned by the
|
||||||
|
* algorithm. The returned error will be one line and will not contain
|
||||||
|
* any newline characters.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \param[in] err Error number.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_codec_err_to_string(vpx_codec_err_t err);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Retrieve error synopsis for codec context
|
||||||
|
*
|
||||||
|
* Returns a human readable string for the last error returned by the
|
||||||
|
* algorithm. The returned error will be one line and will not contain
|
||||||
|
* any newline characters.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_codec_error(vpx_codec_ctx_t *ctx);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Retrieve detailed error information for codec context
|
||||||
|
*
|
||||||
|
* Returns a human readable string providing detailed information about
|
||||||
|
* the last error.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
*
|
||||||
|
* \retval NULL
|
||||||
|
* No detailed information is available.
|
||||||
|
*/
|
||||||
|
const char *vpx_codec_error_detail(vpx_codec_ctx_t *ctx);
|
||||||
|
|
||||||
|
|
||||||
|
/* REQUIRED FUNCTIONS
|
||||||
|
*
|
||||||
|
* The following functions are required to be implemented for all codecs.
|
||||||
|
* They represent the base case functionality expected of all codecs.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\brief Destroy a codec instance
|
||||||
|
*
|
||||||
|
* Destroys a codec context, freeing any associated memory buffers.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
*
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* The codec algorithm initialized.
|
||||||
|
* \retval #VPX_CODEC_MEM_ERROR
|
||||||
|
* Memory allocation failed.
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_destroy(vpx_codec_ctx_t *ctx);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Get the capabilities of an algorithm.
|
||||||
|
*
|
||||||
|
* Retrieves the capabilities bitfield from the algorithm's interface.
|
||||||
|
*
|
||||||
|
* \param[in] iface Pointer to the algorithm interface
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
vpx_codec_caps_t vpx_codec_get_caps(vpx_codec_iface_t *iface);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Control algorithm
|
||||||
|
*
|
||||||
|
* This function is used to exchange algorithm specific data with the codec
|
||||||
|
* instance. This can be used to implement features specific to a particular
|
||||||
|
* algorithm.
|
||||||
|
*
|
||||||
|
* This wrapper function dispatches the request to the helper function
|
||||||
|
* associated with the given ctrl_id. It tries to call this function
|
||||||
|
* transparently, but will return #VPX_CODEC_ERROR if the request could not
|
||||||
|
* be dispatched.
|
||||||
|
*
|
||||||
|
* Note that this function should not be used directly. Call the
|
||||||
|
* #vpx_codec_control wrapper macro instead.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in] ctrl_id Algorithm specific control identifier
|
||||||
|
*
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* The control request was processed.
|
||||||
|
* \retval #VPX_CODEC_ERROR
|
||||||
|
* The control request was not processed.
|
||||||
|
* \retval #VPX_CODEC_INVALID_PARAM
|
||||||
|
* The data was not valid.
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_control_(vpx_codec_ctx_t *ctx,
|
||||||
|
int ctrl_id,
|
||||||
|
...);
|
||||||
|
#if defined(VPX_DISABLE_CTRL_TYPECHECKS) && VPX_DISABLE_CTRL_TYPECHECKS
|
||||||
|
# define vpx_codec_control(ctx,id,data) vpx_codec_control_(ctx,id,data)
|
||||||
|
# define VPX_CTRL_USE_TYPE(id, typ)
|
||||||
|
# define VPX_CTRL_USE_TYPE_DEPRECATED(id, typ)
|
||||||
|
# define VPX_CTRL_VOID(id, typ)
|
||||||
|
|
||||||
|
#else
|
||||||
|
/*!\brief vpx_codec_control wrapper macro
|
||||||
|
*
|
||||||
|
* This macro allows for type safe conversions across the variadic parameter
|
||||||
|
* to vpx_codec_control_().
|
||||||
|
*
|
||||||
|
* \internal
|
||||||
|
* It works by dispatching the call to the control function through a wrapper
|
||||||
|
* function named with the id parameter.
|
||||||
|
*/
|
||||||
|
# define vpx_codec_control(ctx,id,data) vpx_codec_control_##id(ctx,id,data)\
|
||||||
|
/**<\hideinitializer*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief vpx_codec_control type definition macro
|
||||||
|
*
|
||||||
|
* This macro allows for type safe conversions across the variadic parameter
|
||||||
|
* to vpx_codec_control_(). It defines the type of the argument for a given
|
||||||
|
* control identifier.
|
||||||
|
*
|
||||||
|
* \internal
|
||||||
|
* It defines a static function with
|
||||||
|
* the correctly typed arguments as a wrapper to the type-unsafe internal
|
||||||
|
* function.
|
||||||
|
*/
|
||||||
|
# define VPX_CTRL_USE_TYPE(id, typ) \
|
||||||
|
static vpx_codec_err_t \
|
||||||
|
vpx_codec_control_##id(vpx_codec_ctx_t*, int, typ) UNUSED;\
|
||||||
|
\
|
||||||
|
static vpx_codec_err_t \
|
||||||
|
vpx_codec_control_##id(vpx_codec_ctx_t *ctx, int ctrl_id, typ data) {\
|
||||||
|
return vpx_codec_control_(ctx, ctrl_id, data);\
|
||||||
|
} /**<\hideinitializer*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief vpx_codec_control deprecated type definition macro
|
||||||
|
*
|
||||||
|
* Like #VPX_CTRL_USE_TYPE, but indicates that the specified control is
|
||||||
|
* deprecated and should not be used. Consult the documentation for your
|
||||||
|
* codec for more information.
|
||||||
|
*
|
||||||
|
* \internal
|
||||||
|
* It defines a static function with the correctly typed arguments as a
|
||||||
|
* wrapper to the type-unsafe internal function.
|
||||||
|
*/
|
||||||
|
# define VPX_CTRL_USE_TYPE_DEPRECATED(id, typ) \
|
||||||
|
DECLSPEC_DEPRECATED static vpx_codec_err_t \
|
||||||
|
vpx_codec_control_##id(vpx_codec_ctx_t*, int, typ) DEPRECATED UNUSED;\
|
||||||
|
\
|
||||||
|
DECLSPEC_DEPRECATED static vpx_codec_err_t \
|
||||||
|
vpx_codec_control_##id(vpx_codec_ctx_t *ctx, int ctrl_id, typ data) {\
|
||||||
|
return vpx_codec_control_(ctx, ctrl_id, data);\
|
||||||
|
} /**<\hideinitializer*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief vpx_codec_control void type definition macro
|
||||||
|
*
|
||||||
|
* This macro allows for type safe conversions across the variadic parameter
|
||||||
|
* to vpx_codec_control_(). It indicates that a given control identifier takes
|
||||||
|
* no argument.
|
||||||
|
*
|
||||||
|
* \internal
|
||||||
|
* It defines a static function without a data argument as a wrapper to the
|
||||||
|
* type-unsafe internal function.
|
||||||
|
*/
|
||||||
|
# define VPX_CTRL_VOID(id) \
|
||||||
|
static vpx_codec_err_t \
|
||||||
|
vpx_codec_control_##id(vpx_codec_ctx_t*, int) UNUSED;\
|
||||||
|
\
|
||||||
|
static vpx_codec_err_t \
|
||||||
|
vpx_codec_control_##id(vpx_codec_ctx_t *ctx, int ctrl_id) {\
|
||||||
|
return vpx_codec_control_(ctx, ctrl_id);\
|
||||||
|
} /**<\hideinitializer*/
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*!\defgroup cap_xma External Memory Allocation Functions
|
||||||
|
*
|
||||||
|
* The following functions are required to be implemented for all codecs
|
||||||
|
* that advertise the VPX_CODEC_CAP_XMA capability. Calling these functions
|
||||||
|
* for codecs that don't advertise this capability will result in an error
|
||||||
|
* code being returned, usually VPX_CODEC_INCAPABLE
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Memory Map Entry
|
||||||
|
*
|
||||||
|
* This structure is used to contain the properties of a memory segment. It
|
||||||
|
* is populated by the codec in the request phase, and by the calling
|
||||||
|
* application once the requested allocation has been performed.
|
||||||
|
*/
|
||||||
|
typedef struct vpx_codec_mmap
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* The following members are set by the codec when requesting a segment
|
||||||
|
*/
|
||||||
|
unsigned int id; /**< identifier for the segment's contents */
|
||||||
|
unsigned long sz; /**< size of the segment, in bytes */
|
||||||
|
unsigned int align; /**< required alignment of the segment, in bytes */
|
||||||
|
unsigned int flags; /**< bitfield containing segment properties */
|
||||||
|
#define VPX_CODEC_MEM_ZERO 0x1 /**< Segment must be zeroed by allocation */
|
||||||
|
#define VPX_CODEC_MEM_WRONLY 0x2 /**< Segment need not be readable */
|
||||||
|
#define VPX_CODEC_MEM_FAST 0x4 /**< Place in fast memory, if available */
|
||||||
|
|
||||||
|
/* The following members are to be filled in by the allocation function */
|
||||||
|
void *base; /**< pointer to the allocated segment */
|
||||||
|
void (*dtor)(struct vpx_codec_mmap *map); /**< destructor to call */
|
||||||
|
void *priv; /**< allocator private storage */
|
||||||
|
} vpx_codec_mmap_t; /**< alias for struct vpx_codec_mmap */
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Iterate over the list of segments to allocate.
|
||||||
|
*
|
||||||
|
* Iterates over a list of the segments to allocate. The iterator storage
|
||||||
|
* should be initialized to NULL to start the iteration. Iteration is complete
|
||||||
|
* when this function returns VPX_CODEC_LIST_END. The amount of memory needed to
|
||||||
|
* allocate is dependent upon the size of the encoded stream. In cases where the
|
||||||
|
* stream is not available at allocation time, a fixed size must be requested.
|
||||||
|
* The codec will not be able to operate on streams larger than the size used at
|
||||||
|
* allocation time.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
* \param[out] mmap Pointer to the memory map entry to populate.
|
||||||
|
* \param[in,out] iter Iterator storage, initialized to NULL
|
||||||
|
*
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* The memory map entry was populated.
|
||||||
|
* \retval #VPX_CODEC_ERROR
|
||||||
|
* Codec does not support XMA mode.
|
||||||
|
* \retval #VPX_CODEC_MEM_ERROR
|
||||||
|
* Unable to determine segment size from stream info.
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_get_mem_map(vpx_codec_ctx_t *ctx,
|
||||||
|
vpx_codec_mmap_t *mmap,
|
||||||
|
vpx_codec_iter_t *iter);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Identify allocated segments to codec instance
|
||||||
|
*
|
||||||
|
* Stores a list of allocated segments in the codec. Segments \ref MUST be
|
||||||
|
* passed in the order they are read from vpx_codec_get_mem_map(), but may be
|
||||||
|
* passed in groups of any size. Segments \ref MUST be set only once. The
|
||||||
|
* allocation function \ref MUST ensure that the vpx_codec_mmap_t::base member
|
||||||
|
* is non-NULL. If the segment requires cleanup handling (e.g., calling free()
|
||||||
|
* or close()) then the vpx_codec_mmap_t::dtor member \ref MUST be populated.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
* \param[in] mmaps Pointer to the first memory map entry in the list.
|
||||||
|
* \param[in] num_maps Number of entries being set at this time
|
||||||
|
*
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* The segment was stored in the codec context.
|
||||||
|
* \retval #VPX_CODEC_INCAPABLE
|
||||||
|
* Codec does not support XMA mode.
|
||||||
|
* \retval #VPX_CODEC_MEM_ERROR
|
||||||
|
* Segment base address was not set, or segment was already stored.
|
||||||
|
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_set_mem_map(vpx_codec_ctx_t *ctx,
|
||||||
|
vpx_codec_mmap_t *mmaps,
|
||||||
|
unsigned int num_maps);
|
||||||
|
|
||||||
|
/*!@} - end defgroup cap_xma*/
|
||||||
|
/*!@} - end defgroup codec*/
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
19
polymer/eduke32/Windows/include/vpx/vpx_codec_impl_bottom.h
Normal file
19
polymer/eduke32/Windows/include/vpx/vpx_codec_impl_bottom.h
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is to be included at the bottom of the header files defining the
|
||||||
|
* interface to individual codecs and contains matching blocks to those defined
|
||||||
|
* in vpx_codec_impl_top.h
|
||||||
|
*/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
19
polymer/eduke32/Windows/include/vpx/vpx_codec_impl_top.h
Normal file
19
polymer/eduke32/Windows/include/vpx/vpx_codec_impl_top.h
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is to be included at the top of the header files defining the
|
||||||
|
* interface to individual codecs and contains various workarounds common
|
||||||
|
* to all codec implementations.
|
||||||
|
*/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
331
polymer/eduke32/Windows/include/vpx/vpx_decoder.h
Normal file
331
polymer/eduke32/Windows/include/vpx/vpx_decoder.h
Normal file
|
@ -0,0 +1,331 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\defgroup decoder Decoder Algorithm Interface
|
||||||
|
* \ingroup codec
|
||||||
|
* This abstraction allows applications using this decoder to easily support
|
||||||
|
* multiple video formats with minimal code duplication. This section describes
|
||||||
|
* the interface common to all decoders.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\file
|
||||||
|
* \brief Describes the decoder algorithm interface to applications.
|
||||||
|
*
|
||||||
|
* This file describes the interface between an application and a
|
||||||
|
* video decoder algorithm.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef VPX_DECODER_H
|
||||||
|
#define VPX_DECODER_H
|
||||||
|
#include "vpx_codec.h"
|
||||||
|
|
||||||
|
/*!\brief Current ABI version number
|
||||||
|
*
|
||||||
|
* \internal
|
||||||
|
* If this file is altered in any way that changes the ABI, this value
|
||||||
|
* must be bumped. Examples include, but are not limited to, changing
|
||||||
|
* types, removing or reassigning enums, adding/removing/rearranging
|
||||||
|
* fields to structures
|
||||||
|
*/
|
||||||
|
#define VPX_DECODER_ABI_VERSION (2 + VPX_CODEC_ABI_VERSION) /**<\hideinitializer*/
|
||||||
|
|
||||||
|
/*! \brief Decoder capabilities bitfield
|
||||||
|
*
|
||||||
|
* Each decoder advertises the capabilities it supports as part of its
|
||||||
|
* ::vpx_codec_iface_t interface structure. Capabilities are extra interfaces
|
||||||
|
* or functionality, and are not required to be supported by a decoder.
|
||||||
|
*
|
||||||
|
* The available flags are specified by VPX_CODEC_CAP_* defines.
|
||||||
|
*/
|
||||||
|
#define VPX_CODEC_CAP_PUT_SLICE 0x10000 /**< Will issue put_slice callbacks */
|
||||||
|
#define VPX_CODEC_CAP_PUT_FRAME 0x20000 /**< Will issue put_frame callbacks */
|
||||||
|
#define VPX_CODEC_CAP_POSTPROC 0x40000 /**< Can postprocess decoded frame */
|
||||||
|
#define VPX_CODEC_CAP_ERROR_CONCEALMENT 0x80000 /**< Can conceal errors due to
|
||||||
|
packet loss */
|
||||||
|
#define VPX_CODEC_CAP_INPUT_PARTITION 0x100000 /**< Can receive encoded frames
|
||||||
|
one partition at a time */
|
||||||
|
|
||||||
|
/*! \brief Initialization-time Feature Enabling
|
||||||
|
*
|
||||||
|
* Certain codec features must be known at initialization time, to allow for
|
||||||
|
* proper memory allocation.
|
||||||
|
*
|
||||||
|
* The available flags are specified by VPX_CODEC_USE_* defines.
|
||||||
|
*/
|
||||||
|
#define VPX_CODEC_USE_POSTPROC 0x10000 /**< Postprocess decoded frame */
|
||||||
|
#define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000 /**< Conceal errors in decoded
|
||||||
|
frames */
|
||||||
|
#define VPX_CODEC_USE_INPUT_PARTITION 0x40000 /**< The input frame should be
|
||||||
|
passed to the decoder one
|
||||||
|
partition at a time */
|
||||||
|
|
||||||
|
/*!\brief Stream properties
|
||||||
|
*
|
||||||
|
* This structure is used to query or set properties of the decoded
|
||||||
|
* stream. Algorithms may extend this structure with data specific
|
||||||
|
* to their bitstream by setting the sz member appropriately.
|
||||||
|
*/
|
||||||
|
typedef struct vpx_codec_stream_info
|
||||||
|
{
|
||||||
|
unsigned int sz; /**< Size of this structure */
|
||||||
|
unsigned int w; /**< Width (or 0 for unknown/default) */
|
||||||
|
unsigned int h; /**< Height (or 0 for unknown/default) */
|
||||||
|
unsigned int is_kf; /**< Current frame is a keyframe */
|
||||||
|
} vpx_codec_stream_info_t;
|
||||||
|
|
||||||
|
/* REQUIRED FUNCTIONS
|
||||||
|
*
|
||||||
|
* The following functions are required to be implemented for all decoders.
|
||||||
|
* They represent the base case functionality expected of all decoders.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Initialization Configurations
|
||||||
|
*
|
||||||
|
* This structure is used to pass init time configuration options to the
|
||||||
|
* decoder.
|
||||||
|
*/
|
||||||
|
typedef struct vpx_codec_dec_cfg
|
||||||
|
{
|
||||||
|
unsigned int threads; /**< Maximum number of threads to use, default 1 */
|
||||||
|
unsigned int w; /**< Width */
|
||||||
|
unsigned int h; /**< Height */
|
||||||
|
} vpx_codec_dec_cfg_t; /**< alias for struct vpx_codec_dec_cfg */
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Initialize a decoder instance
|
||||||
|
*
|
||||||
|
* Initializes a decoder context using the given interface. Applications
|
||||||
|
* should call the vpx_codec_dec_init convenience macro instead of this
|
||||||
|
* function directly, to ensure that the ABI version number parameter
|
||||||
|
* is properly initialized.
|
||||||
|
*
|
||||||
|
* In XMA mode (activated by setting VPX_CODEC_USE_XMA in the flags
|
||||||
|
* parameter), the storage pointed to by the cfg parameter must be
|
||||||
|
* kept readable and stable until all memory maps have been set.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
* \param[in] iface Pointer to the algorithm interface to use.
|
||||||
|
* \param[in] cfg Configuration to use, if known. May be NULL.
|
||||||
|
* \param[in] flags Bitfield of VPX_CODEC_USE_* flags
|
||||||
|
* \param[in] ver ABI version number. Must be set to
|
||||||
|
* VPX_DECODER_ABI_VERSION
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* The decoder algorithm initialized.
|
||||||
|
* \retval #VPX_CODEC_MEM_ERROR
|
||||||
|
* Memory allocation failed.
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx,
|
||||||
|
vpx_codec_iface_t *iface,
|
||||||
|
vpx_codec_dec_cfg_t *cfg,
|
||||||
|
vpx_codec_flags_t flags,
|
||||||
|
int ver);
|
||||||
|
|
||||||
|
/*!\brief Convenience macro for vpx_codec_dec_init_ver()
|
||||||
|
*
|
||||||
|
* Ensures the ABI version parameter is properly set.
|
||||||
|
*/
|
||||||
|
#define vpx_codec_dec_init(ctx, iface, cfg, flags) \
|
||||||
|
vpx_codec_dec_init_ver(ctx, iface, cfg, flags, VPX_DECODER_ABI_VERSION)
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Parse stream info from a buffer
|
||||||
|
*
|
||||||
|
* Performs high level parsing of the bitstream. Construction of a decoder
|
||||||
|
* context is not necessary. Can be used to determine if the bitstream is
|
||||||
|
* of the proper format, and to extract information from the stream.
|
||||||
|
*
|
||||||
|
* \param[in] iface Pointer to the algorithm interface
|
||||||
|
* \param[in] data Pointer to a block of data to parse
|
||||||
|
* \param[in] data_sz Size of the data buffer
|
||||||
|
* \param[in,out] si Pointer to stream info to update. The size member
|
||||||
|
* \ref MUST be properly initialized, but \ref MAY be
|
||||||
|
* clobbered by the algorithm. This parameter \ref MAY
|
||||||
|
* be NULL.
|
||||||
|
*
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* Bitstream is parsable and stream information updated
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_peek_stream_info(vpx_codec_iface_t *iface,
|
||||||
|
const uint8_t *data,
|
||||||
|
unsigned int data_sz,
|
||||||
|
vpx_codec_stream_info_t *si);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Return information about the current stream.
|
||||||
|
*
|
||||||
|
* Returns information about the stream that has been parsed during decoding.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in,out] si Pointer to stream info to update. The size member
|
||||||
|
* \ref MUST be properly initialized, but \ref MAY be
|
||||||
|
* clobbered by the algorithm. This parameter \ref MAY
|
||||||
|
* be NULL.
|
||||||
|
*
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* Bitstream is parsable and stream information updated
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_get_stream_info(vpx_codec_ctx_t *ctx,
|
||||||
|
vpx_codec_stream_info_t *si);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Decode data
|
||||||
|
*
|
||||||
|
* Processes a buffer of coded data. If the processing results in a new
|
||||||
|
* decoded frame becoming available, PUT_SLICE and PUT_FRAME events may be
|
||||||
|
* generated, as appropriate. Encoded data \ref MUST be passed in DTS (decode
|
||||||
|
* time stamp) order. Frames produced will always be in PTS (presentation
|
||||||
|
* time stamp) order.
|
||||||
|
* If the decoder is configured with VPX_CODEC_USE_INPUT_PARTITION enabled,
|
||||||
|
* data and data_sz must contain at most one encoded partition. When no more
|
||||||
|
* data is available, this function should be called with NULL as data and 0
|
||||||
|
* as data_sz. The memory passed to this function must be available until
|
||||||
|
* the frame has been decoded.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in] data Pointer to this block of new coded data. If
|
||||||
|
* NULL, a VPX_CODEC_CB_PUT_FRAME event is posted
|
||||||
|
* for the previously decoded frame.
|
||||||
|
* \param[in] data_sz Size of the coded data, in bytes.
|
||||||
|
* \param[in] user_priv Application specific data to associate with
|
||||||
|
* this frame.
|
||||||
|
* \param[in] deadline Soft deadline the decoder should attempt to meet,
|
||||||
|
* in us. Set to zero for unlimited.
|
||||||
|
*
|
||||||
|
* \return Returns #VPX_CODEC_OK if the coded data was processed completely
|
||||||
|
* and future pictures can be decoded without error. Otherwise,
|
||||||
|
* see the descriptions of the other error codes in ::vpx_codec_err_t
|
||||||
|
* for recoverability capabilities.
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx,
|
||||||
|
const uint8_t *data,
|
||||||
|
unsigned int data_sz,
|
||||||
|
void *user_priv,
|
||||||
|
long deadline);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Decoded frames iterator
|
||||||
|
*
|
||||||
|
* Iterates over a list of the frames available for display. The iterator
|
||||||
|
* storage should be initialized to NULL to start the iteration. Iteration is
|
||||||
|
* complete when this function returns NULL.
|
||||||
|
*
|
||||||
|
* The list of available frames becomes valid upon completion of the
|
||||||
|
* vpx_codec_decode call, and remains valid until the next call to vpx_codec_decode.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in,out] iter Iterator storage, initialized to NULL
|
||||||
|
*
|
||||||
|
* \return Returns a pointer to an image, if one is ready for display. Frames
|
||||||
|
* produced will always be in PTS (presentation time stamp) order.
|
||||||
|
*/
|
||||||
|
vpx_image_t *vpx_codec_get_frame(vpx_codec_ctx_t *ctx,
|
||||||
|
vpx_codec_iter_t *iter);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\defgroup cap_put_frame Frame-Based Decoding Functions
|
||||||
|
*
|
||||||
|
* The following functions are required to be implemented for all decoders
|
||||||
|
* that advertise the VPX_CODEC_CAP_PUT_FRAME capability. Calling these functions
|
||||||
|
* for codecs that don't advertise this capability will result in an error
|
||||||
|
* code being returned, usually VPX_CODEC_ERROR
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\brief put frame callback prototype
|
||||||
|
*
|
||||||
|
* This callback is invoked by the decoder to notify the application of
|
||||||
|
* the availability of decoded image data.
|
||||||
|
*/
|
||||||
|
typedef void (*vpx_codec_put_frame_cb_fn_t)(void *user_priv,
|
||||||
|
const vpx_image_t *img);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Register for notification of frame completion.
|
||||||
|
*
|
||||||
|
* Registers a given function to be called when a decoded frame is
|
||||||
|
* available.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in] cb Pointer to the callback function
|
||||||
|
* \param[in] user_priv User's private data
|
||||||
|
*
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* Callback successfully registered.
|
||||||
|
* \retval #VPX_CODEC_ERROR
|
||||||
|
* Decoder context not initialized, or algorithm not capable of
|
||||||
|
* posting slice completion.
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_register_put_frame_cb(vpx_codec_ctx_t *ctx,
|
||||||
|
vpx_codec_put_frame_cb_fn_t cb,
|
||||||
|
void *user_priv);
|
||||||
|
|
||||||
|
|
||||||
|
/*!@} - end defgroup cap_put_frame */
|
||||||
|
|
||||||
|
/*!\defgroup cap_put_slice Slice-Based Decoding Functions
|
||||||
|
*
|
||||||
|
* The following functions are required to be implemented for all decoders
|
||||||
|
* that advertise the VPX_CODEC_CAP_PUT_SLICE capability. Calling these functions
|
||||||
|
* for codecs that don't advertise this capability will result in an error
|
||||||
|
* code being returned, usually VPX_CODEC_ERROR
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\brief put slice callback prototype
|
||||||
|
*
|
||||||
|
* This callback is invoked by the decoder to notify the application of
|
||||||
|
* the availability of partially decoded image data. The
|
||||||
|
*/
|
||||||
|
typedef void (*vpx_codec_put_slice_cb_fn_t)(void *user_priv,
|
||||||
|
const vpx_image_t *img,
|
||||||
|
const vpx_image_rect_t *valid,
|
||||||
|
const vpx_image_rect_t *update);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Register for notification of slice completion.
|
||||||
|
*
|
||||||
|
* Registers a given function to be called when a decoded slice is
|
||||||
|
* available.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in] cb Pointer to the callback function
|
||||||
|
* \param[in] user_priv User's private data
|
||||||
|
*
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* Callback successfully registered.
|
||||||
|
* \retval #VPX_CODEC_ERROR
|
||||||
|
* Decoder context not initialized, or algorithm not capable of
|
||||||
|
* posting slice completion.
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_register_put_slice_cb(vpx_codec_ctx_t *ctx,
|
||||||
|
vpx_codec_put_slice_cb_fn_t cb,
|
||||||
|
void *user_priv);
|
||||||
|
|
||||||
|
|
||||||
|
/*!@} - end defgroup cap_put_slice*/
|
||||||
|
|
||||||
|
/*!@} - end defgroup decoder*/
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(VPX_CODEC_DISABLE_COMPAT) || !VPX_CODEC_DISABLE_COMPAT
|
||||||
|
#include "vpx_decoder_compat.h"
|
||||||
|
#endif
|
587
polymer/eduke32/Windows/include/vpx/vpx_decoder_compat.h
Normal file
587
polymer/eduke32/Windows/include/vpx/vpx_decoder_compat.h
Normal file
|
@ -0,0 +1,587 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\defgroup decoder Common Decoder Algorithm Interface
|
||||||
|
* This abstraction allows applications using this decoder to easily support
|
||||||
|
* multiple video formats with minimal code duplication. This section describes
|
||||||
|
* the interface common to all codecs.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\file
|
||||||
|
* \brief Provides a compatibility layer between version 1 and 2 of this API.
|
||||||
|
*
|
||||||
|
* This interface has been deprecated. Only existing code should make use
|
||||||
|
* of this interface, and therefore, it is only thinly documented. Existing
|
||||||
|
* code should be ported to the vpx_codec_* API.
|
||||||
|
*/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef VPX_DECODER_COMPAT_H
|
||||||
|
#define VPX_DECODER_COMPAT_H
|
||||||
|
|
||||||
|
/*!\brief Decoder algorithm return codes */
|
||||||
|
typedef enum {
|
||||||
|
/*!\brief Operation completed without error */
|
||||||
|
VPX_DEC_OK = VPX_CODEC_OK,
|
||||||
|
|
||||||
|
/*!\brief Unspecified error */
|
||||||
|
VPX_DEC_ERROR = VPX_CODEC_ERROR,
|
||||||
|
|
||||||
|
/*!\brief Memory operation failed */
|
||||||
|
VPX_DEC_MEM_ERROR = VPX_CODEC_MEM_ERROR,
|
||||||
|
|
||||||
|
/*!\brief ABI version mismatch */
|
||||||
|
VPX_DEC_ABI_MISMATCH = VPX_CODEC_ABI_MISMATCH,
|
||||||
|
|
||||||
|
/*!\brief The given bitstream is not supported.
|
||||||
|
*
|
||||||
|
* The bitstream was unable to be parsed at the highest level. The decoder
|
||||||
|
* is unable to proceed. This error \ref SHOULD be treated as fatal to the
|
||||||
|
* stream. */
|
||||||
|
VPX_DEC_UNSUP_BITSTREAM = VPX_CODEC_UNSUP_BITSTREAM,
|
||||||
|
|
||||||
|
/*!\brief Encoded bitstream uses an unsupported feature
|
||||||
|
*
|
||||||
|
* The decoder does not implement a feature required by the encoder. This
|
||||||
|
* return code should only be used for features that prevent future
|
||||||
|
* pictures from being properly decoded. This error \ref MAY be treated as
|
||||||
|
* fatal to the stream or \ref MAY be treated as fatal to the current GOP.
|
||||||
|
*/
|
||||||
|
VPX_DEC_UNSUP_FEATURE = VPX_CODEC_UNSUP_FEATURE,
|
||||||
|
|
||||||
|
/*!\brief The coded data for this stream is corrupt or incomplete
|
||||||
|
*
|
||||||
|
* There was a problem decoding the current frame. This return code
|
||||||
|
* should only be used for failures that prevent future pictures from
|
||||||
|
* being properly decoded. This error \ref MAY be treated as fatal to the
|
||||||
|
* stream or \ref MAY be treated as fatal to the current GOP. If decoding
|
||||||
|
* is continued for the current GOP, artifacts may be present.
|
||||||
|
*/
|
||||||
|
VPX_DEC_CORRUPT_FRAME = VPX_CODEC_CORRUPT_FRAME,
|
||||||
|
|
||||||
|
/*!\brief An application-supplied parameter is not valid.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
VPX_DEC_INVALID_PARAM = VPX_CODEC_INVALID_PARAM,
|
||||||
|
|
||||||
|
/*!\brief An iterator reached the end of list.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
VPX_DEC_LIST_END = VPX_CODEC_LIST_END
|
||||||
|
|
||||||
|
}
|
||||||
|
vpx_dec_err_t;
|
||||||
|
|
||||||
|
/*! \brief Decoder capabilities bitfield
|
||||||
|
*
|
||||||
|
* Each decoder advertises the capabilities it supports as part of its
|
||||||
|
* ::vpx_dec_iface_t interface structure. Capabilities are extra interfaces
|
||||||
|
* or functionality, and are not required to be supported by a decoder.
|
||||||
|
*
|
||||||
|
* The available flags are specified by VPX_DEC_CAP_* defines.
|
||||||
|
*/
|
||||||
|
typedef int vpx_dec_caps_t;
|
||||||
|
#define VPX_DEC_CAP_PUT_SLICE 0x0001 /**< Will issue put_slice callbacks */
|
||||||
|
#define VPX_DEC_CAP_PUT_FRAME 0x0002 /**< Will issue put_frame callbacks */
|
||||||
|
#define VPX_DEC_CAP_XMA 0x0004 /**< Supports eXternal Memory Allocation */
|
||||||
|
|
||||||
|
/*!\brief Stream properties
|
||||||
|
*
|
||||||
|
* This structure is used to query or set properties of the decoded
|
||||||
|
* stream. Algorithms may extend this structure with data specific
|
||||||
|
* to their bitstream by setting the sz member appropriately.
|
||||||
|
*/
|
||||||
|
#if 1
|
||||||
|
typedef vpx_codec_stream_info_t vpx_dec_stream_info_t;
|
||||||
|
#else
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned int sz; /**< Size of this structure */
|
||||||
|
unsigned int w; /**< Width (or 0 for unknown/default) */
|
||||||
|
unsigned int h; /**< Height (or 0 for unknown/default) */
|
||||||
|
unsigned int is_kf; /**< Current frame is a keyframe */
|
||||||
|
} vpx_dec_stream_info_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Decoder interface structure.
|
||||||
|
*
|
||||||
|
* Contains function pointers and other data private to the decoder
|
||||||
|
* implementation. This structure is opaque to the application.
|
||||||
|
*/
|
||||||
|
typedef const struct vpx_codec_iface vpx_dec_iface_t;
|
||||||
|
typedef struct vpx_codec_priv vpx_dec_priv_t;
|
||||||
|
|
||||||
|
/*!\brief Iterator
|
||||||
|
*
|
||||||
|
* Opaque storage used for iterating over lists.
|
||||||
|
*/
|
||||||
|
typedef vpx_codec_iter_t vpx_dec_iter_t;
|
||||||
|
|
||||||
|
/*!\brief Decoder context structure
|
||||||
|
*
|
||||||
|
* All decoders \ref MUST support this context structure fully. In general,
|
||||||
|
* this data should be considered private to the decoder algorithm, and
|
||||||
|
* not be manipulated or examined by the calling application. Applications
|
||||||
|
* may reference the 'name' member to get a printable description of the
|
||||||
|
* algorithm.
|
||||||
|
*/
|
||||||
|
#if 1
|
||||||
|
typedef vpx_codec_ctx_t vpx_dec_ctx_t;
|
||||||
|
#else
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const char *name; /**< Printable interface name */
|
||||||
|
vpx_dec_iface_t *iface; /**< Interface pointers */
|
||||||
|
vpx_dec_err_t err; /**< Last returned error */
|
||||||
|
vpx_dec_priv_t *priv; /**< Algorithm private storage */
|
||||||
|
} vpx_dec_ctx_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Return the build configuration
|
||||||
|
*
|
||||||
|
* Returns a printable string containing an encoded version of the build
|
||||||
|
* configuration. This may be useful to vpx support.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_dec_build_config(void) DEPRECATED;
|
||||||
|
|
||||||
|
/*!\brief Return the name for a given interface
|
||||||
|
*
|
||||||
|
* Returns a human readable string for name of the given decoder interface.
|
||||||
|
*
|
||||||
|
* \param[in] iface Interface pointer
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_dec_iface_name(vpx_dec_iface_t *iface) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Convert error number to printable string
|
||||||
|
*
|
||||||
|
* Returns a human readable string for the last error returned by the
|
||||||
|
* algorithm. The returned error will be one line and will not contain
|
||||||
|
* any newline characters.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \param[in] err Error number.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_dec_err_to_string(vpx_dec_err_t err) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Retrieve error synopsis for decoder context
|
||||||
|
*
|
||||||
|
* Returns a human readable string for the last error returned by the
|
||||||
|
* algorithm. The returned error will be one line and will not contain
|
||||||
|
* any newline characters.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *vpx_dec_error(vpx_dec_ctx_t *ctx) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Retrieve detailed error information for decoder context
|
||||||
|
*
|
||||||
|
* Returns a human readable string providing detailed information about
|
||||||
|
* the last error.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
*
|
||||||
|
* \retval NULL
|
||||||
|
* No detailed information is available.
|
||||||
|
*/
|
||||||
|
const char *vpx_dec_error_detail(vpx_dec_ctx_t *ctx) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/* REQUIRED FUNCTIONS
|
||||||
|
*
|
||||||
|
* The following functions are required to be implemented for all decoders.
|
||||||
|
* They represent the base case functionality expected of all decoders.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Initialize a decoder instance
|
||||||
|
*
|
||||||
|
* Initializes a decoder context using the given interface. Applications
|
||||||
|
* should call the vpx_dec_init convenience macro instead of this
|
||||||
|
* function directly, to ensure that the ABI version number parameter
|
||||||
|
* is properly initialized.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
* \param[in] iface Pointer to the algorithm interface to use.
|
||||||
|
* \param[in] ver ABI version number. Must be set to
|
||||||
|
* VPX_DECODER_ABI_VERSION
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* The decoder algorithm initialized.
|
||||||
|
* \retval #VPX_DEC_MEM_ERROR
|
||||||
|
* Memory allocation failed.
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_init_ver(vpx_dec_ctx_t *ctx,
|
||||||
|
vpx_dec_iface_t *iface,
|
||||||
|
int ver) DEPRECATED;
|
||||||
|
#define vpx_dec_init(ctx, iface) \
|
||||||
|
vpx_dec_init_ver(ctx, iface, VPX_DECODER_ABI_VERSION)
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Destroy a decoder instance
|
||||||
|
*
|
||||||
|
* Destroys a decoder context, freeing any associated memory buffers.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
*
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* The decoder algorithm initialized.
|
||||||
|
* \retval #VPX_DEC_MEM_ERROR
|
||||||
|
* Memory allocation failed.
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_destroy(vpx_dec_ctx_t *ctx) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Get the capabilities of an algorithm.
|
||||||
|
*
|
||||||
|
* Retrieves the capabilities bitfield from the algorithm's interface.
|
||||||
|
*
|
||||||
|
* \param[in] iface Pointer to the algorithm interface
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
vpx_dec_caps_t vpx_dec_get_caps(vpx_dec_iface_t *iface) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Parse stream info from a buffer
|
||||||
|
*
|
||||||
|
* Performs high level parsing of the bitstream. Construction of a decoder
|
||||||
|
* context is not necessary. Can be used to determine if the bitstream is
|
||||||
|
* of the proper format, and to extract information from the stream.
|
||||||
|
*
|
||||||
|
* \param[in] iface Pointer to the algorithm interface
|
||||||
|
* \param[in] data Pointer to a block of data to parse
|
||||||
|
* \param[in] data_sz Size of the data buffer
|
||||||
|
* \param[in,out] si Pointer to stream info to update. The size member
|
||||||
|
* \ref MUST be properly initialized, but \ref MAY be
|
||||||
|
* clobbered by the algorithm. This parameter \ref MAY
|
||||||
|
* be NULL.
|
||||||
|
*
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* Bitstream is parsable and stream information updated
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_peek_stream_info(vpx_dec_iface_t *iface,
|
||||||
|
const uint8_t *data,
|
||||||
|
unsigned int data_sz,
|
||||||
|
vpx_dec_stream_info_t *si) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Return information about the current stream.
|
||||||
|
*
|
||||||
|
* Returns information about the stream that has been parsed during decoding.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in,out] si Pointer to stream info to update. The size member
|
||||||
|
* \ref MUST be properly initialized, but \ref MAY be
|
||||||
|
* clobbered by the algorithm. This parameter \ref MAY
|
||||||
|
* be NULL.
|
||||||
|
*
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* Bitstream is parsable and stream information updated
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_get_stream_info(vpx_dec_ctx_t *ctx,
|
||||||
|
vpx_dec_stream_info_t *si) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Control algorithm
|
||||||
|
*
|
||||||
|
* This function is used to exchange algorithm specific data with the decoder
|
||||||
|
* instance. This can be used to implement features specific to a particular
|
||||||
|
* algorithm.
|
||||||
|
*
|
||||||
|
* This wrapper function dispatches the request to the helper function
|
||||||
|
* associated with the given ctrl_id. It tries to call this function
|
||||||
|
* transparently, but will return #VPX_DEC_ERROR if the request could not
|
||||||
|
* be dispatched.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in] ctrl_id Algorithm specific control identifier
|
||||||
|
* \param[in,out] data Data to exchange with algorithm instance.
|
||||||
|
*
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* The control request was processed.
|
||||||
|
* \retval #VPX_DEC_ERROR
|
||||||
|
* The control request was not processed.
|
||||||
|
* \retval #VPX_DEC_INVALID_PARAM
|
||||||
|
* The data was not valid.
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_control(vpx_dec_ctx_t *ctx,
|
||||||
|
int ctrl_id,
|
||||||
|
void *data) DEPRECATED;
|
||||||
|
|
||||||
|
/*!\brief Decode data
|
||||||
|
*
|
||||||
|
* Processes a buffer of coded data. If the processing results in a new
|
||||||
|
* decoded frame becoming available, #VPX_DEC_CB_PUT_SLICE and
|
||||||
|
* #VPX_DEC_CB_PUT_FRAME events may be generated, as appropriate. Encoded data
|
||||||
|
* \ref MUST be passed in DTS (decode time stamp) order. Frames produced will
|
||||||
|
* always be in PTS (presentation time stamp) order.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in] data Pointer to this block of new coded data. If
|
||||||
|
* NULL, a VPX_DEC_CB_PUT_FRAME event is posted
|
||||||
|
* for the previously decoded frame.
|
||||||
|
* \param[in] data_sz Size of the coded data, in bytes.
|
||||||
|
* \param[in] user_priv Application specific data to associate with
|
||||||
|
* this frame.
|
||||||
|
* \param[in] rel_pts PTS relative to the previous frame, in us. If
|
||||||
|
* unknown or unavailable, set to zero.
|
||||||
|
*
|
||||||
|
* \return Returns #VPX_DEC_OK if the coded data was processed completely
|
||||||
|
* and future pictures can be decoded without error. Otherwise,
|
||||||
|
* see the descriptions of the other error codes in ::vpx_dec_err_t
|
||||||
|
* for recoverability capabilities.
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_decode(vpx_dec_ctx_t *ctx,
|
||||||
|
uint8_t *data,
|
||||||
|
unsigned int data_sz,
|
||||||
|
void *user_priv,
|
||||||
|
int rel_pts) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Decoded frames iterator
|
||||||
|
*
|
||||||
|
* Iterates over a list of the frames available for display. The iterator
|
||||||
|
* storage should be initialized to NULL to start the iteration. Iteration is
|
||||||
|
* complete when this function returns NULL.
|
||||||
|
*
|
||||||
|
* The list of available frames becomes valid upon completion of the
|
||||||
|
* vpx_dec_decode call, and remains valid until the next call to vpx_dec_decode.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in out] iter Iterator storage, initialized to NULL
|
||||||
|
*
|
||||||
|
* \return Returns a pointer to an image, if one is ready for display. Frames
|
||||||
|
* produced will always be in PTS (presentation time stamp) order.
|
||||||
|
*/
|
||||||
|
vpx_image_t *vpx_dec_get_frame(vpx_dec_ctx_t *ctx,
|
||||||
|
vpx_dec_iter_t *iter) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\defgroup cap_put_frame Frame-Based Decoding Functions
|
||||||
|
*
|
||||||
|
* The following functions are required to be implemented for all decoders
|
||||||
|
* that advertise the VPX_DEC_CAP_PUT_FRAME capability. Calling these functions
|
||||||
|
* for codecs that don't advertise this capability will result in an error
|
||||||
|
* code being returned, usually VPX_DEC_ERROR
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\brief put frame callback prototype
|
||||||
|
*
|
||||||
|
* This callback is invoked by the decoder to notify the application of
|
||||||
|
* the availability of decoded image data.
|
||||||
|
*/
|
||||||
|
typedef void (*vpx_dec_put_frame_cb_fn_t)(void *user_priv,
|
||||||
|
const vpx_image_t *img);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Register for notification of frame completion.
|
||||||
|
*
|
||||||
|
* Registers a given function to be called when a decoded frame is
|
||||||
|
* available.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in] cb Pointer to the callback function
|
||||||
|
* \param[in] user_priv User's private data
|
||||||
|
*
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* Callback successfully registered.
|
||||||
|
* \retval #VPX_DEC_ERROR
|
||||||
|
* Decoder context not initialized, or algorithm not capable of
|
||||||
|
* posting slice completion.
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_register_put_frame_cb(vpx_dec_ctx_t *ctx,
|
||||||
|
vpx_dec_put_frame_cb_fn_t cb,
|
||||||
|
void *user_priv) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!@} - end defgroup cap_put_frame */
|
||||||
|
|
||||||
|
/*!\defgroup cap_put_slice Slice-Based Decoding Functions
|
||||||
|
*
|
||||||
|
* The following functions are required to be implemented for all decoders
|
||||||
|
* that advertise the VPX_DEC_CAP_PUT_SLICE capability. Calling these functions
|
||||||
|
* for codecs that don't advertise this capability will result in an error
|
||||||
|
* code being returned, usually VPX_DEC_ERROR
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\brief put slice callback prototype
|
||||||
|
*
|
||||||
|
* This callback is invoked by the decoder to notify the application of
|
||||||
|
* the availability of partially decoded image data. The
|
||||||
|
*/
|
||||||
|
typedef void (*vpx_dec_put_slice_cb_fn_t)(void *user_priv,
|
||||||
|
const vpx_image_t *img,
|
||||||
|
const vpx_image_rect_t *valid,
|
||||||
|
const vpx_image_rect_t *update);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Register for notification of slice completion.
|
||||||
|
*
|
||||||
|
* Registers a given function to be called when a decoded slice is
|
||||||
|
* available.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in] cb Pointer to the callback function
|
||||||
|
* \param[in] user_priv User's private data
|
||||||
|
*
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* Callback successfully registered.
|
||||||
|
* \retval #VPX_DEC_ERROR
|
||||||
|
* Decoder context not initialized, or algorithm not capable of
|
||||||
|
* posting slice completion.
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_register_put_slice_cb(vpx_dec_ctx_t *ctx,
|
||||||
|
vpx_dec_put_slice_cb_fn_t cb,
|
||||||
|
void *user_priv) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!@} - end defgroup cap_put_slice*/
|
||||||
|
|
||||||
|
/*!\defgroup cap_xma External Memory Allocation Functions
|
||||||
|
*
|
||||||
|
* The following functions are required to be implemented for all decoders
|
||||||
|
* that advertise the VPX_DEC_CAP_XMA capability. Calling these functions
|
||||||
|
* for codecs that don't advertise this capability will result in an error
|
||||||
|
* code being returned, usually VPX_DEC_ERROR
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\brief Memory Map Entry
|
||||||
|
*
|
||||||
|
* This structure is used to contain the properties of a memory segment. It
|
||||||
|
* is populated by the decoder in the request phase, and by the calling
|
||||||
|
* application once the requested allocation has been performed.
|
||||||
|
*/
|
||||||
|
#if 1
|
||||||
|
#define VPX_DEC_MEM_ZERO 0x1 /**< Segment must be zeroed by allocation */
|
||||||
|
#define VPX_DEC_MEM_WRONLY 0x2 /**< Segment need not be readable */
|
||||||
|
#define VPX_DEC_MEM_FAST 0x4 /**< Place in fast memory, if available */
|
||||||
|
typedef struct vpx_codec_mmap vpx_dec_mmap_t;
|
||||||
|
#else
|
||||||
|
typedef struct vpx_dec_mmap
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* The following members are set by the codec when requesting a segment
|
||||||
|
*/
|
||||||
|
unsigned int id; /**< identifier for the segment's contents */
|
||||||
|
unsigned long sz; /**< size of the segment, in bytes */
|
||||||
|
unsigned int align; /**< required alignment of the segment, in bytes */
|
||||||
|
unsigned int flags; /**< bitfield containing segment properties */
|
||||||
|
#define VPX_DEC_MEM_ZERO 0x1 /**< Segment must be zeroed by allocation */
|
||||||
|
#define VPX_DEC_MEM_WRONLY 0x2 /**< Segment need not be readable */
|
||||||
|
#define VPX_DEC_MEM_FAST 0x4 /**< Place in fast memory, if available */
|
||||||
|
|
||||||
|
/* The following members are to be filled in by the allocation function */
|
||||||
|
void *base; /**< pointer to the allocated segment */
|
||||||
|
void (*dtor)(struct vpx_dec_mmap *map); /**< destructor to call */
|
||||||
|
void *priv; /**< allocator private storage */
|
||||||
|
} vpx_dec_mmap_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*!\brief Initialize a decoder instance in external allocation mode
|
||||||
|
*
|
||||||
|
* Initializes a decoder context using the given interface. Applications
|
||||||
|
* should call the vpx_dec_xma_init convenience macro instead of this
|
||||||
|
* function directly, to ensure that the ABI version number parameter
|
||||||
|
* is properly initialized.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
* \param[in] iface Pointer to the algorithm interface to use.
|
||||||
|
* \param[in] ver ABI version number. Must be set to
|
||||||
|
* VPX_DECODER_ABI_VERSION
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* The decoder algorithm initialized.
|
||||||
|
* \retval #VPX_DEC_ERROR
|
||||||
|
* Decoder does not support XMA mode.
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_xma_init_ver(vpx_dec_ctx_t *ctx,
|
||||||
|
vpx_dec_iface_t *iface,
|
||||||
|
int ver) DEPRECATED;
|
||||||
|
#define vpx_dec_xma_init(ctx, iface) \
|
||||||
|
vpx_dec_xma_init_ver(ctx, iface, VPX_DECODER_ABI_VERSION)
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Iterate over the list of segments to allocate.
|
||||||
|
*
|
||||||
|
* Iterates over a list of the segments to allocate. The iterator storage
|
||||||
|
* should be initialized to NULL to start the iteration. Iteration is complete
|
||||||
|
* when this function returns VPX_DEC_LIST_END. The amount of memory needed to
|
||||||
|
* allocate is dependent upon the size of the encoded stream. This means that
|
||||||
|
* the stream info structure must be known at allocation time. It can be
|
||||||
|
* populated with the vpx_dec_peek_stream_info() function. In cases where the
|
||||||
|
* stream to be decoded is not available at allocation time, a fixed size must
|
||||||
|
* be requested. The decoder will not be able to decode streams larger than
|
||||||
|
* the size used at allocation time.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
* \param[out] mmap Pointer to the memory map entry to populate.
|
||||||
|
* \param[in] si Pointer to the stream info.
|
||||||
|
* \param[in out] iter Iterator storage, initialized to NULL
|
||||||
|
*
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* The memory map entry was populated.
|
||||||
|
* \retval #VPX_DEC_ERROR
|
||||||
|
* Decoder does not support XMA mode.
|
||||||
|
* \retval #VPX_DEC_MEM_ERROR
|
||||||
|
* Unable to determine segment size from stream info.
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_get_mem_map(vpx_dec_ctx_t *ctx,
|
||||||
|
vpx_dec_mmap_t *mmap,
|
||||||
|
const vpx_dec_stream_info_t *si,
|
||||||
|
vpx_dec_iter_t *iter) DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Identify allocated segments to decoder instance
|
||||||
|
*
|
||||||
|
* Stores a list of allocated segments in the decoder. Segments \ref MUST be
|
||||||
|
* passed in the order they are read from vpx_dec_get_mem_map(), but may be
|
||||||
|
* passed in groups of any size. Segments \ref MUST be set only once. The
|
||||||
|
* allocation function \ref MUST ensure that the vpx_dec_mmap_t::base member
|
||||||
|
* is non-NULL. If the segment requires cleanup handling (e.g., calling free()
|
||||||
|
* or close()) then the vpx_dec_mmap_t::dtor member \ref MUST be populated.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context.
|
||||||
|
* \param[in] mmaps Pointer to the first memory map entry in the list.
|
||||||
|
* \param[in] num_maps Number of entries being set at this time
|
||||||
|
*
|
||||||
|
* \retval #VPX_DEC_OK
|
||||||
|
* The segment was stored in the decoder context.
|
||||||
|
* \retval #VPX_DEC_ERROR
|
||||||
|
* Decoder does not support XMA mode.
|
||||||
|
* \retval #VPX_DEC_MEM_ERROR
|
||||||
|
* Segment base address was not set, or segment was already stored.
|
||||||
|
|
||||||
|
*/
|
||||||
|
vpx_dec_err_t vpx_dec_set_mem_map(vpx_dec_ctx_t *ctx,
|
||||||
|
vpx_dec_mmap_t *mmaps,
|
||||||
|
unsigned int num_maps) DEPRECATED;
|
||||||
|
|
||||||
|
/*!@} - end defgroup cap_xma*/
|
||||||
|
/*!@} - end defgroup decoder*/
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
242
polymer/eduke32/Windows/include/vpx/vpx_image.h
Normal file
242
polymer/eduke32/Windows/include/vpx/vpx_image.h
Normal file
|
@ -0,0 +1,242 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!\file
|
||||||
|
* \brief Describes the vpx image descriptor and associated operations
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef VPX_IMAGE_H
|
||||||
|
#define VPX_IMAGE_H
|
||||||
|
|
||||||
|
/*!\brief Current ABI version number
|
||||||
|
*
|
||||||
|
* \internal
|
||||||
|
* If this file is altered in any way that changes the ABI, this value
|
||||||
|
* must be bumped. Examples include, but are not limited to, changing
|
||||||
|
* types, removing or reassigning enums, adding/removing/rearranging
|
||||||
|
* fields to structures
|
||||||
|
*/
|
||||||
|
#define VPX_IMAGE_ABI_VERSION (1) /**<\hideinitializer*/
|
||||||
|
|
||||||
|
|
||||||
|
#define VPX_IMG_FMT_PLANAR 0x100 /**< Image is a planar format */
|
||||||
|
#define VPX_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U plane in memory */
|
||||||
|
#define VPX_IMG_FMT_HAS_ALPHA 0x400 /**< Image has an alpha channel component */
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief List of supported image formats */
|
||||||
|
typedef enum vpx_img_fmt {
|
||||||
|
VPX_IMG_FMT_NONE,
|
||||||
|
VPX_IMG_FMT_RGB24, /**< 24 bit per pixel packed RGB */
|
||||||
|
VPX_IMG_FMT_RGB32, /**< 32 bit per pixel packed 0RGB */
|
||||||
|
VPX_IMG_FMT_RGB565, /**< 16 bit per pixel, 565 */
|
||||||
|
VPX_IMG_FMT_RGB555, /**< 16 bit per pixel, 555 */
|
||||||
|
VPX_IMG_FMT_UYVY, /**< UYVY packed YUV */
|
||||||
|
VPX_IMG_FMT_YUY2, /**< YUYV packed YUV */
|
||||||
|
VPX_IMG_FMT_YVYU, /**< YVYU packed YUV */
|
||||||
|
VPX_IMG_FMT_BGR24, /**< 24 bit per pixel packed BGR */
|
||||||
|
VPX_IMG_FMT_RGB32_LE, /**< 32 bit packed BGR0 */
|
||||||
|
VPX_IMG_FMT_ARGB, /**< 32 bit packed ARGB, alpha=255 */
|
||||||
|
VPX_IMG_FMT_ARGB_LE, /**< 32 bit packed BGRA, alpha=255 */
|
||||||
|
VPX_IMG_FMT_RGB565_LE, /**< 16 bit per pixel, gggbbbbb rrrrrggg */
|
||||||
|
VPX_IMG_FMT_RGB555_LE, /**< 16 bit per pixel, gggbbbbb 0rrrrrgg */
|
||||||
|
VPX_IMG_FMT_YV12 = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_UV_FLIP | 1, /**< planar YVU */
|
||||||
|
VPX_IMG_FMT_I420 = VPX_IMG_FMT_PLANAR | 2,
|
||||||
|
VPX_IMG_FMT_VPXYV12 = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_UV_FLIP | 3, /** < planar 4:2:0 format with vpx color space */
|
||||||
|
VPX_IMG_FMT_VPXI420 = VPX_IMG_FMT_PLANAR | 4 /** < planar 4:2:0 format with vpx color space */
|
||||||
|
}
|
||||||
|
vpx_img_fmt_t; /**< alias for enum vpx_img_fmt */
|
||||||
|
|
||||||
|
#if !defined(VPX_CODEC_DISABLE_COMPAT) || !VPX_CODEC_DISABLE_COMPAT
|
||||||
|
#define IMG_FMT_PLANAR VPX_IMG_FMT_PLANAR /**< \deprecated Use #VPX_IMG_FMT_PLANAR */
|
||||||
|
#define IMG_FMT_UV_FLIP VPX_IMG_FMT_UV_FLIP /**< \deprecated Use #VPX_IMG_FMT_UV_FLIP */
|
||||||
|
#define IMG_FMT_HAS_ALPHA VPX_IMG_FMT_HAS_ALPHA /**< \deprecated Use #VPX_IMG_FMT_HAS_ALPHA */
|
||||||
|
|
||||||
|
/*!\brief Deprecated list of supported image formats
|
||||||
|
* \deprecated New code should use #vpx_img_fmt
|
||||||
|
*/
|
||||||
|
#define img_fmt vpx_img_fmt
|
||||||
|
/*!\brief alias for enum img_fmt.
|
||||||
|
* \deprecated New code should use #vpx_img_fmt_t
|
||||||
|
*/
|
||||||
|
#define img_fmt_t vpx_img_fmt_t
|
||||||
|
|
||||||
|
#define IMG_FMT_NONE VPX_IMG_FMT_NONE /**< \deprecated Use #VPX_IMG_FMT_NONE */
|
||||||
|
#define IMG_FMT_RGB24 VPX_IMG_FMT_RGB24 /**< \deprecated Use #VPX_IMG_FMT_RGB24 */
|
||||||
|
#define IMG_FMT_RGB32 VPX_IMG_FMT_RGB32 /**< \deprecated Use #VPX_IMG_FMT_RGB32 */
|
||||||
|
#define IMG_FMT_RGB565 VPX_IMG_FMT_RGB565 /**< \deprecated Use #VPX_IMG_FMT_RGB565 */
|
||||||
|
#define IMG_FMT_RGB555 VPX_IMG_FMT_RGB555 /**< \deprecated Use #VPX_IMG_FMT_RGB555 */
|
||||||
|
#define IMG_FMT_UYVY VPX_IMG_FMT_UYVY /**< \deprecated Use #VPX_IMG_FMT_UYVY */
|
||||||
|
#define IMG_FMT_YUY2 VPX_IMG_FMT_YUY2 /**< \deprecated Use #VPX_IMG_FMT_YUY2 */
|
||||||
|
#define IMG_FMT_YVYU VPX_IMG_FMT_YVYU /**< \deprecated Use #VPX_IMG_FMT_YVYU */
|
||||||
|
#define IMG_FMT_BGR24 VPX_IMG_FMT_BGR24 /**< \deprecated Use #VPX_IMG_FMT_BGR24 */
|
||||||
|
#define IMG_FMT_RGB32_LE VPX_IMG_FMT_RGB32_LE /**< \deprecated Use #VPX_IMG_FMT_RGB32_LE */
|
||||||
|
#define IMG_FMT_ARGB VPX_IMG_FMT_ARGB /**< \deprecated Use #VPX_IMG_FMT_ARGB */
|
||||||
|
#define IMG_FMT_ARGB_LE VPX_IMG_FMT_ARGB_LE /**< \deprecated Use #VPX_IMG_FMT_ARGB_LE */
|
||||||
|
#define IMG_FMT_RGB565_LE VPX_IMG_FMT_RGB565_LE /**< \deprecated Use #VPX_IMG_FMT_RGB565_LE */
|
||||||
|
#define IMG_FMT_RGB555_LE VPX_IMG_FMT_RGB555_LE /**< \deprecated Use #VPX_IMG_FMT_RGB555_LE */
|
||||||
|
#define IMG_FMT_YV12 VPX_IMG_FMT_YV12 /**< \deprecated Use #VPX_IMG_FMT_YV12 */
|
||||||
|
#define IMG_FMT_I420 VPX_IMG_FMT_I420 /**< \deprecated Use #VPX_IMG_FMT_I420 */
|
||||||
|
#define IMG_FMT_VPXYV12 VPX_IMG_FMT_VPXYV12 /**< \deprecated Use #VPX_IMG_FMT_VPXYV12 */
|
||||||
|
#define IMG_FMT_VPXI420 VPX_IMG_FMT_VPXI420 /**< \deprecated Use #VPX_IMG_FMT_VPXI420 */
|
||||||
|
#endif /* VPX_CODEC_DISABLE_COMPAT */
|
||||||
|
|
||||||
|
/**\brief Image Descriptor */
|
||||||
|
typedef struct vpx_image
|
||||||
|
{
|
||||||
|
vpx_img_fmt_t fmt; /**< Image Format */
|
||||||
|
|
||||||
|
/* Image storage dimensions */
|
||||||
|
unsigned int w; /**< Stored image width */
|
||||||
|
unsigned int h; /**< Stored image height */
|
||||||
|
|
||||||
|
/* Image display dimensions */
|
||||||
|
unsigned int d_w; /**< Displayed image width */
|
||||||
|
unsigned int d_h; /**< Displayed image height */
|
||||||
|
|
||||||
|
/* Chroma subsampling info */
|
||||||
|
unsigned int x_chroma_shift; /**< subsampling order, X */
|
||||||
|
unsigned int y_chroma_shift; /**< subsampling order, Y */
|
||||||
|
|
||||||
|
/* Image data pointers. */
|
||||||
|
#define VPX_PLANE_PACKED 0 /**< To be used for all packed formats */
|
||||||
|
#define VPX_PLANE_Y 0 /**< Y (Luminance) plane */
|
||||||
|
#define VPX_PLANE_U 1 /**< U (Chroma) plane */
|
||||||
|
#define VPX_PLANE_V 2 /**< V (Chroma) plane */
|
||||||
|
#define VPX_PLANE_ALPHA 3 /**< A (Transparency) plane */
|
||||||
|
#if !defined(VPX_CODEC_DISABLE_COMPAT) || !VPX_CODEC_DISABLE_COMPAT
|
||||||
|
#define PLANE_PACKED VPX_PLANE_PACKED
|
||||||
|
#define PLANE_Y VPX_PLANE_Y
|
||||||
|
#define PLANE_U VPX_PLANE_U
|
||||||
|
#define PLANE_V VPX_PLANE_V
|
||||||
|
#define PLANE_ALPHA VPX_PLANE_ALPHA
|
||||||
|
#endif
|
||||||
|
unsigned char *planes[4]; /**< pointer to the top left pixel for each plane */
|
||||||
|
int stride[4]; /**< stride between rows for each plane */
|
||||||
|
|
||||||
|
int bps; /**< bits per sample (for packed formats) */
|
||||||
|
|
||||||
|
/* The following member may be set by the application to associate data
|
||||||
|
* with this image.
|
||||||
|
*/
|
||||||
|
void *user_priv; /**< may be set by the application to associate data
|
||||||
|
* with this image. */
|
||||||
|
|
||||||
|
/* The following members should be treated as private. */
|
||||||
|
unsigned char *img_data; /**< private */
|
||||||
|
int img_data_owner; /**< private */
|
||||||
|
int self_allocd; /**< private */
|
||||||
|
} vpx_image_t; /**< alias for struct vpx_image */
|
||||||
|
|
||||||
|
/**\brief Representation of a rectangle on a surface */
|
||||||
|
typedef struct vpx_image_rect
|
||||||
|
{
|
||||||
|
unsigned int x; /**< leftmost column */
|
||||||
|
unsigned int y; /**< topmost row */
|
||||||
|
unsigned int w; /**< width */
|
||||||
|
unsigned int h; /**< height */
|
||||||
|
} vpx_image_rect_t; /**< alias for struct vpx_image_rect */
|
||||||
|
|
||||||
|
/*!\brief Open a descriptor, allocating storage for the underlying image
|
||||||
|
*
|
||||||
|
* Returns a descriptor for storing an image of the given format. The
|
||||||
|
* storage for the descriptor is allocated on the heap.
|
||||||
|
*
|
||||||
|
* \param[in] img Pointer to storage for descriptor. If this parameter
|
||||||
|
* is NULL, the storage for the descriptor will be
|
||||||
|
* allocated on the heap.
|
||||||
|
* \param[in] fmt Format for the image
|
||||||
|
* \param[in] d_w Width of the image
|
||||||
|
* \param[in] d_h Height of the image
|
||||||
|
* \param[in] align Alignment, in bytes, of each row in the image.
|
||||||
|
*
|
||||||
|
* \return Returns a pointer to the initialized image descriptor. If the img
|
||||||
|
* parameter is non-null, the value of the img parameter will be
|
||||||
|
* returned.
|
||||||
|
*/
|
||||||
|
vpx_image_t *vpx_img_alloc(vpx_image_t *img,
|
||||||
|
vpx_img_fmt_t fmt,
|
||||||
|
unsigned int d_w,
|
||||||
|
unsigned int d_h,
|
||||||
|
unsigned int align);
|
||||||
|
|
||||||
|
/*!\brief Open a descriptor, using existing storage for the underlying image
|
||||||
|
*
|
||||||
|
* Returns a descriptor for storing an image of the given format. The
|
||||||
|
* storage for descriptor has been allocated elsewhere, and a descriptor is
|
||||||
|
* desired to "wrap" that storage.
|
||||||
|
*
|
||||||
|
* \param[in] img Pointer to storage for descriptor. If this parameter
|
||||||
|
* is NULL, the storage for the descriptor will be
|
||||||
|
* allocated on the heap.
|
||||||
|
* \param[in] fmt Format for the image
|
||||||
|
* \param[in] d_w Width of the image
|
||||||
|
* \param[in] d_h Height of the image
|
||||||
|
* \param[in] align Alignment, in bytes, of each row in the image.
|
||||||
|
* \param[in] img_data Storage to use for the image
|
||||||
|
*
|
||||||
|
* \return Returns a pointer to the initialized image descriptor. If the img
|
||||||
|
* parameter is non-null, the value of the img parameter will be
|
||||||
|
* returned.
|
||||||
|
*/
|
||||||
|
vpx_image_t *vpx_img_wrap(vpx_image_t *img,
|
||||||
|
vpx_img_fmt_t fmt,
|
||||||
|
unsigned int d_w,
|
||||||
|
unsigned int d_h,
|
||||||
|
unsigned int align,
|
||||||
|
unsigned char *img_data);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Set the rectangle identifying the displayed portion of the image
|
||||||
|
*
|
||||||
|
* Updates the displayed rectangle (aka viewport) on the image surface to
|
||||||
|
* match the specified coordinates and size.
|
||||||
|
*
|
||||||
|
* \param[in] img Image descriptor
|
||||||
|
* \param[in] x leftmost column
|
||||||
|
* \param[in] y topmost row
|
||||||
|
* \param[in] w width
|
||||||
|
* \param[in] h height
|
||||||
|
*
|
||||||
|
* \return 0 if the requested rectangle is valid, nonzero otherwise.
|
||||||
|
*/
|
||||||
|
int vpx_img_set_rect(vpx_image_t *img,
|
||||||
|
unsigned int x,
|
||||||
|
unsigned int y,
|
||||||
|
unsigned int w,
|
||||||
|
unsigned int h);
|
||||||
|
|
||||||
|
|
||||||
|
/*!\brief Flip the image vertically (top for bottom)
|
||||||
|
*
|
||||||
|
* Adjusts the image descriptor's pointers and strides to make the image
|
||||||
|
* be referenced upside-down.
|
||||||
|
*
|
||||||
|
* \param[in] img Image descriptor
|
||||||
|
*/
|
||||||
|
void vpx_img_flip(vpx_image_t *img);
|
||||||
|
|
||||||
|
/*!\brief Close an image descriptor
|
||||||
|
*
|
||||||
|
* Frees all allocated storage associated with an image descriptor.
|
||||||
|
*
|
||||||
|
* \param[in] img Image descriptor
|
||||||
|
*/
|
||||||
|
void vpx_img_free(vpx_image_t *img);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
62
polymer/eduke32/Windows/include/vpx/vpx_integer.h
Normal file
62
polymer/eduke32/Windows/include/vpx/vpx_integer.h
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef VPX_INTEGER_H
|
||||||
|
#define VPX_INTEGER_H
|
||||||
|
|
||||||
|
/* get ptrdiff_t, size_t, wchar_t, NULL */
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#if (defined(_MSC_VER) && (_MSC_VER < 1600)) || defined(VPX_EMULATE_INTTYPES)
|
||||||
|
typedef signed char int8_t;
|
||||||
|
typedef signed short int16_t;
|
||||||
|
typedef signed int int32_t;
|
||||||
|
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef unsigned short uint16_t;
|
||||||
|
typedef unsigned int uint32_t;
|
||||||
|
|
||||||
|
#if (defined(_MSC_VER) && (_MSC_VER < 1600))
|
||||||
|
typedef signed __int64 int64_t;
|
||||||
|
typedef unsigned __int64 uint64_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_ARMV6
|
||||||
|
typedef unsigned int int_fast16_t;
|
||||||
|
#else
|
||||||
|
typedef signed short int_fast16_t;
|
||||||
|
#endif
|
||||||
|
typedef signed char int_fast8_t;
|
||||||
|
typedef unsigned char uint_fast8_t;
|
||||||
|
|
||||||
|
#ifndef _UINTPTR_T_DEFINED
|
||||||
|
typedef unsigned int uintptr_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/* Most platforms have the C99 standard integer types. */
|
||||||
|
|
||||||
|
#if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS)
|
||||||
|
#define __STDC_FORMAT_MACROS
|
||||||
|
#endif
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* VS2010 defines stdint.h, but not inttypes.h */
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define PRId64 "I64d"
|
||||||
|
#else
|
||||||
|
#include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
BIN
polymer/eduke32/Windows/lib/libvpx.a
Normal file
BIN
polymer/eduke32/Windows/lib/libvpx.a
Normal file
Binary file not shown.
BIN
polymer/eduke32/Windows/lib/libvpx_g.a
Normal file
BIN
polymer/eduke32/Windows/lib/libvpx_g.a
Normal file
Binary file not shown.
Loading…
Reference in a new issue