From cd95543ee4a0d86a72dc1c7b9cbc280c5a60d0b0 Mon Sep 17 00:00:00 2001 From: Paul Wilkins <paulwilkins@google.com> Date: Mon, 15 Sep 2014 12:45:42 +0100 Subject: [PATCH] Move call to vp9_rc_get_second_pass_params(). Call to vp9_rc_get_second_pass_params() moved from Pass2Encode() to earlier in vp9_get_compressed_data(), to ensure that two pass stats and parameters are available before decisions such as frame scaling. Change-Id: If21537f0073919b04696a7d5e9aac78e23d76f39 --- vp9/encoder/vp9_encoder.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index b3884d056f..e16b0b356c 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -2397,10 +2397,7 @@ static void Pass0Encode(VP9_COMP *cpi, size_t *size, uint8_t *dest, static void Pass2Encode(VP9_COMP *cpi, size_t *size, uint8_t *dest, unsigned int *frame_flags) { cpi->allow_encode_breakout = ENCODE_BREAKOUT_ENABLED; - - vp9_rc_get_second_pass_params(cpi); encode_frame_to_data_rate(cpi, size, dest, frame_flags); - vp9_twopass_postencode_update(cpi); } @@ -2724,6 +2721,12 @@ int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags, cm->frame_bufs[cm->new_fb_idx].ref_count--; cm->new_fb_idx = get_free_fb(cm); + // For two pass encodes analyse the first pass stats and determine + // the bit allocation and other parameters for this frame / group of frames. + if ((oxcf->pass == 2) && (!cpi->use_svc || is_two_pass_svc(cpi))) { + vp9_rc_get_second_pass_params(cpi); + } + if (!cpi->use_svc && cpi->multi_arf_allowed) { if (cm->frame_type == KEY_FRAME) { init_buffer_indices(cpi); -- GitLab