Merge "vp10: don't reset contextual skip flag if block has no coefficients."
diff --git a/vp10/common/blockd.h b/vp10/common/blockd.h
index 3e455cb..db49d97 100644
--- 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
diff --git a/vp10/common/loopfilter.c b/vp10/common/loopfilter.c
index 1b1f67d..1b89ed5 100644
--- 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;
diff --git a/vp10/decoder/decodeframe.c b/vp10/decoder/decodeframe.c
index b4c8841..d6a4e6f 100644
--- 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
}
}