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
1a3641d9
Commit
1a3641d9
authored
Aug 15, 2013
by
Paul Wilkins
Committed by
Gerrit Code Review
Aug 15, 2013
Browse files
Merge "Renaming in MB_MODE_INFO"
parents
adfc54a4
26fead7e
Changes
14
Hide whitespace changes
Inline
Side-by-side
vp9/common/vp9_alloccommon.c
View file @
1a3641d9
...
...
@@ -38,7 +38,7 @@ void vp9_update_mode_info_in_image(VP9_COMMON *cm, MODE_INFO *mi) {
for
(
i
=
0
;
i
<
cm
->
mi_rows
;
i
++
)
{
MODE_INFO
*
ptr
=
mi
;
for
(
j
=
0
;
j
<
cm
->
mi_cols
;
j
++
)
{
ptr
->
mbmi
.
mb_
in_image
=
1
;
ptr
->
mbmi
.
in_image
=
1
;
ptr
++
;
// Next element in the row
}
...
...
vp9/common/vp9_blockd.h
View file @
1a3641d9
...
...
@@ -130,26 +130,26 @@ static INLINE int mi_height_log2(BLOCK_SIZE_TYPE sb_type) {
return
mi_height_log2_lookup
[
sb_type
];
}
// This structure now relates to 8x8 block regions.
typedef
struct
{
MB_PREDICTION_MODE
mode
,
uv_mode
;
MV_REFERENCE_FRAME
ref_frame
[
2
];
TX_SIZE
txfm_size
;
int_mv
mv
[
2
];
// for each reference frame used
int_mv
mv
[
2
];
// for each reference frame used
int_mv
ref_mvs
[
MAX_REF_FRAMES
][
MAX_MV_REF_CANDIDATES
];
int_mv
best_mv
,
best_second_mv
;
uint8_t
mb_
mode_context
[
MAX_REF_FRAMES
];
uint8_t
mode_context
[
MAX_REF_FRAMES
];
unsigned
char
mb_
skip_coeff
;
/* does this mb has coefficients at all, 1=no coefficients, 0=need decode tokens */
unsigned
char
segment_id
;
// Segment id for
current frame
unsigned
char
skip_coeff
;
// 0=need to decode coeffs, 1=no coefficients
unsigned
char
segment_id
;
// Segment id for
this block.
// Flags used for prediction status of various bit-stream signals
unsigned
char
seg_id_predicted
;
// Indicates if the mb is part of the image (1) vs border (0)
// This can be useful in determining whether the MB provides
// a valid predictor
unsigned
char
mb_in_image
;
// Indicates if the block is part of the image (1) vs border (0)
// This can be useful in determining whether it provides a valid predictor
unsigned
char
in_image
;
INTERPOLATIONFILTERTYPE
interp_filter
;
...
...
vp9/common/vp9_debugmodes.c
View file @
1a3641d9
...
...
@@ -57,7 +57,7 @@ void vp9_print_modes_and_motion_vectors(VP9_COMMON *cm, char *file) {
print_mi_data
(
cm
,
mvs
,
"Partitions:"
,
offsetof
(
MB_MODE_INFO
,
sb_type
));
print_mi_data
(
cm
,
mvs
,
"Modes:"
,
offsetof
(
MB_MODE_INFO
,
mode
));
print_mi_data
(
cm
,
mvs
,
"Skips:"
,
offsetof
(
MB_MODE_INFO
,
mb_
skip_coeff
));
print_mi_data
(
cm
,
mvs
,
"Skips:"
,
offsetof
(
MB_MODE_INFO
,
skip_coeff
));
print_mi_data
(
cm
,
mvs
,
"Ref frame:"
,
offsetof
(
MB_MODE_INFO
,
ref_frame
[
0
]));
print_mi_data
(
cm
,
mvs
,
"Transform:"
,
offsetof
(
MB_MODE_INFO
,
txfm_size
));
print_mi_data
(
cm
,
mvs
,
"UV Modes:"
,
offsetof
(
MB_MODE_INFO
,
uv_mode
));
...
...
vp9/common/vp9_loopfilter.c
View file @
1a3641d9
...
...
@@ -263,7 +263,7 @@ static void filter_block_plane(VP9_COMMON *const cm,
// Determine the vertical edges that need filtering
for
(
c
=
0
;
c
<
MI_BLOCK_SIZE
&&
mi_col
+
c
<
cm
->
mi_cols
;
c
+=
col_step
)
{
const
int
skip_this
=
mi
[
c
].
mbmi
.
mb_
skip_coeff
const
int
skip_this
=
mi
[
c
].
mbmi
.
skip_coeff
&&
is_inter_block
(
&
mi
[
c
].
mbmi
);
// left edge of current unit is block/partition edge -> no skip
const
int
block_edge_left
=
b_width_log2
(
mi
[
c
].
mbmi
.
sb_type
)
?
...
...
vp9/common/vp9_mvref_common.c
View file @
1a3641d9
...
...
@@ -281,7 +281,7 @@ void vp9_find_mv_refs_idx(VP9_COMMON *cm, MACROBLOCKD *xd, MODE_INFO *here,
Done:
mbmi
->
mb_
mode_context
[
ref_frame
]
=
counter_to_context
[
context_counter
];
mbmi
->
mode_context
[
ref_frame
]
=
counter_to_context
[
context_counter
];
// Clamp vectors
for
(
idx
=
0
;
idx
<
MAX_MV_REF_CANDIDATES
;
++
idx
)
...
...
vp9/common/vp9_postproc.c
View file @
1a3641d9
...
...
@@ -737,7 +737,7 @@ int vp9_post_proc_frame(struct VP9Common *oci,
char zz[4];
int dc_diff = !(mi[mb_index].mbmi.mode != I4X4_PRED &&
mi[mb_index].mbmi.mode != SPLITMV &&
mi[mb_index].mbmi.
mb_
skip_coeff);
mi[mb_index].mbmi.skip_coeff);
if (oci->frame_type == KEY_FRAME)
sprintf(zz, "a");
...
...
vp9/common/vp9_pred_common.c
View file @
1a3641d9
...
...
@@ -21,8 +21,8 @@ unsigned char vp9_get_pred_context_switchable_interp(const MACROBLOCKD *xd) {
const
MODE_INFO
*
const
mi
=
xd
->
mode_info_context
;
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
xd
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
mb_
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
mb_
in_image
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
in_image
;
// Note:
// The mode info data structure has a one element border above and to the
// left of the entries correpsonding to real macroblocks.
...
...
@@ -56,8 +56,8 @@ unsigned char vp9_get_pred_context_intra_inter(const MACROBLOCKD *xd) {
const
MODE_INFO
*
const
mi
=
xd
->
mode_info_context
;
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
xd
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
mb_
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
mb_
in_image
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
in_image
;
const
int
left_intra
=
!
is_inter_block
(
left_mbmi
);
const
int
above_intra
=
!
is_inter_block
(
above_mbmi
);
...
...
@@ -83,8 +83,8 @@ unsigned char vp9_get_pred_context_comp_inter_inter(const VP9_COMMON *cm,
const
MODE_INFO
*
const
mi
=
xd
->
mode_info_context
;
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
cm
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
mb_
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
mb_
in_image
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
in_image
;
// Note:
// The mode info data structure has a one element border above and to the
// left of the entries correpsonding to real macroblocks.
...
...
@@ -128,8 +128,8 @@ unsigned char vp9_get_pred_context_comp_ref_p(const VP9_COMMON *cm,
const
MODE_INFO
*
const
mi
=
xd
->
mode_info_context
;
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
cm
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
mb_
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
mb_
in_image
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
in_image
;
const
int
left_intra
=
!
is_inter_block
(
left_mbmi
);
const
int
above_intra
=
!
is_inter_block
(
above_mbmi
);
...
...
@@ -206,8 +206,8 @@ unsigned char vp9_get_pred_context_single_ref_p1(const MACROBLOCKD *xd) {
const
MODE_INFO
*
const
mi
=
xd
->
mode_info_context
;
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
xd
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
mb_
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
mb_
in_image
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
in_image
;
const
int
left_intra
=
!
is_inter_block
(
left_mbmi
);
const
int
above_intra
=
!
is_inter_block
(
above_mbmi
);
...
...
@@ -271,8 +271,8 @@ unsigned char vp9_get_pred_context_single_ref_p2(const MACROBLOCKD *xd) {
const
MODE_INFO
*
const
mi
=
xd
->
mode_info_context
;
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
xd
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
mb_
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
mb_
in_image
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
in_image
;
const
int
left_intra
=
!
is_inter_block
(
left_mbmi
);
const
int
above_intra
=
!
is_inter_block
(
above_mbmi
);
...
...
@@ -361,18 +361,18 @@ unsigned char vp9_get_pred_context_tx_size(const MACROBLOCKD *xd) {
const
MODE_INFO
*
const
mi
=
xd
->
mode_info_context
;
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
xd
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
mb_
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
mb_
in_image
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
in_image
;
const
int
max_tx_size
=
max_txsize_lookup
[
mi
->
mbmi
.
sb_type
];
int
above_context
=
max_tx_size
;
int
left_context
=
max_tx_size
;
if
(
above_in_image
)
above_context
=
above_mbmi
->
mb_
skip_coeff
?
max_tx_size
above_context
=
above_mbmi
->
skip_coeff
?
max_tx_size
:
above_mbmi
->
txfm_size
;
if
(
left_in_image
)
left_context
=
left_mbmi
->
mb_
skip_coeff
?
max_tx_size
left_context
=
left_mbmi
->
skip_coeff
?
max_tx_size
:
left_mbmi
->
txfm_size
;
if
(
!
left_in_image
)
...
...
@@ -409,7 +409,7 @@ void vp9_set_pred_flag_mbskip(VP9_COMMON *cm, BLOCK_SIZE_TYPE bsize,
for
(
y
=
0
;
y
<
ymis
;
y
++
)
for
(
x
=
0
;
x
<
xmis
;
x
++
)
mi
[
y
*
cm
->
mode_info_stride
+
x
].
mbmi
.
mb_
skip_coeff
=
pred_flag
;
mi
[
y
*
cm
->
mode_info_stride
+
x
].
mbmi
.
skip_coeff
=
pred_flag
;
}
int
vp9_get_segment_id
(
VP9_COMMON
*
cm
,
const
uint8_t
*
segment_ids
,
...
...
vp9/common/vp9_pred_common.h
View file @
1a3641d9
...
...
@@ -39,8 +39,8 @@ static INLINE int vp9_get_pred_context_mbskip(const MACROBLOCKD *xd) {
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
xd
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
return
above_mbmi
->
mb_
skip_coeff
+
(
xd
->
left_available
?
left_mbmi
->
mb_
skip_coeff
:
0
);
return
above_mbmi
->
skip_coeff
+
(
xd
->
left_available
?
left_mbmi
->
skip_coeff
:
0
);
}
static
INLINE
vp9_prob
vp9_get_pred_prob_mbskip
(
const
VP9_COMMON
*
cm
,
...
...
@@ -49,7 +49,7 @@ static INLINE vp9_prob vp9_get_pred_prob_mbskip(const VP9_COMMON *cm,
}
static
INLINE
unsigned
char
vp9_get_pred_flag_mbskip
(
const
MACROBLOCKD
*
xd
)
{
return
xd
->
mode_info_context
->
mbmi
.
mb_
skip_coeff
;
return
xd
->
mode_info_context
->
mbmi
.
skip_coeff
;
}
void
vp9_set_pred_flag_mbskip
(
VP9_COMMON
*
cm
,
BLOCK_SIZE_TYPE
bsize
,
...
...
vp9/decoder/vp9_decodemv.c
View file @
1a3641d9
...
...
@@ -159,7 +159,7 @@ static void read_intra_frame_mode_info(VP9D_COMP *pbi, MODE_INFO *m,
const
int
mis
=
cm
->
mode_info_stride
;
mbmi
->
segment_id
=
read_intra_segment_id
(
pbi
,
mi_row
,
mi_col
,
r
);
mbmi
->
mb_
skip_coeff
=
read_skip_coeff
(
pbi
,
mbmi
->
segment_id
,
r
);
mbmi
->
skip_coeff
=
read_skip_coeff
(
pbi
,
mbmi
->
segment_id
,
r
);
mbmi
->
txfm_size
=
read_tx_size
(
pbi
,
cm
->
tx_mode
,
bsize
,
1
,
r
);
mbmi
->
ref_frame
[
0
]
=
INTRA_FRAME
;
mbmi
->
ref_frame
[
1
]
=
NONE
;
...
...
@@ -457,7 +457,7 @@ static void read_inter_block_mode_info(VP9D_COMP *pbi, MODE_INFO *mi,
ref0
,
mbmi
->
ref_mvs
[
ref0
],
cm
->
ref_frame_sign_bias
,
mi_row
,
mi_col
);
inter_mode_ctx
=
mbmi
->
mb_
mode_context
[
ref0
];
inter_mode_ctx
=
mbmi
->
mode_context
[
ref0
];
if
(
vp9_segfeature_active
(
&
xd
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
))
mbmi
->
mode
=
ZEROMV
;
...
...
@@ -598,10 +598,10 @@ static void read_inter_frame_mode_info(VP9D_COMP *pbi, MODE_INFO *mi,
mbmi
->
mv
[
0
].
as_int
=
0
;
mbmi
->
mv
[
1
].
as_int
=
0
;
mbmi
->
segment_id
=
read_inter_segment_id
(
pbi
,
mi_row
,
mi_col
,
r
);
mbmi
->
mb_
skip_coeff
=
read_skip_coeff
(
pbi
,
mbmi
->
segment_id
,
r
);
mbmi
->
skip_coeff
=
read_skip_coeff
(
pbi
,
mbmi
->
segment_id
,
r
);
inter_block
=
read_is_inter_block
(
pbi
,
mbmi
->
segment_id
,
r
);
mbmi
->
txfm_size
=
read_tx_size
(
pbi
,
cm
->
tx_mode
,
mbmi
->
sb_type
,
!
mbmi
->
mb_
skip_coeff
||
!
inter_block
,
r
);
!
mbmi
->
skip_coeff
||
!
inter_block
,
r
);
if
(
inter_block
)
read_inter_block_mode_info
(
pbi
,
mi
,
mi_row
,
mi_col
,
r
);
...
...
vp9/decoder/vp9_decodframe.c
View file @
1a3641d9
...
...
@@ -160,7 +160,7 @@ static void decode_block_intra(int plane, int block, BLOCK_SIZE_TYPE bsize,
dst
,
pd
->
dst
.
stride
);
// Early exit if there are no coefficients
if
(
mi
->
mbmi
.
mb_
skip_coeff
)
if
(
mi
->
mbmi
.
skip_coeff
)
return
;
decode_block
(
plane
,
block
,
bsize
,
ss_txfrm_size
,
arg
);
...
...
@@ -169,7 +169,7 @@ static void decode_block_intra(int plane, int block, BLOCK_SIZE_TYPE bsize,
static
int
decode_tokens
(
VP9D_COMP
*
pbi
,
BLOCK_SIZE_TYPE
bsize
,
vp9_reader
*
r
)
{
MACROBLOCKD
*
const
xd
=
&
pbi
->
mb
;
if
(
xd
->
mode_info_context
->
mbmi
.
mb_
skip_coeff
)
{
if
(
xd
->
mode_info_context
->
mbmi
.
skip_coeff
)
{
reset_skip_context
(
xd
,
bsize
);
return
-
1
;
}
else
{
...
...
vp9/encoder/vp9_bitstream.c
View file @
1a3641d9
...
...
@@ -216,7 +216,7 @@ static int write_skip_coeff(const VP9_COMP *cpi, int segment_id, MODE_INFO *m,
if
(
vp9_segfeature_active
(
&
xd
->
seg
,
segment_id
,
SEG_LVL_SKIP
))
{
return
1
;
}
else
{
const
int
skip_coeff
=
m
->
mbmi
.
mb_
skip_coeff
;
const
int
skip_coeff
=
m
->
mbmi
.
skip_coeff
;
vp9_write
(
w
,
skip_coeff
,
vp9_get_pred_prob_mbskip
(
&
cpi
->
common
,
xd
));
return
skip_coeff
;
}
...
...
@@ -462,7 +462,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) {
}
else
{
vp9_prob
*
mv_ref_p
;
encode_ref_frame
(
cpi
,
bc
);
mv_ref_p
=
cpi
->
common
.
fc
.
inter_mode_probs
[
mi
->
mb_
mode_context
[
rf
]];
mv_ref_p
=
cpi
->
common
.
fc
.
inter_mode_probs
[
mi
->
mode_context
[
rf
]];
#ifdef ENTROPY_STATS
active_section
=
3
;
...
...
@@ -472,7 +472,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) {
if
(
!
vp9_segfeature_active
(
seg
,
segment_id
,
SEG_LVL_SKIP
))
{
if
(
bsize
>=
BLOCK_8X8
)
{
write_sb_mv_ref
(
bc
,
mode
,
mv_ref_p
);
++
pc
->
counts
.
inter_mode
[
mi
->
mb_
mode_context
[
rf
]]
++
pc
->
counts
.
inter_mode
[
mi
->
mode_context
[
rf
]]
[
inter_mode_offset
(
mode
)];
}
}
...
...
@@ -499,7 +499,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) {
blockmode
=
x
->
partition_info
->
bmi
[
j
].
mode
;
blockmv
=
m
->
bmi
[
j
].
as_mv
[
0
];
write_sb_mv_ref
(
bc
,
blockmode
,
mv_ref_p
);
++
pc
->
counts
.
inter_mode
[
mi
->
mb_
mode_context
[
rf
]]
++
pc
->
counts
.
inter_mode
[
mi
->
mode_context
[
rf
]]
[
inter_mode_offset
(
blockmode
)];
if
(
blockmode
==
NEWMV
)
{
...
...
vp9/encoder/vp9_encodeframe.c
View file @
1a3641d9
...
...
@@ -1467,8 +1467,8 @@ static void rd_auto_partition_range(VP9_COMP *cpi,
const
MODE_INFO
*
const
mi
=
xd
->
mode_info_context
;
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
xd
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
mb_
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
mb_
in_image
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
in_image
;
// Frequency check
if
(
cpi
->
sf
.
auto_min_max_partition_count
<=
0
)
{
...
...
@@ -2180,7 +2180,7 @@ static int get_skip_flag(MODE_INFO *mi, int mis, int ymbs, int xmbs) {
for
(
y
=
0
;
y
<
ymbs
;
y
++
)
{
for
(
x
=
0
;
x
<
xmbs
;
x
++
)
{
if
(
!
mi
[
y
*
mis
+
x
].
mbmi
.
mb_
skip_coeff
)
if
(
!
mi
[
y
*
mis
+
x
].
mbmi
.
skip_coeff
)
return
0
;
}
}
...
...
@@ -2624,10 +2624,10 @@ static void encode_superblock(VP9_COMP *cpi, TOKENEXTRA **t, int output_enabled,
vp9_encode_sb
(
cm
,
x
,
MAX
(
bsize
,
BLOCK_8X8
));
vp9_tokenize_sb
(
cpi
,
t
,
!
output_enabled
,
MAX
(
bsize
,
BLOCK_8X8
));
}
else
{
int
mb_skip_context
=
xd
->
left_available
?
(
mi
-
1
)
->
mbmi
.
mb_
skip_coeff
:
0
;
mb_skip_context
+=
(
mi
-
mis
)
->
mbmi
.
mb_
skip_coeff
;
int
mb_skip_context
=
xd
->
left_available
?
(
mi
-
1
)
->
mbmi
.
skip_coeff
:
0
;
mb_skip_context
+=
(
mi
-
mis
)
->
mbmi
.
skip_coeff
;
mbmi
->
mb_
skip_coeff
=
1
;
mbmi
->
skip_coeff
=
1
;
if
(
output_enabled
)
cm
->
counts
.
mbskip
[
mb_skip_context
][
1
]
++
;
reset_skip_context
(
xd
,
MAX
(
bsize
,
BLOCK_8X8
));
...
...
@@ -2635,13 +2635,13 @@ static void encode_superblock(VP9_COMP *cpi, TOKENEXTRA **t, int output_enabled,
// copy skip flag on all mb_mode_info contexts in this SB
// if this was a skip at this txfm size
vp9_set_pred_flag_mbskip
(
cm
,
bsize
,
mi_row
,
mi_col
,
mi
->
mbmi
.
mb_
skip_coeff
);
vp9_set_pred_flag_mbskip
(
cm
,
bsize
,
mi_row
,
mi_col
,
mi
->
mbmi
.
skip_coeff
);
if
(
output_enabled
)
{
if
(
cm
->
tx_mode
==
TX_MODE_SELECT
&&
mbmi
->
sb_type
>=
BLOCK_8X8
&&
!
(
is_inter_block
(
mbmi
)
&&
(
mbmi
->
mb_
skip_coeff
||
(
mbmi
->
skip_coeff
||
vp9_segfeature_active
(
&
xd
->
seg
,
segment_id
,
SEG_LVL_SKIP
))))
{
const
uint8_t
context
=
vp9_get_pred_context_tx_size
(
xd
);
update_tx_counts
(
bsize
,
context
,
mbmi
->
txfm_size
,
&
cm
->
counts
.
tx
);
...
...
vp9/encoder/vp9_rdopt.c
View file @
1a3641d9
...
...
@@ -1558,7 +1558,7 @@ static int labels2mode(MACROBLOCK *x, int i,
}
cost
=
cost_mv_ref
(
cpi
,
this_mode
,
mbmi
->
mb_
mode_context
[
mbmi
->
ref_frame
[
0
]]);
mbmi
->
mode_context
[
mbmi
->
ref_frame
[
0
]]);
mic
->
bmi
[
i
].
as_mv
[
0
].
as_int
=
this_mv
->
as_int
;
if
(
mbmi
->
ref_frame
[
1
]
>
0
)
...
...
@@ -1791,7 +1791,7 @@ static void rd_check_segment_txsize(VP9_COMP *cpi, MACROBLOCK *x,
frame_mv
[
this_mode
][
mbmi
->
ref_frame
[
0
]].
as_int
==
0
&&
(
mbmi
->
ref_frame
[
1
]
<=
0
||
frame_mv
[
this_mode
][
mbmi
->
ref_frame
[
1
]].
as_int
==
0
))
{
int
rfc
=
mbmi
->
mb_
mode_context
[
mbmi
->
ref_frame
[
0
]];
int
rfc
=
mbmi
->
mode_context
[
mbmi
->
ref_frame
[
0
]];
int
c1
=
cost_mv_ref
(
cpi
,
NEARMV
,
rfc
);
int
c2
=
cost_mv_ref
(
cpi
,
NEARESTMV
,
rfc
);
int
c3
=
cost_mv_ref
(
cpi
,
ZEROMV
,
rfc
);
...
...
@@ -2747,7 +2747,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
frame_mv
[
refs
[
0
]].
as_int
==
0
&&
!
vp9_segfeature_active
(
&
xd
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
)
&&
(
num_refs
==
1
||
frame_mv
[
refs
[
1
]].
as_int
==
0
))
{
int
rfc
=
mbmi
->
mb_
mode_context
[
mbmi
->
ref_frame
[
0
]];
int
rfc
=
mbmi
->
mode_context
[
mbmi
->
ref_frame
[
0
]];
int
c1
=
cost_mv_ref
(
cpi
,
NEARMV
,
rfc
);
int
c2
=
cost_mv_ref
(
cpi
,
NEARESTMV
,
rfc
);
int
c3
=
cost_mv_ref
(
cpi
,
ZEROMV
,
rfc
);
...
...
@@ -2804,7 +2804,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
* words if you present them in that order, the second one is always known
* if the first is known */
*
rate2
+=
cost_mv_ref
(
cpi
,
this_mode
,
mbmi
->
mb_
mode_context
[
mbmi
->
ref_frame
[
0
]]);
mbmi
->
mode_context
[
mbmi
->
ref_frame
[
0
]]);
if
(
!
(
*
mode_excluded
))
{
if
(
is_comp_pred
)
{
...
...
vp9/encoder/vp9_tokenize.c
View file @
1a3641d9
...
...
@@ -278,8 +278,8 @@ void vp9_tokenize_sb(VP9_COMP *cpi, TOKENEXTRA **t, int dry_run,
SEG_LVL_SKIP
);
struct
tokenize_b_args
arg
=
{
cpi
,
xd
,
t
,
mbmi
->
txfm_size
};
mbmi
->
mb_
skip_coeff
=
vp9_sb_is_skippable
(
xd
,
bsize
);
if
(
mbmi
->
mb_
skip_coeff
)
{
mbmi
->
skip_coeff
=
vp9_sb_is_skippable
(
xd
,
bsize
);
if
(
mbmi
->
skip_coeff
)
{
if
(
!
dry_run
)
cm
->
counts
.
mbskip
[
mb_skip_context
][
1
]
+=
skip_inc
;
reset_skip_context
(
xd
,
bsize
);
...
...
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