# HG changeset patch # User corey # Date 1149315964 0 # Node ID 97af1b315f5965e8b3242d724015f161686250d4 # Parent 97d9937d4ce729e8eaf45dad0b1218d36be85c5c Make B-frame reduction sensitivity by b_strategy/vb_strategy = 1 user-tunable. diff -r 97d9937d4ce7 -r 97af1b315f59 avcodec.h --- a/avcodec.h Sat Jun 03 04:38:11 2006 +0000 +++ b/avcodec.h Sat Jun 03 06:26:04 2006 +0000 @@ -1977,6 +1977,13 @@ * - decoding: unused */ int mv0_threshold; + + /** + * adjusts sensitivity of b_frame_strategy 1 + * - encoding: set by user. + * - decoding: unused + */ + int b_sensitivity; } AVCodecContext; /** diff -r 97d9937d4ce7 -r 97af1b315f59 mpegvideo.c --- a/mpegvideo.c Sat Jun 03 04:38:11 2006 +0000 +++ b/mpegvideo.c Sat Jun 03 06:26:04 2006 +0000 @@ -2375,7 +2375,7 @@ } } for(i=0; imax_b_frames+1; i++){ - if(s->input_picture[i]==NULL || s->input_picture[i]->b_frame_score - 1 > s->mb_num/40) break; + if(s->input_picture[i]==NULL || s->input_picture[i]->b_frame_score - 1 > s->mb_num/s->avctx->b_sensitivity) break; } b_frames= FFMAX(0, i-1); diff -r 97d9937d4ce7 -r 97af1b315f59 utils.c --- a/utils.c Sat Jun 03 04:38:11 2006 +0000 +++ b/utils.c Sat Jun 03 06:26:04 2006 +0000 @@ -741,6 +741,7 @@ {"sc_factor", NULL, OFFSET(scenechange_factor), FF_OPT_TYPE_INT, 6, 0, INT_MAX, V|E}, {"mv0_threshold", NULL, OFFSET(mv0_threshold), FF_OPT_TYPE_INT, 256, 0, INT_MAX, V|E}, {"ivlc", "intra vlc table", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_INTRA_VLC, INT_MIN, INT_MAX, V|E, "flags2"}, +{"b_sensitivity", NULL, OFFSET(b_sensitivity), FF_OPT_TYPE_INT, 40, 1, INT_MAX, V|E}, {NULL}, }; @@ -796,6 +797,7 @@ s->nsse_weight= 8; s->sample_fmt= SAMPLE_FMT_S16; // FIXME: set to NONE s->mv0_threshold= 256; + s->b_sensitivity= 40; s->intra_quant_bias= FF_DEFAULT_QUANT_BIAS; s->inter_quant_bias= FF_DEFAULT_QUANT_BIAS;