From: Fiona Glaser Date: Thu, 27 Aug 2009 03:30:47 +0000 (-0700) Subject: Fix keyint=1 + VBV + rc-lookahead X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=adc25db91ebef53b7883bb1587df1dd2247e4f21;p=libx264 Fix keyint=1 + VBV + rc-lookahead --- diff --git a/encoder/encoder.c b/encoder/encoder.c index 955b2ec1..c87ae905 100644 --- a/encoder/encoder.c +++ b/encoder/encoder.c @@ -478,6 +478,8 @@ static int x264_validate_parameters( x264_t *h ) h->param.analyse.i_direct_mv_pred = X264_DIRECT_PRED_SPATIAL; } h->param.i_bframe = x264_clip3( h->param.i_bframe, 0, X264_BFRAME_MAX ); + if( h->param.i_keyint_max == 1 ) + h->param.i_bframe = 0; h->param.i_bframe_bias = x264_clip3( h->param.i_bframe_bias, -90, 100 ); h->param.b_bframe_pyramid = h->param.b_bframe_pyramid && h->param.i_bframe > 1; if( !h->param.i_bframe ) diff --git a/encoder/slicetype.c b/encoder/slicetype.c index 75dc0207..aec76a4d 100644 --- a/encoder/slicetype.c +++ b/encoder/slicetype.c @@ -861,7 +861,7 @@ static void x264_slicetype_analyse( x264_t *h, int keyframe ) { if( ((j-keyint_limit) % h->param.i_keyint_max) == 0 ) { - if( j ) + if( j && h->param.i_keyint_max > 1 ) frames[j]->i_type = X264_TYPE_P; frames[j+1]->i_type = X264_TYPE_IDR; reset_start = X264_MIN( reset_start, j+2 );