]> granicus.if.org Git - libvpx/commitdiff
vp9-screen-content: Adjust condition for large search area
authorMarco Paniconi <marpan@google.com>
Wed, 7 Nov 2018 19:14:42 +0000 (11:14 -0800)
committerMarco Paniconi <marpan@google.com>
Wed, 7 Nov 2018 19:27:23 +0000 (11:27 -0800)
Account for dropped frame, and change resolution threshold
for limiting split below 16x16.

Change-Id: If94cfb2bc24d9103332d1c8d945daca8899db33d

vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_speed_features.c

index 4aae37706dccd2913b4481071600a6fde828a7d8..d5d1d279e96f88f81f1f82ef48771ec921a2f6e9 100644 (file)
@@ -1381,7 +1381,7 @@ static int choose_partitioning(VP9_COMP *cpi, const TileInfo *const tile,
       if (cpi->oxcf.content == VP9E_CONTENT_SCREEN &&
           cpi->svc.spatial_layer_id == 0 &&
           cpi->rc.high_num_blocks_with_motion && !x->zero_temp_sad_source &&
-          cm->width >= 1280 && cm->height >= 720) {
+          cm->width > 640 && cm->height > 480) {
         // Disable split below 16x16 block size when scroll motion is detected.
         // TODO(marpan/jianj): Improve this condition: issue is that search
         // range is hard-coded/limited in vp9_int_pro_motion_estimation() so
index 2b0d5e14636a5b2bc338f12b2471c2a212a87776..9f2dc144e4599f255c742e5c5918a2dcff803f29 100644 (file)
@@ -794,10 +794,12 @@ static void set_rt_speed_feature_framesize_independent(
     sf->partition_search_type = FIXED_PARTITION;
     sf->always_this_block_size = BLOCK_64X64;
   }
-  // Special case for screen content: increase motion search when high motion
-  // is detected.
+  // Special case for screen content: increase motion search on baase spatial
+  // layer when high motion is detected or previous SL0 frame was dropped.
+  // Avoid speed 5 for as there is an issue with SVC datarate test.
   if (cpi->oxcf.content == VP9E_CONTENT_SCREEN && cpi->oxcf.speed > 5 &&
-      cpi->rc.high_num_blocks_with_motion && cpi->svc.spatial_layer_id == 0) {
+      cpi->svc.spatial_layer_id == 0 &&
+      (cpi->rc.high_num_blocks_with_motion || cpi->svc.last_layer_dropped[0])) {
     sf->mv.search_method = NSTEP;
     sf->mv.fullpel_search_step_param = 2;
   }