]> granicus.if.org Git - libvpx/commitdiff
Reset x->skip for each iteration in the RD loop.
authorRonald S. Bultje <rbultje@google.com>
Mon, 14 Jan 2013 20:43:12 +0000 (12:43 -0800)
committerRonald S. Bultje <rbultje@google.com>
Mon, 14 Jan 2013 20:44:32 +0000 (12:44 -0800)
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

vp9/encoder/vp9_rdopt.c

index a82670b6e293c40116df453b3f6a5047fdb2ce12..b73095863ae7b321e6daa97cfccc11b63aa6c320 100644 (file)
@@ -3765,8 +3765,6 @@ static void rd_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
 
   *returnintra = LLONG_MAX;
 
-  x->skip = 0;
-
   mbmi->ref_frame = INTRA_FRAME;
 
   /* Initialize zbin mode boost for uv costing */
@@ -3809,6 +3807,8 @@ static void rd_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
     rate_y = 0;
     rate_uv = 0;
 
+    x->skip = 0;
+
     this_mode = vp9_mode_order[mode_index].mode;
     mbmi->mode = this_mode;
     mbmi->uv_mode = DC_PRED;