// Note: This struct is copied several times, so do not place any heavyweight objects in here.
structastc_hdr_6x6_global_config
{
// Important: The Delta ITP colorspace error metric we use internally makes several assumptions about the nature of the HDR RGB inputs supplied to the encoder.
// This encoder computes colorspace error in the ICtCp (or more accurately the delta ITP, where CT is scaled by .5 vs. ICtCp to become T) colorspace, so getting this correct is important.
// By default the encoder assumes the input is in absolute luminance (in nits or candela per square meter, cd/m²), specified as positive-only linear light RGB, using the REC 709 colorspace gamut (but NOT the sRGB transfer function, i.e. linear light).
// If the m_rec2020_bt2100_color_gamut flag is true, the input colorspace is treated as REC 2020/BT.2100 (which is wider than 709).
// For SDR/LDR->HDR upconversion, the REC 709 sRGB input should be converted to linear light (sRGB->linear) and the resulting normalized linear RGB values scaled by either 80 or 100 nits (the luminance of a typical SDR monitor).
// SDR upconversion to normalized [0,1] (i.e. non-absolute) luminances may work but is not supported because ITP errors will not be predicted correctly.
boolm_rec2020_bt2100_color_gamut=false;
// levels 0-3 normal levels, 4=exhaustive
uint32_tm_master_comp_level=0;
uint32_tm_highest_comp_level=1;
floatm_lambda=0.0f;
boolm_extra_patterns_flag=false;// def to false, works in comp levels [1,4]
boolm_brute_force_partition_matching=false;// def to false
boolm_jnd_optimization=false;// defaults to false for HDR inputs, on SDR upconverted images this can default to enabled
floatm_jnd_delta_itp_thresh=.75f;
boolm_force_one_strip=false;
boolm_gaussian1_fallback=true;// def to true, if this is disabled m_gaussian2_fallback should be disabled too
floatm_gaussian1_strength=1.45f;
boolm_gaussian2_fallback=true;// def to true, hopefully rarely kicks in
floatm_gaussian2_strength=1.83f;
// m_disable_delta_endpoint_usage may give a slight increase in RDO ASTC encoding efficiency. It's also faster.
boolm_disable_delta_endpoint_usage=false;
// Scale up Delta ITP errors for very dark pixels, assuming they will be brightly exposed > 1.0x.
// We don't know if the output will be exposed, or not. If heavily exposed, our JND calculations will not be conservative enough.