Adds a parameter 'scenecut', to control the threshold for inserting extra I-frames.

patch by  Loren Merritt


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13585 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
iive 2004-10-08 12:38:39 +00:00
parent 3f544ef6ed
commit 9f3bc811f4
2 changed files with 13 additions and 0 deletions

View File

@ -6779,6 +6779,16 @@ IDR-Frames restrict subsequent P-frames from referring to any frame
prior to the IDR-Frame.
.
.TP
.B scenecut=<-1\-100>
Controls how aggressively to insert extra I-frames (default: 40).
With small values of scenecut, the codec often has to force an I-frame
when it would exceed keyint.
Good values of scenecut may find a better location for the I-frame.
Large values use more I-frames than necessary, thus wasting bits.
-1 disables scene-cut detection, so I-frames are be inserted only every
other keyint frames, which probably leads to ugly encoding artifacts.
.
.TP
.B frameref=<1\-15>
Number of previous frames used as predictors in a P frame (default: 1).
This is effective in Anime, but seems to make little difference in

View File

@ -63,6 +63,7 @@ static int qp_constant = 26;
static int frame_ref = 1;
static int iframe = 250;
static int idrframe = 2;
static int scenecut_threshold = 40;
static int bframe = 0;
static int deblock = 1;
static int deblockalpha = 0;
@ -92,6 +93,7 @@ m_option_t x264encopts_conf[] = {
{"frameref", &frame_ref, CONF_TYPE_INT, CONF_RANGE, 1, 15, NULL},
{"keyint", &iframe, CONF_TYPE_INT, CONF_RANGE, 1, 24000000, NULL},
{"idrint", &idrframe, CONF_TYPE_INT, CONF_RANGE, 1, 24000000, NULL},
{"scenecut", &scenecut_threshold, CONF_TYPE_INT, CONF_RANGE, -1, 100, NULL},
{"bframes", &bframe, CONF_TYPE_INT, CONF_RANGE, 0, 16, NULL},
{"deblock", &deblock, CONF_TYPE_FLAG, 0, 0, 1, NULL},
{"nodeblock", &deblock, CONF_TYPE_FLAG, 0, 1, 0, NULL},
@ -132,6 +134,7 @@ static int config(struct vf_instance_s* vf, int width, int height, int d_width,
mod->param.i_frame_reference = frame_ref;
mod->param.i_idrframe = idrframe;
mod->param.i_iframe = iframe;
mod->param.i_scenecut_threshold = scenecut_threshold;
mod->param.i_bframe = bframe;
mod->param.b_deblocking_filter = deblock;
mod->param.i_deblocking_filter_alphac0 = deblockalpha;