Implied skip is 0 for intra blocks
Skip flag is removed from the bitstream for all blocks coded in intra mode. Very minor coding gain in derf and stdhd sets (0.048 and 0.1) Change-Id: I79f03300f16d6fa84ce54405cafecab8a021cd7d
This commit is contained in:
parent
b71176b477
commit
ec1e91847c
1
configure
vendored
1
configure
vendored
@ -300,6 +300,7 @@ EXPERIMENT_LIST="
|
||||
new_inter
|
||||
bitstream_fixes
|
||||
newmvref
|
||||
misc_entropy
|
||||
"
|
||||
CONFIG_LIST="
|
||||
external_build
|
||||
|
@ -196,11 +196,19 @@ static int read_inter_segment_id(VP9_COMMON *const cm, MACROBLOCKD *const xd,
|
||||
set_segment_id(cm, bsize, mi_row, mi_col, segment_id);
|
||||
return segment_id;
|
||||
}
|
||||
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
static int read_skip(VP9_COMMON *cm, const MACROBLOCKD *xd,
|
||||
int segment_id, vp9_reader *r) {
|
||||
int segment_id, int is_inter, vp9_reader *r) {
|
||||
#else
|
||||
static int read_skip(VP9_COMMON *cm, const MACROBLOCKD *xd,
|
||||
int segment_id, vp9_reader *r) {
|
||||
#endif
|
||||
if (vp9_segfeature_active(&cm->seg, segment_id, SEG_LVL_SKIP)) {
|
||||
return 1;
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
} else if (!is_inter) {
|
||||
return 0;
|
||||
#endif
|
||||
} else {
|
||||
const int ctx = vp9_get_skip_context(xd);
|
||||
const int skip = vp9_read(r, cm->fc.skip_probs[ctx]);
|
||||
@ -260,7 +268,11 @@ static void read_intra_frame_mode_info(VP9_COMMON *const cm,
|
||||
#endif // CONFIG_INTRABC
|
||||
|
||||
mbmi->segment_id = read_intra_segment_id(cm, xd, mi_row, mi_col, r);
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
mbmi->skip = 0;
|
||||
#else
|
||||
mbmi->skip = read_skip(cm, xd, mbmi->segment_id, r);
|
||||
#endif
|
||||
#if CONFIG_PALETTE
|
||||
if (bsize >= BLOCK_8X8 && cm->allow_palette_mode) {
|
||||
int palette_ctx = 0;
|
||||
@ -1344,11 +1356,16 @@ static void read_inter_frame_mode_info(VP9_COMMON *const cm,
|
||||
#if CONFIG_SUPERTX
|
||||
if (!supertx_enabled) {
|
||||
#endif
|
||||
#if !CONFIG_MISC_ENTROPY
|
||||
mbmi->skip = read_skip(cm, xd, mbmi->segment_id, r);
|
||||
#endif
|
||||
#if CONFIG_COPY_MODE
|
||||
if (mbmi->copy_mode == NOREF)
|
||||
#endif
|
||||
inter_block = read_is_inter_block(cm, xd, mbmi->segment_id, r);
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
mbmi->skip = read_skip(cm, xd, mbmi->segment_id, inter_block, r);
|
||||
#endif
|
||||
|
||||
#if CONFIG_PALETTE
|
||||
mbmi->palette_enabled[0] = 0;
|
||||
|
@ -190,11 +190,20 @@ static void write_selected_tx_size(const VP9_COMMON *cm,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
static int write_skip(const VP9_COMMON *cm, const MACROBLOCKD *xd,
|
||||
int segment_id, const MODE_INFO *mi, vp9_writer *w) {
|
||||
int segment_id, const MODE_INFO *mi, int is_inter,
|
||||
vp9_writer *w) {
|
||||
#else
|
||||
static int write_skip(const VP9_COMMON *cm, const MACROBLOCKD *xd,
|
||||
int segment_id, const MODE_INFO *mi, vp9_writer *w) {
|
||||
#endif
|
||||
if (vp9_segfeature_active(&cm->seg, segment_id, SEG_LVL_SKIP)) {
|
||||
return 1;
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
} else if (!is_inter && cm->frame_type == INTER_FRAME) {
|
||||
return 0;
|
||||
#endif
|
||||
} else {
|
||||
const int skip = mi->mbmi.skip;
|
||||
vp9_write(w, skip, vp9_get_skip_prob(cm, xd));
|
||||
@ -454,14 +463,16 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, const MODE_INFO *mi,
|
||||
write_segment_id(w, seg, segment_id);
|
||||
}
|
||||
}
|
||||
|
||||
#if CONFIG_SUPERTX
|
||||
if (supertx_enabled)
|
||||
skip = mbmi->skip;
|
||||
else
|
||||
skip = write_skip(cm, xd, segment_id, mi, w);
|
||||
#else
|
||||
#if !CONFIG_MISC_ENTROPY
|
||||
skip = write_skip(cm, xd, segment_id, mi, w);
|
||||
#endif
|
||||
|
||||
#endif // CONFIG_SUPERTX
|
||||
|
||||
#if CONFIG_SUPERTX
|
||||
@ -476,6 +487,10 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, const MODE_INFO *mi,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
skip = write_skip(cm, xd, segment_id, mi, is_inter, w);
|
||||
#endif
|
||||
|
||||
#if CONFIG_PALETTE
|
||||
if (!is_inter && bsize >= BLOCK_8X8 && cm->allow_palette_mode) {
|
||||
int n, i, j, k, rows, cols, palette_ctx, color_ctx;
|
||||
@ -862,9 +877,9 @@ static void write_mb_modes_kf(const VP9_COMMON *cm,
|
||||
|
||||
if (seg->update_map)
|
||||
write_segment_id(w, seg, mbmi->segment_id);
|
||||
|
||||
#if !CONFIG_MISC_ENTROPY
|
||||
write_skip(cm, xd, mbmi->segment_id, mi, w);
|
||||
|
||||
#endif
|
||||
#if CONFIG_PALETTE
|
||||
if (bsize >= BLOCK_8X8 && cm->allow_palette_mode) {
|
||||
int n, m1, m2, i, j, k, rows, cols, palette_ctx, color_ctx;
|
||||
|
@ -5185,7 +5185,11 @@ static void encode_superblock(VP9_COMP *cpi, TOKENEXTRA **t, int output_enabled,
|
||||
#endif // CONFIG_INTRABC
|
||||
) {
|
||||
int plane;
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
mbmi->skip = 0;
|
||||
#else
|
||||
mbmi->skip = 1;
|
||||
#endif
|
||||
for (plane = 0; plane < MAX_MB_PLANE; ++plane)
|
||||
vp9_encode_intra_block_plane(x, MAX(bsize, BLOCK_8X8), plane);
|
||||
if (output_enabled)
|
||||
|
@ -530,6 +530,9 @@ void vp9_tokenize_sb(VP9_COMP *cpi, TOKENEXTRA **t, int dry_run,
|
||||
struct tokenize_b_args arg = {cpi, xd, t};
|
||||
if (mbmi->skip) {
|
||||
if (!dry_run)
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
if (is_inter_block(mbmi))
|
||||
#endif
|
||||
cm->counts.skip[ctx][1] += skip_inc;
|
||||
reset_skip_context(xd, bsize);
|
||||
if (dry_run)
|
||||
@ -538,6 +541,9 @@ void vp9_tokenize_sb(VP9_COMP *cpi, TOKENEXTRA **t, int dry_run,
|
||||
}
|
||||
|
||||
if (!dry_run) {
|
||||
#if CONFIG_MISC_ENTROPY
|
||||
if (is_inter_block(mbmi))
|
||||
#endif
|
||||
cm->counts.skip[ctx][0] += skip_inc;
|
||||
#if CONFIG_TX_SKIP
|
||||
if (mbmi->tx_skip[0] && FOR_SCREEN_CONTENT)
|
||||
|
Loading…
x
Reference in New Issue
Block a user