Commit 4e824bbc authored by Fiona Glaser's avatar Fiona Glaser

Fix MB-tree with keyint<3

Also slightly improve VBV keyint handling.
parent 678b317a
......@@ -496,7 +496,7 @@ static int x264_validate_parameters( x264_t *h )
if( h->param.rc.b_stat_read )
h->param.rc.i_lookahead = 0;
else if( !h->param.rc.i_lookahead )
else if( !h->param.rc.i_lookahead || h->param.i_keyint_max == 1 )
h->param.rc.b_mb_tree = 0;
if( h->param.rc.f_qcompress == 1 )
h->param.rc.b_mb_tree = 0;
......
......@@ -848,21 +848,19 @@ static void x264_slicetype_analyse( x264_t *h, int keyframe )
frames[j]->i_type = X264_TYPE_P;
/* Perform the actual macroblock tree analysis.
* Don't go farther than the lookahead parameter; this helps in short GOPs. */
* Don't go farther than the maximum keyframe interval; this helps in short GOPs. */
if( h->param.rc.b_mb_tree )
x264_macroblock_tree( h, &a, frames, X264_MIN(num_frames, h->param.rc.i_lookahead), keyframe );
x264_macroblock_tree( h, &a, frames, X264_MIN(num_frames, h->param.i_keyint_max), keyframe );
/* Enforce keyframe limit. */
for( j = 0; j < num_frames; j++ )
{
if( (j+1)%h->param.i_keyint_max > keyint_limit )
if( ((j-keyint_limit) % h->param.i_keyint_max) == 0 )
{
if( j )
frames[j]->i_type = X264_TYPE_P;
frames[j+1]->i_type = idr_frame_type;
if( j <= num_bframes )
reset_start = j+2;
break;
frames[j+1]->i_type = X264_TYPE_IDR;
reset_start = X264_MIN( reset_start, j+2 );
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment