Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
b066bb43
Commit
b066bb43
authored
Oct 29, 2012
by
Ronald S. Bultje
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
seg_common: give all exported symbols a vp9_ prefix.
Change-Id: Ie8ba934a757acec1c80ac37ab9307c9a2783254e
parent
d36cc98e
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
314 additions
and
337 deletions
+314
-337
vp8/common/loopfilter.c
vp8/common/loopfilter.c
+6
-6
vp8/common/pred_common.c
vp8/common/pred_common.c
+2
-2
vp8/common/seg_common.c
vp8/common/seg_common.c
+44
-43
vp8/common/seg_common.h
vp8/common/seg_common.h
+41
-41
vp8/decoder/decodemv.c
vp8/decoder/decodemv.c
+30
-30
vp8/decoder/decodframe.c
vp8/decoder/decodframe.c
+14
-14
vp8/decoder/detokenize.c
vp8/decoder/detokenize.c
+8
-8
vp8/encoder/bitstream.c
vp8/encoder/bitstream.c
+39
-40
vp8/encoder/encodeframe.c
vp8/encoder/encodeframe.c
+39
-43
vp8/encoder/onyx_if.c
vp8/encoder/onyx_if.c
+37
-52
vp8/encoder/picklpf.c
vp8/encoder/picklpf.c
+6
-6
vp8/encoder/quantize.c
vp8/encoder/quantize.c
+13
-13
vp8/encoder/rdopt.c
vp8/encoder/rdopt.c
+31
-35
vp8/encoder/tokenize.c
vp8/encoder/tokenize.c
+4
-4
No files found.
vp8/common/loopfilter.c
View file @
b066bb43
...
...
@@ -122,12 +122,12 @@ void vp8_loop_filter_frame_init(VP8_COMMON *cm,
// Set the baseline filter values for each segment
if
(
segfeature_active
(
xd
,
seg
,
SEG_LVL_ALT_LF
))
{
if
(
vp9_
segfeature_active
(
xd
,
seg
,
SEG_LVL_ALT_LF
))
{
/* Abs value */
if
(
xd
->
mb_segment_abs_delta
==
SEGMENT_ABSDATA
)
{
lvl_seg
=
get_segdata
(
xd
,
seg
,
SEG_LVL_ALT_LF
);
lvl_seg
=
vp9_
get_segdata
(
xd
,
seg
,
SEG_LVL_ALT_LF
);
}
else
{
/* Delta Value */
lvl_seg
+=
get_segdata
(
xd
,
seg
,
SEG_LVL_ALT_LF
);
;
lvl_seg
+=
vp9_
get_segdata
(
xd
,
seg
,
SEG_LVL_ALT_LF
);
lvl_seg
=
(
lvl_seg
>
0
)
?
((
lvl_seg
>
63
)
?
63
:
lvl_seg
)
:
0
;
}
}
...
...
@@ -476,7 +476,7 @@ void vp8_loop_filter_frame_segment(VP8_COMMON *cm, MACROBLOCKD *xd,
// TODO: Make this work for when segment 0 has the alt lv enabled
if
(
filter_level
&&
(
seg
==
segment
||
(
!
segfeature_active
(
xd
,
seg
,
SEG_LVL_ALT_LF
)
||
(
!
vp9_
segfeature_active
(
xd
,
seg
,
SEG_LVL_ALT_LF
)
&&
segment
==
0
)))
{
if
(
cm
->
filter_type
==
NORMAL_LOOPFILTER
)
{
const
int
hev_index
=
...
...
@@ -576,12 +576,12 @@ void vp8_loop_filter_partial_frame
for
(
i
=
0
;
i
<
MAX_MB_SEGMENTS
;
i
++
)
{
/* Abs value */
if
(
xd
->
mb_segment_abs_delta
==
SEGMENT_ABSDATA
)
{
lvl_seg
[
i
]
=
get_segdata
(
xd
,
i
,
SEG_LVL_ALT_LF
);
lvl_seg
[
i
]
=
vp9_
get_segdata
(
xd
,
i
,
SEG_LVL_ALT_LF
);
}
/* Delta Value */
else
{
lvl_seg
[
i
]
=
default_filt_lvl
+
get_segdata
(
xd
,
i
,
SEG_LVL_ALT_LF
);
vp9_
get_segdata
(
xd
,
i
,
SEG_LVL_ALT_LF
);
lvl_seg
[
i
]
=
(
lvl_seg
[
i
]
>
0
)
?
((
lvl_seg
[
i
]
>
63
)
?
63
:
lvl_seg
[
i
])
:
0
;
}
...
...
vp8/common/pred_common.c
View file @
b066bb43
...
...
@@ -326,7 +326,7 @@ MV_REFERENCE_FRAME vp9_get_pred_ref(const VP8_COMMON *const cm,
unsigned
char
above_left_in_image
;
// Is segment coding ennabled
seg_ref_active
=
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_REF_FRAME
);
seg_ref_active
=
vp9_
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_REF_FRAME
);
// Special case treatment if segment coding is enabled.
// Dont allow prediction of a reference frame that the segment
...
...
@@ -334,7 +334,7 @@ MV_REFERENCE_FRAME vp9_get_pred_ref(const VP8_COMMON *const cm,
if
(
seg_ref_active
)
{
for
(
i
=
0
;
i
<
MAX_REF_FRAMES
;
i
++
)
{
frame_allowed
[
i
]
=
check_segref
(
xd
,
segment_id
,
i
);
vp9_
check_segref
(
xd
,
segment_id
,
i
);
// Score set to 0 if ref frame not allowed
ref_score
[
i
]
=
cm
->
ref_scores
[
i
]
*
frame_allowed
[
i
];
...
...
vp8/common/seg_common.c
View file @
b066bb43
...
...
@@ -19,77 +19,78 @@ const int vp8_seg_feature_data_bits[SEG_LVL_MAX] =
// the coding mechanism is still subject to change so these provide a
// convenient single point of change.
int
segfeature_active
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
int
vp9_
segfeature_active
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
// Return true if mask bit set and segmentation enabled.
return
(
xd
->
segmentation_enabled
&&
(
xd
->
segment_feature_mask
[
segment_id
]
&
(
0x01
<<
feature_id
)));
}
void
clearall_segfeatures
(
MACROBLOCKD
*
xd
)
{
void
vp9_
clearall_segfeatures
(
MACROBLOCKD
*
xd
)
{
vpx_memset
(
xd
->
segment_feature_data
,
0
,
sizeof
(
xd
->
segment_feature_data
));
vpx_memset
(
xd
->
segment_feature_mask
,
0
,
sizeof
(
xd
->
segment_feature_mask
));
}
void
enable_segfeature
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
void
vp9_
enable_segfeature
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
xd
->
segment_feature_mask
[
segment_id
]
|=
(
0x01
<<
feature_id
);
}
void
disable_segfeature
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
void
vp9_
disable_segfeature
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
xd
->
segment_feature_mask
[
segment_id
]
&=
~
(
1
<<
feature_id
);
}
int
seg_feature_data_bits
(
SEG_LVL_FEATURES
feature_id
)
{
int
vp9_
seg_feature_data_bits
(
SEG_LVL_FEATURES
feature_id
)
{
return
vp8_seg_feature_data_bits
[
feature_id
];
}
int
is_segfeature_signed
(
SEG_LVL_FEATURES
feature_id
)
{
int
vp9_
is_segfeature_signed
(
SEG_LVL_FEATURES
feature_id
)
{
return
(
segfeaturedata_signed
[
feature_id
]);
}
void
clear_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
void
vp9_
clear_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
xd
->
segment_feature_data
[
segment_id
][
feature_id
]
=
0
;
}
void
set_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
,
int
seg_data
)
{
void
vp9_
set_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
,
int
seg_data
)
{
xd
->
segment_feature_data
[
segment_id
][
feature_id
]
=
seg_data
;
}
int
get_segdata
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
int
vp9_
get_segdata
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
return
xd
->
segment_feature_data
[
segment_id
][
feature_id
];
}
#if CONFIG_FEATUREUPDATES
int
old_segfeature_active
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
int
vp9_
old_segfeature_active
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
// Return true if mask bit set and segmentation enabled.
return
(
xd
->
segmentation_enabled
&&
(
xd
->
old_segment_feature_mask
[
segment_id
]
&
(
0x01
<<
feature_id
)));
}
int
get_old_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
int
vp9_
get_old_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
return
xd
->
old_segment_feature_data
[
segment_id
][
feature_id
];
}
int
segfeature_changed
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
int
vp9_
segfeature_changed
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
)
{
// Return true if mask bit or data is different from last time
return
(
xd
->
segmentation_enabled
&&
...
...
@@ -102,7 +103,7 @@ int segfeature_changed(MACROBLOCKD *xd,
);
}
void
save_segment_info
(
MACROBLOCKD
*
xd
)
{
void
vp9_
save_segment_info
(
MACROBLOCKD
*
xd
)
{
int
i
,
j
;
for
(
i
=
0
;
i
<
MAX_MB_SEGMENTS
;
i
++
)
{
xd
->
old_segment_feature_mask
[
i
]
=
xd
->
segment_feature_mask
[
i
];
...
...
@@ -115,32 +116,32 @@ void save_segment_info(MACROBLOCKD *xd) {
}
}
#endif
void
clear_segref
(
MACROBLOCKD
*
xd
,
int
segment_id
)
{
void
vp9_
clear_segref
(
MACROBLOCKD
*
xd
,
int
segment_id
)
{
xd
->
segment_feature_data
[
segment_id
][
SEG_LVL_REF_FRAME
]
=
0
;
}
void
set_segref
(
MACROBLOCKD
*
xd
,
int
segment_id
,
MV_REFERENCE_FRAME
ref_frame
)
{
void
vp9_
set_segref
(
MACROBLOCKD
*
xd
,
int
segment_id
,
MV_REFERENCE_FRAME
ref_frame
)
{
xd
->
segment_feature_data
[
segment_id
][
SEG_LVL_REF_FRAME
]
|=
(
1
<<
ref_frame
);
}
int
check_segref
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
MV_REFERENCE_FRAME
ref_frame
)
{
int
vp9_
check_segref
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
MV_REFERENCE_FRAME
ref_frame
)
{
return
(
xd
->
segment_feature_data
[
segment_id
][
SEG_LVL_REF_FRAME
]
&
(
1
<<
ref_frame
))
?
1
:
0
;
}
int
check_segref_inter
(
MACROBLOCKD
*
xd
,
int
segment_id
)
{
int
vp9_
check_segref_inter
(
MACROBLOCKD
*
xd
,
int
segment_id
)
{
return
(
xd
->
segment_feature_data
[
segment_id
][
SEG_LVL_REF_FRAME
]
&
~
(
1
<<
INTRA_FRAME
))
?
1
:
0
;
}
int
get_seg_tx_type
(
MACROBLOCKD
*
xd
,
int
segment_id
)
{
if
(
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_TRANSFORM
))
return
get_segdata
(
xd
,
segment_id
,
SEG_LVL_TRANSFORM
);
int
vp9_
get_seg_tx_type
(
MACROBLOCKD
*
xd
,
int
segment_id
)
{
if
(
vp9_
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_TRANSFORM
))
return
vp9_
get_segdata
(
xd
,
segment_id
,
SEG_LVL_TRANSFORM
);
else
return
TX_4X4
;
}
...
...
vp8/common/seg_common.h
View file @
b066bb43
...
...
@@ -15,71 +15,71 @@
#ifndef __INC_SEG_COMMON_H__
#define __INC_SEG_COMMON_H__ 1
int
segfeature_active
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
int
vp9_
segfeature_active
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
void
clearall_segfeatures
(
MACROBLOCKD
*
xd
);
void
vp9_
clearall_segfeatures
(
MACROBLOCKD
*
xd
);
void
enable_segfeature
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
void
vp9_
enable_segfeature
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
void
disable_segfeature
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
void
vp9_
disable_segfeature
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
int
seg_feature_data_bits
(
SEG_LVL_FEATURES
feature_id
);
int
vp9_
seg_feature_data_bits
(
SEG_LVL_FEATURES
feature_id
);
int
is_segfeature_signed
(
SEG_LVL_FEATURES
feature_id
);
int
vp9_
is_segfeature_signed
(
SEG_LVL_FEATURES
feature_id
);
void
clear_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
void
vp9_
clear_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
void
set_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
,
int
seg_data
);
void
vp9_
set_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
,
int
seg_data
);
int
get_segdata
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
int
vp9_
get_segdata
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
#if CONFIG_FEATUREUPDATES
int
old_segfeature_active
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
int
vp9_
old_segfeature_active
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
int
get_old_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
int
vp9_
get_old_segdata
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
void
save_segment_info
(
MACROBLOCKD
*
xd
);
void
vp9_
save_segment_info
(
MACROBLOCKD
*
xd
);
int
segfeature_changed
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
int
vp9_
segfeature_changed
(
MACROBLOCKD
*
xd
,
int
segment_id
,
SEG_LVL_FEATURES
feature_id
);
#endif
void
clear_segref
(
MACROBLOCKD
*
xd
,
int
segment_id
);
void
vp9_
clear_segref
(
MACROBLOCKD
*
xd
,
int
segment_id
);
void
set_segref
(
MACROBLOCKD
*
xd
,
int
segment_id
,
MV_REFERENCE_FRAME
ref_frame
);
void
vp9_
set_segref
(
MACROBLOCKD
*
xd
,
int
segment_id
,
MV_REFERENCE_FRAME
ref_frame
);
int
check_segref
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
MV_REFERENCE_FRAME
ref_frame
);
int
vp9_
check_segref
(
const
MACROBLOCKD
*
xd
,
int
segment_id
,
MV_REFERENCE_FRAME
ref_frame
);
int
check_segref_inter
(
MACROBLOCKD
*
xd
,
int
segment_id
);
int
vp9_
check_segref_inter
(
MACROBLOCKD
*
xd
,
int
segment_id
);
int
get_seg_tx_type
(
MACROBLOCKD
*
xd
,
int
segment_id
);
int
vp9_
get_seg_tx_type
(
MACROBLOCKD
*
xd
,
int
segment_id
);
#endif
/* __INC_SEG_COMMON_H__ */
vp8/decoder/decodemv.c
View file @
b066bb43
...
...
@@ -110,18 +110,18 @@ static void kfread_modes(VP8D_COMP *pbi,
m
->
mbmi
.
mb_skip_coeff
=
0
;
if
(
pbi
->
common
.
mb_no_coeff_skip
&&
(
!
segfeature_active
(
&
pbi
->
mb
,
m
->
mbmi
.
segment_id
,
SEG_LVL_EOB
)
||
(
get_segdata
(
&
pbi
->
mb
,
m
->
mbmi
.
segment_id
,
SEG_LVL_EOB
)
!=
0
)))
{
(
!
vp9_
segfeature_active
(
&
pbi
->
mb
,
m
->
mbmi
.
segment_id
,
SEG_LVL_EOB
)
||
(
vp9_
get_segdata
(
&
pbi
->
mb
,
m
->
mbmi
.
segment_id
,
SEG_LVL_EOB
)
!=
0
)))
{
MACROBLOCKD
*
const
xd
=
&
pbi
->
mb
;
m
->
mbmi
.
mb_skip_coeff
=
vp8_read
(
bc
,
vp9_get_pred_prob
(
cm
,
xd
,
PRED_MBSKIP
));
}
else
{
if
(
segfeature_active
(
&
pbi
->
mb
,
m
->
mbmi
.
segment_id
,
SEG_LVL_EOB
)
&&
(
get_segdata
(
&
pbi
->
mb
,
m
->
mbmi
.
segment_id
,
SEG_LVL_EOB
)
==
0
))
{
if
(
vp9_
segfeature_active
(
&
pbi
->
mb
,
m
->
mbmi
.
segment_id
,
SEG_LVL_EOB
)
&&
(
vp9_
get_segdata
(
&
pbi
->
mb
,
m
->
mbmi
.
segment_id
,
SEG_LVL_EOB
)
==
0
))
{
m
->
mbmi
.
mb_skip_coeff
=
1
;
}
else
m
->
mbmi
.
mb_skip_coeff
=
0
;
...
...
@@ -363,17 +363,17 @@ static MV_REFERENCE_FRAME read_ref_frame(VP8D_COMP *pbi,
VP8_COMMON
*
const
cm
=
&
pbi
->
common
;
MACROBLOCKD
*
const
xd
=
&
pbi
->
mb
;
seg_ref_active
=
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_REF_FRAME
);
seg_ref_active
=
vp9_
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_REF_FRAME
);
// If segment coding enabled does the segment allow for more than one
// possible reference frame
if
(
seg_ref_active
)
{
seg_ref_count
=
check_segref
(
xd
,
segment_id
,
INTRA_FRAME
)
+
check_segref
(
xd
,
segment_id
,
LAST_FRAME
)
+
check_segref
(
xd
,
segment_id
,
GOLDEN_FRAME
)
+
check_segref
(
xd
,
segment_id
,
ALTREF_FRAME
);
seg_ref_count
=
vp9_
check_segref
(
xd
,
segment_id
,
INTRA_FRAME
)
+
vp9_
check_segref
(
xd
,
segment_id
,
LAST_FRAME
)
+
vp9_
check_segref
(
xd
,
segment_id
,
GOLDEN_FRAME
)
+
vp9_
check_segref
(
xd
,
segment_id
,
ALTREF_FRAME
);
}
// Segment reference frame features not available or allows for
...
...
@@ -410,12 +410,12 @@ static MV_REFERENCE_FRAME read_ref_frame(VP8D_COMP *pbi,
// setting the branch probability to 0.
if
(
seg_ref_active
)
{
mod_refprobs
[
INTRA_FRAME
]
*=
check_segref
(
xd
,
segment_id
,
INTRA_FRAME
);
vp9_
check_segref
(
xd
,
segment_id
,
INTRA_FRAME
);
mod_refprobs
[
LAST_FRAME
]
*=
check_segref
(
xd
,
segment_id
,
LAST_FRAME
);
vp9_
check_segref
(
xd
,
segment_id
,
LAST_FRAME
);
mod_refprobs
[
GOLDEN_FRAME
]
*=
(
check_segref
(
xd
,
segment_id
,
GOLDEN_FRAME
)
*
check_segref
(
xd
,
segment_id
,
ALTREF_FRAME
));
(
vp9_
check_segref
(
xd
,
segment_id
,
GOLDEN_FRAME
)
*
vp9_
check_segref
(
xd
,
segment_id
,
ALTREF_FRAME
));
}
// Default to INTRA_FRAME (value 0)
...
...
@@ -441,7 +441,7 @@ static MV_REFERENCE_FRAME read_ref_frame(VP8D_COMP *pbi,
else
{
if
(
seg_ref_active
)
{
if
((
pred_ref
==
GOLDEN_FRAME
)
||
!
check_segref
(
xd
,
segment_id
,
GOLDEN_FRAME
))
{
!
vp9_
check_segref
(
xd
,
segment_id
,
GOLDEN_FRAME
))
{
ref_frame
=
ALTREF_FRAME
;
}
else
ref_frame
=
GOLDEN_FRAME
;
...
...
@@ -689,16 +689,16 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
read_mb_segment_id
(
pbi
,
mb_row
,
mb_col
,
bc
);
if
(
pbi
->
common
.
mb_no_coeff_skip
&&
(
!
segfeature_active
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_EOB
)
||
(
get_segdata
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_EOB
)
!=
0
)))
{
(
!
vp9_
segfeature_active
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_EOB
)
||
(
vp9_
get_segdata
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_EOB
)
!=
0
)))
{
// Read the macroblock coeff skip flag if this feature is in use,
// else default to 0
mbmi
->
mb_skip_coeff
=
vp8_read
(
bc
,
vp9_get_pred_prob
(
cm
,
xd
,
PRED_MBSKIP
));
}
else
{
if
(
segfeature_active
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_EOB
)
&&
(
get_segdata
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_EOB
)
==
0
))
{
if
(
vp9_
segfeature_active
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_EOB
)
&&
(
vp9_
get_segdata
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_EOB
)
==
0
))
{
mbmi
->
mb_skip_coeff
=
1
;
}
else
mbmi
->
mb_skip_coeff
=
0
;
...
...
@@ -762,9 +762,9 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
vp8_mv_ref_probs
(
&
pbi
->
common
,
mv_ref_p
,
rct
);
// Is the segment level mode feature enabled for this segment
if
(
segfeature_active
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_MODE
))
{
if
(
vp9_
segfeature_active
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_MODE
))
{
mbmi
->
mode
=
get_segdata
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_MODE
);
vp9_
get_segdata
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_MODE
);
}
else
{
#if CONFIG_SUPERBLOCKS
if
(
mbmi
->
encoded_as_sb
)
{
...
...
@@ -1077,9 +1077,9 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
/* required for left and above block mv */
mbmi
->
mv
[
0
].
as_int
=
0
;
if
(
segfeature_active
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_MODE
))
if
(
vp9_
segfeature_active
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_MODE
))
mbmi
->
mode
=
(
MB_PREDICTION_MODE
)
get_segdata
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_MODE
);
vp9_
get_segdata
(
xd
,
mbmi
->
segment_id
,
SEG_LVL_MODE
);
else
{
// FIXME write using SB mode tree
mbmi
->
mode
=
(
MB_PREDICTION_MODE
)
...
...
vp8/decoder/decodframe.c
View file @
b066bb43
...
...
@@ -102,15 +102,15 @@ static void mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd) {
int
segment_id
=
xd
->
mode_info_context
->
mbmi
.
segment_id
;
// Set the Q baseline allowing for any segment level adjustment
if
(
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_ALT_Q
))
{
if
(
vp9_
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_ALT_Q
))
{
/* Abs Value */
if
(
xd
->
mb_segment_abs_delta
==
SEGMENT_ABSDATA
)
QIndex
=
get_segdata
(
xd
,
segment_id
,
SEG_LVL_ALT_Q
);
QIndex
=
vp9_
get_segdata
(
xd
,
segment_id
,
SEG_LVL_ALT_Q
);
/* Delta Value */
else
{
QIndex
=
pc
->
base_qindex
+
get_segdata
(
xd
,
segment_id
,
SEG_LVL_ALT_Q
);
vp9_
get_segdata
(
xd
,
segment_id
,
SEG_LVL_ALT_Q
);
QIndex
=
(
QIndex
>=
0
)
?
((
QIndex
<=
MAXQ
)
?
QIndex
:
MAXQ
)
:
0
;
/* Clamp to valid range */
}
}
else
...
...
@@ -754,7 +754,7 @@ static void init_frame(VP8D_COMP *pbi) {
// Reset the segment feature data to the default stats:
// Features disabled, 0, with delta coding (Default state).
clearall_segfeatures
(
xd
);
vp9_
clearall_segfeatures
(
xd
);
xd
->
mb_segment_abs_delta
=
SEGMENT_DELTADATA
;
...
...
@@ -1036,7 +1036,7 @@ int vp8_decode_frame(VP8D_COMP *pbi) {
xd
->
mb_segment_abs_delta
=
(
unsigned
char
)
vp8_read_bit
(
&
header_bc
);
clearall_segfeatures
(
xd
);
vp9_
clearall_segfeatures
(
xd
);
// For each segmentation...
for
(
i
=
0
;
i
<
MAX_MB_SEGMENTS
;
i
++
)
{
...
...
@@ -1048,46 +1048,46 @@ int vp8_decode_frame(VP8D_COMP *pbi) {
if
(
vp8_read_bit
(
&
header_bc
))
{
int
active
=
1
;
if
(
segfeature_active
(
xd
,
i
,
j
))
if
(
vp9_
segfeature_active
(
xd
,
i
,
j
))
active
=
vp8_read_bit
(
&
header_bc
);
// Is the feature enabled
if
(
active
)
{
// Update the feature data and mask
enable_segfeature
(
xd
,
i
,
j
);
vp9_
enable_segfeature
(
xd
,
i
,
j
);
data
=
(
signed
char
)
vp8_read_literal
(
&
header_bc
,
seg_feature_data_bits
(
j
));
&
header_bc
,
vp9_
seg_feature_data_bits
(
j
));
// Is the segment data signed..
if
(
is_segfeature_signed
(
j
))
{
if
(
vp9_
is_segfeature_signed
(
j
))
{
if
(
vp8_read_bit
(
&
header_bc
))
data
=
-
data
;
}
}
else
data
=
0
;
set_segdata
(
xd
,
i
,
j
,
data
);
vp9_
set_segdata
(
xd
,
i
,
j
,
data
);
}
#else
// Is the feature enabled
if
(
vp8_read_bit
(
&
header_bc
))
{
// Update the feature data and mask
enable_segfeature
(
xd
,
i
,
j
);
vp9_
enable_segfeature
(
xd
,
i
,
j
);
data
=
(
signed
char
)
vp8_read_literal
(
&
header_bc
,
seg_feature_data_bits
(
j
));
&
header_bc
,
vp9_
seg_feature_data_bits
(
j
));
// Is the segment data signed..
if
(
is_segfeature_signed
(
j
))
{
if
(
vp9_
is_segfeature_signed
(
j
))
{
if
(
vp8_read_bit
(
&
header_bc
))
data
=
-
data
;
}
}
else
data
=
0
;
set_segdata
(
xd
,
i
,
j
,
data
);
vp9_
set_segdata
(
xd
,
i
,
j
,
data
);
#endif
}
}
...
...
vp8/decoder/detokenize.c
View file @
b066bb43
...
...
@@ -423,14 +423,14 @@ int vp8_decode_mb_tokens_16x16(VP8D_COMP *pbi, MACROBLOCKD *xd,
PLANE_TYPE
type
;
int
c
,
i
,
eobtotal
=
0
,
seg_eob
;
const
int
segment_id
=
xd
->
mode_info_context
->
mbmi
.
segment_id
;
const
int
seg_active
=
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_EOB
);
const
int
seg_active
=
vp9_
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_EOB
);
INT16
*
qcoeff_ptr
=
&
xd
->
qcoeff
[
0
];
TX_TYPE
tx_type
=
get_tx_type
(
xd
,
&
xd
->
block
[
0
]);
type
=
PLANE_TYPE_Y_WITH_DC
;
if
(
seg_active
)
seg_eob
=
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
seg_eob
=
vp9_
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
else
seg_eob
=
256
;
...
...
@@ -453,7 +453,7 @@ int vp8_decode_mb_tokens_16x16(VP8D_COMP *pbi, MACROBLOCKD *xd,
type
=
PLANE_TYPE_UV
;
tx_type
=
DCT_DCT
;
if
(
seg_active
)
seg_eob
=
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
seg_eob
=
vp9_
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
else
seg_eob
=
64
;
for
(
i
=
16
;
i
<
24
;
i
+=
4
)
{
...
...
@@ -486,7 +486,7 @@ int vp8_decode_mb_tokens_8x8(VP8D_COMP *pbi, MACROBLOCKD *xd,
PLANE_TYPE
type
;
int
c
,
i
,
eobtotal
=
0
,
seg_eob
;
const
int
segment_id
=
xd
->
mode_info_context
->
mbmi
.
segment_id
;
const
int
seg_active
=
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_EOB
);
const
int
seg_active
=
vp9_
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_EOB
);
INT16
*
qcoeff_ptr
=
&
xd
->
qcoeff
[
0
];
TX_TYPE
tx_type
=
DCT_DCT
;
...
...
@@ -501,7 +501,7 @@ int vp8_decode_mb_tokens_8x8(VP8D_COMP *pbi, MACROBLOCKD *xd,
type
=
PLANE_TYPE_Y2
;
if
(
seg_active
)
seg_eob
=
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
seg_eob
=
vp9_
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
else
seg_eob
=
4
;
c
=
decode_coefs
(
pbi
,
xd
,
bc
,
a
,
l
,
type
,
...
...
@@ -517,7 +517,7 @@ int vp8_decode_mb_tokens_8x8(VP8D_COMP *pbi, MACROBLOCKD *xd,
type
=
PLANE_TYPE_Y_WITH_DC
;
if
(
seg_active
)
seg_eob
=
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
seg_eob
=
vp9_
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
else
seg_eob
=
64
;
...
...
@@ -583,8 +583,8 @@ int vp8_decode_mb_tokens(VP8D_COMP *dx, MACROBLOCKD *xd,
INT16
*
qcoeff_ptr
=
&
xd
->
qcoeff
[
0
];
int
segment_id
=
xd
->
mode_info_context
->
mbmi
.
segment_id
;
if
(
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_EOB
))
seg_eob
=
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
if
(
vp9_
segfeature_active
(
xd
,
segment_id
,
SEG_LVL_EOB
))
seg_eob
=
vp9_
get_segdata
(
xd
,
segment_id
,
SEG_LVL_EOB
);
if
(
xd
->
mode_info_context
->
mbmi
.
mode
!=
B_PRED
&&