Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- added all the prerequisites for the cutscene system from Raze:
* libvpx library * libsmackerdec * playmve * MoviePlayer class. * ScreenJob engine core.
- Loading branch information
Showing
45 changed files
with
9,919 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
/* | ||
* 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 VPX_VP8_H_ | ||
#define VPX_VP8_H_ | ||
|
||
#include "./vpx_codec.h" | ||
#include "./vpx_image.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/*!\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 */ | ||
|
||
/* TODO(jkoleszar): The encoder incorrectly reuses some of these values (5+) | ||
* for its control ids. These should be migrated to something like the | ||
* VP8_DECODER_CTRL_ID_START range next time we're ready to break the ABI. | ||
*/ | ||
VP9_GET_REFERENCE = 128, /**< get a pointer to a reference frame */ | ||
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) */ | ||
VP8_MFQE = 1 << 10 | ||
}; | ||
|
||
/*!\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 VP9 specific reference frame data struct | ||
* | ||
* Define the data struct to access vp9 reference frames. | ||
*/ | ||
typedef struct vp9_ref_frame { | ||
int idx; /**< frame index to get (input) */ | ||
vpx_image_t img; /**< img structure to populate (output) */ | ||
} vp9_ref_frame_t; | ||
|
||
/*!\cond */ | ||
/*!\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 *) | ||
#define VPX_CTRL_VP8_SET_REFERENCE | ||
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 *) | ||
#define VPX_CTRL_VP8_SET_POSTPROC | ||
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) | ||
#define VPX_CTRL_VP8_SET_DBG_COLOR_MB_MODES | ||
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) | ||
#define VPX_CTRL_VP8_SET_DBG_DISPLAY_MV | ||
VPX_CTRL_USE_TYPE(VP9_GET_REFERENCE, vp9_ref_frame_t *) | ||
#define VPX_CTRL_VP9_GET_REFERENCE | ||
|
||
/*!\endcond */ | ||
/*! @} - end defgroup vp8 */ | ||
|
||
#ifdef __cplusplus | ||
} // extern "C" | ||
#endif | ||
|
||
#endif // VPX_VP8_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,176 @@ | ||
/* | ||
* 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_decoder WebM VP8/VP9 Decoder | ||
* \ingroup vp8 | ||
* | ||
* @{ | ||
*/ | ||
/*!\file | ||
* \brief Provides definitions for using VP8 or VP9 within the vpx Decoder | ||
* interface. | ||
*/ | ||
#ifndef VPX_VP8DX_H_ | ||
#define VPX_VP8DX_H_ | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/* Include controls common to both the encoder and decoder */ | ||
#include "./vp8.h" | ||
|
||
/*!\name Algorithm interface for VP8 | ||
* | ||
* This interface provides the capability to decode VP8 streams. | ||
* @{ | ||
*/ | ||
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*/ | ||
|
||
/*!\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(void); | ||
/*!@} - end algorithm interface member group*/ | ||
|
||
/*!\enum vp8_dec_control_id | ||
* \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, | ||
|
||
/** control function to get info on which reference frames were used | ||
* by the last decode | ||
*/ | ||
VP8D_GET_LAST_REF_USED, | ||
|
||
/** decryption function to decrypt encoded buffer data immediately | ||
* before decoding. Takes a vpx_decrypt_init, which contains | ||
* a callback function and opaque context pointer. | ||
*/ | ||
VPXD_SET_DECRYPTOR, | ||
VP8D_SET_DECRYPTOR = VPXD_SET_DECRYPTOR, | ||
|
||
/** 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, | ||
|
||
/** 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, | ||
|
||
/** 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 | ||
}; | ||
|
||
/** 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 | ||
* | ||
* Defines a structure to hold the decryption state and access function. | ||
*/ | ||
typedef struct vpx_decrypt_init { | ||
/*! Decrypt callback. */ | ||
vpx_decrypt_cb decrypt_cb; | ||
|
||
/*! Decryption state. */ | ||
void *decrypt_state; | ||
} 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 | ||
* | ||
* 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 *) | ||
#define VPX_CTRL_VP8D_GET_LAST_REF_UPDATES | ||
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 *) | ||
#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 *) | ||
#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) | ||
#define VPX_CTRL_VP9_INVERT_TILE_DECODE_ORDER | ||
|
||
/*!\endcond */ | ||
/*! @} - end defgroup vp8_decoder */ | ||
|
||
#ifdef __cplusplus | ||
} // extern "C" | ||
#endif | ||
|
||
#endif // VPX_VP8DX_H_ |
Oops, something went wrong.