From c87895b14495d199738bc2368f15a2cff6bb6463 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Tue, 21 Aug 2018 11:12:48 -0700 Subject: [PATCH] Safely swap the show frame buffer pointer in show_existing mode Point the current frame buffer towards the existing reference frame. In the meantime, release the original new_fb pointer. Change-Id: Ic83a698cac5cdaaabdf61acffb936ec130a84d1c --- vp9/encoder/vp9_encoder.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index 0151e1b..d9d38b7 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -4839,8 +4839,10 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, size_t *size, // current ARF will be directly used as the final reconstructed frame. This is // an encoder control scheme. One could in principle explore other // possibilities to arrange the reference frame buffer and their coding order. - if (cm->show_existing_frame) - cm->new_fb_idx = cm->ref_frame_map[cpi->alt_fb_idx]; + if (cm->show_existing_frame) { + ref_cnt_fb(cm->buffer_pool->frame_bufs, &cm->new_fb_idx, + cm->ref_frame_map[cpi->alt_fb_idx]); + } cpi->last_frame_dropped = 0; cpi->svc.last_layer_dropped[cpi->svc.spatial_layer_id] = 0; -- 2.7.4