Moving the same code to new function vp9_setup_scale_factors.
authorDmitry Kovalev <dkovalev@google.com>
Wed, 15 May 2013 00:10:17 +0000 (17:10 -0700)
committerDmitry Kovalev <dkovalev@google.com>
Wed, 15 May 2013 23:33:36 +0000 (16:33 -0700)
Change-Id: I2408ad22717784a40e23701ccb9d978265440e4f

vp9/common/vp9_reconinter.c
vp9/common/vp9_reconinter.h
vp9/decoder/vp9_decodframe.c
vp9/encoder/vp9_onyx_if.c

index e521a69..e7303f1 100644 (file)
@@ -492,3 +492,18 @@ void vp9_build_inter4x4_predictors_mbuv(MACROBLOCKD *xd,
   vp9_build_inter_predictors_sbuv(xd, mb_row, mb_col,
                                   BLOCK_SIZE_MB16X16);
 }
+
+// TODO(dkovalev: find better place for this function)
+void vp9_setup_scale_factors(VP9_COMMON *cm, int i) {
+  const int ref = cm->active_ref_idx[i];
+  struct scale_factors *const sf = &cm->active_ref_scale[i];
+  if (ref >= NUM_YV12_BUFFERS) {
+    memset(sf, 0, sizeof(*sf));
+  } else {
+    YV12_BUFFER_CONFIG *const fb = &cm->yv12_fb[ref];
+    vp9_setup_scale_factors_for_frame(sf,
+                                      fb->y_crop_width, fb->y_crop_height,
+                                      cm->width, cm->height);
+  }
+}
+
index 885e1de..8f76195 100644 (file)
@@ -122,4 +122,6 @@ static void set_scale_factors(MACROBLOCKD *xd,
   xd->scale_factor_uv[1] = xd->scale_factor[1];
 }
 
+void vp9_setup_scale_factors(VP9_COMMON *cm, int i);
+
 #endif  // VP9_COMMON_VP9_RECONINTER_H_
index 6a79c6c..2e233c3 100644 (file)
@@ -1021,23 +1021,13 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) {
     // Select active reference frames and calculate scaling factors
     for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) {
       const int ref = vp9_read_literal(&header_bc, NUM_REF_FRAMES_LG2);
-      const int mapped_ref = pc->ref_frame_map[ref];
-      YV12_BUFFER_CONFIG *const fb = &pc->yv12_fb[mapped_ref];
-      struct scale_factors *const sf = &pc->active_ref_scale[i];
-
-      pc->active_ref_idx[i] = mapped_ref;
-      if (mapped_ref >= NUM_YV12_BUFFERS)
-        memset(sf, 0, sizeof(*sf));
-      else
-        vp9_setup_scale_factors_for_frame(sf,
-                                          fb->y_crop_width, fb->y_crop_height,
-                                          pc->width, pc->height);
+      pc->active_ref_idx[i] = pc->ref_frame_map[ref];
+      vp9_setup_scale_factors(pc, i);
     }
 
     // Read the sign bias for each reference frame buffer.
-    for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) {
+    for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i)
       pc->ref_frame_sign_bias[i + 1] = vp9_read_bit(&header_bc);
-    }
 
     xd->allow_high_precision_mv = vp9_read_bit(&header_bc);
     pc->mcomp_filter_type = read_mcomp_filter_type(&header_bc);
index d78373f..464b649 100644 (file)
@@ -3860,16 +3860,8 @@ int vp9_get_compressed_data(VP9_PTR ptr, unsigned int *frame_flags,
                            VP9BORDERINPIXELS);
 
   // Calculate scaling factors for each of the 3 available references
-  for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) {
-    if (cm->active_ref_idx[i] >= NUM_YV12_BUFFERS) {
-      memset(&cm->active_ref_scale[i], 0, sizeof(cm->active_ref_scale[i]));
-    } else {
-      YV12_BUFFER_CONFIG *fb = &cm->yv12_fb[cm->active_ref_idx[i]];
-      vp9_setup_scale_factors_for_frame(&cm->active_ref_scale[i],
-                                        fb->y_crop_width, fb->y_crop_height,
-                                        cm->width, cm->height);
-    }
-  }
+  for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i)
+    vp9_setup_scale_factors(cm, i);
 
   vp9_setup_interp_filters(&cpi->mb.e_mbd, DEFAULT_INTERP_FILTER, cm);