Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
4fdf8ccc
Commit
4fdf8ccc
authored
Apr 11, 2013
by
Dmitry Kovalev
Browse files
Adding vp9_read_and_apply_sign function.
Change-Id: I9951a06dbe4514cc1cf69ff4349c4e12cb4a318c
parent
c18b2617
Changes
3
Hide whitespace changes
Inline
Side-by-side
vp9/decoder/vp9_decodframe.c
View file @
4fdf8ccc
...
@@ -868,10 +868,8 @@ static int get_delta_q(vp9_reader *r, int *dq) {
...
@@ -868,10 +868,8 @@ static int get_delta_q(vp9_reader *r, int *dq) {
const
int
old_value
=
*
dq
;
const
int
old_value
=
*
dq
;
if
(
vp9_read_bit
(
r
))
{
// Update bit
if
(
vp9_read_bit
(
r
))
{
// Update bit
int
value
=
vp9_read_literal
(
r
,
4
);
const
int
value
=
vp9_read_literal
(
r
,
4
);
if
(
vp9_read_bit
(
r
))
// Sign bit
*
dq
=
vp9_read_and_apply_sign
(
r
,
value
);
value
=
-
value
;
*
dq
=
value
;
}
}
// Trigger a quantizer update if the delta-q value has changed
// Trigger a quantizer update if the delta-q value has changed
...
@@ -1255,9 +1253,8 @@ static void setup_segmentation(VP9_COMMON *pc, MACROBLOCKD *xd, vp9_reader *r) {
...
@@ -1255,9 +1253,8 @@ static void setup_segmentation(VP9_COMMON *pc, MACROBLOCKD *xd, vp9_reader *r) {
if
(
feature_enabled
)
{
if
(
feature_enabled
)
{
vp9_enable_segfeature
(
xd
,
i
,
j
);
vp9_enable_segfeature
(
xd
,
i
,
j
);
data
=
vp9_decode_unsigned_max
(
r
,
vp9_seg_feature_data_max
(
j
));
data
=
vp9_decode_unsigned_max
(
r
,
vp9_seg_feature_data_max
(
j
));
if
(
vp9_is_segfeature_signed
(
j
)
&&
vp9_read_bit
(
r
))
{
if
(
vp9_is_segfeature_signed
(
j
))
data
=
-
data
;
data
=
vp9_read_and_apply_sign
(
r
,
data
);
}
}
}
vp9_set_segdata
(
xd
,
i
,
j
,
data
);
vp9_set_segdata
(
xd
,
i
,
j
,
data
);
}
}
...
@@ -1306,19 +1303,15 @@ static void setup_loopfilter(VP9_COMMON *pc, MACROBLOCKD *xd, vp9_reader *r) {
...
@@ -1306,19 +1303,15 @@ static void setup_loopfilter(VP9_COMMON *pc, MACROBLOCKD *xd, vp9_reader *r) {
for
(
i
=
0
;
i
<
MAX_REF_LF_DELTAS
;
i
++
)
{
for
(
i
=
0
;
i
<
MAX_REF_LF_DELTAS
;
i
++
)
{
if
(
vp9_read_bit
(
r
))
{
if
(
vp9_read_bit
(
r
))
{
int
value
=
vp9_read_literal
(
r
,
6
);
const
int
value
=
vp9_read_literal
(
r
,
6
);
if
(
vp9_read_bit
(
r
))
xd
->
ref_lf_deltas
[
i
]
=
vp9_read_and_apply_sign
(
r
,
value
);
value
=
-
value
;
xd
->
ref_lf_deltas
[
i
]
=
value
;
}
}
}
}
for
(
i
=
0
;
i
<
MAX_MODE_LF_DELTAS
;
i
++
)
{
for
(
i
=
0
;
i
<
MAX_MODE_LF_DELTAS
;
i
++
)
{
if
(
vp9_read_bit
(
r
))
{
if
(
vp9_read_bit
(
r
))
{
int
value
=
vp9_read_literal
(
r
,
6
);
const
int
value
=
vp9_read_literal
(
r
,
6
);
if
(
vp9_read_bit
(
r
))
xd
->
mode_lf_deltas
[
i
]
=
vp9_read_and_apply_sign
(
r
,
value
);
value
=
-
value
;
xd
->
mode_lf_deltas
[
i
]
=
value
;
}
}
}
}
}
}
...
...
vp9/decoder/vp9_detokenize.c
View file @
4fdf8ccc
...
@@ -59,11 +59,6 @@ static const vp9_prob cat6_prob[15] = {
...
@@ -59,11 +59,6 @@ static const vp9_prob cat6_prob[15] = {
DECLARE_ALIGNED
(
16
,
extern
const
uint8_t
,
vp9_norm
[
256
]);
DECLARE_ALIGNED
(
16
,
extern
const
uint8_t
,
vp9_norm
[
256
]);
static
int16_t
get_signed
(
BOOL_DECODER
*
br
,
int16_t
value_to_sign
)
{
return
decode_bool
(
br
,
128
)
?
-
value_to_sign
:
value_to_sign
;
}
#define INCREMENT_COUNT(token) \
#define INCREMENT_COUNT(token) \
do { \
do { \
coef_counts[type][ref][get_coef_band(scan, txfm_size, c)] \
coef_counts[type][ref][get_coef_band(scan, txfm_size, c)] \
...
@@ -76,7 +71,7 @@ static int16_t get_signed(BOOL_DECODER *br, int16_t value_to_sign) {
...
@@ -76,7 +71,7 @@ static int16_t get_signed(BOOL_DECODER *br, int16_t value_to_sign) {
#if CONFIG_CODE_NONZEROCOUNT
#if CONFIG_CODE_NONZEROCOUNT
#define WRITE_COEF_CONTINUE(val, token) \
#define WRITE_COEF_CONTINUE(val, token) \
{ \
{ \
qcoeff_ptr[scan[c]] =
get
_sign
ed
(br, val);
\
qcoeff_ptr[scan[c]] =
vp9_read_and_apply
_sign(br, val); \
INCREMENT_COUNT(token); \
INCREMENT_COUNT(token); \
c++; \
c++; \
nzc++; \
nzc++; \
...
@@ -85,7 +80,7 @@ static int16_t get_signed(BOOL_DECODER *br, int16_t value_to_sign) {
...
@@ -85,7 +80,7 @@ static int16_t get_signed(BOOL_DECODER *br, int16_t value_to_sign) {
#else
#else
#define WRITE_COEF_CONTINUE(val, token) \
#define WRITE_COEF_CONTINUE(val, token) \
{ \
{ \
qcoeff_ptr[scan[c]] =
get
_sign
ed
(br, val);
\
qcoeff_ptr[scan[c]] =
vp9_read_and_apply
_sign(br, val); \
INCREMENT_COUNT(token); \
INCREMENT_COUNT(token); \
c++; \
c++; \
continue; \
continue; \
...
...
vp9/decoder/vp9_treereader.h
View file @
4fdf8ccc
...
@@ -21,6 +21,7 @@ typedef BOOL_DECODER vp9_reader;
...
@@ -21,6 +21,7 @@ typedef BOOL_DECODER vp9_reader;
#define vp9_read_literal decode_value
#define vp9_read_literal decode_value
#define vp9_read_bit(r) vp9_read(r, vp9_prob_half)
#define vp9_read_bit(r) vp9_read(r, vp9_prob_half)
#define vp9_read_prob(r) ((vp9_prob)vp9_read_literal(r, 8))
#define vp9_read_prob(r) ((vp9_prob)vp9_read_literal(r, 8))
#define vp9_read_and_apply_sign(r, value) (vp9_read_bit(r) ? -(value) : (value))
// Intent of tree data structure is to make decoding trivial.
// Intent of tree data structure is to make decoding trivial.
static
int
treed_read
(
vp9_reader
*
const
r
,
/* !!! must return a 0 or 1 !!! */
static
int
treed_read
(
vp9_reader
*
const
r
,
/* !!! must return a 0 or 1 !!! */
...
...
Write
Preview
Supports
Markdown
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