]> granicus.if.org Git - libvpx/commitdiff
Shrink size of mode_map in struct TileDataEnc
authorLinfeng Zhang <linfengz@google.com>
Mon, 26 Mar 2018 23:42:00 +0000 (16:42 -0700)
committerLinfeng Zhang <linfengz@google.com>
Wed, 28 Mar 2018 19:50:31 +0000 (12:50 -0700)
To reduce the memcpy() cycles in vp9_rd_pick_inter_mode_sb().
The maximum value of mode_map is (MAX_MODES - 1) = 29.

Change-Id: I5704bd66838ea0b075f0afb001f5cbebfd3f1602

vp9/encoder/vp9_encoder.h
vp9/encoder/vp9_rdopt.c

index 2989af35e93eec54ce356b2106a40db9e7065c17..05bfd6930d50d9d01bd9896450001e749222b632 100644 (file)
@@ -282,7 +282,7 @@ static INLINE int is_lossless_requested(const VP9EncoderConfig *cfg) {
 typedef struct TileDataEnc {
   TileInfo tile_info;
   int thresh_freq_fact[BLOCK_SIZES][MAX_MODES];
-  int mode_map[BLOCK_SIZES][MAX_MODES];
+  int8_t mode_map[BLOCK_SIZES][MAX_MODES];
   FIRSTPASS_DATA fp_data;
   VP9RowMTSync row_mt_sync;
 
index 90f06720baab56049663ae63935e2a905ecb1305..b6541b0f7357df61ea4594b06d41ef9f36163dbe 100644 (file)
@@ -3074,10 +3074,10 @@ void vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, TileDataEnc *tile_data,
   const int *const rd_threshes = rd_opt->threshes[segment_id][bsize];
   const int *const rd_thresh_freq_fact = tile_data->thresh_freq_fact[bsize];
   int64_t mode_threshold[MAX_MODES];
-  int *tile_mode_map = tile_data->mode_map[bsize];
-  int mode_map[MAX_MODES];  // Maintain mode_map information locally to avoid
-                            // lock mechanism involved with reads from
-                            // tile_mode_map
+  int8_t *tile_mode_map = tile_data->mode_map[bsize];
+  int8_t mode_map[MAX_MODES];  // Maintain mode_map information locally to avoid
+                               // lock mechanism involved with reads from
+                               // tile_mode_map
   const int mode_search_skip_flags = sf->mode_search_skip_flags;
   int64_t mask_filter = 0;
   int64_t filter_cache[SWITCHABLE_FILTER_CONTEXTS];