From adc25db91ebef53b7883bb1587df1dd2247e4f21 Mon Sep 17 00:00:00 2001
From: Fiona Glaser <fiona@x264.com>
Date: Wed, 26 Aug 2009 20:30:47 -0700
Subject: [PATCH] Fix keyint=1 + VBV + rc-lookahead

---
 encoder/encoder.c   | 2 ++
 encoder/slicetype.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

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 );
-- 
2.40.0