/*
 * Copyright (c) 2021, Alliance for Open Media. All rights reserved
 *
 * This source code is subject to the terms of the BSD 3-Clause Clear License
 * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear
 * License was not distributed with this source code in the LICENSE file, you
 * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/.  If the
 * Alliance for Open Media Patent License 1.0 was not distributed with this
 * source code in the PATENTS file, you can obtain it at
 * aomedia.org/license/patent-license/.
 */
#ifndef AOM_AV1_ARG_DEFS_H_
#define AOM_AV1_ARG_DEFS_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "config/aom_config.h"
#include "common/args_helper.h"
#if CONFIG_WEBM_IO
#include "common/webmenc.h"
#endif
#include "aom/aomcx.h"

enum TestDecodeFatality {
  TEST_DECODE_OFF,
  TEST_DECODE_FATAL,
  TEST_DECODE_WARN,
};

typedef struct av1_codec_arg_definitions {
  arg_def_t help;
  arg_def_t debugmode;
  arg_def_t outputfile;
  arg_def_t reconfile;
  arg_def_t use_yv12;
  arg_def_t use_i420;
  arg_def_t use_i422;
  arg_def_t use_i444;
  arg_def_t codecarg;
  arg_def_t passes;
  arg_def_t pass_arg;
  arg_def_t fpf_name;
  arg_def_t limit;
  arg_def_t skip;
  arg_def_t step;
  arg_def_t good_dl;
  arg_def_t quietarg;
  arg_def_t verbosearg;
  arg_def_t psnrarg;
  arg_def_t use_cfg;
  arg_def_t recontest;
  arg_def_t framerate;
  arg_def_t use_webm;
  arg_def_t use_ivf;
  arg_def_t use_obu;
  arg_def_t q_hist_n;
  arg_def_t rate_hist_n;
  arg_def_t disable_warnings;
  arg_def_t disable_warning_prompt;
  arg_def_t bitdeptharg;
  arg_def_t inbitdeptharg;
  arg_def_t input_chroma_subsampling_x;
  arg_def_t input_chroma_subsampling_y;
  arg_def_t usage;
  arg_def_t threads;
  arg_def_t profile;
  arg_def_t width;
  arg_def_t height;
  arg_def_t forced_max_frame_width;
  arg_def_t forced_max_frame_height;
#if CONFIG_WEBM_IO
  arg_def_t stereo_mode;
#endif
  arg_def_t timebase;
  arg_def_t global_error_resilient;
  arg_def_t lag_in_frames;
  arg_def_t large_scale_tile;
  arg_def_t monochrome;
  arg_def_t full_still_picture_hdr;
  arg_def_t dropframe_thresh;
  arg_def_t resize_mode;
  arg_def_t resize_denominator;
  arg_def_t resize_kf_denominator;
  arg_def_t superres_mode;
  arg_def_t superres_denominator;
  arg_def_t superres_kf_denominator;
  arg_def_t superres_qthresh;
  arg_def_t superres_kf_qthresh;
  arg_def_t end_usage;
  arg_def_t target_bitrate;
  arg_def_t min_q_level;
  arg_def_t max_q_level;
  arg_def_t min_qp_level;
  arg_def_t max_qp_level;
  arg_def_t undershoot_pct;
  arg_def_t overshoot_pct;
  arg_def_t buf_sz;
  arg_def_t buf_initial_sz;
  arg_def_t buf_optimal_sz;
  arg_def_t minsection_pct;
  arg_def_t maxsection_pct;
  arg_def_t fwd_kf_enabled;
  arg_def_t kf_min_dist;
  arg_def_t kf_max_dist;
  arg_def_t kf_disabled;
  arg_def_t sframe_dist;
  arg_def_t sframe_mode;
  arg_def_t save_as_annexb;
  arg_def_t noise_sens;
  arg_def_t sharpness;
  arg_def_t static_thresh;
  arg_def_t auto_altref;
  arg_def_t arnr_maxframes;
  arg_def_t arnr_strength;
  arg_def_t tune_metric;
  arg_def_t cq_level;
  arg_def_t qp_level;
  arg_def_t max_intra_rate_pct;
#if CONFIG_AV1_ENCODER
  arg_def_t cpu_used_av1;
  arg_def_t rowmtarg;
  arg_def_t tile_cols;
  arg_def_t tile_rows;
  arg_def_t enable_tpl_model;
  arg_def_t enable_keyframe_filtering;
  arg_def_t tile_width;
  arg_def_t tile_height;
  arg_def_t lossless;
  arg_def_t enable_deblocking;
  arg_def_t enable_cdef;
  arg_def_t enable_restoration;
  arg_def_t enable_wiener;
  arg_def_t enable_sgrproj;
#if CONFIG_PC_WIENER
  arg_def_t enable_pc_wiener;
#endif  // CONFIG_PC_WIENER
#if CONFIG_WIENER_NONSEP
  arg_def_t enable_wiener_nonsep;
#endif  // CONFIG_WIENER_NONSEP
#if CONFIG_CCSO
  arg_def_t enable_ccso;
#endif
#if CONFIG_PEF
  arg_def_t enable_pef;
#endif  // CONFIG_PEF
  arg_def_t disable_ml_partition_speed_features;
#if CONFIG_EXT_RECUR_PARTITIONS
  arg_def_t erp_pruning_level;
  arg_def_t use_ml_erp_pruning;
  arg_def_t enable_ext_partitions;
#endif  // CONFIG_EXT_RECUR_PARTITIONS
  arg_def_t enable_rect_partitions;
  arg_def_t enable_ab_partitions;
  arg_def_t enable_1to4_partitions;
  arg_def_t disable_ml_transform_speed_features;
  arg_def_t enable_sdp;
  arg_def_t enable_mrls;
#if CONFIG_TIP
  arg_def_t enable_tip;
#endif  // CONFIG_TIP
#if CONFIG_BAWP
  arg_def_t enable_bawp;
#endif  // CONFIG_BAWP
#if CONFIG_CWP
  arg_def_t enable_cwp;
#endif  // CONFIG_CWP
#if CONFIG_D071_IMP_MSK_BLD
  arg_def_t enable_imp_msk_bld;
#endif  // CONFIG_D071_IMP_MSK_BLD
  arg_def_t enable_fsc;
#if CONFIG_ORIP
  arg_def_t enable_orip;
#endif
#if CONFIG_IDIF
  arg_def_t enable_idif;
#endif  // CONFIG_IDIF
  arg_def_t enable_ist;
#if CONFIG_CROSS_CHROMA_TX
  arg_def_t enable_cctx;
#endif  // CONFIG_CROSS_CHROMA_TX
  arg_def_t enable_ibp;
#if CONFIG_ADAPTIVE_MVD
  arg_def_t enable_adaptive_mvd;
#endif  // CONFIG_ADAPTIVE_MVD
#if CONFIG_FLEX_MVRES
  arg_def_t enable_flex_mvres;
#endif  // CONFIG_FLEX_MVRES
#if CONFIG_ADAPTIVE_DS_FILTER
  arg_def_t enable_cfl_ds_filter;
#endif  // CONFIG_ADAPTIVE_DS_FILTER
#if CONFIG_JOINT_MVD
  arg_def_t enable_joint_mvd;
#endif  // CONFIG_JOINT_MVD
#if CONFIG_REFINEMV
  arg_def_t enable_refinemv;
#endif  // CONFIG_REFINEMV
  arg_def_t min_partition_size;
  arg_def_t max_partition_size;
  arg_def_t enable_chroma_deltaq;
  arg_def_t enable_intra_edge_filter;
  arg_def_t enable_order_hint;
  arg_def_t enable_tx64;
  arg_def_t enable_flip_idtx;
  arg_def_t enable_masked_comp;
  arg_def_t enable_onesided_comp;
  arg_def_t enable_interintra_comp;
  arg_def_t enable_smooth_interintra;
  arg_def_t enable_diff_wtd_comp;
  arg_def_t enable_interinter_wedge;
  arg_def_t enable_interintra_wedge;
  arg_def_t enable_global_motion;
  arg_def_t enable_warped_motion;
#if CONFIG_EXTENDED_WARP_PREDICTION
  arg_def_t enable_warped_causal;
  arg_def_t enable_warp_delta;
  arg_def_t enable_warp_extend;
#endif  // CONFIG_EXTENDED_WARP_PREDICTION
  arg_def_t enable_filter_intra;
  arg_def_t enable_smooth_intra;
  arg_def_t enable_paeth_intra;
  arg_def_t enable_cfl_intra;
  arg_def_t force_video_mode;
  arg_def_t enable_obmc;
  arg_def_t enable_overlay;
  arg_def_t enable_palette;
  arg_def_t enable_intrabc;
#if CONFIG_IBC_SR_EXT
  arg_def_t enable_intrabc_ext;
#endif  // CONFIG_IBC_SR_EXT
  arg_def_t enable_angle_delta;
#if CONFIG_OPTFLOW_REFINEMENT
  arg_def_t enable_opfl_refine;
#endif  // CONFIG_OPTFLOW_REFINEMENT
  arg_def_t enable_trellis_quant;
  arg_def_t enable_qm;
  arg_def_t qm_min;
  arg_def_t qm_max;
  arg_def_t reduced_tx_type_set;
  arg_def_t use_intra_dct_only;
  arg_def_t use_inter_dct_only;
  arg_def_t use_intra_default_tx_only;
  arg_def_t quant_b_adapt;
  arg_def_t coeff_cost_upd_freq;
  arg_def_t mode_cost_upd_freq;
  arg_def_t mv_cost_upd_freq;
  arg_def_t num_tg;
  arg_def_t mtu_size;
  arg_def_t timing_info;
#if CONFIG_TUNE_VMAF
  arg_def_t vmaf_model_path;
#endif
  arg_def_t film_grain_test;
  arg_def_t film_grain_table;
#if CONFIG_DENOISE
  arg_def_t denoise_noise_level;
  arg_def_t denoise_block_size;
#endif
  arg_def_t enable_ref_frame_mvs;
  arg_def_t frame_parallel_decoding;
  arg_def_t error_resilient_mode;
  arg_def_t aq_mode;
  arg_def_t deltaq_mode;
  arg_def_t deltalf_mode;
  arg_def_t frame_periodic_boost;
  arg_def_t gf_cbr_boost_pct;
  arg_def_t max_inter_rate_pct;
  arg_def_t min_gf_interval;
  arg_def_t max_gf_interval;
  arg_def_t gf_min_pyr_height;
  arg_def_t gf_max_pyr_height;
  arg_def_t max_reference_frames;
  arg_def_t reduced_reference_set;
  arg_def_t explicit_ref_frame_map;
#if CONFIG_OUTPUT_FRAME_BASED_ON_ORDER_HINT
  arg_def_t enable_frame_output_order;
#endif  // CONFIG_OUTPUT_FRAME_BASED_ON_ORDER_HINT
  arg_def_t target_seq_level_idx;
  arg_def_t set_min_cr;
  arg_def_t input_color_primaries;
  arg_def_t input_transfer_characteristics;
  arg_def_t input_matrix_coefficients;
  arg_def_t input_chroma_sample_position;
  arg_def_t tune_content;
  arg_def_t cdf_update_mode;
  arg_def_t superblock_size;
  arg_def_t set_tier_mask;
  arg_def_t use_fixed_qp_offsets;
  arg_def_t fixed_qp_offsets;
  arg_def_t vbr_corpus_complexity_lap;
  arg_def_t subgop_config_str;
  arg_def_t subgop_config_path;
  arg_def_t max_drl_refmvs;
#if CONFIG_REF_MV_BANK
  arg_def_t enable_refmvbank;
#endif  // CONFIG_REF_MV_BANK
#if CONFIG_PAR_HIDING
  arg_def_t enable_parity_hiding;
#endif  // CONFIG_PAR_HIDING
#endif  // CONFIG_AV1_ENCODER
  arg_def_t frame_hash_metadata;
  arg_def_t frame_hash_per_plane;
} av1_codec_arg_definitions_t;

extern const av1_codec_arg_definitions_t g_av1_codec_arg_defs;

#ifdef __cplusplus
}
#endif
#endif  // AOM_AV1_ARG_DEFS_H_
