From b630af6c4af3118453d91aae75d2e61c513f2010 Mon Sep 17 00:00:00 2001 From: Loren Merritt <pengvado@videolan.org> Date: Wed, 20 Dec 2006 04:22:59 +0000 Subject: [PATCH] wrong reference frames were used with refs>=14 + pyramid (regression in r607) git-svn-id: svn://svn.videolan.org/x264/trunk@614 df754926-b1dd-0310-bc7b-ec298dee348c --- common/common.h | 4 ++-- encoder/encoder.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/common.h b/common/common.h index 7c21a8c4..2bd0552b 100644 --- a/common/common.h +++ b/common/common.h @@ -359,8 +359,8 @@ struct x264_t /* For adaptive B decision */ x264_frame_t *last_nonb; - /* frames used for reference +1 for decoding + sentinels */ - x264_frame_t *reference[16+2+1+2]; + /* frames used for reference + sentinels */ + x264_frame_t *reference[16+2]; int i_last_idr; /* Frame number of the last IDR */ diff --git a/encoder/encoder.c b/encoder/encoder.c index fb9a2bd7..9ebef483 100644 --- a/encoder/encoder.c +++ b/encoder/encoder.c @@ -631,7 +631,7 @@ x264_t *x264_encoder_open ( x264_param_t *param ) h->frames.i_delay = h->param.i_bframe + h->param.i_threads - 1; h->frames.i_max_ref0 = h->param.i_frame_reference; h->frames.i_max_ref1 = h->sps->vui.i_num_reorder_frames; - h->frames.i_max_dpb = h->sps->vui.i_max_dec_frame_buffering + 1; + h->frames.i_max_dpb = h->sps->vui.i_max_dec_frame_buffering; h->frames.b_have_lowres = !h->param.rc.b_stat_read && ( h->param.rc.i_rc_method == X264_RC_ABR || h->param.rc.i_rc_method == X264_RC_CRF @@ -964,7 +964,7 @@ static inline void x264_reference_update( x264_t *h ) static inline void x264_reference_reset( x264_t *h ) { while( h->frames.reference[0] ) - x264_frame_push_unused( h, x264_frame_shift( h->frames.reference ) ); + x264_frame_push_unused( h, x264_frame_pop( h->frames.reference ) ); h->fdec->i_poc = h->fenc->i_poc = 0; } -- 2.40.0