#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "config/aom_config.h"
#include "config/aom_version.h"
#include "aom/aomcx.h"
#include "aom/aom_encoder.h"
#include "aom/aom_external_partition.h"
#include "aom/aom_image.h"
#include "aom/internal/aom_codec_internal.h"
#include "aom_dsp/flow_estimation/flow_estimation.h"
#include "aom_mem/aom_mem.h"
#include "aom_scale/yv12config.h"
#include "aom_util/aom_pthread.h"
#include "av1/av1_cx_iface.h"
#include "av1/av1_iface_common.h"
#include "av1/common/av1_common_int.h"
#include "av1/common/enums.h"
#include "av1/common/scale.h"
#include "av1/encoder/bitstream.h"
#include "av1/encoder/enc_enums.h"
#include "av1/encoder/encoder.h"
#include "av1/encoder/encoder_alloc.h"
#include "av1/encoder/encoder_utils.h"
#include "av1/encoder/ethread.h"
#include "av1/encoder/external_partition.h"
#include "av1/encoder/firstpass.h"
#include "av1/encoder/lookahead.h"
#include "av1/encoder/rc_utils.h"
#include "av1/arg_defs.h"
#include "common/args_helper.h"
struct av1_extracfg { … };
static const struct av1_extracfg default_extra_cfg[] = …;
struct aom_codec_alg_priv { … };
static inline int gcd(int64_t a, int b) { … }
static void reduce_ratio(aom_rational64_t *ratio) { … }
static aom_codec_err_t update_error_state(
aom_codec_alg_priv_t *ctx, const struct aom_internal_error_info *error) { … }
static aom_codec_err_t allocate_and_set_string(const char *src,
const char *default_src,
const char **dst,
char *err_detail) { … }
#undef ERROR
#define ERROR(str) …
#define RANGE_CHECK(p, memb, lo, hi) …
#define RANGE_CHECK_HI(p, memb, hi) …
#define RANGE_CHECK_BOOL(p, memb) …
static aom_codec_err_t validate_config(aom_codec_alg_priv_t *ctx,
const aom_codec_enc_cfg_t *cfg,
const struct av1_extracfg *extra_cfg) { … }
static aom_codec_err_t validate_img(aom_codec_alg_priv_t *ctx,
const aom_image_t *img) { … }
static int get_image_bps(const aom_image_t *img) { … }
static void disable_superres(SuperResCfg *const superres_cfg) { … }
static void set_auto_tiles(TileConfig *const tile_cfg, unsigned int width,
unsigned int height, unsigned int threads) { … }
static void update_default_encoder_config(const cfg_options_t *cfg,
struct av1_extracfg *extra_cfg) { … }
static void set_encoder_config(AV1EncoderConfig *oxcf,
const aom_codec_enc_cfg_t *cfg,
struct av1_extracfg *extra_cfg) { … }
AV1EncoderConfig av1_get_encoder_config(const aom_codec_enc_cfg_t *cfg) { … }
static aom_codec_err_t encoder_set_config(aom_codec_alg_priv_t *ctx,
const aom_codec_enc_cfg_t *cfg) { … }
static aom_fixed_buf_t *encoder_get_global_headers(aom_codec_alg_priv_t *ctx) { … }
static aom_codec_err_t ctrl_get_quantizer(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_quantizer64(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_loopfilter_level(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_baseline_gf_interval(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t update_encoder_cfg(aom_codec_alg_priv_t *ctx) { … }
static aom_codec_err_t update_extra_cfg(aom_codec_alg_priv_t *ctx,
const struct av1_extracfg *extra_cfg) { … }
static aom_codec_err_t ctrl_set_cpuused(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_auto_alt_ref(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_auto_bwd_ref(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_noise_sensitivity(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_sharpness(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_static_thresh(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_row_mt(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_tile_columns(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_tile_rows(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_tpl_model(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_keyframe_filtering(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_arnr_max_frames(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_arnr_strength(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_tuning(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_cq_level(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_rc_max_intra_bitrate_pct(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_rc_max_inter_bitrate_pct(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_rc_gf_cbr_boost_pct(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_lossless(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_cdef(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_restoration(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_force_video_mode(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_obmc(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_disable_trellis_quant(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_qm(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_qm_y(aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_qm_u(aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_qm_v(aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_qm_min(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_qm_max(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_num_tg(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_mtu(aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_timing_info_type(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_dual_filter(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_chroma_deltaq(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_rect_partitions(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_enable_ab_partitions(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_1to4_partitions(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_min_partition_size(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_max_partition_size(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_intra_edge_filter(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_enable_order_hint(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_tx64(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_flip_idtx(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_rect_tx(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_dist_wtd_comp(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_max_reference_frames(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_reduced_reference_set(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_enable_ref_frame_mvs(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_allow_ref_frame_mvs(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_masked_comp(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_onesided_comp(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_interintra_comp(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_enable_smooth_interintra(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_enable_diff_wtd_comp(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_interinter_wedge(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_enable_interintra_wedge(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_enable_global_motion(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_warped_motion(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_allow_warped_motion(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_filter_intra(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_smooth_intra(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_directional_intra(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_enable_diagonal_intra(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_paeth_intra(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_cfl_intra(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_superres(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_overlay(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_palette(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_intrabc(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_angle_delta(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_error_resilient_mode(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_s_frame_mode(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_frame_parallel_decoding_mode(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_single_tile_decoding(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_aq_mode(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_reduced_tx_type_set(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_intra_dct_only(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_inter_dct_only(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_intra_default_tx_only(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_tx_size_search(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_quant_b_adapt(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_vbr_corpus_complexity_lap(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_coeff_cost_upd_freq(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_mode_cost_upd_freq(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_mv_cost_upd_freq(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_dv_cost_upd_freq(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_vmaf_model_path(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_partition_info_path(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_enable_rate_guide_deltaq(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_rate_distribution_info(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_film_grain_test_vector(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_film_grain_table(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_denoise_noise_level(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_denoise_block_size(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_enable_dnl_denoising(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_deltaq_mode(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_deltaq_strength(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_deltalf_mode(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_min_gf_interval(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_max_gf_interval(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_gf_min_pyr_height(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_gf_max_pyr_height(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_frame_periodic_boost(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_enable_motion_vector_unit_test(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_enable_fpmt_unit_test(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_enable_ext_tile_debug(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_target_seq_level_idx(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_tier_mask(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_min_cr(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_enable_sb_multipass_unit_test(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_enable_sb_qp_sweep(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_external_partition(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_loopfilter_control(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_skip_postproc_filtering(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_rtc_external_rc(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_quantizer_one_pass(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_bitrate_one_pass_cbr(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_max_consec_frame_drop_cbr(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_max_consec_frame_drop_ms_cbr(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_svc_frame_drop_mode(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_auto_tiles(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_postencode_drop_rtc(aom_codec_alg_priv_t *ctx,
va_list args) { … }
#if !CONFIG_REALTIME_ONLY
static aom_codec_err_t create_stats_buffer(FIRSTPASS_STATS **frame_stats_buffer,
STATS_BUFFER_CTX *stats_buf_context,
int num_lap_buffers) {
aom_codec_err_t res = AOM_CODEC_OK;
int size = get_stats_buf_size(num_lap_buffers, MAX_LAG_BUFFERS);
*frame_stats_buffer =
(FIRSTPASS_STATS *)aom_calloc(size, sizeof(FIRSTPASS_STATS));
if (*frame_stats_buffer == NULL) return AOM_CODEC_MEM_ERROR;
stats_buf_context->stats_in_start = *frame_stats_buffer;
stats_buf_context->stats_in_end = stats_buf_context->stats_in_start;
stats_buf_context->stats_in_buf_end =
stats_buf_context->stats_in_start + size;
stats_buf_context->total_left_stats = aom_calloc(1, sizeof(FIRSTPASS_STATS));
if (stats_buf_context->total_left_stats == NULL) return AOM_CODEC_MEM_ERROR;
av1_twopass_zero_stats(stats_buf_context->total_left_stats);
stats_buf_context->total_stats = aom_calloc(1, sizeof(FIRSTPASS_STATS));
if (stats_buf_context->total_stats == NULL) return AOM_CODEC_MEM_ERROR;
av1_twopass_zero_stats(stats_buf_context->total_stats);
return res;
}
#endif
aom_codec_err_t av1_create_context_and_bufferpool(AV1_PRIMARY *ppi,
AV1_COMP **p_cpi,
BufferPool **p_buffer_pool,
const AV1EncoderConfig *oxcf,
COMPRESSOR_STAGE stage,
int lap_lag_in_frames) { … }
static aom_codec_err_t ctrl_set_fp_mt(aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_auto_intra_tools_off(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t encoder_init(aom_codec_ctx_t *ctx) { … }
void av1_destroy_context_and_bufferpool(AV1_COMP *cpi,
BufferPool **p_buffer_pool) { … }
static void destroy_stats_buffer(STATS_BUFFER_CTX *stats_buf_context,
FIRSTPASS_STATS *frame_stats_buffer) { … }
static void check_and_free_string(const char *default_str, const char **ptr) { … }
static void destroy_extra_config(struct av1_extracfg *extra_cfg) { … }
static aom_codec_err_t encoder_destroy(aom_codec_alg_priv_t *ctx) { … }
static aom_codec_frame_flags_t get_frame_pkt_flags(const AV1_COMP *cpi,
unsigned int lib_flags) { … }
static inline int get_src_border_in_pixels(AV1_COMP *cpi, BLOCK_SIZE sb_size) { … }
static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx,
const aom_image_t *img,
aom_codec_pts_t pts,
unsigned long duration,
aom_enc_frame_flags_t enc_flags) { … }
static const aom_codec_cx_pkt_t *encoder_get_cxdata(aom_codec_alg_priv_t *ctx,
aom_codec_iter_t *iter) { … }
static aom_codec_err_t ctrl_set_reference(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_copy_reference(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_reference(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_new_frame_image(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_copy_new_frame_image(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_image_t *encoder_get_preview(aom_codec_alg_priv_t *ctx) { … }
static aom_codec_err_t ctrl_use_reference(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_roi_map(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_active_map(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_active_map(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_scale_mode(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_spatial_layer_id(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_number_spatial_layers(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_layer_id(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_svc_params(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_svc_ref_frame_config(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_svc_ref_frame_comp_pred(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_tune_content(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_cdf_update_mode(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_color_primaries(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_transfer_characteristics(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_matrix_coefficients(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_chroma_sample_position(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_err_t ctrl_set_color_range(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_render_size(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_superblock_size(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_chroma_subsampling_x(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_set_chroma_subsampling_y(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t encoder_set_option(aom_codec_alg_priv_t *ctx,
const char *name, const char *value) { … }
static aom_codec_err_t ctrl_get_seq_level_idx(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_target_seq_level_idx(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_num_operating_points(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_luma_cdef_strength(aom_codec_alg_priv_t *ctx,
va_list args) { … }
static aom_codec_err_t ctrl_get_high_motion_content_screen_rtc(
aom_codec_alg_priv_t *ctx, va_list args) { … }
static aom_codec_ctrl_fn_map_t encoder_ctrl_maps[] = …;
static const aom_codec_enc_cfg_t encoder_usage_cfg[] = …;
#ifndef VERSION_STRING
#define VERSION_STRING
#endif
aom_codec_iface_t aom_codec_av1_cx_algo = …;
aom_codec_iface_t *aom_codec_av1_cx(void) { … }