]> granicus.if.org Git - libx264/commitdiff
Fix delay calculation with multiple threads
authorFiona Glaser <fiona@x264.com>
Fri, 7 Aug 2009 17:31:16 +0000 (10:31 -0700)
committerFiona Glaser <fiona@x264.com>
Fri, 7 Aug 2009 17:31:16 +0000 (10:31 -0700)
Delay frames for threading don't actually count as part of lookahead.

encoder/encoder.c

index e599c4aa6c8b67507756bd17d2bda57a9b34bad1..26d3e3ca4d701ce42d8748562c3d76a4f74b13e7 100644 (file)
@@ -746,11 +746,13 @@ x264_t *x264_encoder_open   ( x264_param_t *param )
 
     /* Init frames. */
     if( h->param.i_bframe_adaptive == X264_B_ADAPT_TRELLIS )
-        h->frames.i_delay = X264_MAX(h->param.i_bframe,3)*4 + h->param.i_threads - 1;
+        h->frames.i_delay = X264_MAX(h->param.i_bframe,3)*4;
     else
-        h->frames.i_delay = h->param.i_bframe + h->param.i_threads - 1;
+        h->frames.i_delay = h->param.i_bframe;
     if( h->param.rc.b_mb_tree )
         h->frames.i_delay = X264_MAX( h->frames.i_delay, h->param.rc.i_lookahead );
+    h->frames.i_delay += h->param.i_threads - 1;
+    h->frames.i_delay = X264_MIN( h->frames.i_delay, X264_LOOKAHEAD_MAX );
 
     h->frames.i_max_ref0 = h->param.i_frame_reference;
     h->frames.i_max_ref1 = h->sps->vui.i_num_reorder_frames;