Commit 8e098f8e authored by Fiona Glaser's avatar Fiona Glaser

Make keyint_min auto by default

Gives more reasonable default settings when using short GOPs.
parent 04f73bed
...@@ -70,7 +70,7 @@ void x264_param_default( x264_param_t *param ) ...@@ -70,7 +70,7 @@ void x264_param_default( x264_param_t *param )
/* Encoder parameters */ /* Encoder parameters */
param->i_frame_reference = 3; param->i_frame_reference = 3;
param->i_keyint_max = 250; param->i_keyint_max = 250;
param->i_keyint_min = 25; param->i_keyint_min = X264_KEYINT_MIN_AUTO;
param->i_bframe = 3; param->i_bframe = 3;
param->i_scenecut_threshold = 40; param->i_scenecut_threshold = 40;
param->i_bframe_adaptive = X264_B_ADAPT_FAST; param->i_bframe_adaptive = X264_B_ADAPT_FAST;
......
...@@ -577,6 +577,8 @@ static int x264_validate_parameters( x264_t *h ) ...@@ -577,6 +577,8 @@ static int x264_validate_parameters( x264_t *h )
x264_log( h, X264_LOG_WARNING, "ref > 1 + intra-refresh is not supported\n" ); x264_log( h, X264_LOG_WARNING, "ref > 1 + intra-refresh is not supported\n" );
h->param.i_frame_reference = 1; h->param.i_frame_reference = 1;
} }
if( h->param.i_keyint_min == X264_KEYINT_MIN_AUTO )
h->param.i_keyint_min = h->param.i_keyint_max / 10;
h->param.i_keyint_min = x264_clip3( h->param.i_keyint_min, 1, h->param.i_keyint_max/2+1 ); h->param.i_keyint_min = x264_clip3( h->param.i_keyint_min, 1, h->param.i_keyint_max/2+1 );
h->param.rc.i_lookahead = x264_clip3( h->param.rc.i_lookahead, 0, X264_LOOKAHEAD_MAX ); h->param.rc.i_lookahead = x264_clip3( h->param.rc.i_lookahead, 0, X264_LOOKAHEAD_MAX );
{ {
......
...@@ -363,7 +363,7 @@ static void Help( x264_param_t *defaults, int longhelp ) ...@@ -363,7 +363,7 @@ static void Help( x264_param_t *defaults, int longhelp )
H0( "Frame-type options:\n" ); H0( "Frame-type options:\n" );
H0( "\n" ); H0( "\n" );
H0( " -I, --keyint <integer> Maximum GOP size [%d]\n", defaults->i_keyint_max ); H0( " -I, --keyint <integer> Maximum GOP size [%d]\n", defaults->i_keyint_max );
H2( " -i, --min-keyint <integer> Minimum GOP size [%d]\n", defaults->i_keyint_min ); H2( " -i, --min-keyint <integer> Minimum GOP size [auto]\n" );
H2( " --no-scenecut Disable adaptive I-frame decision\n" ); H2( " --no-scenecut Disable adaptive I-frame decision\n" );
H2( " --scenecut <integer> How aggressively to insert extra I-frames [%d]\n", defaults->i_scenecut_threshold ); H2( " --scenecut <integer> How aggressively to insert extra I-frames [%d]\n", defaults->i_scenecut_threshold );
H2( " --intra-refresh Use Periodic Intra Refresh instead of IDR frames\n" ); H2( " --intra-refresh Use Periodic Intra Refresh instead of IDR frames\n" );
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include <stdarg.h> #include <stdarg.h>
#define X264_BUILD 92 #define X264_BUILD 93
/* x264_t: /* x264_t:
* opaque handler for encoder */ * opaque handler for encoder */
...@@ -101,6 +101,7 @@ typedef struct x264_t x264_t; ...@@ -101,6 +101,7 @@ typedef struct x264_t x264_t;
#define X264_B_PYRAMID_NONE 0 #define X264_B_PYRAMID_NONE 0
#define X264_B_PYRAMID_STRICT 1 #define X264_B_PYRAMID_STRICT 1
#define X264_B_PYRAMID_NORMAL 2 #define X264_B_PYRAMID_NORMAL 2
#define X264_KEYINT_MIN_AUTO 0
static const char * const x264_direct_pred_names[] = { "none", "spatial", "temporal", "auto", 0 }; static const char * const x264_direct_pred_names[] = { "none", "spatial", "temporal", "auto", 0 };
static const char * const x264_motion_est_names[] = { "dia", "hex", "umh", "esa", "tesa", 0 }; static const char * const x264_motion_est_names[] = { "dia", "hex", "umh", "esa", "tesa", 0 };
......
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