mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-13 02:37:32 +09:00
Update libaom to commit ID 1e227d41f0616de9548a673a83a21ef990b62591
This commit is contained in:
parent
77c9089b7d
commit
368651059a
526 changed files with 34535 additions and 15900 deletions
105
third_party/aom/av1/encoder/encoder.h
vendored
105
third_party/aom/av1/encoder/encoder.h
vendored
|
|
@ -9,8 +9,8 @@
|
|||
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
|
||||
*/
|
||||
|
||||
#ifndef AV1_ENCODER_ENCODER_H_
|
||||
#define AV1_ENCODER_ENCODER_H_
|
||||
#ifndef AOM_AV1_ENCODER_ENCODER_H_
|
||||
#define AOM_AV1_ENCODER_ENCODER_H_
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
|
@ -142,7 +142,6 @@ typedef struct AV1EncoderConfig {
|
|||
int noise_sensitivity; // pre processing blur: recommendation 0
|
||||
int sharpness; // sharpening output: recommendation 0:
|
||||
int speed;
|
||||
int dev_sf;
|
||||
// maximum allowed bitrate for any intra frame in % of bitrate target.
|
||||
unsigned int rc_max_intra_bitrate_pct;
|
||||
// maximum allowed bitrate for any inter frame in % of bitrate target.
|
||||
|
|
@ -249,6 +248,7 @@ typedef struct AV1EncoderConfig {
|
|||
int min_gf_interval;
|
||||
int max_gf_interval;
|
||||
|
||||
int row_mt;
|
||||
int tile_columns;
|
||||
int tile_rows;
|
||||
int tile_width_count;
|
||||
|
|
@ -309,6 +309,9 @@ typedef struct AV1EncoderConfig {
|
|||
float noise_level;
|
||||
int noise_block_size;
|
||||
#endif
|
||||
|
||||
unsigned int chroma_subsampling_x;
|
||||
unsigned int chroma_subsampling_y;
|
||||
} AV1EncoderConfig;
|
||||
|
||||
static INLINE int is_lossless_requested(const AV1EncoderConfig *cfg) {
|
||||
|
|
@ -401,6 +404,43 @@ typedef struct FRAME_COUNTS {
|
|||
[SWITCHABLE_FILTERS];
|
||||
} FRAME_COUNTS;
|
||||
|
||||
#if CONFIG_COLLECT_INTER_MODE_RD_STATS
|
||||
#define INTER_MODE_RD_DATA_OVERALL_SIZE 6400
|
||||
|
||||
typedef struct {
|
||||
int ready;
|
||||
double a;
|
||||
double b;
|
||||
double dist_mean;
|
||||
double ld_mean;
|
||||
double sse_mean;
|
||||
double sse_sse_mean;
|
||||
double sse_ld_mean;
|
||||
int num;
|
||||
double dist_sum;
|
||||
double ld_sum;
|
||||
double sse_sum;
|
||||
double sse_sse_sum;
|
||||
double sse_ld_sum;
|
||||
} InterModeRdModel;
|
||||
|
||||
typedef struct {
|
||||
int idx;
|
||||
int64_t rd;
|
||||
} RdIdxPair;
|
||||
// TODO(angiebird): This is an estimated size. We still need to figure what is
|
||||
// the maximum number of modes.
|
||||
#define MAX_INTER_MODES 1024
|
||||
typedef struct inter_modes_info {
|
||||
int num;
|
||||
MB_MODE_INFO mbmi_arr[MAX_INTER_MODES];
|
||||
int mode_rate_arr[MAX_INTER_MODES];
|
||||
int64_t sse_arr[MAX_INTER_MODES];
|
||||
int64_t est_rd_arr[MAX_INTER_MODES];
|
||||
RdIdxPair rd_idx_pair_arr[MAX_INTER_MODES];
|
||||
} InterModesInfo;
|
||||
#endif
|
||||
|
||||
// TODO(jingning) All spatially adaptive variables should go to TileDataEnc.
|
||||
typedef struct TileDataEnc {
|
||||
TileInfo tile_info;
|
||||
|
|
@ -411,8 +451,18 @@ typedef struct TileDataEnc {
|
|||
CFL_CTX cfl;
|
||||
DECLARE_ALIGNED(16, FRAME_CONTEXT, tctx);
|
||||
uint8_t allow_update_cdf;
|
||||
#if CONFIG_COLLECT_INTER_MODE_RD_STATS
|
||||
InterModeRdModel inter_mode_rd_models[BLOCK_SIZES_ALL];
|
||||
InterModesInfo inter_modes_info;
|
||||
#endif
|
||||
} TileDataEnc;
|
||||
|
||||
typedef struct {
|
||||
TOKENEXTRA *start;
|
||||
TOKENEXTRA *stop;
|
||||
unsigned int count;
|
||||
} TOKENLIST;
|
||||
|
||||
typedef struct RD_COUNTS {
|
||||
int64_t comp_pred_diff[REFERENCE_MODES];
|
||||
// Stores number of 4x4 blocks using global motion per reference frame.
|
||||
|
|
@ -427,11 +477,14 @@ typedef struct ThreadData {
|
|||
FRAME_COUNTS *counts;
|
||||
PC_TREE *pc_tree;
|
||||
PC_TREE *pc_root[MAX_MIB_SIZE_LOG2 - MIN_MIB_SIZE_LOG2 + 1];
|
||||
uint32_t *hash_value_buffer[2][2];
|
||||
int32_t *wsrc_buf;
|
||||
int32_t *mask_buf;
|
||||
uint8_t *above_pred_buf;
|
||||
uint8_t *left_pred_buf;
|
||||
PALETTE_BUFFER *palette_buffer;
|
||||
CONV_BUF_TYPE *tmp_conv_dst;
|
||||
uint8_t *tmp_obmc_bufs[2];
|
||||
int intrabc_used_this_tile;
|
||||
} ThreadData;
|
||||
|
||||
|
|
@ -502,6 +555,7 @@ typedef struct AV1_COMP {
|
|||
int previous_index;
|
||||
int cur_poc; // DebugInfo
|
||||
|
||||
unsigned int row_mt;
|
||||
int scaled_ref_idx[REF_FRAMES];
|
||||
int ref_fb_idx[REF_FRAMES];
|
||||
int refresh_fb_idx; // ref frame buffer index to refresh
|
||||
|
|
@ -647,13 +701,12 @@ typedef struct AV1_COMP {
|
|||
|
||||
search_site_config ss_cfg;
|
||||
|
||||
int multi_arf_allowed;
|
||||
|
||||
TileDataEnc *tile_data;
|
||||
int allocated_tiles; // Keep track of memory allocated for tiles.
|
||||
|
||||
TOKENEXTRA *tile_tok[MAX_TILE_ROWS][MAX_TILE_COLS];
|
||||
unsigned int tok_count[MAX_TILE_ROWS][MAX_TILE_COLS];
|
||||
TOKENLIST *tplist[MAX_TILE_ROWS][MAX_TILE_COLS];
|
||||
|
||||
TileBufferEnc tile_buffers[MAX_TILE_ROWS][MAX_TILE_COLS];
|
||||
|
||||
|
|
@ -703,8 +756,13 @@ typedef struct AV1_COMP {
|
|||
#if CONFIG_DENOISE
|
||||
struct aom_denoise_and_model_t *denoise_and_model;
|
||||
#endif
|
||||
// Stores the default value of skip flag depending on chroma format
|
||||
// Set as 1 for monochrome and 3 for other color formats
|
||||
int default_interp_skip_flags;
|
||||
int preserve_arf_as_gld;
|
||||
} AV1_COMP;
|
||||
|
||||
// Must not be called more than once.
|
||||
void av1_initialize_enc(void);
|
||||
|
||||
struct AV1_COMP *av1_create_compressor(AV1EncoderConfig *oxcf,
|
||||
|
|
@ -833,6 +891,22 @@ static INLINE unsigned int allocated_tokens(TileInfo tile, int sb_size_log2,
|
|||
return get_token_alloc(tile_mb_rows, tile_mb_cols, sb_size_log2, num_planes);
|
||||
}
|
||||
|
||||
static INLINE void get_start_tok(AV1_COMP *cpi, int tile_row, int tile_col,
|
||||
int mi_row, TOKENEXTRA **tok, int sb_size_log2,
|
||||
int num_planes) {
|
||||
AV1_COMMON *const cm = &cpi->common;
|
||||
const int tile_cols = cm->tile_cols;
|
||||
TileDataEnc *this_tile = &cpi->tile_data[tile_row * tile_cols + tile_col];
|
||||
const TileInfo *const tile_info = &this_tile->tile_info;
|
||||
|
||||
const int tile_mb_cols =
|
||||
(tile_info->mi_col_end - tile_info->mi_col_start + 2) >> 2;
|
||||
const int tile_mb_row = (mi_row - tile_info->mi_row_start + 2) >> 2;
|
||||
|
||||
*tok = cpi->tile_tok[tile_row][tile_col] +
|
||||
get_token_alloc(tile_mb_row, tile_mb_cols, sb_size_log2, num_planes);
|
||||
}
|
||||
|
||||
void av1_apply_encoding_flags(AV1_COMP *cpi, aom_enc_frame_flags_t flags);
|
||||
|
||||
#define ALT_MIN_LAG 3
|
||||
|
|
@ -885,8 +959,27 @@ static INLINE int av1_frame_scaled(const AV1_COMMON *cm) {
|
|||
return !av1_superres_scaled(cm) && av1_resize_scaled(cm);
|
||||
}
|
||||
|
||||
// Don't allow a show_existing_frame to coincide with an error resilient
|
||||
// frame. An exception can be made for a forward keyframe since it has no
|
||||
// previous dependencies.
|
||||
static INLINE int encode_show_existing_frame(const AV1_COMMON *cm) {
|
||||
return cm->show_existing_frame &&
|
||||
(!cm->error_resilient_mode || cm->frame_type == KEY_FRAME);
|
||||
}
|
||||
|
||||
// Returns a Sequence Header OBU stored in an aom_fixed_buf_t, or NULL upon
|
||||
// failure. When a non-NULL aom_fixed_buf_t pointer is returned by this
|
||||
// function, the memory must be freed by the caller. Both the buf member of the
|
||||
// aom_fixed_buf_t, and the aom_fixed_buf_t pointer itself must be freed. Memory
|
||||
// returned must be freed via call to free().
|
||||
//
|
||||
// Note: The OBU returned is in Low Overhead Bitstream Format. Specifically,
|
||||
// the obu_has_size_field bit is set, and the buffer contains the obu_size
|
||||
// field.
|
||||
aom_fixed_buf_t *av1_get_global_headers(AV1_COMP *cpi);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // AV1_ENCODER_ENCODER_H_
|
||||
#endif // AOM_AV1_ENCODER_ENCODER_H_
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue