]> granicus.if.org Git - libvpx/commitdiff
Moving mbs_tested_so_far, mode_test_hit_counts to macroblock struct
authorScott LaVarnway <slavarnway@google.com>
Wed, 5 Dec 2012 00:52:47 +0000 (16:52 -0800)
committerScott LaVarnway <slavarnway@google.com>
Wed, 5 Dec 2012 00:52:47 +0000 (16:52 -0800)
Change-Id: Ifa78c0a953fab3e5dd7af0446924846c7022cd09

vp8/encoder/block.h
vp8/encoder/ethreading.c
vp8/encoder/onyx_if.c
vp8/encoder/onyx_int.h
vp8/encoder/pickinter.c
vp8/encoder/rdopt.c

index f70498150fd9b462aa6e233d28302b16ede70635..54311091a588d08e8e0e93a505b12451d4df1da5 100644 (file)
@@ -140,6 +140,8 @@ typedef struct macroblock
 
     int rd_thresh_mult[MAX_MODES];
     int rd_threshes[MAX_MODES];
+    unsigned int mbs_tested_so_far;
+    unsigned int mode_test_hit_counts[MAX_MODES];
 
 
     void (*short_fdct4x4)(short *input, short *output, int pitch);
index 24516deae4d56bca3a34de57132bd8527144b471..071f254ee6bf8dc4d079f8cce861f33ce30f674e 100644 (file)
@@ -482,7 +482,7 @@ void vp8cx_init_mbrthread_data(VP8_COMP *cpi,
         mb->prediction_error = 0;
         mb->intra_error = 0;
         vp8_zero(mb->count_mb_ref_frame_usage);
-
+        mb->mbs_tested_so_far = 0;
     }
 }
 
index f84bdc91047434ec86579cd9403d9da6f37ae0d1..c796eb92633dff2d2abb74a5b0b9f1f0d6c2988a 100644 (file)
@@ -640,11 +640,10 @@ void vp8_set_speed_features(VP8_COMP *cpi)
     for (i = 0; i < MAX_MODES; i ++)
     {
         cpi->mode_check_freq[i] = 0;
-        cpi->mode_test_hit_counts[i] = 0;
         cpi->mode_chosen_counts[i] = 0;
     }
 
-    cpi->mbs_tested_so_far = 0;
+    cpi->mb.mbs_tested_so_far = 0;
 
     /* best quality defaults */
     sf->RD = 1;
index 0035a61057ea075eda61288e491d90899cc48773..dacdf6bbee39bd095b42f5df546888c36790019d 100644 (file)
@@ -349,9 +349,7 @@ typedef struct VP8_COMP
     int ambient_err;
 
     unsigned int mode_check_freq[MAX_MODES];
-    unsigned int mode_test_hit_counts[MAX_MODES];
     unsigned int mode_chosen_counts[MAX_MODES];
-    unsigned int mbs_tested_so_far;
 
     int rd_baseline_thresh[MAX_MODES];
 
index e4574f298487348b0a904d3b906ce653186e596f..e541ab27e8451adb3435829688a494c34905079f 100644 (file)
@@ -680,7 +680,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
     get_predictor_pointers(cpi, plane, recon_yoffset, recon_uvoffset);
 
     /* Count of the number of MBs tested so far this frame */
-    cpi->mbs_tested_so_far++;
+    x->mbs_tested_so_far++;
 
     *returnintra = INT_MAX;
     x->skip = 0;
@@ -746,11 +746,11 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
         /* Check to see if the testing frequency for this mode is at its max
          * If so then prevent it from being tested and increase the threshold
          * for its testing */
-        if (cpi->mode_test_hit_counts[mode_index] &&
+        if (x->mode_test_hit_counts[mode_index] &&
                                          (cpi->mode_check_freq[mode_index] > 1))
         {
-            if (cpi->mbs_tested_so_far <= (cpi->mode_check_freq[mode_index] *
-                                         cpi->mode_test_hit_counts[mode_index]))
+            if (x->mbs_tested_so_far <= (cpi->mode_check_freq[mode_index] *
+                                         x->mode_test_hit_counts[mode_index]))
             {
                 /* Increase the threshold for coding this mode to make it less
                  * likely to be chosen */
@@ -769,7 +769,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
         /* We have now reached the point where we are going to test the current
          * mode so increment the counter for the number of times it has been
          * tested */
-        cpi->mode_test_hit_counts[mode_index] ++;
+        x->mode_test_hit_counts[mode_index] ++;
 
         rate2 = 0;
         distortion2 = 0;
index 15055f046445d6f5cd2afb8178b32a2b337d2099..b2dd302db8d41bd10c4708e6ba70ad8dc08e950e 100644 (file)
@@ -265,6 +265,11 @@ void vp8_initialize_rd_consts(VP8_COMP *cpi, MACROBLOCK *x, int Qvalue)
 
     vp8_set_speed_features(cpi);
 
+    for (i = 0; i < MAX_MODES; i++)
+    {
+        x->mode_test_hit_counts[i] = 0;
+    }
+
     q = (int)pow(Qvalue, 1.25);
 
     if (q < 8)
@@ -2010,7 +2015,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
 
     *returnintra = INT_MAX;
     /* Count of the number of MBs tested so far this frame */
-    cpi->mbs_tested_so_far++;
+    x->mbs_tested_so_far++;
 
     x->skip = 0;
 
@@ -2068,9 +2073,9 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
          * max If so then prevent it from being tested and increase the
          * threshold for its testing
          */
-        if (cpi->mode_test_hit_counts[mode_index] && (cpi->mode_check_freq[mode_index] > 1))
+        if (x->mode_test_hit_counts[mode_index] && (cpi->mode_check_freq[mode_index] > 1))
         {
-            if (cpi->mbs_tested_so_far  <= cpi->mode_check_freq[mode_index] * cpi->mode_test_hit_counts[mode_index])
+            if (x->mbs_tested_so_far  <= cpi->mode_check_freq[mode_index] * x->mode_test_hit_counts[mode_index])
             {
                 /* Increase the threshold for coding this mode to make it
                  * less likely to be chosen
@@ -2092,7 +2097,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
          * current mode so increment the counter for the number of times
          * it has been tested
          */
-        cpi->mode_test_hit_counts[mode_index] ++;
+        x->mode_test_hit_counts[mode_index] ++;
 
         /* Experimental code. Special case for gf and arf zeromv modes.
          * Increase zbin size to supress noise