diff options
author | 2004-10-08 12:38:39 +0000 | |
---|---|---|
committer | 2004-10-08 12:38:39 +0000 | |
commit | 9f3bc811f40afb87cdec31001e4f6c84789ecc12 (patch) | |
tree | 69092d654204048347ab0d188b734153d8929cce | |
parent | 3f544ef6eda1ed4b477fb387c5287bb35b0e2f75 (diff) |
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
-rw-r--r-- | DOCS/man/en/mplayer.1 | 10 | ||||
-rw-r--r-- | libmpcodecs/ve_x264.c | 3 |
2 files changed, 13 insertions, 0 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1 index f6410e9125..a88ebd6d98 100644 --- a/DOCS/man/en/mplayer.1 +++ b/DOCS/man/en/mplayer.1 @@ -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 diff --git a/libmpcodecs/ve_x264.c b/libmpcodecs/ve_x264.c index a488073db4..7b3584cf00 100644 --- a/libmpcodecs/ve_x264.c +++ b/libmpcodecs/ve_x264.c @@ -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; |