// The QUANTS structure is used only for internal quantizer setup in // av1_quantize.c. // All of its fields use the same coefficient shift/scaling at TX. typedefstruct { // 0: dc 1: ac 2-8: ac repeated to SIMD width
DECLARE_ALIGNED(16, int16_t, y_quant[QINDEX_RANGE][8]);
DECLARE_ALIGNED(16, int16_t, y_quant_shift[QINDEX_RANGE][8]);
DECLARE_ALIGNED(16, int16_t, y_zbin[QINDEX_RANGE][8]);
DECLARE_ALIGNED(16, int16_t, y_round[QINDEX_RANGE][8]);
// TODO(jingning): in progress of re-working the quantization. will decide // if we want to deprecate the current use of y_quant.
DECLARE_ALIGNED(16, int16_t, y_quant_fp[QINDEX_RANGE][8]);
DECLARE_ALIGNED(16, int16_t, u_quant_fp[QINDEX_RANGE][8]);
DECLARE_ALIGNED(16, int16_t, v_quant_fp[QINDEX_RANGE][8]);
DECLARE_ALIGNED(16, int16_t, y_round_fp[QINDEX_RANGE][8]);
DECLARE_ALIGNED(16, int16_t, u_round_fp[QINDEX_RANGE][8]);
DECLARE_ALIGNED(16, int16_t, v_round_fp[QINDEX_RANGE][8]);
// The Dequants structure is used only for internal quantizer setup in // av1_quantize.c. // Fields are suffixed according to whether or not they're expressed in // the same coefficient shift/precision as TX or a fixed Q3 format. typedefstruct {
DECLARE_ALIGNED(16, int16_t,
y_dequant_QTX[QINDEX_RANGE][8]); // 8: SIMD width
DECLARE_ALIGNED(16, int16_t,
u_dequant_QTX[QINDEX_RANGE][8]); // 8: SIMD width
DECLARE_ALIGNED(16, int16_t,
v_dequant_QTX[QINDEX_RANGE][8]); // 8: SIMD width
} Dequants;
// The DeltaQuantParams structure holds the dc/ac deltaq parameters. typedefstruct {
int y_dc_delta_q;
int u_dc_delta_q;
int u_ac_delta_q;
int v_dc_delta_q;
int v_ac_delta_q;
int sharpness;
} DeltaQuantParams;
typedefstruct { // Quantization parameters for internal quantizer setup.
QUANTS quants; // Dequantization parameters for internal quantizer setup.
Dequants dequants; // Deltaq parameters to track the state of the dc/ac deltaq parameters in // cm->quant_params. It is used to decide whether the quantizer tables need // to be re-initialized.
DeltaQuantParams prev_deltaq_params;
} EncQuantDequantParams;
void av1_init_plane_quantizers(conststruct AV1_COMP *cpi, MACROBLOCK *x,
int segment_id, const int do_update);
void av1_build_quantizer(aom_bit_depth_t bit_depth, int y_dc_delta_q,
int u_dc_delta_q, int u_ac_delta_q, int v_dc_delta_q,
int v_ac_delta_q, QUANTS *const quants,
Dequants *const deq, int sharpness);
void av1_init_quantizer(EncQuantDequantParams *const enc_quant_dequant_params,
CommonQuantParams *quant_params,
aom_bit_depth_t bit_depth, int sharpness);
void av1_set_quantizer(struct AV1Common *const cm, int min_qmlevel,
int max_qmlevel, int q, int enable_chroma_deltaq,
int enable_hdr_deltaq, bool is_allintra,
aom_tune_metric tuning);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.