]> granicus.if.org Git - libx264/commitdiff
Fix bug in VBV lookahead + no MB-tree
authorFiona Glaser <fiona@x264.com>
Wed, 19 Aug 2009 02:25:45 +0000 (19:25 -0700)
committerFiona Glaser <fiona@x264.com>
Wed, 19 Aug 2009 02:39:11 +0000 (19:39 -0700)
I-frames need to have VBV lookahead run on them as well.

encoder/slicetype.c

index 393f0b037a1234447217a7f2bfbae31f8da049eb..d4a8083475d046b2a7eb6537faa1e5fe243a76f9 100644 (file)
@@ -892,7 +892,8 @@ void x264_slicetype_decide( x264_t *h )
     }
     else if( (h->param.i_bframe && h->param.i_bframe_adaptive)
              || h->param.i_scenecut_threshold
-             || h->param.rc.b_mb_tree )
+             || h->param.rc.b_mb_tree
+             || (h->param.rc.i_vbv_buffer_size && h->param.rc.i_lookahead) )
         x264_slicetype_analyse( h, 0 );
 
     for( bframes = 0;; bframes++ )
@@ -950,8 +951,8 @@ int x264_rc_analyse_slice( x264_t *h )
     if( IS_X264_TYPE_I(h->fenc->i_type) )
     {
         p1 = b = 0;
-        /* For MB-tree, we have to perform propagation analysis on I-frames too. */
-        if( h->param.rc.b_mb_tree )
+        /* For MB-tree and VBV lookahead, we have to perform propagation analysis on I-frames too. */
+        if( h->param.rc.b_mb_tree || (h->param.rc.i_vbv_buffer_size && h->param.rc.i_lookahead) )
         {
             h->frames.last_nonb = h->fenc;
             x264_slicetype_analyse( h, 1 );