ref: 3c8e04e93928b978dc6df84cf0f77939d7a2e64b
parent: 623279169a5bd9b9dbc4467c8636bf5923c52fc2
parent: a5d930e46429dc5648309d2fc0ec7b1acf0f1267
author: Ronald S. Bultje <[email protected]>
date: Wed Sep 16 16:55:14 EDT 2015
Merge "vp10: don't reset contextual skip flag if block has no coefficients."
--- a/vp10/common/blockd.h
+++ b/vp10/common/blockd.h
@@ -70,6 +70,9 @@
PREDICTION_MODE mode;
TX_SIZE tx_size;
int8_t skip;
+#if CONFIG_MISC_FIXES
+ int8_t has_no_coeffs;
+#endif
int8_t segment_id;
int8_t seg_id_predicted; // valid only when temporal_update is enabled
--- a/vp10/common/loopfilter.c
+++ b/vp10/common/loopfilter.c
@@ -754,8 +754,13 @@
// If the block has no coefficients and is not intra we skip applying
// the loop filter on block edges.
+#if CONFIG_MISC_FIXES
+ if ((mbmi->skip || mbmi->has_no_coeffs) && is_inter_block(mbmi))
+ return;
+#else
if (mbmi->skip && is_inter_block(mbmi))
return;
+#endif
// Here we are adding a mask for the transform size. The transform
// size mask is set to be correct for a 64x64 prediction block size. We
@@ -812,8 +817,13 @@
*above_y |= above_prediction_mask[block_size] << shift_y;
*left_y |= left_prediction_mask[block_size] << shift_y;
+#if CONFIG_MISC_FIXES
+ if ((mbmi->skip || mbmi->has_no_coeffs) && is_inter_block(mbmi))
+ return;
+#else
if (mbmi->skip && is_inter_block(mbmi))
return;
+#endif
*above_y |= (size_mask[block_size] &
above_64x64_txform_mask[tx_size_y]) << shift_y;
--- a/vp10/decoder/decodeframe.c
+++ b/vp10/decoder/decodeframe.c
@@ -858,7 +858,11 @@
}
if (!less8x8 && eobtotal == 0)
+#if CONFIG_MISC_FIXES
+ mbmi->has_no_coeffs = 1; // skip loopfilter
+#else
mbmi->skip = 1; // skip loopfilter
+#endif
}
}