diff options
Diffstat (limited to 'vp9/common')
-rw-r--r-- | vp9/common/vp9_onyxc_int.h | 8 | ||||
-rw-r--r-- | vp9/common/vp9_quant_common.c | 14 | ||||
-rw-r--r-- | vp9/common/vp9_quant_common.h | 8 |
3 files changed, 22 insertions, 8 deletions
diff --git a/vp9/common/vp9_onyxc_int.h b/vp9/common/vp9_onyxc_int.h index 96ceca26a..bb873c185 100644 --- a/vp9/common/vp9_onyxc_int.h +++ b/vp9/common/vp9_onyxc_int.h @@ -18,6 +18,7 @@ #include "vp9/common/vp9_entropymv.h" #include "vp9/common/vp9_entropy.h" #include "vp9/common/vp9_entropymode.h" +#include "vp9/common/vp9_quant_common.h" #if CONFIG_POSTPROC #include "vp9/common/vp9_postproc.h" @@ -31,13 +32,6 @@ void vp9_initialize_common(void); -#define MINQ 0 - -#define MAXQ 255 -#define QINDEX_BITS 8 - -#define QINDEX_RANGE (MAXQ + 1) - #if CONFIG_MULTIPLE_ARF #define NUM_REF_FRAMES 8 #define NUM_REF_FRAMES_LG2 3 diff --git a/vp9/common/vp9_quant_common.c b/vp9/common/vp9_quant_common.c index 2e9e4cab2..5907b4f58 100644 --- a/vp9/common/vp9_quant_common.c +++ b/vp9/common/vp9_quant_common.c @@ -10,6 +10,7 @@ #include "vp9/common/vp9_common.h" #include "vp9/common/vp9_quant_common.h" +#include "vp9/common/vp9_seg_common.h" static int16_t dc_qlookup[QINDEX_RANGE]; static int16_t ac_qlookup[QINDEX_RANGE]; @@ -44,3 +45,16 @@ int16_t vp9_dc_quant(int qindex, int delta) { int16_t vp9_ac_quant(int qindex, int delta) { return ac_qlookup[clamp(qindex + delta, 0, MAXQ)]; } + + +int vp9_get_qindex(MACROBLOCKD *xd, int segment_id, int base_qindex) { + if (vp9_segfeature_active(xd, segment_id, SEG_LVL_ALT_Q)) { + const int data = vp9_get_segdata(xd, segment_id, SEG_LVL_ALT_Q); + return xd->mb_segment_abs_delta == SEGMENT_ABSDATA ? + data : // Abs value + clamp(base_qindex + data, 0, MAXQ); // Delta value + } else { + return base_qindex; + } +} + diff --git a/vp9/common/vp9_quant_common.h b/vp9/common/vp9_quant_common.h index 7daf15dc1..ded94269a 100644 --- a/vp9/common/vp9_quant_common.h +++ b/vp9/common/vp9_quant_common.h @@ -12,11 +12,17 @@ #define VP9_COMMON_VP9_QUANT_COMMON_H_ #include "vp9/common/vp9_blockd.h" -#include "vp9/common/vp9_onyxc_int.h" + +#define MINQ 0 +#define MAXQ 255 +#define QINDEX_RANGE (MAXQ - MINQ + 1) +#define QINDEX_BITS 8 void vp9_init_quant_tables(); int16_t vp9_dc_quant(int qindex, int delta); int16_t vp9_ac_quant(int qindex, int delta); +int vp9_get_qindex(MACROBLOCKD *mb, int segment_id, int base_qindex); + #endif // VP9_COMMON_VP9_QUANT_COMMON_H_ |