summaryrefslogtreecommitdiff
path: root/vp9/encoder
diff options
context:
space:
mode:
authorMarco Paniconi <marpan@google.com>2019-01-30 16:30:49 -0800
committerMarco Paniconi <marpan@google.com>2019-01-30 16:47:52 -0800
commit037c8e6b13ce0956be08b86fa56545963d42e5f7 (patch)
tree13b5e716ee1b3d7e2b2069c74517e5c1a38d3c49 /vp9/encoder
parente7d45715dc108f3ada42fb04c2aa9363a2e3d170 (diff)
downloadlibvpx-037c8e6b13ce0956be08b86fa56545963d42e5f7.tar
libvpx-037c8e6b13ce0956be08b86fa56545963d42e5f7.tar.gz
libvpx-037c8e6b13ce0956be08b86fa56545963d42e5f7.tar.bz2
libvpx-037c8e6b13ce0956be08b86fa56545963d42e5f7.zip
vp9-svc: Fix to non-rd pickmode for screen content
For screen content mode: always force intra check for spatially flat blocks that have moved. Also adjust/fix condition for forcing check of zeromv-golden for quality layers. Reduces artifacts in screensharing tests. Change-Id: Iafd62fb24a4e05f5b12af663dde2805fdb4c7b36
Diffstat (limited to 'vp9/encoder')
-rw-r--r--vp9/encoder/vp9_pickmode.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c
index 0fdc61649..2d34100d7 100644
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -1943,8 +1943,9 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
// For SVC with quality layers, when QP of lower layer is lower
// than current layer: force check of GF-ZEROMV before early exit
// due to skip flag.
- if (svc->spatial_layer_id > 0 && usable_ref_frame == GOLDEN_FRAME &&
- no_scaling && cm->base_qindex > svc->lower_layer_qindex + 10)
+ if (svc->spatial_layer_id > 0 && no_scaling &&
+ (cpi->ref_frame_flags & flag_list[GOLDEN_FRAME]) &&
+ cm->base_qindex > svc->lower_layer_qindex + 10)
force_test_gf_zeromv = 1;
for (idx = 0; idx < num_inter_modes + comp_modes; ++idx) {
@@ -2407,6 +2408,8 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
// Perform intra prediction search, if the best SAD is above a certain
// threshold.
if (best_rdc.rdcost == INT64_MAX ||
+ (cpi->oxcf.content == VP9E_CONTENT_SCREEN && x->source_variance == 0 &&
+ !x->zero_temp_sad_source) ||
(scene_change_detected && perform_intra_pred) ||
((!force_skip_low_temp_var || bsize < BLOCK_32X32 ||
x->content_state_sb == kVeryHighSad) &&