shithub: libvpx

Download patch

ref: cbd966f1ab4d44af7c3de84316a543f3d3516d15
parent: e14958ea7312295ccce00e57b386085d15f6e554
author: Angie Chiang <angiebird@google.com>
date: Tue Mar 5 13:13:45 EST 2019

Include mv_mode_arr info in dump_tpl_stats

Change-Id: Ib8e635fc7522d27ff7fdb62661597115e5bbc9b8

--- a/tools/non_greedy_mv/non_greedy_mv.py
+++ b/tools/non_greedy_mv/non_greedy_mv.py
@@ -91,7 +91,14 @@
   feature_score = feature_score.reshape(mv_rows, mv_cols)
   return feature_score
 
+def read_mv_mode_arr(fp, mv_rows, mv_cols):
+  line = fp.readline()
+  word_ls = line.split()
+  mv_mode_arr = np.array([int(v) for v in word_ls])
+  mv_mode_arr = mv_mode_arr.reshape(mv_rows, mv_cols)
+  return mv_mode_arr
 
+
 def read_frame_dpl_stats(fp):
   line = fp.readline()
   word_ls = line.split()
@@ -117,9 +124,10 @@
     mv_ls.append([col, row, mv_col, mv_row])
   mv_ls = np.array(mv_ls)
   feature_score = read_feature_score(fp, mv_rows, mv_cols)
+  mv_mode_arr = read_mv_mode_arr(fp, mv_rows, mv_cols)
   img = yuv_to_rgb(read_frame(fp))
   ref = yuv_to_rgb(read_frame(fp))
-  return rf_idx, frame_idx, ref_frame_idx, gf_frame_offset, ref_gf_frame_offset, mv_ls, img, ref, bs, feature_score
+  return rf_idx, frame_idx, ref_frame_idx, gf_frame_offset, ref_gf_frame_offset, mv_ls, img, ref, bs, feature_score, mv_mode_arr
 
 
 def read_dpl_stats_file(filename, frame_num=0):
@@ -140,7 +148,7 @@
 if __name__ == '__main__':
   filename = sys.argv[1]
   data_ls = read_dpl_stats_file(filename, frame_num=5)
-  for rf_idx, frame_idx, ref_frame_idx, gf_frame_offset, ref_gf_frame_offset, mv_ls, img, ref, bs, feature_score in data_ls:
+  for rf_idx, frame_idx, ref_frame_idx, gf_frame_offset, ref_gf_frame_offset, mv_ls, img, ref, bs, feature_score, mv_mode_arr in data_ls:
     fig, axes = plt.subplots(2, 2)
 
     axes[0][0].imshow(img)
@@ -159,12 +167,14 @@
       axes[0][1].set_xlim(0, ref.shape[1])
 
     axes[1][0].imshow(feature_score)
-    feature_score_arr = feature_score.flatten()
-    feature_score_max = feature_score_arr.max()
-    feature_score_min = feature_score_arr.min()
-    step = (feature_score_max - feature_score_min) / 20.
-    feature_score_bins = np.arange(feature_score_min, feature_score_max, step)
-    axes[1][1].hist(feature_score_arr, bins=feature_score_bins)
+    #feature_score_arr = feature_score.flatten()
+    #feature_score_max = feature_score_arr.max()
+    #feature_score_min = feature_score_arr.min()
+    #step = (feature_score_max - feature_score_min) / 20.
+    #feature_score_bins = np.arange(feature_score_min, feature_score_max, step)
+    #axes[1][1].hist(feature_score_arr, bins=feature_score_bins)
+    im = axes[1][1].imshow(mv_mode_arr)
+    #axes[1][1].figure.colorbar(im, ax=axes[1][1])
 
     print rf_idx, frame_idx, ref_frame_idx, gf_frame_offset, ref_gf_frame_offset, len(mv_ls)
     plt.show()
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -6792,6 +6792,16 @@
         }
         printf("\n");
 
+        for (mi_row = 0; mi_row < cm->mi_rows; mi_row += mi_height) {
+          for (mi_col = 0; mi_col < cm->mi_cols; mi_col += mi_width) {
+            const int mv_mode =
+                tpl_frame
+                    ->mv_mode_arr[rf_idx][mi_row * tpl_frame->stride + mi_col];
+            printf("%d ", mv_mode);
+          }
+        }
+        printf("\n");
+
         dump_frame_buf(gf_picture[frame_idx].frame);
         dump_frame_buf(ref_frame_buf);
       }