store quant_shift as an unsigned char
in encodframe.c, quant_shift is set to 0 or 1 in vp8cx_invert_quant only use 8 bits to store this, instead of 16. will allow saving an xmm register in an updated version of the regular quantize Change-Id: Ie88c47fe2aff5af0283dab1147fb2791e4b12f90
This commit is contained in:
parent
538f110407
commit
70f30aa95d
@ -34,7 +34,7 @@ typedef struct
|
||||
// 16 Y blocks, 4 U blocks, 4 V blocks each with 16 entries
|
||||
short *quant;
|
||||
short *quant_fast;
|
||||
short *quant_shift;
|
||||
unsigned char *quant_shift;
|
||||
short *zbin;
|
||||
short *zrun_zbin_boost;
|
||||
short *round;
|
||||
|
@ -147,7 +147,7 @@ static const int qzbin_factors_y2[129] =
|
||||
#define EXACT_QUANT
|
||||
#ifdef EXACT_QUANT
|
||||
static void vp8cx_invert_quant(int improved_quant, short *quant,
|
||||
short *shift, short d)
|
||||
unsigned char *shift, short d)
|
||||
{
|
||||
if(improved_quant)
|
||||
{
|
||||
|
@ -251,17 +251,17 @@ typedef struct
|
||||
{
|
||||
|
||||
DECLARE_ALIGNED(16, short, Y1quant[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, Y1quant_shift[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, unsigned char, Y1quant_shift[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, Y1zbin[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, Y1round[QINDEX_RANGE][16]);
|
||||
|
||||
DECLARE_ALIGNED(16, short, Y2quant[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, Y2quant_shift[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, unsigned char, Y2quant_shift[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, Y2zbin[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, Y2round[QINDEX_RANGE][16]);
|
||||
|
||||
DECLARE_ALIGNED(16, short, UVquant[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, UVquant_shift[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, unsigned char, UVquant_shift[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, UVzbin[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, UVround[QINDEX_RANGE][16]);
|
||||
|
||||
|
@ -27,7 +27,7 @@ void vp8_fast_quantize_b_c(BLOCK *b, BLOCKD *d)
|
||||
short *zbin_ptr = b->zbin;
|
||||
short *round_ptr = b->round;
|
||||
short *quant_ptr = b->quant_fast;
|
||||
short *quant_shift_ptr = b->quant_shift;
|
||||
unsigned char *quant_shift_ptr = b->quant_shift;
|
||||
short *qcoeff_ptr = d->qcoeff;
|
||||
short *dqcoeff_ptr = d->dqcoeff;
|
||||
short *dequant_ptr = d->dequant;
|
||||
@ -112,7 +112,7 @@ void vp8_regular_quantize_b(BLOCK *b, BLOCKD *d)
|
||||
short *zbin_ptr = b->zbin;
|
||||
short *round_ptr = b->round;
|
||||
short *quant_ptr = b->quant;
|
||||
short *quant_shift_ptr = b->quant_shift;
|
||||
unsigned char *quant_shift_ptr = b->quant_shift;
|
||||
short *qcoeff_ptr = d->qcoeff;
|
||||
short *dqcoeff_ptr = d->dqcoeff;
|
||||
short *dequant_ptr = d->dequant;
|
||||
@ -166,7 +166,7 @@ void vp8_strict_quantize_b(BLOCK *b, BLOCKD *d)
|
||||
int sz;
|
||||
short *coeff_ptr;
|
||||
short *quant_ptr;
|
||||
short *quant_shift_ptr;
|
||||
unsigned char *quant_shift_ptr;
|
||||
short *qcoeff_ptr;
|
||||
short *dqcoeff_ptr;
|
||||
short *dequant_ptr;
|
||||
|
@ -142,7 +142,7 @@ sym(vp8_regular_quantize_b_sse2):
|
||||
movsx edi, WORD PTR[rsp + temp_qcoeff + %1 * 2]
|
||||
|
||||
; downshift by quant_shift[rc]
|
||||
movsx ecx, WORD PTR[rax + %1 * 2] ; quant_shift_ptr[rc]
|
||||
movsx cx, BYTE PTR[rax + %1] ; quant_shift_ptr[rc]
|
||||
sar edi, cl ; also sets Z bit
|
||||
je rq_zigzag_loop_%1 ; !y
|
||||
mov WORD PTR[rsp + qcoeff + %1 * 2], di ;qcoeff_ptr[rc] = temp_qcoeff[rc]
|
||||
|
Loading…
x
Reference in New Issue
Block a user