diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2006-05-07 11:48:07 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2006-05-07 11:48:07 +0000 |
commit | 1dd509b1576e9fcac45ea63a664abf29ee419ded (patch) | |
tree | 5da894f614107fe5e10f3d54b1eb98a738c6f7f4 | |
parent | 60827a1a802f0608852b1bd2184fc7d4bcd71cd4 (diff) | |
download | ffmpeg-1dd509b1576e9fcac45ea63a664abf29ee419ded.tar.gz |
make zero motion vector threshold user setable
Originally committed as revision 5348 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/avcodec.h | 8 | ||||
-rw-r--r-- | libavcodec/motion_est_template.c | 3 | ||||
-rw-r--r-- | libavcodec/utils.c | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 0ba573e5ba..a5eb93b008 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1967,6 +1967,14 @@ typedef struct AVCodecContext { * - decoding: unused */ int scenechange_factor; + + /** + * + * note: value depends upon the compare functin used for fullpel ME + * - encoding: set by user. + * - decoding: unused + */ + int mv0_threshold; } AVCodecContext; /** diff --git a/libavcodec/motion_est_template.c b/libavcodec/motion_est_template.c index 23ead283c8..16d34bb881 100644 --- a/libavcodec/motion_est_template.c +++ b/libavcodec/motion_est_template.c @@ -896,7 +896,8 @@ static always_inline int epzs_motion_search_internal(MpegEncContext * s, int *mx CHECK_CLIPED_MV((last_mv[ref_mv_xy][0]*ref_mv_scale + (1<<15))>>16, (last_mv[ref_mv_xy][1]*ref_mv_scale + (1<<15))>>16) }else{ - if(dmin<h*h && ( P_LEFT[0] |P_LEFT[1] + if(dmin<((h*h*s->avctx->mv0_threshold)>>8) + && ( P_LEFT[0] |P_LEFT[1] |P_TOP[0] |P_TOP[1] |P_TOPRIGHT[0]|P_TOPRIGHT[1])==0){ *mx_ptr= 0; diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 3a26c6f94a..4fc81968fd 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -739,6 +739,7 @@ static AVOption options[]={ {"partp8x8", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_P8X8, INT_MIN, INT_MAX, V|E, "partitions"}, {"partb8x8", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_B8X8, INT_MIN, INT_MAX, V|E, "partitions"}, {"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}, {NULL}, }; @@ -793,6 +794,7 @@ void avcodec_get_context_defaults(AVCodecContext *s){ s->frame_skip_cmp= FF_CMP_DCTMAX; s->nsse_weight= 8; s->sample_fmt= SAMPLE_FMT_S16; // FIXME: set to NONE + s->mv0_threshold= 256; s->intra_quant_bias= FF_DEFAULT_QUANT_BIAS; s->inter_quant_bias= FF_DEFAULT_QUANT_BIAS; |