mirror of
https://github.com/ZDoom/zdoom-macos-deps.git
synced 2024-11-24 21:01:59 +00:00
deps: update vpx to 1.13.0
This commit is contained in:
parent
d6c70c75c3
commit
9ce2ca7811
5 changed files with 184 additions and 11 deletions
12
deps/vpx/include/vpx/vp8cx.h
vendored
12
deps/vpx/include/vpx/vp8cx.h
vendored
|
@ -757,6 +757,16 @@ enum vp8e_enc_control_id {
|
|||
* Supported in codecs: VP8
|
||||
*/
|
||||
VP8E_SET_RTC_EXTERNAL_RATECTRL,
|
||||
|
||||
/*!\brief Codec control to set quantizer for the next frame.
|
||||
*
|
||||
* This will turn off cyclic refresh. Only applicable to 1-pass without
|
||||
* spatial layers.
|
||||
*
|
||||
* Supported in codecs: VP9
|
||||
*
|
||||
*/
|
||||
VP9E_SET_QUANTIZER_ONE_PASS,
|
||||
};
|
||||
|
||||
/*!\brief vpx 1-D scaling mode
|
||||
|
@ -1085,6 +1095,8 @@ VPX_CTRL_USE_TYPE(VP9E_GET_LAST_QUANTIZER_SVC_LAYERS, int *)
|
|||
#define VPX_CTRL_VP9E_GET_LAST_QUANTIZER_SVC_LAYERS
|
||||
VPX_CTRL_USE_TYPE(VP8E_SET_RTC_EXTERNAL_RATECTRL, int)
|
||||
#define VPX_CTRL_VP8E_SET_RTC_EXTERNAL_RATECTRL
|
||||
VPX_CTRL_USE_TYPE(VP9E_SET_QUANTIZER_ONE_PASS, int)
|
||||
#define VPX_CTRL_VP9E_SET_QUANTIZER_ONE_PASS
|
||||
|
||||
/*!\endcond */
|
||||
/*! @} - end defgroup vp8_encoder */
|
||||
|
|
15
deps/vpx/include/vpx/vpx_encoder.h
vendored
15
deps/vpx/include/vpx/vpx_encoder.h
vendored
|
@ -115,14 +115,14 @@ typedef int64_t vpx_codec_pts_t;
|
|||
* support frame types that are codec specific (MPEG-1 D-frames for example)
|
||||
*/
|
||||
typedef uint32_t vpx_codec_frame_flags_t;
|
||||
#define VPX_FRAME_IS_KEY 0x1 /**< frame is the start of a GOP */
|
||||
#define VPX_FRAME_IS_KEY 0x1u /**< frame is the start of a GOP */
|
||||
/*!\brief frame can be dropped without affecting the stream (no future frame
|
||||
* depends on this one) */
|
||||
#define VPX_FRAME_IS_DROPPABLE 0x2
|
||||
#define VPX_FRAME_IS_DROPPABLE 0x2u
|
||||
/*!\brief frame should be decoded but will not be shown */
|
||||
#define VPX_FRAME_IS_INVISIBLE 0x4
|
||||
#define VPX_FRAME_IS_INVISIBLE 0x4u
|
||||
/*!\brief this is a fragment of the encoded frame */
|
||||
#define VPX_FRAME_IS_FRAGMENT 0x8
|
||||
#define VPX_FRAME_IS_FRAGMENT 0x8u
|
||||
|
||||
/*!\brief Error Resilient flags
|
||||
*
|
||||
|
@ -132,12 +132,13 @@ typedef uint32_t vpx_codec_frame_flags_t;
|
|||
*/
|
||||
typedef uint32_t vpx_codec_er_flags_t;
|
||||
/*!\brief Improve resiliency against losses of whole frames */
|
||||
#define VPX_ERROR_RESILIENT_DEFAULT 0x1
|
||||
#define VPX_ERROR_RESILIENT_DEFAULT 0x1u
|
||||
/*!\brief The frame partitions are independently decodable by the bool decoder,
|
||||
* meaning that partitions can be decoded even though earlier partitions have
|
||||
* been lost. Note that intra prediction is still done over the partition
|
||||
* boundary. */
|
||||
#define VPX_ERROR_RESILIENT_PARTITIONS 0x2
|
||||
* boundary.
|
||||
* \note This is only supported by VP8.*/
|
||||
#define VPX_ERROR_RESILIENT_PARTITIONS 0x2u
|
||||
|
||||
/*!\brief Encoder output packet variants
|
||||
*
|
||||
|
|
164
deps/vpx/include/vpx/vpx_ext_ratectrl.h
vendored
164
deps/vpx/include/vpx/vpx_ext_ratectrl.h
vendored
|
@ -25,7 +25,27 @@ extern "C" {
|
|||
* types, removing or reassigning enums, adding/removing/rearranging
|
||||
* fields to structures.
|
||||
*/
|
||||
#define VPX_EXT_RATECTRL_ABI_VERSION (1)
|
||||
#define VPX_EXT_RATECTRL_ABI_VERSION (6)
|
||||
|
||||
/*!\brief The control type of the inference API.
|
||||
* In VPX_RC_QP mode, the external rate control model determines the
|
||||
* quantization parameter (QP) for each frame.
|
||||
* In VPX_RC_GOP mode, the external rate control model determines the
|
||||
* group of picture (GOP) of the video sequence.
|
||||
* In VPX_RC_RDMULT mode, the external rate control model determines the
|
||||
* rate-distortion multiplier (rdmult) for the current frame.
|
||||
* In VPX_RC_GOP_QP mode, the external rate control model determines
|
||||
* both the QP and the GOP.
|
||||
* In VPX_RC_GOP_QP_RDMULT mode, the external rate control model determines
|
||||
* the QP, GOP and the rdmult.
|
||||
*/
|
||||
typedef enum vpx_rc_type {
|
||||
VPX_RC_QP = 1 << 0,
|
||||
VPX_RC_GOP = 1 << 1,
|
||||
VPX_RC_RDMULT = 1 << 2,
|
||||
VPX_RC_GOP_QP = VPX_RC_QP | VPX_RC_GOP,
|
||||
VPX_RC_GOP_QP_RDMULT = VPX_RC_QP | VPX_RC_GOP | VPX_RC_RDMULT
|
||||
} vpx_rc_type_t;
|
||||
|
||||
/*!\brief Abstract rate control model handler
|
||||
*
|
||||
|
@ -34,11 +54,27 @@ extern "C" {
|
|||
*/
|
||||
typedef void *vpx_rc_model_t;
|
||||
|
||||
/*!\brief A reserved value for the q index.
|
||||
* If the external rate control model returns this value,
|
||||
* the encoder will use the default q selected by libvpx's rate control
|
||||
* system.
|
||||
*/
|
||||
#define VPX_DEFAULT_Q -1
|
||||
|
||||
/*!\brief A reserved value for the rdmult.
|
||||
* If the external rate control model returns this value,
|
||||
* the encoder will use the default rdmult selected by libvpx's rate control
|
||||
* system.
|
||||
*/
|
||||
#define VPX_DEFAULT_RDMULT -1
|
||||
|
||||
/*!\brief Encode frame decision made by the external rate control model
|
||||
*
|
||||
* The encoder will receive the decision from the external rate control model
|
||||
* through get_encodeframe_decision() defined in vpx_rc_funcs_t.
|
||||
*
|
||||
* If q_index = VPX_DEFAULT_Q, the encoder will use libvpx's default q.
|
||||
*
|
||||
* If max_frame_size = 0, the encoding ignores max frame size limit.
|
||||
* If max_frame_size = -1, the encoding uses VP9's max frame size as the limit.
|
||||
* If the encoded frame size is larger than max_frame_size, the frame is
|
||||
|
@ -67,7 +103,7 @@ typedef struct vpx_rc_encodeframe_info {
|
|||
int show_index; /**< display index, starts from zero*/
|
||||
int coding_index; /**< coding index, starts from zero*/
|
||||
/*!
|
||||
* index in group of picture, starts from zero.
|
||||
* index of the current frame in this group of picture, starts from zero.
|
||||
*/
|
||||
int gop_index;
|
||||
int ref_frame_coding_indexes[3]; /**< three reference frames' coding indices*/
|
||||
|
@ -77,6 +113,14 @@ typedef struct vpx_rc_encodeframe_info {
|
|||
* 1: Valid
|
||||
*/
|
||||
int ref_frame_valid_list[3];
|
||||
/*!
|
||||
* The length of the current GOP.
|
||||
*/
|
||||
int gop_size;
|
||||
/*!
|
||||
* Whether the current GOP uses an alt ref.
|
||||
*/
|
||||
int use_alt_ref;
|
||||
} vpx_rc_encodeframe_info_t;
|
||||
|
||||
/*!\brief Frame coding result
|
||||
|
@ -258,6 +302,84 @@ typedef struct vpx_rc_config {
|
|||
int frame_rate_den; /**< denominator of frame rate */
|
||||
} vpx_rc_config_t;
|
||||
|
||||
/*!\brief Information passed to the external rate control model to
|
||||
* help make GOP decisions.
|
||||
*/
|
||||
typedef struct vpx_rc_gop_info {
|
||||
/*!
|
||||
* Minimum allowed gf interval, fixed for the whole clip.
|
||||
* Note that it will be modified to match vp9's level constraints
|
||||
* in the encoder.
|
||||
* The level constraint is defined in vp9_encoder.c:
|
||||
* const Vp9LevelSpec vp9_level_defs[VP9_LEVELS].
|
||||
*/
|
||||
int min_gf_interval;
|
||||
/*!
|
||||
* Maximum allowed gf interval, fixed for the whole clip.
|
||||
*/
|
||||
int max_gf_interval;
|
||||
/*!
|
||||
* Minimum allowed gf interval for the current GOP, determined
|
||||
* by the encoder.
|
||||
*/
|
||||
int active_min_gf_interval;
|
||||
/*!
|
||||
* Maximum allowed gf interval for the current GOP, determined
|
||||
* by the encoder.
|
||||
*/
|
||||
int active_max_gf_interval;
|
||||
/*!
|
||||
* Whether to allow the use of alt ref, determined by the encoder.
|
||||
* It is fixed for the entire encode.
|
||||
* See function "is_altref_enabled" in vp9_encoder.h.
|
||||
*/
|
||||
int allow_alt_ref;
|
||||
/*!
|
||||
* Is the current frame a key frame.
|
||||
*/
|
||||
int is_key_frame;
|
||||
/*!
|
||||
* Does the previous gop use alt ref or not.
|
||||
*/
|
||||
int last_gop_use_alt_ref;
|
||||
/*!
|
||||
* Current frame distance to the last keyframe, e.g., if Nth frame is a key,
|
||||
* then the value of the N+1 th frame is 1.
|
||||
*/
|
||||
int frames_since_key;
|
||||
/*!
|
||||
* Current frame distance to the next keyframe, e.g. if Nth frame is a key,
|
||||
* then the value of frame N - 1 is 1.
|
||||
*/
|
||||
int frames_to_key;
|
||||
/*!
|
||||
* Number of lookahead source frames.
|
||||
*/
|
||||
int lag_in_frames;
|
||||
/*!
|
||||
* Display index (temporal stamp) of this frame in the whole clip,
|
||||
* starts from zero.
|
||||
*/
|
||||
int show_index;
|
||||
/*!
|
||||
* Coding index of this frame in the whole clip, starts from zero.
|
||||
*/
|
||||
int coding_index;
|
||||
/*!
|
||||
* The index of the current gop, starts from zero, resets to zero
|
||||
* when a keyframe is set.
|
||||
*/
|
||||
int gop_global_index;
|
||||
} vpx_rc_gop_info_t;
|
||||
|
||||
/*!\brief The decision made by the external rate control model to set the
|
||||
* group of picture.
|
||||
*/
|
||||
typedef struct vpx_rc_gop_decision {
|
||||
int gop_coding_frames; /**< The number of frames of this GOP */
|
||||
int use_alt_ref; /**< Whether to use alt ref for this GOP */
|
||||
} vpx_rc_gop_decision_t;
|
||||
|
||||
/*!\brief Create an external rate control model callback prototype
|
||||
*
|
||||
* This callback is invoked by the encoder to create an external rate control
|
||||
|
@ -310,6 +432,32 @@ typedef vpx_rc_status_t (*vpx_rc_update_encodeframe_result_cb_fn_t)(
|
|||
vpx_rc_model_t rate_ctrl_model,
|
||||
const vpx_rc_encodeframe_result_t *encode_frame_result);
|
||||
|
||||
/*!\brief Get the GOP structure from the external rate control model.
|
||||
*
|
||||
* This callback is invoked by the encoder to get GOP decisions from
|
||||
* the external rate control model.
|
||||
*
|
||||
* \param[in] rate_ctrl_model rate control model
|
||||
* \param[in] gop_info information collected from the encoder
|
||||
* \param[out] gop_decision GOP decision from the model
|
||||
*/
|
||||
typedef vpx_rc_status_t (*vpx_rc_get_gop_decision_cb_fn_t)(
|
||||
vpx_rc_model_t rate_ctrl_model, const vpx_rc_gop_info_t *gop_info,
|
||||
vpx_rc_gop_decision_t *gop_decision);
|
||||
|
||||
/*!\brief Get the frame rdmult from the external rate control model.
|
||||
*
|
||||
* This callback is invoked by the encoder to get rdmult from
|
||||
* the external rate control model.
|
||||
*
|
||||
* \param[in] rate_ctrl_model rate control model
|
||||
* \param[in] frame_info information collected from the encoder
|
||||
* \param[out] rdmult frame rate-distortion multiplier from the model
|
||||
*/
|
||||
typedef vpx_rc_status_t (*vpx_rc_get_frame_rdmult_cb_fn_t)(
|
||||
vpx_rc_model_t rate_ctrl_model, const vpx_rc_encodeframe_info_t *frame_info,
|
||||
int *rdmult);
|
||||
|
||||
/*!\brief Delete the external rate control model callback prototype
|
||||
*
|
||||
* This callback is invoked by the encoder to delete the external rate control
|
||||
|
@ -327,6 +475,10 @@ typedef vpx_rc_status_t (*vpx_rc_delete_model_cb_fn_t)(
|
|||
* VP9E_SET_EXTERNAL_RATE_CONTROL.
|
||||
*/
|
||||
typedef struct vpx_rc_funcs {
|
||||
/*!
|
||||
* The rate control type of this API.
|
||||
*/
|
||||
vpx_rc_type_t rc_type;
|
||||
/*!
|
||||
* Create an external rate control model.
|
||||
*/
|
||||
|
@ -343,6 +495,14 @@ typedef struct vpx_rc_funcs {
|
|||
* Update encodeframe result to the external rate control model.
|
||||
*/
|
||||
vpx_rc_update_encodeframe_result_cb_fn_t update_encodeframe_result;
|
||||
/*!
|
||||
* Get GOP decisions from the external rate control model.
|
||||
*/
|
||||
vpx_rc_get_gop_decision_cb_fn_t get_gop_decision;
|
||||
/*!
|
||||
* Get rdmult for the frame from the external rate control model.
|
||||
*/
|
||||
vpx_rc_get_frame_rdmult_cb_fn_t get_frame_rdmult;
|
||||
/*!
|
||||
* Delete the external rate control model.
|
||||
*/
|
||||
|
|
BIN
deps/vpx/lib/libvpx.a
vendored
BIN
deps/vpx/lib/libvpx.a
vendored
Binary file not shown.
4
deps/vpx/lib/pkgconfig/vpx.pc
vendored
4
deps/vpx/lib/pkgconfig/vpx.pc
vendored
|
@ -1,4 +1,4 @@
|
|||
# pkg-config file from libvpx v1.12.0
|
||||
# pkg-config file from libvpx v1.13.0
|
||||
prefix=
|
||||
exec_prefix=${prefix}
|
||||
libdir=${exec_prefix}/lib
|
||||
|
@ -6,7 +6,7 @@ includedir=${prefix}/include
|
|||
|
||||
Name: vpx
|
||||
Description: WebM Project VPx codec implementation
|
||||
Version: 1.12.0
|
||||
Version: 1.13.0
|
||||
Requires:
|
||||
Conflicts:
|
||||
Libs: -L${libdir} -lvpx -lm
|
||||
|
|
Loading…
Reference in a new issue