diff --git a/vp8/encoder/bitstream.c b/vp8/encoder/bitstream.c
index cc8f4395c6bf4be9a759a2d04a41eb09150ceaa0..7ab6dc906a9f9a089ae36621084c6465a161c579 100644
--- a/vp8/encoder/bitstream.c
+++ b/vp8/encoder/bitstream.c
@@ -539,7 +539,7 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
     {
         int total_mbs = pc->mb_rows * pc->mb_cols;
 
-        prob_skip_false = (total_mbs - cpi->skip_true_count ) * 256 / total_mbs;
+        prob_skip_false = (total_mbs - cpi->mb.skip_true_count ) * 256 / total_mbs;
 
         if (prob_skip_false <= 1)
             prob_skip_false = 1;
@@ -730,7 +730,7 @@ static void write_kfmodes(VP8_COMP *cpi)
     {
         int total_mbs = c->mb_rows * c->mb_cols;
 
-        prob_skip_false = (total_mbs - cpi->skip_true_count ) * 256 / total_mbs;
+        prob_skip_false = (total_mbs - cpi->mb.skip_true_count ) * 256 / total_mbs;
 
         if (prob_skip_false <= 1)
             prob_skip_false = 1;
diff --git a/vp8/encoder/block.h b/vp8/encoder/block.h
index ec316ea81e92e6d85a13f9362fe0ec4b3486d2c7..e6228ec645945425fa3abe0daee1864c9ab6e881 100644
--- a/vp8/encoder/block.h
+++ b/vp8/encoder/block.h
@@ -127,6 +127,7 @@ typedef struct macroblock
     unsigned char need_to_clamp_best_mvs;
 #endif
 
+    int skip_true_count;
     unsigned int coef_counts [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [MAX_ENTROPY_TOKENS];
 
 
diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c
index e3e7d9dfac0e63acfbcffa1d245d7b0e3602db85..d580d89c3c5775bd1ddc42920e3b78d1f2919c94 100644
--- a/vp8/encoder/encodeframe.c
+++ b/vp8/encoder/encodeframe.c
@@ -751,7 +751,7 @@ void vp8_encode_frame(VP8_COMP *cpi)
 
     cpi->prediction_error = 0;
     cpi->intra_error = 0;
-    cpi->skip_true_count = 0;
+    cpi->mb.skip_true_count = 0;
     cpi->tok_count = 0;
 
 #if 0
@@ -869,6 +869,8 @@ void vp8_encode_frame(VP8_COMP *cpi)
             {
                 totalrate += cpi->mb_row_ei[i].totalrate;
 
+                cpi->mb.skip_true_count += cpi->mb_row_ei[i].mb.skip_true_count;
+
                 /* add up counts for each thread */
                 sum_coef_counts(x, &cpi->mb_row_ei[i].mb);
             }
@@ -1356,7 +1358,7 @@ int vp8cx_encode_inter_macroblock
 
         if (cpi->common.mb_no_coeff_skip)
         {
-            cpi->skip_true_count ++;
+            x->skip_true_count ++;
             vp8_fix_contexts(xd);
         }
         else
diff --git a/vp8/encoder/ethreading.c b/vp8/encoder/ethreading.c
index fc472486f3038e46ce92ad4c0995b5b615f9bf06..9b7805e50b6167c136252c4eab4e94ff4eea095f 100644
--- a/vp8/encoder/ethreading.c
+++ b/vp8/encoder/ethreading.c
@@ -473,6 +473,7 @@ void vp8cx_init_mbrthread_data(VP8_COMP *cpi,
             mbd->fullpixel_mask = 0xfffffff8;
 
         vp8_zero(mb->coef_counts);
+        mb->skip_true_count = 0;
     }
 }
 
diff --git a/vp8/encoder/onyx_int.h b/vp8/encoder/onyx_int.h
index 72d96b533c0fd37b0d689d01e8ea78480a6829a2..7cea725082997d34e91e33932fbd73679b426571 100644
--- a/vp8/encoder/onyx_int.h
+++ b/vp8/encoder/onyx_int.h
@@ -518,7 +518,6 @@ typedef struct VP8_COMP
     int lf_zeromv_pct;
     int gf_bad_count;
     int gf_update_recommended;
-    int skip_true_count;
 
     unsigned char *segmentation_map;
     signed char segment_feature_data[MB_LVL_MAX][MAX_MB_SEGMENTS];
diff --git a/vp8/encoder/tokenize.c b/vp8/encoder/tokenize.c
index 90463ef522ca635f564c582010f290b57f337da2..3b5268b6135934a125a14c72f8fd489eef9a2510 100644
--- a/vp8/encoder/tokenize.c
+++ b/vp8/encoder/tokenize.c
@@ -396,7 +396,7 @@ void vp8_tokenize_mb(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t)
         else
         {
             vp8_fix_contexts(xd);
-            cpi->skip_true_count++;
+            x->skip_true_count++;
         }
 
         return;