shithub: libvpx

Download patch

ref: 290b83ab627365ac697b477a8d0cfa8cbf6b90db
parent: 76ac5b39375203ebc0111a5907abea40678fedf0
author: Ronald S. Bultje <rbultje@google.com>
date: Mon Jan 14 07:43:12 EST 2013

Reset x->skip for each iteration in the RD loop.

This prevents ill-defined behaviour, such as setting x->skip for a mode
that is excluded because of frame-level flags (e.g. filter selection,
compound prediction selection), then not breaking out of the RD loop
because the mode is not allowed, but keeping the flag on. Whatever mode
is iterated through next in the RD loop will then carry this flag, and
all sort of bad stuff happens, such as x->skip being set on intra pred
modes.

Change-Id: I5bec46b36e38292174acb1c564b3caf00a9b4b9a

--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -3765,8 +3765,6 @@
 
   *returnintra = LLONG_MAX;
 
-  x->skip = 0;
-
   mbmi->ref_frame = INTRA_FRAME;
 
   /* Initialize zbin mode boost for uv costing */
@@ -3808,6 +3806,8 @@
     distortion2 = 0;
     rate_y = 0;
     rate_uv = 0;
+
+    x->skip = 0;
 
     this_mode = vp9_mode_order[mode_index].mode;
     mbmi->mode = this_mode;