in libheif/plugins/encoder_aom.cc [205:367]
static void aom_init_parameters()
{
struct heif_encoder_parameter* p = aom_encoder_params;
const struct heif_encoder_parameter** d = aom_encoder_parameter_ptrs;
int i = 0;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_realtime;
p->type = heif_encoder_parameter_type_boolean;
p->boolean.default_value = false;
p->has_default = true;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_speed;
p->type = heif_encoder_parameter_type_integer;
p->integer.default_value = 6;
p->has_default = true;
p->integer.have_minimum_maximum = true;
p->integer.minimum = 0;
if (aom_codec_version_major() >= 3) {
p->integer.maximum = 9;
}
else {
p->integer.maximum = 8;
}
p->integer.valid_values = NULL;
p->integer.num_valid_values = 0;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_threads;
p->type = heif_encoder_parameter_type_integer;
p->has_default = true;
p->integer.have_minimum_maximum = true;
p->integer.minimum = 1;
p->integer.maximum = 64;
int threads = static_cast<int>(std::thread::hardware_concurrency());
if (threads == 0) {
// Could not autodetect, use previous default value.
threads = 4;
}
threads = std::min(threads, p->integer.maximum);
p->integer.default_value = threads;
p->integer.valid_values = NULL;
p->integer.num_valid_values = 0;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = heif_encoder_parameter_name_quality;
p->type = heif_encoder_parameter_type_integer;
p->integer.default_value = 50;
p->has_default = true;
p->integer.have_minimum_maximum = true;
p->integer.minimum = 0;
p->integer.maximum = 100;
p->integer.valid_values = NULL;
p->integer.num_valid_values = 0;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = heif_encoder_parameter_name_lossless;
p->type = heif_encoder_parameter_type_boolean;
p->boolean.default_value = false;
p->has_default = true;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_chroma;
p->type = heif_encoder_parameter_type_string;
p->string.default_value = "420";
p->has_default = true;
p->string.valid_values = kParam_chroma_valid_values;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_tune;
p->type = heif_encoder_parameter_type_string;
p->string.default_value = "ssim";
p->has_default = true;
p->string.valid_values = kParam_tune_valid_values;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_min_q;
p->type = heif_encoder_parameter_type_integer;
p->integer.default_value = 0;
p->has_default = true;
p->integer.have_minimum_maximum = true;
p->integer.minimum = 0;
p->integer.maximum = 63;
p->integer.valid_values = NULL;
p->integer.num_valid_values = 0;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_max_q;
p->type = heif_encoder_parameter_type_integer;
p->integer.default_value = 63;
p->has_default = true;
p->integer.have_minimum_maximum = true;
p->integer.minimum = 0;
p->integer.maximum = 63;
p->integer.valid_values = NULL;
p->integer.num_valid_values = 0;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_alpha_quality;
p->type = heif_encoder_parameter_type_integer;
p->has_default = false;
p->integer.have_minimum_maximum = true;
p->integer.minimum = 0;
p->integer.maximum = 100;
p->integer.valid_values = NULL;
p->integer.num_valid_values = 0;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_alpha_min_q;
p->type = heif_encoder_parameter_type_integer;
p->has_default = false;
p->integer.have_minimum_maximum = true;
p->integer.minimum = 0;
p->integer.maximum = 63;
p->integer.valid_values = NULL;
p->integer.num_valid_values = 0;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_alpha_max_q;
p->type = heif_encoder_parameter_type_integer;
p->has_default = false;
p->integer.have_minimum_maximum = true;
p->integer.minimum = 0;
p->integer.maximum = 63;
p->integer.valid_values = NULL;
p->integer.num_valid_values = 0;
d[i++] = p++;
assert(i < MAX_NPARAMETERS);
p->version = 2;
p->name = kParam_lossless_alpha;
p->type = heif_encoder_parameter_type_boolean;
p->boolean.default_value = false;
p->has_default = true;
d[i++] = p++;
assert(i < MAX_NPARAMETERS + 1);
d[i++] = nullptr;
}