]> granicus.if.org Git - libvpx/commitdiff
Merge branch 'master' into nextgenv2
authorYaowu Xu <yaowu@google.com>
Fri, 8 Jan 2016 13:00:05 +0000 (05:00 -0800)
committerYaowu Xu <yaowu@google.com>
Fri, 8 Jan 2016 13:00:05 +0000 (05:00 -0800)
1  2 
vp9/encoder/vp9_rdopt.c

index ab647a49289ee3f6f98c037a5e8e6156f96d64f3,b8d17205ddc1cc732820c998864d08489b231443..973d8f51e91e4effed1c346330143e9fa304a4ea
@@@ -3818,14 -3814,20 +3818,24 @@@ void vp9_rd_pick_inter_mode_sub8x8(VP9_
      int64_t total_sse = INT_MAX;
      int early_term = 0;
      struct buf_2d backup_yv12[2][MAX_MB_PLANE];
 +    const MV_REFERENCE_FRAME refs[2] = {
 +      vp9_ref_order[ref_index].ref_frame[0],
 +      vp9_ref_order[ref_index].ref_frame[1]
 +    };
  
 -    ref_frame = vp9_ref_order[ref_index].ref_frame[0];
 -    second_ref_frame = vp9_ref_order[ref_index].ref_frame[1];
 +    ref_frame = refs[0];
 +    second_ref_frame = refs[1];
  
+ #if CONFIG_BETTER_HW_COMPATIBILITY
+     // forbid 8X4 and 4X8 partitions if any reference frame is scaled.
+     if (bsize == BLOCK_8X4 || bsize == BLOCK_4X8) {
+       int ref_scaled = vp9_is_scaled(&cm->frame_refs[ref_frame - 1].sf);
+       if (second_ref_frame > INTRA_FRAME)
+         ref_scaled += vp9_is_scaled(&cm->frame_refs[second_ref_frame - 1].sf);
+       if (ref_scaled)
+         continue;
+     }
+ #endif
      // Look at the reference frame of the best mode so far and set the
      // skip mask to look at a subset of the remaining modes.
      if (ref_index > 2 && sf->mode_skip_start < MAX_MODES) {