summaryrefslogtreecommitdiff
path: root/vp9
diff options
context:
space:
mode:
authorMarco <marpan@chromium.org>2015-07-16 19:38:26 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-07-16 19:38:27 +0000
commitf83f9dbb3ad7129b7bd4768b5a610d28e32f4273 (patch)
tree783beabe1b841d434606f9dace6c26f4a86e2929 /vp9
parent8be1dcb4cbbab433f63ac3516616cb748e2e626a (diff)
parent7ae1aa6b374aa86d70638e38b0fe6abdbb832475 (diff)
downloadlibvpx-f83f9dbb3ad7129b7bd4768b5a610d28e32f4273.tar.gz
Merge "Dynamic resize for 1 pass: update of golden frame."
Diffstat (limited to 'vp9')
-rw-r--r--vp9/encoder/vp9_aq_cyclicrefresh.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_aq_cyclicrefresh.c b/vp9/encoder/vp9_aq_cyclicrefresh.c
index 6270bf452..b61906388 100644
--- a/vp9/encoder/vp9_aq_cyclicrefresh.c
+++ b/vp9/encoder/vp9_aq_cyclicrefresh.c
@@ -347,7 +347,10 @@ void vp9_cyclic_refresh_check_golden_update(VP9_COMP *const cpi) {
// For video conference clips, if the background has high motion in current
// frame because of the camera movement, set this frame as the golden frame.
// Use 70% and 5% as the thresholds for golden frame refreshing.
- if (cnt1 * 10 > (70 * rows * cols) && cnt2 * 20 < cnt1) {
+ // Also, force this frame as a golden update frame if this frame will change
+ // the resolution (resize_pending != 0).
+ if (cpi->resize_pending != 0 ||
+ (cnt1 * 10 > (70 * rows * cols) && cnt2 * 20 < cnt1)) {
vp9_cyclic_refresh_set_golden_update(cpi);
rc->frames_till_gf_update_due = rc->baseline_gf_interval;
@@ -562,4 +565,5 @@ void vp9_cyclic_refresh_reset_resize(VP9_COMP *const cpi) {
CYCLIC_REFRESH *const cr = cpi->cyclic_refresh;
memset(cr->map, 0, cm->mi_rows * cm->mi_cols);
cr->sb_index = 0;
+ cpi->refresh_golden_frame = 1;
}