Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Yushin Cho
aom-rav1e
Commits
5f242925
Commit
5f242925
authored
Jan 28, 2013
by
Paul Wilkins
Committed by
Gerrit Code Review
Jan 28, 2013
Browse files
Merge "Simplify Zero bin and zero bin run code." into experimental
parents
f8b9f11c
8e2c03fb
Changes
2
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/vp9_onyx_int.h
View file @
5f242925
...
...
@@ -315,27 +315,6 @@ typedef struct VP9_COMP {
DECLARE_ALIGNED
(
16
,
short
,
zrun_zbin_boost_y2
[
QINDEX_RANGE
][
16
]);
DECLARE_ALIGNED
(
16
,
short
,
zrun_zbin_boost_uv
[
QINDEX_RANGE
][
16
]);
DECLARE_ALIGNED
(
64
,
short
,
Y1zbin_8x8
[
QINDEX_RANGE
][
64
]);
DECLARE_ALIGNED
(
64
,
short
,
Y2zbin_8x8
[
QINDEX_RANGE
][
64
]);
DECLARE_ALIGNED
(
64
,
short
,
UVzbin_8x8
[
QINDEX_RANGE
][
64
]);
DECLARE_ALIGNED
(
64
,
short
,
zrun_zbin_boost_y1_8x8
[
QINDEX_RANGE
][
64
]);
DECLARE_ALIGNED
(
64
,
short
,
zrun_zbin_boost_y2_8x8
[
QINDEX_RANGE
][
64
]);
DECLARE_ALIGNED
(
64
,
short
,
zrun_zbin_boost_uv_8x8
[
QINDEX_RANGE
][
64
]);
DECLARE_ALIGNED
(
16
,
short
,
Y1zbin_16x16
[
QINDEX_RANGE
][
256
]);
DECLARE_ALIGNED
(
16
,
short
,
Y2zbin_16x16
[
QINDEX_RANGE
][
256
]);
DECLARE_ALIGNED
(
16
,
short
,
UVzbin_16x16
[
QINDEX_RANGE
][
256
]);
DECLARE_ALIGNED
(
16
,
short
,
zrun_zbin_boost_y1_16x16
[
QINDEX_RANGE
][
256
]);
DECLARE_ALIGNED
(
16
,
short
,
zrun_zbin_boost_y2_16x16
[
QINDEX_RANGE
][
256
]);
DECLARE_ALIGNED
(
16
,
short
,
zrun_zbin_boost_uv_16x16
[
QINDEX_RANGE
][
256
]);
DECLARE_ALIGNED
(
16
,
short
,
Y1zbin_32x32
[
QINDEX_RANGE
][
1024
]);
DECLARE_ALIGNED
(
16
,
short
,
Y2zbin_32x32
[
QINDEX_RANGE
][
1024
]);
DECLARE_ALIGNED
(
16
,
short
,
UVzbin_32x32
[
QINDEX_RANGE
][
1024
]);
DECLARE_ALIGNED
(
16
,
short
,
zrun_zbin_boost_y1_32x32
[
QINDEX_RANGE
][
1024
]);
DECLARE_ALIGNED
(
16
,
short
,
zrun_zbin_boost_y2_32x32
[
QINDEX_RANGE
][
1024
]);
DECLARE_ALIGNED
(
16
,
short
,
zrun_zbin_boost_uv_32x32
[
QINDEX_RANGE
][
1024
]);
MACROBLOCK
mb
;
VP9_COMMON
common
;
VP9_CONFIG
oxcf
;
...
...
vp9/encoder/vp9_quantize.c
View file @
5f242925
...
...
@@ -224,9 +224,10 @@ void vp9_regular_quantize_b_8x8(BLOCK *b, BLOCKD *d) {
int
i
,
rc
,
eob
;
int
zbin
;
int
x
,
y
,
z
,
sz
;
int16_t
*
zbin_boost_ptr
=
b
->
zrun_zbin_boost_8x8
;
int
zero_run
=
0
;
int16_t
*
zbin_boost_ptr
=
b
->
zrun_zbin_boost
;
int16_t
*
coeff_ptr
=
b
->
coeff
;
int16_t
*
zbin_ptr
=
b
->
zbin
_8x8
;
int16_t
*
zbin_ptr
=
b
->
zbin
;
int16_t
*
round_ptr
=
b
->
round
;
int16_t
*
quant_ptr
=
b
->
quant
;
uint8_t
*
quant_shift_ptr
=
b
->
quant_shift
;
...
...
@@ -243,9 +244,8 @@ void vp9_regular_quantize_b_8x8(BLOCK *b, BLOCKD *d) {
for
(
i
=
0
;
i
<
b
->
eob_max_offset_8x8
;
i
++
)
{
rc
=
vp9_default_zig_zag1d_8x8
[
i
];
z
=
coeff_ptr
[
rc
];
zbin
=
(
zbin_ptr
[
rc
!=
0
]
+
*
zbin_boost_ptr
+
zbin_oq_value
);
zbin_boost_ptr
++
;
zbin
=
(
zbin_ptr
[
rc
!=
0
]
+
zbin_boost_ptr
[
zero_run
]
+
zbin_oq_value
);
zero_run
+=
(
zero_run
<
15
);
sz
=
(
z
>>
31
);
// sign of z
x
=
(
z
^
sz
)
-
sz
;
// x = abs(z)
...
...
@@ -253,14 +253,14 @@ void vp9_regular_quantize_b_8x8(BLOCK *b, BLOCKD *d) {
if
(
x
>=
zbin
)
{
x
+=
(
round_ptr
[
rc
!=
0
]);
y
=
((
int
)(((
int
)(
x
*
quant_ptr
[
rc
!=
0
])
>>
16
)
+
x
))
>>
quant_shift_ptr
[
rc
!=
0
];
// quantize (x)
>>
quant_shift_ptr
[
rc
!=
0
];
// quantize (x)
x
=
(
y
^
sz
)
-
sz
;
// get the sign back
qcoeff_ptr
[
rc
]
=
x
;
// write to destination
dqcoeff_ptr
[
rc
]
=
x
*
dequant_ptr
[
rc
!=
0
];
// dequantized value
if
(
y
)
{
eob
=
i
;
// last nonzero coeffs
z
bin_boost_ptr
=
b
->
zrun_zbin_boost_8x8
;
z
ero_run
=
0
;
}
}
}
...
...
@@ -333,6 +333,7 @@ static void quantize(int16_t *zbin_boost_orig_ptr,
int
i
,
rc
,
eob
;
int
zbin
;
int
x
,
y
,
z
,
sz
;
int
zero_run
=
0
;
int16_t
*
zbin_boost_ptr
=
zbin_boost_orig_ptr
;
vpx_memset
(
qcoeff_ptr
,
0
,
n_coeffs
*
sizeof
(
int16_t
));
...
...
@@ -343,8 +344,8 @@ static void quantize(int16_t *zbin_boost_orig_ptr,
rc
=
scan
[
i
];
z
=
coeff_ptr
[
rc
]
*
mul
;
zbin
=
(
zbin_ptr
[
rc
!=
0
]
+
*
zbin_boost_ptr
+
zbin_oq_value
);
z
bin_boost_ptr
++
;
zbin
=
(
zbin_ptr
[
rc
!=
0
]
+
zbin_boost_ptr
[
zero_run
]
+
zbin_oq_value
);
z
ero_run
+=
(
zero_run
<
15
)
;
sz
=
(
z
>>
31
);
// sign of z
x
=
(
z
^
sz
)
-
sz
;
// x = abs(z)
...
...
@@ -359,7 +360,7 @@ static void quantize(int16_t *zbin_boost_orig_ptr,
if
(
y
)
{
eob
=
i
;
// last nonzero coeffs
z
bin_boost_ptr
=
zbin_boost_orig_ptr
;
z
ero_run
=
0
;
}
}
}
...
...
@@ -368,10 +369,10 @@ static void quantize(int16_t *zbin_boost_orig_ptr,
}
void
vp9_regular_quantize_b_16x16
(
BLOCK
*
b
,
BLOCKD
*
d
)
{
quantize
(
b
->
zrun_zbin_boost
_16x16
,
quantize
(
b
->
zrun_zbin_boost
,
b
->
coeff
,
256
,
b
->
eob_max_offset_16x16
,
b
->
zbin
_16x16
,
b
->
round
,
b
->
quant
,
b
->
quant_shift
,
b
->
zbin
,
b
->
round
,
b
->
quant
,
b
->
quant_shift
,
d
->
qcoeff
,
d
->
dqcoeff
,
d
->
dequant
,
...
...
@@ -381,10 +382,10 @@ void vp9_regular_quantize_b_16x16(BLOCK *b, BLOCKD *d) {
void
vp9_quantize_sby_32x32
(
MACROBLOCK
*
x
)
{
x
->
e_mbd
.
block
[
0
].
eob
=
0
;
quantize
(
x
->
block
[
0
].
zrun_zbin_boost
_32x32
,
quantize
(
x
->
block
[
0
].
zrun_zbin_boost
,
x
->
sb_coeff_data
.
coeff
,
1024
,
x
->
block
[
0
].
eob_max_offset_32x32
,
x
->
block
[
0
].
zbin
_32x32
,
x
->
block
[
0
].
zbin
,
x
->
block
[
0
].
round
,
x
->
block
[
0
].
quant
,
x
->
block
[
0
].
quant_shift
,
x
->
e_mbd
.
sb_coeff_data
.
qcoeff
,
x
->
e_mbd
.
sb_coeff_data
.
dqcoeff
,
...
...
@@ -400,10 +401,10 @@ void vp9_quantize_sbuv_16x16(MACROBLOCK *x) {
x
->
e_mbd
.
block
[
16
].
eob
=
0
;
x
->
e_mbd
.
block
[
20
].
eob
=
0
;
for
(
i
=
16
;
i
<
24
;
i
+=
4
)
quantize
(
x
->
block
[
i
].
zrun_zbin_boost
_16x16
,
quantize
(
x
->
block
[
i
].
zrun_zbin_boost
,
x
->
sb_coeff_data
.
coeff
+
1024
+
(
i
-
16
)
*
64
,
256
,
x
->
block
[
i
].
eob_max_offset_16x16
,
x
->
block
[
i
].
zbin
_16x16
,
x
->
block
[
i
].
zbin
,
x
->
block
[
i
].
round
,
x
->
block
[
0
].
quant
,
x
->
block
[
i
].
quant_shift
,
x
->
e_mbd
.
sb_coeff_data
.
qcoeff
+
1024
+
(
i
-
16
)
*
64
,
x
->
e_mbd
.
sb_coeff_data
.
dqcoeff
+
1024
+
(
i
-
16
)
*
64
,
...
...
@@ -439,105 +440,12 @@ void vp9_init_quantizer(VP9_COMP *cpi) {
int
i
;
int
quant_val
;
int
Q
;
static
const
int
zbin_boost
[
16
]
=
{
0
,
0
,
8
,
10
,
12
,
14
,
16
,
20
,
24
,
28
,
32
,
36
,
40
,
44
,
44
,
44
};
static
const
int
zbin_boost_8x8
[
64
]
=
{
0
,
0
,
0
,
8
,
8
,
8
,
10
,
12
,
14
,
16
,
18
,
20
,
22
,
24
,
26
,
28
,
30
,
32
,
34
,
36
,
38
,
40
,
42
,
44
,
46
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
};
static
const
int
zbin_boost_16x16
[
256
]
=
{
0
,
0
,
0
,
8
,
8
,
8
,
10
,
12
,
14
,
16
,
18
,
20
,
22
,
24
,
26
,
28
,
30
,
32
,
34
,
36
,
38
,
40
,
42
,
44
,
46
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
};
static
const
int
zbin_boost_32x32
[
1024
]
=
{
0
,
0
,
0
,
8
,
8
,
8
,
10
,
12
,
14
,
16
,
18
,
20
,
22
,
24
,
26
,
28
,
30
,
32
,
34
,
36
,
38
,
40
,
42
,
44
,
46
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
48
,
};
int
qrounding_factor
=
48
;
static
const
int
zbin_boost
[
16
]
=
{
0
,
0
,
0
,
8
,
8
,
8
,
10
,
12
,
14
,
16
,
20
,
24
,
28
,
32
,
36
,
40
};
int
qrounding_factor
=
48
;
for
(
Q
=
0
;
Q
<
QINDEX_RANGE
;
Q
++
)
{
int
qzbin_factor
=
(
vp9_dc_quant
(
Q
,
0
)
<
148
)
?
84
:
80
;
...
...
@@ -556,47 +464,24 @@ void vp9_init_quantizer(VP9_COMP *cpi) {
invert_quant
(
cpi
->
Y1quant
[
Q
]
+
0
,
cpi
->
Y1quant_shift
[
Q
]
+
0
,
quant_val
);
cpi
->
Y1zbin
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
Y1zbin_8x8
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
Y1zbin_16x16
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
Y1round
[
Q
][
0
]
=
(
qrounding_factor
*
quant_val
)
>>
7
;
cpi
->
common
.
Y1dequant
[
Q
][
0
]
=
quant_val
;
cpi
->
zrun_zbin_boost_y1
[
Q
][
0
]
=
(
quant_val
*
zbin_boost
[
0
])
>>
7
;
cpi
->
zrun_zbin_boost_y1_8x8
[
Q
][
0
]
=
((
quant_val
*
zbin_boost_8x8
[
0
])
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_y1_16x16
[
Q
][
0
]
=
((
quant_val
*
zbin_boost_16x16
[
0
])
+
64
)
>>
7
;
cpi
->
Y1zbin_32x32
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_y1_32x32
[
Q
][
0
]
=
((
quant_val
*
zbin_boost_32x32
[
0
])
+
64
)
>>
7
;
quant_val
=
vp9_dc2quant
(
Q
,
cpi
->
common
.
y2dc_delta_q
);
invert_quant
(
cpi
->
Y2quant
[
Q
]
+
0
,
cpi
->
Y2quant_shift
[
Q
]
+
0
,
quant_val
);
cpi
->
Y2zbin
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
Y2zbin_8x8
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
Y2zbin_16x16
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
Y2round
[
Q
][
0
]
=
(
qrounding_factor
*
quant_val
)
>>
7
;
cpi
->
common
.
Y2dequant
[
Q
][
0
]
=
quant_val
;
cpi
->
zrun_zbin_boost_y2
[
Q
][
0
]
=
(
quant_val
*
zbin_boost
[
0
])
>>
7
;
cpi
->
zrun_zbin_boost_y2_8x8
[
Q
][
0
]
=
((
quant_val
*
zbin_boost_8x8
[
0
])
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_y2_16x16
[
Q
][
0
]
=
((
quant_val
*
zbin_boost_16x16
[
0
])
+
64
)
>>
7
;
quant_val
=
vp9_dc_uv_quant
(
Q
,
cpi
->
common
.
uvdc_delta_q
);
invert_quant
(
cpi
->
UVquant
[
Q
]
+
0
,
cpi
->
UVquant_shift
[
Q
]
+
0
,
quant_val
);
cpi
->
UVzbin
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
UVzbin_8x8
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
UVzbin_16x16
[
Q
][
0
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
UVround
[
Q
][
0
]
=
(
qrounding_factor
*
quant_val
)
>>
7
;
cpi
->
common
.
UVdequant
[
Q
][
0
]
=
quant_val
;
cpi
->
zrun_zbin_boost_uv
[
Q
][
0
]
=
(
quant_val
*
zbin_boost
[
0
])
>>
7
;
cpi
->
zrun_zbin_boost_uv_8x8
[
Q
][
0
]
=
((
quant_val
*
zbin_boost_8x8
[
0
])
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_uv_16x16
[
Q
][
0
]
=
((
quant_val
*
zbin_boost_16x16
[
0
])
+
64
)
>>
7
;
// all the 4x4 ac values =;
for
(
i
=
1
;
i
<
16
;
i
++
)
{
...
...
@@ -629,57 +514,6 @@ void vp9_init_quantizer(VP9_COMP *cpi) {
cpi
->
zrun_zbin_boost_uv
[
Q
][
i
]
=
((
quant_val
*
zbin_boost
[
i
])
+
64
)
>>
7
;
}
// 8x8 structures... only zbin seperated out for now
// This needs cleaning up for 8x8 especially if we are to add
// support for non flat Q matices
for
(
i
=
1
;
i
<
64
;
i
++
)
{
int
rc
=
vp9_default_zig_zag1d_8x8
[
i
];
quant_val
=
vp9_ac_yquant
(
Q
);
cpi
->
Y1zbin_8x8
[
Q
][
rc
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_y1_8x8
[
Q
][
i
]
=
((
quant_val
*
zbin_boost_8x8
[
i
])
+
64
)
>>
7
;
quant_val
=
vp9_ac2quant
(
Q
,
cpi
->
common
.
y2ac_delta_q
);
cpi
->
Y2zbin_8x8
[
Q
][
rc
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_y2_8x8
[
Q
][
i
]
=
((
quant_val
*
zbin_boost_8x8
[
i
])
+
64
)
>>
7
;
quant_val
=
vp9_ac_uv_quant
(
Q
,
cpi
->
common
.
uvac_delta_q
);
cpi
->
UVzbin_8x8
[
Q
][
rc
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_uv_8x8
[
Q
][
i
]
=
((
quant_val
*
zbin_boost_8x8
[
i
])
+
64
)
>>
7
;
}
// 16x16 structures. Same comment above applies.
for
(
i
=
1
;
i
<
256
;
i
++
)
{
int
rc
=
vp9_default_zig_zag1d_16x16
[
i
];
quant_val
=
vp9_ac_yquant
(
Q
);
cpi
->
Y1zbin_16x16
[
Q
][
rc
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_y1_16x16
[
Q
][
i
]
=
((
quant_val
*
zbin_boost_16x16
[
i
])
+
64
)
>>
7
;
quant_val
=
vp9_ac2quant
(
Q
,
cpi
->
common
.
y2ac_delta_q
);
cpi
->
Y2zbin_16x16
[
Q
][
rc
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_y2_16x16
[
Q
][
i
]
=
((
quant_val
*
zbin_boost_16x16
[
i
])
+
64
)
>>
7
;
quant_val
=
vp9_ac_uv_quant
(
Q
,
cpi
->
common
.
uvac_delta_q
);
cpi
->
UVzbin_16x16
[
Q
][
rc
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_uv_16x16
[
Q
][
i
]
=
((
quant_val
*
zbin_boost_16x16
[
i
])
+
64
)
>>
7
;
}
// 32x32 structures. Same comment above applies.
for
(
i
=
1
;
i
<
1024
;
i
++
)
{
int
rc
=
vp9_default_zig_zag1d_32x32
[
i
];
quant_val
=
vp9_ac_yquant
(
Q
);
cpi
->
Y1zbin_32x32
[
Q
][
rc
]
=
((
qzbin_factor
*
quant_val
)
+
64
)
>>
7
;
cpi
->
zrun_zbin_boost_y1_32x32
[
Q
][
i
]
=
((
quant_val
*
zbin_boost_32x32
[
i
])
+
64
)
>>
7
;
}
}
}
...
...
@@ -717,15 +551,9 @@ void vp9_mb_init_quantizer(VP9_COMP *cpi, MACROBLOCK *x) {
x
->
block
[
i
].
quant
=
cpi
->
Y1quant
[
QIndex
];
x
->
block
[
i
].
quant_shift
=
cpi
->
Y1quant_shift
[
QIndex
];
x
->
block
[
i
].
zbin
=
cpi
->
Y1zbin
[
QIndex
];
x
->
block
[
i
].
zbin_8x8
=
cpi
->
Y1zbin_8x8
[
QIndex
];
x
->
block
[
i
].
zbin_16x16
=
cpi
->
Y1zbin_16x16
[
QIndex
];
x
->
block
[
i
].
zbin_32x32
=
cpi
->
Y1zbin_32x32
[
QIndex
];
x
->
block
[
i
].
round
=
cpi
->
Y1round
[
QIndex
];
x
->
e_mbd
.
block
[
i
].
dequant
=
cpi
->
common
.
Y1dequant
[
QIndex
];
x
->
block
[
i
].
zrun_zbin_boost
=
cpi
->
zrun_zbin_boost_y1
[
QIndex
];
x
->
block
[
i
].
zrun_zbin_boost_8x8
=
cpi
->
zrun_zbin_boost_y1_8x8
[
QIndex
];
x
->
block
[
i
].
zrun_zbin_boost_16x16
=
cpi
->
zrun_zbin_boost_y1_16x16
[
QIndex
];
x
->
block
[
i
].
zrun_zbin_boost_32x32
=
cpi
->
zrun_zbin_boost_y1_32x32
[
QIndex
];
x
->
block
[
i
].
zbin_extra
=
(
int16_t
)
zbin_extra
;
// Segment max eob offset feature.
...
...
@@ -756,13 +584,9 @@ void vp9_mb_init_quantizer(VP9_COMP *cpi, MACROBLOCK *x) {
x
->
block
[
i
].
quant
=
cpi
->
UVquant
[
QIndex
];
x
->
block
[
i
].
quant_shift
=
cpi
->
UVquant_shift
[
QIndex
];
x
->
block
[
i
].
zbin
=
cpi
->
UVzbin
[
QIndex
];
x
->
block
[
i
].
zbin_8x8
=
cpi
->
UVzbin_8x8
[
QIndex
];
x
->
block
[
i
].
zbin_16x16
=
cpi
->
UVzbin_16x16
[
QIndex
];
x
->
block
[
i
].
round
=
cpi
->
UVround
[
QIndex
];
x
->
e_mbd
.
block
[
i
].
dequant
=
cpi
->
common
.
UVdequant
[
QIndex
];
x
->
block
[
i
].
zrun_zbin_boost
=
cpi
->
zrun_zbin_boost_uv
[
QIndex
];
x
->
block
[
i
].
zrun_zbin_boost_8x8
=
cpi
->
zrun_zbin_boost_uv_8x8
[
QIndex
];
x
->
block
[
i
].
zrun_zbin_boost_16x16
=
cpi
->
zrun_zbin_boost_uv_16x16
[
QIndex
];
x
->
block
[
i
].
zbin_extra
=
(
int16_t
)
zbin_extra
;
...
...
@@ -790,13 +614,9 @@ void vp9_mb_init_quantizer(VP9_COMP *cpi, MACROBLOCK *x) {
x
->
block
[
24
].
quant
=
cpi
->
Y2quant
[
QIndex
];
x
->
block
[
24
].
quant_shift
=
cpi
->
Y2quant_shift
[
QIndex
];
x
->
block
[
24
].
zbin
=
cpi
->
Y2zbin
[
QIndex
];
x
->
block
[
24
].
zbin_8x8
=
cpi
->
Y2zbin_8x8
[
QIndex
];
x
->
block
[
24
].
zbin_16x16
=
cpi
->
Y2zbin_16x16
[
QIndex
];
x
->
block
[
24
].
round
=
cpi
->
Y2round
[
QIndex
];
x
->
e_mbd
.
block
[
24
].
dequant
=
cpi
->
common
.
Y2dequant
[
QIndex
];
x
->
block
[
24
].
zrun_zbin_boost
=
cpi
->
zrun_zbin_boost_y2
[
QIndex
];
x
->
block
[
24
].
zrun_zbin_boost_8x8
=
cpi
->
zrun_zbin_boost_y2_8x8
[
QIndex
];
x
->
block
[
24
].
zrun_zbin_boost_16x16
=
cpi
->
zrun_zbin_boost_y2_16x16
[
QIndex
];
x
->
block
[
24
].
zbin_extra
=
(
int16_t
)
zbin_extra
;
// TBD perhaps not use for Y2
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment