* be found in the AUTHORS file in the root of the source tree.
*/
-
#include <math.h>
#include "vpx_mem/vpx_mem.h"
void vp8_quantize_mby_4x4_c(MACROBLOCK *x) {
int i;
- int has_2nd_order = (x->e_mbd.mode_info_context->mbmi.mode != B_PRED
- && x->e_mbd.mode_info_context->mbmi.mode != I8X8_PRED
- && x->e_mbd.mode_info_context->mbmi.mode != SPLITMV);
+ int has_2nd_order = x->e_mbd.mode_info_context->mbmi.mode != SPLITMV;
for (i = 0; i < 16; i++)
x->quantize_b_4x4(&x->block[i], &x->e_mbd.block[i]);
x->quantize_b_4x4(&x->block[24], &x->e_mbd.block[24]);
}
-void vp8_quantize_mb_4x4_c(MACROBLOCK *x) {
- int i;
- int has_2nd_order = (x->e_mbd.mode_info_context->mbmi.mode != B_PRED
- && x->e_mbd.mode_info_context->mbmi.mode != I8X8_PRED
- && x->e_mbd.mode_info_context->mbmi.mode != SPLITMV);
-
- for (i = 0; i < 24 + has_2nd_order; i++)
- x->quantize_b_4x4(&x->block[i], &x->e_mbd.block[i]);
-}
-
-
void vp8_quantize_mbuv_4x4_c(MACROBLOCK *x) {
int i;
x->quantize_b_4x4(&x->block[i], &x->e_mbd.block[i]);
}
-
-
+void vp8_quantize_mb_4x4_c(MACROBLOCK *x) {
+ vp8_quantize_mby_4x4_c(x);
+ vp8_quantize_mbuv_4x4_c(x);
+}
void vp8_regular_quantize_b_2x2(BLOCK *b, BLOCKD *d) {
int i, rc, eob;
void vp8_quantize_mby_8x8(MACROBLOCK *x) {
int i;
- int has_2nd_order = (x->e_mbd.mode_info_context->mbmi.mode != B_PRED
- && x->e_mbd.mode_info_context->mbmi.mode != SPLITMV);
+ int has_2nd_order = x->e_mbd.mode_info_context->mbmi.mode != SPLITMV;
+
for (i = 0; i < 16; i ++) {
x->e_mbd.block[i].eob = 0;
}
if (has_2nd_order)
x->quantize_b_2x2(&x->block[24], &x->e_mbd.block[24]);
-
-}
-
-void vp8_quantize_mb_8x8(MACROBLOCK *x) {
- int i;
- int has_2nd_order = (x->e_mbd.mode_info_context->mbmi.mode != B_PRED
- && x->e_mbd.mode_info_context->mbmi.mode != SPLITMV);
- for (i = 0; i < 25; i ++) {
- x->e_mbd.block[i].eob = 0;
- }
- for (i = 0; i < 24; i += 4)
- x->quantize_b_8x8(&x->block[i], &x->e_mbd.block[i]);
-
- if (has_2nd_order)
- x->quantize_b_2x2(&x->block[24], &x->e_mbd.block[24]);
}
void vp8_quantize_mbuv_8x8(MACROBLOCK *x) {
x->quantize_b_8x8(&x->block[i], &x->e_mbd.block[i]);
}
-
-
+void vp8_quantize_mb_8x8(MACROBLOCK *x) {
+ vp8_quantize_mby_8x8(x);
+ vp8_quantize_mbuv_8x8(x);
+}
void vp8_quantize_mby_16x16(MACROBLOCK *x) {
int i;
+
for (i = 0; i < 16; i++)
x->e_mbd.block[i].eob = 0;
x->e_mbd.block[24].eob = 0;
}
void vp8_quantize_mb_16x16(MACROBLOCK *x) {
- int i;
- for(i = 0; i < 25; i++)
- x->e_mbd.block[i].eob = 0;
- x->quantize_b_16x16(&x->block[0], &x->e_mbd.block[0]);
- for (i = 16; i < 24; i += 4)
- x->quantize_b_8x8(&x->block[i], &x->e_mbd.block[i]);
-}
-
-// U and V should use 8x8
-void vp8_quantize_mbuv_16x16(MACROBLOCK *x) {
- int i;
-
- for(i = 16; i < 24; i++)
- x->e_mbd.block[i].eob = 0;
- for (i = 16; i < 24; i += 4)
- x->quantize_b_8x8(&x->block[i], &x->e_mbd.block[i]);
+ vp8_quantize_mby_16x16(x);
+ vp8_quantize_mbuv_8x8(x);
}
void vp8_regular_quantize_b_16x16(BLOCK *b, BLOCKD *d) {
d->eob = eob + 1;
}
-
-
/* quantize_b_pair function pointer in MACROBLOCK structure is set to one of
* these two C functions if corresponding optimized routine is not available.
* NEON optimized version implements currently the fast quantization for pair
*shift = l;
}
-
void vp8cx_init_quantizer(VP8_COMP *cpi) {
int i;
int quant_val;
x->q_index = QIndex;
}
-
void vp8_update_zbin_extra(VP8_COMP *cpi, MACROBLOCK *x) {
int i;
int QIndex = x->q_index;
x->block[24].zbin_extra = (short)zbin_extra;
}
-
void vp8cx_frame_init_quantizer(VP8_COMP *cpi) {
// Clear Zbin mode boost for default case
cpi->zbin_mode_boost = 0;
vp8cx_mb_init_quantizer(cpi, &cpi->mb);
}
-
void vp8_set_quantizer(struct VP8_COMP *cpi, int Q) {
VP8_COMMON *cm = &cpi->common;