ref: cd95543ee4a0d86a72dc1c7b9cbc280c5a60d0b0
parent: 95f67f09acb4b6899fb408c8e3f08e8ab533de5a
author: Paul Wilkins <[email protected]>
date: Mon Sep 15 08:45:42 EDT 2014
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
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -2397,10 +2397,7 @@
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);
}
@@ -2723,6 +2720,12 @@
*/
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) {