mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-10 14:52:01 +00:00
Windows: Update libvpx to 1.6.0.
git-svn-id: https://svn.eduke32.com/eduke32@6006 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
cbf188e02e
commit
030bc75786
11 changed files with 302 additions and 212 deletions
|
@ -116,19 +116,29 @@ typedef struct vp9_ref_frame {
|
||||||
vpx_image_t img; /**< img structure to populate (output) */
|
vpx_image_t img; /**< img structure to populate (output) */
|
||||||
} vp9_ref_frame_t;
|
} vp9_ref_frame_t;
|
||||||
|
|
||||||
|
/*!\cond */
|
||||||
/*!\brief vp8 decoder control function parameter type
|
/*!\brief vp8 decoder control function parameter type
|
||||||
*
|
*
|
||||||
* defines the data type for each of VP8 decoder control function requires
|
* 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_SET_REFERENCE, vpx_ref_frame_t *)
|
||||||
|
#define VPX_CTRL_VP8_SET_REFERENCE
|
||||||
VPX_CTRL_USE_TYPE(VP8_COPY_REFERENCE, vpx_ref_frame_t *)
|
VPX_CTRL_USE_TYPE(VP8_COPY_REFERENCE, vpx_ref_frame_t *)
|
||||||
|
#define VPX_CTRL_VP8_COPY_REFERENCE
|
||||||
VPX_CTRL_USE_TYPE(VP8_SET_POSTPROC, vp8_postproc_cfg_t *)
|
VPX_CTRL_USE_TYPE(VP8_SET_POSTPROC, vp8_postproc_cfg_t *)
|
||||||
|
#define VPX_CTRL_VP8_SET_POSTPROC
|
||||||
VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_REF_FRAME, int)
|
VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_REF_FRAME, int)
|
||||||
|
#define VPX_CTRL_VP8_SET_DBG_COLOR_REF_FRAME
|
||||||
VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_MB_MODES, int)
|
VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_MB_MODES, int)
|
||||||
|
#define VPX_CTRL_VP8_SET_DBG_COLOR_MB_MODES
|
||||||
VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_B_MODES, int)
|
VPX_CTRL_USE_TYPE(VP8_SET_DBG_COLOR_B_MODES, int)
|
||||||
|
#define VPX_CTRL_VP8_SET_DBG_COLOR_B_MODES
|
||||||
VPX_CTRL_USE_TYPE(VP8_SET_DBG_DISPLAY_MV, int)
|
VPX_CTRL_USE_TYPE(VP8_SET_DBG_DISPLAY_MV, int)
|
||||||
|
#define VPX_CTRL_VP8_SET_DBG_DISPLAY_MV
|
||||||
VPX_CTRL_USE_TYPE(VP9_GET_REFERENCE, vp9_ref_frame_t *)
|
VPX_CTRL_USE_TYPE(VP9_GET_REFERENCE, vp9_ref_frame_t *)
|
||||||
|
#define VPX_CTRL_VP9_GET_REFERENCE
|
||||||
|
|
||||||
|
/*!\endcond */
|
||||||
/*! @} - end defgroup vp8 */
|
/*! @} - end defgroup vp8 */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -9,13 +9,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*!\defgroup vp8_decoder WebM VP8 Decoder
|
/*!\defgroup vp8_decoder WebM VP8/VP9 Decoder
|
||||||
* \ingroup vp8
|
* \ingroup vp8
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/*!\file
|
/*!\file
|
||||||
* \brief Provides definitions for using the VP8 algorithm within the vpx Decoder
|
* \brief Provides definitions for using VP8 or VP9 within the vpx Decoder
|
||||||
* interface.
|
* interface.
|
||||||
*/
|
*/
|
||||||
#ifndef VPX_VP8DX_H_
|
#ifndef VPX_VP8DX_H_
|
||||||
|
@ -30,19 +30,22 @@ extern "C" {
|
||||||
|
|
||||||
/*!\name Algorithm interface for VP8
|
/*!\name Algorithm interface for VP8
|
||||||
*
|
*
|
||||||
* This interface provides the capability to decode raw VP8 streams, as would
|
* This interface provides the capability to decode VP8 streams.
|
||||||
* 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_algo;
|
||||||
extern vpx_codec_iface_t *vpx_codec_vp8_dx(void);
|
extern vpx_codec_iface_t *vpx_codec_vp8_dx(void);
|
||||||
|
/*!@} - end algorithm interface member group*/
|
||||||
|
|
||||||
/* TODO(jkoleszar): These move to VP9 in a later patch set. */
|
/*!\name Algorithm interface for VP9
|
||||||
|
*
|
||||||
|
* This interface provides the capability to decode VP9 streams.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
extern vpx_codec_iface_t vpx_codec_vp9_dx_algo;
|
extern vpx_codec_iface_t vpx_codec_vp9_dx_algo;
|
||||||
extern vpx_codec_iface_t *vpx_codec_vp9_dx(void);
|
extern vpx_codec_iface_t *vpx_codec_vp9_dx(void);
|
||||||
/*!@} - end algorithm interface member group*/
|
/*!@} - end algorithm interface member group*/
|
||||||
|
|
||||||
|
|
||||||
/*!\enum vp8_dec_control_id
|
/*!\enum vp8_dec_control_id
|
||||||
* \brief VP8 decoder control functions
|
* \brief VP8 decoder control functions
|
||||||
*
|
*
|
||||||
|
@ -66,34 +69,76 @@ enum vp8_dec_control_id {
|
||||||
VP8D_GET_LAST_REF_USED,
|
VP8D_GET_LAST_REF_USED,
|
||||||
|
|
||||||
/** decryption function to decrypt encoded buffer data immediately
|
/** decryption function to decrypt encoded buffer data immediately
|
||||||
* before decoding. Takes a vp8_decrypt_init, which contains
|
* before decoding. Takes a vpx_decrypt_init, which contains
|
||||||
* a callback function and opaque context pointer.
|
* a callback function and opaque context pointer.
|
||||||
*/
|
*/
|
||||||
VP8D_SET_DECRYPTOR,
|
VPXD_SET_DECRYPTOR,
|
||||||
|
VP8D_SET_DECRYPTOR = VPXD_SET_DECRYPTOR,
|
||||||
|
|
||||||
/** control function to get the display dimensions for the current frame. */
|
/** control function to get the dimensions that the current frame is decoded
|
||||||
|
* at. This may be different to the intended display size for the frame as
|
||||||
|
* specified in the wrapper or frame header (see VP9D_GET_DISPLAY_SIZE). */
|
||||||
|
VP9D_GET_FRAME_SIZE,
|
||||||
|
|
||||||
|
/** control function to get the current frame's intended display dimensions
|
||||||
|
* (as specified in the wrapper or frame header). This may be different to
|
||||||
|
* the decoded dimensions of this frame (see VP9D_GET_FRAME_SIZE). */
|
||||||
VP9D_GET_DISPLAY_SIZE,
|
VP9D_GET_DISPLAY_SIZE,
|
||||||
|
|
||||||
/** For testing. */
|
/** control function to get the bit depth of the stream. */
|
||||||
|
VP9D_GET_BIT_DEPTH,
|
||||||
|
|
||||||
|
/** control function to set the byte alignment of the planes in the reference
|
||||||
|
* buffers. Valid values are power of 2, from 32 to 1024. A value of 0 sets
|
||||||
|
* legacy alignment. I.e. Y plane is aligned to 32 bytes, U plane directly
|
||||||
|
* follows Y plane, and V plane directly follows U plane. Default value is 0.
|
||||||
|
*/
|
||||||
|
VP9_SET_BYTE_ALIGNMENT,
|
||||||
|
|
||||||
|
/** control function to invert the decoding order to from right to left. The
|
||||||
|
* function is used in a test to confirm the decoding independence of tile
|
||||||
|
* columns. The function may be used in application where this order
|
||||||
|
* of decoding is desired.
|
||||||
|
*
|
||||||
|
* TODO(yaowu): Rework the unit test that uses this control, and in a future
|
||||||
|
* release, this test-only control shall be removed.
|
||||||
|
*/
|
||||||
VP9_INVERT_TILE_DECODE_ORDER,
|
VP9_INVERT_TILE_DECODE_ORDER,
|
||||||
|
|
||||||
|
/** control function to set the skip loop filter flag. Valid values are
|
||||||
|
* integers. The decoder will skip the loop filter when its value is set to
|
||||||
|
* nonzero. If the loop filter is skipped the decoder may accumulate decode
|
||||||
|
* artifacts. The default value is 0.
|
||||||
|
*/
|
||||||
|
VP9_SET_SKIP_LOOP_FILTER,
|
||||||
|
|
||||||
VP8_DECODER_CTRL_ID_MAX
|
VP8_DECODER_CTRL_ID_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Decrypt n bytes of data from input -> output, using the decrypt_state
|
||||||
|
* passed in VPXD_SET_DECRYPTOR.
|
||||||
|
*/
|
||||||
|
typedef void (*vpx_decrypt_cb)(void *decrypt_state, const unsigned char *input,
|
||||||
|
unsigned char *output, int count);
|
||||||
|
|
||||||
/*!\brief Structure to hold decryption state
|
/*!\brief Structure to hold decryption state
|
||||||
*
|
*
|
||||||
* Defines a structure to hold the decryption state and access function.
|
* Defines a structure to hold the decryption state and access function.
|
||||||
*/
|
*/
|
||||||
typedef struct vp8_decrypt_init {
|
typedef struct vpx_decrypt_init {
|
||||||
/** Decrypt n bytes of data from input -> output, using the decrypt_state
|
/*! Decrypt callback. */
|
||||||
* passed in VP8D_SET_DECRYPTOR.
|
vpx_decrypt_cb decrypt_cb;
|
||||||
*/
|
|
||||||
void (*decrypt_cb)(void *decrypt_state, const unsigned char *input,
|
|
||||||
unsigned char *output, int count);
|
|
||||||
/*! Decryption state. */
|
/*! Decryption state. */
|
||||||
void *decrypt_state;
|
void *decrypt_state;
|
||||||
} vp8_decrypt_init;
|
} vpx_decrypt_init;
|
||||||
|
|
||||||
|
/*!\brief A deprecated alias for vpx_decrypt_init.
|
||||||
|
*/
|
||||||
|
typedef vpx_decrypt_init vp8_decrypt_init;
|
||||||
|
|
||||||
|
|
||||||
|
/*!\cond */
|
||||||
/*!\brief VP8 decoder control function parameter type
|
/*!\brief VP8 decoder control function parameter type
|
||||||
*
|
*
|
||||||
* Defines the data types that VP8D control functions take. Note that
|
* Defines the data types that VP8D control functions take. Note that
|
||||||
|
@ -103,12 +148,25 @@ typedef struct vp8_decrypt_init {
|
||||||
|
|
||||||
|
|
||||||
VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_UPDATES, int *)
|
VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_UPDATES, int *)
|
||||||
|
#define VPX_CTRL_VP8D_GET_LAST_REF_UPDATES
|
||||||
VPX_CTRL_USE_TYPE(VP8D_GET_FRAME_CORRUPTED, int *)
|
VPX_CTRL_USE_TYPE(VP8D_GET_FRAME_CORRUPTED, int *)
|
||||||
|
#define VPX_CTRL_VP8D_GET_FRAME_CORRUPTED
|
||||||
VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_USED, int *)
|
VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_USED, int *)
|
||||||
VPX_CTRL_USE_TYPE(VP8D_SET_DECRYPTOR, vp8_decrypt_init *)
|
#define VPX_CTRL_VP8D_GET_LAST_REF_USED
|
||||||
|
VPX_CTRL_USE_TYPE(VPXD_SET_DECRYPTOR, vpx_decrypt_init *)
|
||||||
|
#define VPX_CTRL_VPXD_SET_DECRYPTOR
|
||||||
|
VPX_CTRL_USE_TYPE(VP8D_SET_DECRYPTOR, vpx_decrypt_init *)
|
||||||
|
#define VPX_CTRL_VP8D_SET_DECRYPTOR
|
||||||
VPX_CTRL_USE_TYPE(VP9D_GET_DISPLAY_SIZE, int *)
|
VPX_CTRL_USE_TYPE(VP9D_GET_DISPLAY_SIZE, int *)
|
||||||
|
#define VPX_CTRL_VP9D_GET_DISPLAY_SIZE
|
||||||
|
VPX_CTRL_USE_TYPE(VP9D_GET_BIT_DEPTH, unsigned int *)
|
||||||
|
#define VPX_CTRL_VP9D_GET_BIT_DEPTH
|
||||||
|
VPX_CTRL_USE_TYPE(VP9D_GET_FRAME_SIZE, int *)
|
||||||
|
#define VPX_CTRL_VP9D_GET_FRAME_SIZE
|
||||||
VPX_CTRL_USE_TYPE(VP9_INVERT_TILE_DECODE_ORDER, int)
|
VPX_CTRL_USE_TYPE(VP9_INVERT_TILE_DECODE_ORDER, int)
|
||||||
|
#define VPX_CTRL_VP9_INVERT_TILE_DECODE_ORDER
|
||||||
|
|
||||||
|
/*!\endcond */
|
||||||
/*! @} - end defgroup vp8_decoder */
|
/*! @} - end defgroup vp8_decoder */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -69,7 +69,7 @@ extern "C" {
|
||||||
|
|
||||||
/*!\brief Decorator indicating a function is potentially unused */
|
/*!\brief Decorator indicating a function is potentially unused */
|
||||||
#ifdef UNUSED
|
#ifdef UNUSED
|
||||||
#elif __GNUC__
|
#elif defined(__GNUC__) || defined(__clang__)
|
||||||
#define UNUSED __attribute__ ((unused))
|
#define UNUSED __attribute__ ((unused))
|
||||||
#else
|
#else
|
||||||
#define UNUSED
|
#define UNUSED
|
||||||
|
@ -83,7 +83,7 @@ extern "C" {
|
||||||
* types, removing or reassigning enums, adding/removing/rearranging
|
* types, removing or reassigning enums, adding/removing/rearranging
|
||||||
* fields to structures
|
* fields to structures
|
||||||
*/
|
*/
|
||||||
#define VPX_CODEC_ABI_VERSION (2 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/
|
#define VPX_CODEC_ABI_VERSION (3 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/
|
||||||
|
|
||||||
/*!\brief Algorithm return codes */
|
/*!\brief Algorithm return codes */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -153,7 +153,6 @@ extern "C" {
|
||||||
typedef long vpx_codec_caps_t;
|
typedef long vpx_codec_caps_t;
|
||||||
#define VPX_CODEC_CAP_DECODER 0x1 /**< Is a decoder */
|
#define VPX_CODEC_CAP_DECODER 0x1 /**< Is a decoder */
|
||||||
#define VPX_CODEC_CAP_ENCODER 0x2 /**< Is an encoder */
|
#define VPX_CODEC_CAP_ENCODER 0x2 /**< Is an encoder */
|
||||||
#define VPX_CODEC_CAP_XMA 0x4 /**< Supports eXternal Memory Allocation */
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief Initialization-time Feature Enabling
|
/*! \brief Initialization-time Feature Enabling
|
||||||
|
@ -164,7 +163,6 @@ extern "C" {
|
||||||
* The available flags are specified by VPX_CODEC_USE_* defines.
|
* The available flags are specified by VPX_CODEC_USE_* defines.
|
||||||
*/
|
*/
|
||||||
typedef long vpx_codec_flags_t;
|
typedef long vpx_codec_flags_t;
|
||||||
#define VPX_CODEC_USE_XMA 0x00000001 /**< Use eXternal Memory Allocation mode */
|
|
||||||
|
|
||||||
|
|
||||||
/*!\brief Codec interface structure.
|
/*!\brief Codec interface structure.
|
||||||
|
@ -205,13 +203,24 @@ extern "C" {
|
||||||
const char *err_detail; /**< Detailed info, if available */
|
const char *err_detail; /**< Detailed info, if available */
|
||||||
vpx_codec_flags_t init_flags; /**< Flags passed at init time */
|
vpx_codec_flags_t init_flags; /**< Flags passed at init time */
|
||||||
union {
|
union {
|
||||||
struct vpx_codec_dec_cfg *dec; /**< Decoder Configuration Pointer */
|
/**< Decoder Configuration Pointer */
|
||||||
struct vpx_codec_enc_cfg *enc; /**< Encoder Configuration Pointer */
|
const struct vpx_codec_dec_cfg *dec;
|
||||||
void *raw;
|
/**< Encoder Configuration Pointer */
|
||||||
|
const struct vpx_codec_enc_cfg *enc;
|
||||||
|
const void *raw;
|
||||||
} config; /**< Configuration pointer aliasing union */
|
} config; /**< Configuration pointer aliasing union */
|
||||||
vpx_codec_priv_t *priv; /**< Algorithm private storage */
|
vpx_codec_priv_t *priv; /**< Algorithm private storage */
|
||||||
} vpx_codec_ctx_t;
|
} vpx_codec_ctx_t;
|
||||||
|
|
||||||
|
/*!\brief Bit depth for codec
|
||||||
|
* *
|
||||||
|
* This enumeration determines the bit depth of the codec.
|
||||||
|
*/
|
||||||
|
typedef enum vpx_bit_depth {
|
||||||
|
VPX_BITS_8 = 8, /**< 8 bits */
|
||||||
|
VPX_BITS_10 = 10, /**< 10 bits */
|
||||||
|
VPX_BITS_12 = 12, /**< 12 bits */
|
||||||
|
} vpx_bit_depth_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Library Version Number Interface
|
* Library Version Number Interface
|
||||||
|
@ -462,94 +471,6 @@ extern "C" {
|
||||||
|
|
||||||
#endif
|
#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*/
|
/*!@} - end defgroup codec*/
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "./vpx_codec.h"
|
#include "./vpx_codec.h"
|
||||||
|
#include "./vpx_frame_buffer.h"
|
||||||
|
|
||||||
/*!\brief Current ABI version number
|
/*!\brief Current ABI version number
|
||||||
*
|
*
|
||||||
|
@ -39,7 +40,7 @@ extern "C" {
|
||||||
* types, removing or reassigning enums, adding/removing/rearranging
|
* types, removing or reassigning enums, adding/removing/rearranging
|
||||||
* fields to structures
|
* fields to structures
|
||||||
*/
|
*/
|
||||||
#define VPX_DECODER_ABI_VERSION (2 + VPX_CODEC_ABI_VERSION) /**<\hideinitializer*/
|
#define VPX_DECODER_ABI_VERSION (3 + VPX_CODEC_ABI_VERSION) /**<\hideinitializer*/
|
||||||
|
|
||||||
/*! \brief Decoder capabilities bitfield
|
/*! \brief Decoder capabilities bitfield
|
||||||
*
|
*
|
||||||
|
@ -66,6 +67,8 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
#define VPX_CODEC_CAP_FRAME_THREADING 0x200000 /**< Can support frame-based
|
#define VPX_CODEC_CAP_FRAME_THREADING 0x200000 /**< Can support frame-based
|
||||||
multi-threading */
|
multi-threading */
|
||||||
|
#define VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER 0x400000 /**< Can support external
|
||||||
|
frame buffers */
|
||||||
|
|
||||||
#define VPX_CODEC_USE_POSTPROC 0x10000 /**< Postprocess decoded frame */
|
#define VPX_CODEC_USE_POSTPROC 0x10000 /**< Postprocess decoded frame */
|
||||||
#define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000 /**< Conceal errors in decoded
|
#define VPX_CODEC_USE_ERROR_CONCEALMENT 0x20000 /**< Conceal errors in decoded
|
||||||
|
@ -119,10 +122,6 @@ extern "C" {
|
||||||
* is not thread safe and should be guarded with a lock if being used
|
* is not thread safe and should be guarded with a lock if being used
|
||||||
* in a multithreaded context.
|
* in a multithreaded context.
|
||||||
*
|
*
|
||||||
* 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] ctx Pointer to this instance's context.
|
||||||
* \param[in] iface Pointer to the algorithm interface to use.
|
* \param[in] iface Pointer to the algorithm interface to use.
|
||||||
* \param[in] cfg Configuration to use, if known. May be NULL.
|
* \param[in] cfg Configuration to use, if known. May be NULL.
|
||||||
|
@ -136,7 +135,7 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx,
|
vpx_codec_err_t vpx_codec_dec_init_ver(vpx_codec_ctx_t *ctx,
|
||||||
vpx_codec_iface_t *iface,
|
vpx_codec_iface_t *iface,
|
||||||
vpx_codec_dec_cfg_t *cfg,
|
const vpx_codec_dec_cfg_t *cfg,
|
||||||
vpx_codec_flags_t flags,
|
vpx_codec_flags_t flags,
|
||||||
int ver);
|
int ver);
|
||||||
|
|
||||||
|
@ -326,6 +325,51 @@ extern "C" {
|
||||||
|
|
||||||
/*!@} - end defgroup cap_put_slice*/
|
/*!@} - end defgroup cap_put_slice*/
|
||||||
|
|
||||||
|
/*!\defgroup cap_external_frame_buffer External Frame Buffer Functions
|
||||||
|
*
|
||||||
|
* The following section is required to be implemented for all decoders
|
||||||
|
* that advertise the VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER capability.
|
||||||
|
* Calling this function for codecs that don't advertise this capability
|
||||||
|
* will result in an error code being returned, usually VPX_CODEC_ERROR.
|
||||||
|
*
|
||||||
|
* \note
|
||||||
|
* Currently this only works with VP9.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!\brief Pass in external frame buffers for the decoder to use.
|
||||||
|
*
|
||||||
|
* Registers functions to be called when libvpx needs a frame buffer
|
||||||
|
* to decode the current frame and a function to be called when libvpx does
|
||||||
|
* not internally reference the frame buffer. This set function must
|
||||||
|
* be called before the first call to decode or libvpx will assume the
|
||||||
|
* default behavior of allocating frame buffers internally.
|
||||||
|
*
|
||||||
|
* \param[in] ctx Pointer to this instance's context
|
||||||
|
* \param[in] cb_get Pointer to the get callback function
|
||||||
|
* \param[in] cb_release Pointer to the release callback function
|
||||||
|
* \param[in] cb_priv Callback's private data
|
||||||
|
*
|
||||||
|
* \retval #VPX_CODEC_OK
|
||||||
|
* External frame buffers will be used by libvpx.
|
||||||
|
* \retval #VPX_CODEC_INVALID_PARAM
|
||||||
|
* One or more of the callbacks were NULL.
|
||||||
|
* \retval #VPX_CODEC_ERROR
|
||||||
|
* Decoder context not initialized, or algorithm not capable of
|
||||||
|
* using external frame buffers.
|
||||||
|
*
|
||||||
|
* \note
|
||||||
|
* When decoding VP9, the application may be required to pass in at least
|
||||||
|
* #VP9_MAXIMUM_REF_BUFFERS + #VPX_MAXIMUM_WORK_BUFFERS external frame
|
||||||
|
* buffers.
|
||||||
|
*/
|
||||||
|
vpx_codec_err_t vpx_codec_set_frame_buffer_functions(
|
||||||
|
vpx_codec_ctx_t *ctx,
|
||||||
|
vpx_get_frame_buffer_cb_fn_t cb_get,
|
||||||
|
vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv);
|
||||||
|
|
||||||
|
/*!@} - end defgroup cap_external_frame_buffer */
|
||||||
|
|
||||||
/*!@} - end defgroup decoder*/
|
/*!@} - end defgroup decoder*/
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014 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_VPX_FRAME_BUFFER_H_
|
||||||
|
#define VPX_VPX_FRAME_BUFFER_H_
|
||||||
|
|
||||||
|
/*!\file
|
||||||
|
* \brief Describes the decoder external frame buffer interface.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "./vpx_integer.h"
|
||||||
|
|
||||||
|
/*!\brief The maximum number of work buffers used by libvpx.
|
||||||
|
* Support maximum 4 threads to decode video in parallel.
|
||||||
|
* Each thread will use one work buffer.
|
||||||
|
* TODO(hkuang): Add support to set number of worker threads dynamically.
|
||||||
|
*/
|
||||||
|
#define VPX_MAXIMUM_WORK_BUFFERS 8
|
||||||
|
|
||||||
|
/*!\brief The maximum number of reference buffers that a VP9 encoder may use.
|
||||||
|
*/
|
||||||
|
#define VP9_MAXIMUM_REF_BUFFERS 8
|
||||||
|
|
||||||
|
/*!\brief External frame buffer
|
||||||
|
*
|
||||||
|
* This structure holds allocated frame buffers used by the decoder.
|
||||||
|
*/
|
||||||
|
typedef struct vpx_codec_frame_buffer {
|
||||||
|
uint8_t *data; /**< Pointer to the data buffer */
|
||||||
|
size_t size; /**< Size of data in bytes */
|
||||||
|
void *priv; /**< Frame's private data */
|
||||||
|
} vpx_codec_frame_buffer_t;
|
||||||
|
|
||||||
|
/*!\brief get frame buffer callback prototype
|
||||||
|
*
|
||||||
|
* This callback is invoked by the decoder to retrieve data for the frame
|
||||||
|
* buffer in order for the decode call to complete. The callback must
|
||||||
|
* allocate at least min_size in bytes and assign it to fb->data. The callback
|
||||||
|
* must zero out all the data allocated. Then the callback must set fb->size
|
||||||
|
* to the allocated size. The application does not need to align the allocated
|
||||||
|
* data. The callback is triggered when the decoder needs a frame buffer to
|
||||||
|
* decode a compressed image into. This function may be called more than once
|
||||||
|
* for every call to vpx_codec_decode. The application may set fb->priv to
|
||||||
|
* some data which will be passed back in the ximage and the release function
|
||||||
|
* call. |fb| is guaranteed to not be NULL. On success the callback must
|
||||||
|
* return 0. Any failure the callback must return a value less than 0.
|
||||||
|
*
|
||||||
|
* \param[in] priv Callback's private data
|
||||||
|
* \param[in] new_size Size in bytes needed by the buffer
|
||||||
|
* \param[in,out] fb Pointer to vpx_codec_frame_buffer_t
|
||||||
|
*/
|
||||||
|
typedef int (*vpx_get_frame_buffer_cb_fn_t)(
|
||||||
|
void *priv, size_t min_size, vpx_codec_frame_buffer_t *fb);
|
||||||
|
|
||||||
|
/*!\brief release frame buffer callback prototype
|
||||||
|
*
|
||||||
|
* This callback is invoked by the decoder when the frame buffer is not
|
||||||
|
* referenced by any other buffers. |fb| is guaranteed to not be NULL. On
|
||||||
|
* success the callback must return 0. Any failure the callback must return
|
||||||
|
* a value less than 0.
|
||||||
|
*
|
||||||
|
* \param[in] priv Callback's private data
|
||||||
|
* \param[in] fb Pointer to vpx_codec_frame_buffer_t
|
||||||
|
*/
|
||||||
|
typedef int (*vpx_release_frame_buffer_cb_fn_t)(
|
||||||
|
void *priv, vpx_codec_frame_buffer_t *fb);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // extern "C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // VPX_VPX_FRAME_BUFFER_H_
|
|
@ -28,13 +28,13 @@ extern "C" {
|
||||||
* types, removing or reassigning enums, adding/removing/rearranging
|
* types, removing or reassigning enums, adding/removing/rearranging
|
||||||
* fields to structures
|
* fields to structures
|
||||||
*/
|
*/
|
||||||
#define VPX_IMAGE_ABI_VERSION (1) /**<\hideinitializer*/
|
#define VPX_IMAGE_ABI_VERSION (4) /**<\hideinitializer*/
|
||||||
|
|
||||||
|
|
||||||
#define VPX_IMG_FMT_PLANAR 0x100 /**< Image is a planar format */
|
#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_UV_FLIP 0x200 /**< V plane precedes U in memory. */
|
||||||
#define VPX_IMG_FMT_HAS_ALPHA 0x400 /**< Image has an alpha channel component */
|
#define VPX_IMG_FMT_HAS_ALPHA 0x400 /**< Image has an alpha channel. */
|
||||||
|
#define VPX_IMG_FMT_HIGHBITDEPTH 0x800 /**< Image uses 16bit framebuffer. */
|
||||||
|
|
||||||
/*!\brief List of supported image formats */
|
/*!\brief List of supported image formats */
|
||||||
typedef enum vpx_img_fmt {
|
typedef enum vpx_img_fmt {
|
||||||
|
@ -58,55 +58,51 @@ extern "C" {
|
||||||
VPX_IMG_FMT_VPXI420 = VPX_IMG_FMT_PLANAR | 4,
|
VPX_IMG_FMT_VPXI420 = VPX_IMG_FMT_PLANAR | 4,
|
||||||
VPX_IMG_FMT_I422 = VPX_IMG_FMT_PLANAR | 5,
|
VPX_IMG_FMT_I422 = VPX_IMG_FMT_PLANAR | 5,
|
||||||
VPX_IMG_FMT_I444 = VPX_IMG_FMT_PLANAR | 6,
|
VPX_IMG_FMT_I444 = VPX_IMG_FMT_PLANAR | 6,
|
||||||
VPX_IMG_FMT_444A = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_HAS_ALPHA | 7
|
VPX_IMG_FMT_I440 = VPX_IMG_FMT_PLANAR | 7,
|
||||||
|
VPX_IMG_FMT_444A = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_HAS_ALPHA | 6,
|
||||||
|
VPX_IMG_FMT_I42016 = VPX_IMG_FMT_I420 | VPX_IMG_FMT_HIGHBITDEPTH,
|
||||||
|
VPX_IMG_FMT_I42216 = VPX_IMG_FMT_I422 | VPX_IMG_FMT_HIGHBITDEPTH,
|
||||||
|
VPX_IMG_FMT_I44416 = VPX_IMG_FMT_I444 | VPX_IMG_FMT_HIGHBITDEPTH,
|
||||||
|
VPX_IMG_FMT_I44016 = VPX_IMG_FMT_I440 | VPX_IMG_FMT_HIGHBITDEPTH
|
||||||
} vpx_img_fmt_t; /**< alias for enum vpx_img_fmt */
|
} vpx_img_fmt_t; /**< alias for enum vpx_img_fmt */
|
||||||
|
|
||||||
#if !defined(VPX_CODEC_DISABLE_COMPAT) || !VPX_CODEC_DISABLE_COMPAT
|
/*!\brief List of supported color spaces */
|
||||||
#define IMG_FMT_PLANAR VPX_IMG_FMT_PLANAR /**< \deprecated Use #VPX_IMG_FMT_PLANAR */
|
typedef enum vpx_color_space {
|
||||||
#define IMG_FMT_UV_FLIP VPX_IMG_FMT_UV_FLIP /**< \deprecated Use #VPX_IMG_FMT_UV_FLIP */
|
VPX_CS_UNKNOWN = 0, /**< Unknown */
|
||||||
#define IMG_FMT_HAS_ALPHA VPX_IMG_FMT_HAS_ALPHA /**< \deprecated Use #VPX_IMG_FMT_HAS_ALPHA */
|
VPX_CS_BT_601 = 1, /**< BT.601 */
|
||||||
|
VPX_CS_BT_709 = 2, /**< BT.709 */
|
||||||
|
VPX_CS_SMPTE_170 = 3, /**< SMPTE.170 */
|
||||||
|
VPX_CS_SMPTE_240 = 4, /**< SMPTE.240 */
|
||||||
|
VPX_CS_BT_2020 = 5, /**< BT.2020 */
|
||||||
|
VPX_CS_RESERVED = 6, /**< Reserved */
|
||||||
|
VPX_CS_SRGB = 7 /**< sRGB */
|
||||||
|
} vpx_color_space_t; /**< alias for enum vpx_color_space */
|
||||||
|
|
||||||
/*!\brief Deprecated list of supported image formats
|
/*!\brief List of supported color range */
|
||||||
* \deprecated New code should use #vpx_img_fmt
|
typedef enum vpx_color_range {
|
||||||
*/
|
VPX_CR_STUDIO_RANGE = 0, /**< Y [16..235], UV [16..240] */
|
||||||
#define img_fmt vpx_img_fmt
|
VPX_CR_FULL_RANGE = 1 /**< YUV/RGB [0..255] */
|
||||||
/*!\brief alias for enum img_fmt.
|
} vpx_color_range_t; /**< alias for enum vpx_color_range */
|
||||||
* \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 */
|
/**\brief Image Descriptor */
|
||||||
typedef struct vpx_image {
|
typedef struct vpx_image {
|
||||||
vpx_img_fmt_t fmt; /**< Image Format */
|
vpx_img_fmt_t fmt; /**< Image Format */
|
||||||
|
vpx_color_space_t cs; /**< Color Space */
|
||||||
|
vpx_color_range_t range; /**< Color Range */
|
||||||
|
|
||||||
/* Image storage dimensions */
|
/* Image storage dimensions */
|
||||||
unsigned int w; /**< Stored image width */
|
unsigned int w; /**< Stored image width */
|
||||||
unsigned int h; /**< Stored image height */
|
unsigned int h; /**< Stored image height */
|
||||||
|
unsigned int bit_depth; /**< Stored image bit-depth */
|
||||||
|
|
||||||
/* Image display dimensions */
|
/* Image display dimensions */
|
||||||
unsigned int d_w; /**< Displayed image width */
|
unsigned int d_w; /**< Displayed image width */
|
||||||
unsigned int d_h; /**< Displayed image height */
|
unsigned int d_h; /**< Displayed image height */
|
||||||
|
|
||||||
|
/* Image intended rendering dimensions */
|
||||||
|
unsigned int r_w; /**< Intended rendering image width */
|
||||||
|
unsigned int r_h; /**< Intended rendering image height */
|
||||||
|
|
||||||
/* Chroma subsampling info */
|
/* Chroma subsampling info */
|
||||||
unsigned int x_chroma_shift; /**< subsampling order, X */
|
unsigned int x_chroma_shift; /**< subsampling order, X */
|
||||||
unsigned int y_chroma_shift; /**< subsampling order, Y */
|
unsigned int y_chroma_shift; /**< subsampling order, Y */
|
||||||
|
@ -117,13 +113,6 @@ extern "C" {
|
||||||
#define VPX_PLANE_U 1 /**< U (Chroma) plane */
|
#define VPX_PLANE_U 1 /**< U (Chroma) plane */
|
||||||
#define VPX_PLANE_V 2 /**< V (Chroma) plane */
|
#define VPX_PLANE_V 2 /**< V (Chroma) plane */
|
||||||
#define VPX_PLANE_ALPHA 3 /**< A (Transparency) 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 */
|
unsigned char *planes[4]; /**< pointer to the top left pixel for each plane */
|
||||||
int stride[4]; /**< stride between rows for each plane */
|
int stride[4]; /**< stride between rows for each plane */
|
||||||
|
|
||||||
|
@ -139,6 +128,8 @@ extern "C" {
|
||||||
unsigned char *img_data; /**< private */
|
unsigned char *img_data; /**< private */
|
||||||
int img_data_owner; /**< private */
|
int img_data_owner; /**< private */
|
||||||
int self_allocd; /**< private */
|
int self_allocd; /**< private */
|
||||||
|
|
||||||
|
void *fb_priv; /**< Frame buffer data associated with the image. */
|
||||||
} vpx_image_t; /**< alias for struct vpx_image */
|
} vpx_image_t; /**< alias for struct vpx_image */
|
||||||
|
|
||||||
/**\brief Representation of a rectangle on a surface */
|
/**\brief Representation of a rectangle on a surface */
|
||||||
|
|
|
@ -15,6 +15,15 @@
|
||||||
/* get ptrdiff_t, size_t, wchar_t, NULL */
|
/* get ptrdiff_t, size_t, wchar_t, NULL */
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define VPX_FORCE_INLINE __forceinline
|
||||||
|
#define VPX_INLINE __inline
|
||||||
|
#else
|
||||||
|
#define VPX_FORCE_INLINE __inline__ __attribute__(always_inline)
|
||||||
|
// TODO(jbb): Allow a way to force inline off for older compilers.
|
||||||
|
#define VPX_INLINE inline
|
||||||
|
#endif
|
||||||
|
|
||||||
#if (defined(_MSC_VER) && (_MSC_VER < 1600)) || defined(VPX_EMULATE_INTTYPES)
|
#if (defined(_MSC_VER) && (_MSC_VER < 1600)) || defined(VPX_EMULATE_INTTYPES)
|
||||||
typedef signed char int8_t;
|
typedef signed char int8_t;
|
||||||
typedef signed short int16_t;
|
typedef signed short int16_t;
|
||||||
|
@ -28,6 +37,8 @@ typedef unsigned int uint32_t;
|
||||||
typedef signed __int64 int64_t;
|
typedef signed __int64 int64_t;
|
||||||
typedef unsigned __int64 uint64_t;
|
typedef unsigned __int64 uint64_t;
|
||||||
#define INT64_MAX _I64_MAX
|
#define INT64_MAX _I64_MAX
|
||||||
|
#define INT32_MAX _I32_MAX
|
||||||
|
#define INT32_MIN _I32_MIN
|
||||||
#define INT16_MAX _I16_MAX
|
#define INT16_MAX _I16_MAX
|
||||||
#define INT16_MIN _I16_MIN
|
#define INT16_MIN _I16_MIN
|
||||||
#endif
|
#endif
|
||||||
|
@ -40,15 +51,21 @@ typedef size_t uintptr_t;
|
||||||
|
|
||||||
/* Most platforms have the C99 standard integer types. */
|
/* Most platforms have the C99 standard integer types. */
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS)
|
#if defined(__cplusplus)
|
||||||
#define __STDC_FORMAT_MACROS
|
# if !defined(__STDC_FORMAT_MACROS)
|
||||||
#endif
|
# define __STDC_FORMAT_MACROS
|
||||||
|
# endif
|
||||||
|
# if !defined(__STDC_LIMIT_MACROS)
|
||||||
|
# define __STDC_LIMIT_MACROS
|
||||||
|
# endif
|
||||||
|
#endif // __cplusplus
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* VS2010 defines stdint.h, but not inttypes.h */
|
/* VS2010 defines stdint.h, but not inttypes.h */
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER) && _MSC_VER < 1800
|
||||||
#define PRId64 "I64d"
|
#define PRId64 "I64d"
|
||||||
#else
|
#else
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -113,15 +113,13 @@ Download the binary of yasm (http://yasm.tortall.net/) for your host system arch
|
||||||
The build environment needs pr.exe (https://mingw-lib.googlecode.com/files/coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2).
|
The build environment needs pr.exe (https://mingw-lib.googlecode.com/files/coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2).
|
||||||
### Download ###
|
### Download ###
|
||||||
* Instructions: http://www.webmproject.org/code/
|
* Instructions: http://www.webmproject.org/code/
|
||||||
|
* Stable: http://downloads.webmproject.org/releases/webm/
|
||||||
* Git: https://chromium.googlesource.com/webm/libvpx
|
* Git: https://chromium.googlesource.com/webm/libvpx
|
||||||
### Modifications ###
|
|
||||||
If the configure scripts do not recognize your 64-bit compiler, you may need to run the following:
|
|
||||||
git apply "libvpx with MinGW-w64.patch"
|
|
||||||
### Build ###
|
### Build ###
|
||||||
sh ./configure --disable-vp8-encoder --disable-vp9-encoder --disable-multithread --disable-spatial-resampling --as=yasm && make
|
sh ./configure --disable-vp8-encoder --disable-vp9-encoder --disable-multithread --disable-spatial-resampling --as=yasm && make libvpx.a
|
||||||
### Desired Results ###
|
### Desired Results ###
|
||||||
* headers: vpx/vp8.h vpx/vp8dx.h vpx/vpx_codec.h vpx/vpx_codec_impl_bottom.h vpx/vpx_codec_impl_top.h vpx/vpx_decoder.h vpx/vpx_decoder_compat.h vpx/vpx_image.h vpx/vpx_integer.h
|
* headers: vpx/vp8.h vpx/vp8dx.h vpx/vpx_codec.h vpx/vpx_decoder.h vpx/vpx_frame_buffer.h vpx/vpx_image.h vpx/vpx_integer.h
|
||||||
* libraries: libvpx.a libvpx_g.a
|
* libraries: libvpx.a
|
||||||
|
|
||||||
|
|
||||||
SDL
|
SDL
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
diff --git a/build/make/configure.sh b/build/make/configure.sh
|
|
||||||
index b5151da..a739468 100755
|
|
||||||
--- a/build/make/configure.sh
|
|
||||||
+++ b/build/make/configure.sh
|
|
||||||
@@ -661,9 +661,14 @@ process_common_toolchain() {
|
|
||||||
x86_64*mingw32*)
|
|
||||||
tgt_os=win64
|
|
||||||
;;
|
|
||||||
- *mingw32*|*cygwin*)
|
|
||||||
+ *mingw32*|*cygwin*|*win32-gcc*)
|
|
||||||
[ -z "$tgt_isa" ] && tgt_isa=x86
|
|
||||||
tgt_os=win32
|
|
||||||
+ [ "$tgt_isa" == "x86_64" ] && tgt_os=win64
|
|
||||||
+ ;;
|
|
||||||
+ *win64-gcc*)
|
|
||||||
+ [ -z "$tgt_isa" ] && tgt_isa=x86_64
|
|
||||||
+ tgt_os=win64
|
|
||||||
;;
|
|
||||||
*linux*|*bsd*)
|
|
||||||
tgt_os=linux
|
|
||||||
diff --git a/configure b/configure
|
|
||||||
index 9f5a435..93f3d30 100755
|
|
||||||
--- a/configure
|
|
||||||
+++ b/configure
|
|
||||||
@@ -137,6 +137,7 @@ all_platforms="${all_platforms} x86_64-darwin13-gcc"
|
|
||||||
all_platforms="${all_platforms} x86_64-linux-gcc"
|
|
||||||
all_platforms="${all_platforms} x86_64-linux-icc"
|
|
||||||
all_platforms="${all_platforms} x86_64-solaris-gcc"
|
|
||||||
+all_platforms="${all_platforms} x86_64-win32-gcc"
|
|
||||||
all_platforms="${all_platforms} x86_64-win64-gcc"
|
|
||||||
all_platforms="${all_platforms} x86_64-win64-vs8"
|
|
||||||
all_platforms="${all_platforms} x86_64-win64-vs9"
|
|
Loading…
Reference in a new issue