multi-res: add drop_frame support
Added drop_frame support in multi-resolution encoder.
If one frame is dropped at a lower-resolution level, the next
upper-resolution level encoder needs to encode that frame
independently without any lower-resolution level motion
information.
Another issue is that if one frame is dropped at some but not all
resolution levels, a frame after that one may use different set
of reference frames at different resolution levels. This reference
frame asynchronization could degrade motion search precision in
upper-resolution level encoding, which uses lower-resolution level
motion result. This change compares the lower-resolution and upper-
resolution level's reference frames. If they are not the same, the
upper-resolution level encoder can not use lower-resolution level
motion result.
Change-Id: I61afa4f313630e75b7cbdd5742e230e8724a988a
diff --git a/vp8/vp8_cx_iface.c b/vp8/vp8_cx_iface.c
index 3a87ad8..072314f 100644
--- a/vp8/vp8_cx_iface.c
+++ b/vp8/vp8_cx_iface.c
@@ -163,14 +163,11 @@
* multi-res-encoder.*/
#if CONFIG_MULTI_RES_ENCODING
if (ctx->base.enc.total_encoders > 1)
- {
RANGE_CHECK_HI(cfg, rc_resize_allowed, 0);
- RANGE_CHECK_HI(cfg, rc_dropframe_thresh, 0);
- }
#else
RANGE_CHECK_BOOL(cfg, rc_resize_allowed);
- RANGE_CHECK_HI(cfg, rc_dropframe_thresh, 100);
#endif
+ RANGE_CHECK_HI(cfg, rc_dropframe_thresh, 100);
RANGE_CHECK_HI(cfg, rc_resize_up_thresh, 100);
RANGE_CHECK_HI(cfg, rc_resize_down_thresh, 100);