]> granicus.if.org Git - libvpx/commitdiff
vp9-svc: Fix to some frame metrics for real-time mode.
authorMarco Paniconi <marpan@google.com>
Thu, 31 May 2018 16:59:15 +0000 (09:59 -0700)
committerMarco Paniconi <marpan@google.com>
Thu, 31 May 2018 18:34:51 +0000 (11:34 -0700)
Add condition of LAST frame to the consec_zeromv and
avg_frame_low_motion metrics. This is needed for SVC as
the golden reference is a spatial reference and should
not be included in the metric computation.

Small/negligible change in metrics on RTC set.

Change-Id: I6ea16298fae566bb288c34cf50d120b509146eee

vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_ratectrl.c

index 90906cc46ffb075b24b6b0ccbfbf3267e126724f..d2281d976cf536e12b3008df432ac6b71a605977 100644 (file)
@@ -5140,7 +5140,8 @@ static void update_zeromv_cnt(VP9_COMP *const cpi, const MODE_INFO *const mi,
   for (y = 0; y < ymis; y++)
     for (x = 0; x < xmis; x++) {
       int map_offset = block_index + y * cm->mi_cols + x;
-      if (is_inter_block(mi) && mi->segment_id <= CR_SEGMENT_ID_BOOST2) {
+      if (mi->ref_frame[0] == LAST_FRAME && is_inter_block(mi) &&
+          mi->segment_id <= CR_SEGMENT_ID_BOOST2) {
         if (abs(mv.row) < 8 && abs(mv.col) < 8) {
           if (cpi->consec_zero_mv[map_offset] < 255)
             cpi->consec_zero_mv[map_offset]++;
index 11547fb2eeb8aa9485ea8c89b169eb92f6fc3a33..9e361e768afdd30a2f2d1d39d07690803cefae49 100644 (file)
@@ -1496,7 +1496,8 @@ static void compute_frame_low_motion(VP9_COMP *const cpi) {
   int cnt_zeromv = 0;
   for (mi_row = 0; mi_row < rows; mi_row++) {
     for (mi_col = 0; mi_col < cols; mi_col++) {
-      if (abs(mi[0]->mv[0].as_mv.row) < 16 && abs(mi[0]->mv[0].as_mv.col) < 16)
+      if (mi[0]->ref_frame[0] == LAST_FRAME &&
+          abs(mi[0]->mv[0].as_mv.row) < 16 && abs(mi[0]->mv[0].as_mv.col) < 16)
         cnt_zeromv++;
       mi++;
     }