[SCM] libav/experimental: make zero motion vector threshold user setable
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 15:47:38 UTC 2013
The following commit has been merged in the experimental branch:
commit 1dd509b1576e9fcac45ea63a664abf29ee419ded
Author: Michael Niedermayer <michaelni at gmx.at>
Date: Sun May 7 11:48:07 2006 +0000
make zero motion vector threshold user setable
Originally committed as revision 5348 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 0ba573e..a5eb93b 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 23ead28..16d34bb 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 3a26c6f..4fc8196 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;
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list