1 /* 2 * Copyright (c) 2021, Alliance for Open Media. All rights reserved. 3 * 4 * This source code is subject to the terms of the BSD 2 Clause License and 5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License 6 * was not distributed with this source code in the LICENSE file, you can 7 * obtain it at www.aomedia.org/license/software. If the Alliance for Open 8 * Media Patent License 1.0 was not distributed with this source code in the 9 * PATENTS file, you can obtain it at www.aomedia.org/license/patent. 10 */ 11 #ifndef AOM_AV1_ARG_DEFS_H_ 12 #define AOM_AV1_ARG_DEFS_H_ 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 #include "config/aom_config.h" 19 #include "common/args_helper.h" 20 #if CONFIG_WEBM_IO 21 #include "common/webmenc.h" 22 #endif 23 #include "aom/aomcx.h" 24 25 enum TestDecodeFatality { 26 TEST_DECODE_OFF, 27 TEST_DECODE_FATAL, 28 TEST_DECODE_WARN, 29 }; 30 31 typedef struct av1_codec_arg_definitions { 32 arg_def_t help; 33 arg_def_t debugmode; 34 arg_def_t outputfile; 35 arg_def_t use_nv12; 36 arg_def_t use_yv12; 37 arg_def_t use_i420; 38 arg_def_t use_i422; 39 arg_def_t use_i444; 40 arg_def_t codecarg; 41 arg_def_t passes; 42 arg_def_t pass_arg; 43 arg_def_t fpf_name; 44 arg_def_t limit; 45 arg_def_t skip; 46 arg_def_t good_dl; 47 arg_def_t rt_dl; 48 arg_def_t ai_dl; 49 arg_def_t quietarg; 50 arg_def_t verbosearg; 51 arg_def_t psnrarg; 52 arg_def_t use_cfg; 53 arg_def_t recontest; 54 arg_def_t framerate; 55 arg_def_t use_webm; 56 arg_def_t use_ivf; 57 arg_def_t use_obu; 58 arg_def_t q_hist_n; 59 arg_def_t rate_hist_n; 60 arg_def_t disable_warnings; 61 arg_def_t disable_warning_prompt; 62 arg_def_t bitdeptharg; 63 arg_def_t inbitdeptharg; 64 arg_def_t input_chroma_subsampling_x; 65 arg_def_t input_chroma_subsampling_y; 66 arg_def_t usage; 67 arg_def_t threads; 68 arg_def_t profile; 69 arg_def_t width; 70 arg_def_t height; 71 arg_def_t forced_max_frame_width; 72 arg_def_t forced_max_frame_height; 73 #if CONFIG_WEBM_IO 74 arg_def_t stereo_mode; 75 #endif 76 arg_def_t timebase; 77 arg_def_t global_error_resilient; 78 arg_def_t lag_in_frames; 79 arg_def_t large_scale_tile; 80 arg_def_t monochrome; 81 arg_def_t full_still_picture_hdr; 82 arg_def_t use_16bit_internal; 83 arg_def_t dropframe_thresh; 84 arg_def_t resize_mode; 85 arg_def_t resize_denominator; 86 arg_def_t resize_kf_denominator; 87 arg_def_t superres_mode; 88 arg_def_t superres_denominator; 89 arg_def_t superres_kf_denominator; 90 arg_def_t superres_qthresh; 91 arg_def_t superres_kf_qthresh; 92 arg_def_t end_usage; 93 arg_def_t target_bitrate; 94 arg_def_t min_quantizer; 95 arg_def_t max_quantizer; 96 arg_def_t undershoot_pct; 97 arg_def_t overshoot_pct; 98 arg_def_t buf_sz; 99 arg_def_t buf_initial_sz; 100 arg_def_t buf_optimal_sz; 101 arg_def_t bias_pct; 102 arg_def_t minsection_pct; 103 arg_def_t maxsection_pct; 104 arg_def_t fwd_kf_enabled; 105 arg_def_t kf_min_dist; 106 arg_def_t kf_max_dist; 107 arg_def_t kf_disabled; 108 arg_def_t sframe_dist; 109 arg_def_t sframe_mode; 110 arg_def_t save_as_annexb; 111 arg_def_t noise_sens; 112 arg_def_t sharpness; 113 arg_def_t static_thresh; 114 arg_def_t auto_altref; 115 arg_def_t arnr_maxframes; 116 arg_def_t arnr_strength; 117 arg_def_t tune_metric; 118 arg_def_t dist_metric; 119 arg_def_t cq_level; 120 arg_def_t max_intra_rate_pct; 121 #if CONFIG_AV1_ENCODER 122 arg_def_t cpu_used_av1; 123 arg_def_t rowmtarg; 124 arg_def_t fpmtarg; 125 arg_def_t tile_cols; 126 arg_def_t tile_rows; 127 arg_def_t auto_tiles; 128 arg_def_t enable_tpl_model; 129 arg_def_t enable_keyframe_filtering; 130 arg_def_t tile_width; 131 arg_def_t tile_height; 132 arg_def_t lossless; 133 arg_def_t enable_cdef; 134 arg_def_t enable_restoration; 135 arg_def_t enable_rect_partitions; 136 arg_def_t enable_ab_partitions; 137 arg_def_t enable_1to4_partitions; 138 arg_def_t min_partition_size; 139 arg_def_t max_partition_size; 140 arg_def_t enable_dual_filter; 141 arg_def_t enable_chroma_deltaq; 142 arg_def_t enable_intra_edge_filter; 143 arg_def_t enable_order_hint; 144 arg_def_t enable_tx64; 145 arg_def_t enable_flip_idtx; 146 arg_def_t enable_rect_tx; 147 arg_def_t enable_dist_wtd_comp; 148 arg_def_t enable_masked_comp; 149 arg_def_t enable_onesided_comp; 150 arg_def_t enable_interintra_comp; 151 arg_def_t enable_smooth_interintra; 152 arg_def_t enable_diff_wtd_comp; 153 arg_def_t enable_interinter_wedge; 154 arg_def_t enable_interintra_wedge; 155 arg_def_t enable_global_motion; 156 arg_def_t enable_warped_motion; 157 arg_def_t enable_filter_intra; 158 arg_def_t enable_smooth_intra; 159 arg_def_t enable_paeth_intra; 160 arg_def_t enable_cfl_intra; 161 arg_def_t enable_directional_intra; 162 arg_def_t enable_diagonal_intra; 163 arg_def_t force_video_mode; 164 arg_def_t enable_obmc; 165 arg_def_t enable_overlay; 166 arg_def_t enable_palette; 167 arg_def_t enable_intrabc; 168 arg_def_t enable_angle_delta; 169 arg_def_t disable_trellis_quant; 170 arg_def_t enable_qm; 171 arg_def_t qm_min; 172 arg_def_t qm_max; 173 arg_def_t reduced_tx_type_set; 174 arg_def_t use_intra_dct_only; 175 arg_def_t use_inter_dct_only; 176 arg_def_t use_intra_default_tx_only; 177 arg_def_t quant_b_adapt; 178 arg_def_t coeff_cost_upd_freq; 179 arg_def_t mode_cost_upd_freq; 180 arg_def_t mv_cost_upd_freq; 181 arg_def_t dv_cost_upd_freq; 182 arg_def_t num_tg; 183 arg_def_t mtu_size; 184 arg_def_t timing_info; 185 #if CONFIG_TUNE_VMAF 186 arg_def_t vmaf_model_path; 187 #endif 188 arg_def_t partition_info_path; 189 arg_def_t enable_rate_guide_deltaq; 190 arg_def_t rate_distribution_info; 191 arg_def_t film_grain_test; 192 arg_def_t film_grain_table; 193 #if CONFIG_DENOISE 194 arg_def_t denoise_noise_level; 195 arg_def_t denoise_block_size; 196 arg_def_t enable_dnl_denoising; 197 #endif 198 arg_def_t enable_ref_frame_mvs; 199 arg_def_t frame_parallel_decoding; 200 arg_def_t error_resilient_mode; 201 arg_def_t aq_mode; 202 arg_def_t deltaq_mode; 203 arg_def_t deltaq_strength; 204 arg_def_t deltalf_mode; 205 arg_def_t frame_periodic_boost; 206 arg_def_t gf_cbr_boost_pct; 207 arg_def_t max_inter_rate_pct; 208 arg_def_t min_gf_interval; 209 arg_def_t max_gf_interval; 210 arg_def_t gf_min_pyr_height; 211 arg_def_t gf_max_pyr_height; 212 arg_def_t max_reference_frames; 213 arg_def_t reduced_reference_set; 214 arg_def_t target_seq_level_idx; 215 arg_def_t set_min_cr; 216 arg_def_t input_color_primaries; 217 arg_def_t input_transfer_characteristics; 218 arg_def_t input_matrix_coefficients; 219 arg_def_t input_chroma_sample_position; 220 arg_def_t tune_content; 221 arg_def_t cdf_update_mode; 222 arg_def_t superblock_size; 223 arg_def_t set_tier_mask; 224 arg_def_t use_fixed_qp_offsets; 225 arg_def_t fixed_qp_offsets; 226 arg_def_t vbr_corpus_complexity_lap; 227 arg_def_t fwd_kf_dist; 228 arg_def_t enable_tx_size_search; 229 arg_def_t loopfilter_control; 230 arg_def_t two_pass_input; 231 arg_def_t two_pass_output; 232 arg_def_t two_pass_width; 233 arg_def_t two_pass_height; 234 arg_def_t second_pass_log; 235 arg_def_t auto_intra_tools_off; 236 arg_def_t strict_level_conformance; 237 arg_def_t kf_max_pyr_height; 238 arg_def_t sb_qp_sweep; 239 #endif // CONFIG_AV1_ENCODER 240 } av1_codec_arg_definitions_t; 241 242 extern const av1_codec_arg_definitions_t g_av1_codec_arg_defs; 243 244 #ifdef __cplusplus 245 } 246 #endif 247 #endif // AOM_AV1_ARG_DEFS_H_ 248