summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libhb/encx264.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/libhb/encx264.c b/libhb/encx264.c
index bdc32e6e4..0ba54dfa1 100644
--- a/libhb/encx264.c
+++ b/libhb/encx264.c
@@ -120,13 +120,13 @@ int encx264Init( hb_work_object_t * w, hb_job_t * job )
we still want the same keyframe intervals as the 1st pass,
so the 1st pass stats won't conflict on frame decisions. */
hb_interjob_t * interjob = hb_interjob_get( job->h );
- param.i_keyint_max = ( ( 10 * (double)interjob->vrate / (double)interjob->vrate_base ) + 0.5 );
+ param.i_keyint_max = 10 * (int)( (double)interjob->vrate / (double)interjob->vrate_base + 0.5 );
}
else
{
/* adjust +0.5 for when fps has remainder to bump
{ 23.976, 29.976, 59.94 } to { 24, 30, 60 } */
- param.i_keyint_max = ( ( 10 * (double)job->vrate / (double)job->vrate_base ) + 0.5 );
+ param.i_keyint_max = 10 * (int)( (double)job->vrate / (double)job->vrate_base + 0.5 );
}
}
@@ -206,8 +206,25 @@ int encx264Init( hb_work_object_t * w, hb_job_t * job )
}
if( param.i_keyint_min != X264_KEYINT_MIN_AUTO || param.i_keyint_max != 250 )
- hb_log("encx264: min-keyint: %i, keyint: %i", param.i_keyint_min == X264_KEYINT_MIN_AUTO ? param.i_keyint_max / 10 : param.i_keyint_min,
- param.i_keyint_max);
+ {
+ int min_auto;
+
+ if ( param.i_fps_num / param.i_fps_den < param.i_keyint_max / 10 )
+ min_auto = param.i_fps_num / param.i_fps_den;
+ else
+ min_auto = param.i_keyint_max / 10;
+
+ char min[40], max[40];
+ param.i_keyint_min == X264_KEYINT_MIN_AUTO ?
+ snprintf( min, 40, "auto (%d)", min_auto ) :
+ snprintf( min, 40, "%d", param.i_keyint_min );
+
+ param.i_keyint_max == X264_KEYINT_MAX_INFINITE ?
+ snprintf( max, 40, "infinite" ) :
+ snprintf( max, 40, "%d", param.i_keyint_max );
+
+ hb_log( "encx264: min-keyint: %s, keyint: %s", min, max );
+ }
/* set up the VUI color model & gamma to match what the COLR atom
* set in muxmp4.c says. See libhb/muxmp4.c for notes. */