summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/tech/libavc-options.txt36
-rw-r--r--libmpcodecs/vd_ffmpeg.c17
2 files changed, 36 insertions, 17 deletions
diff --git a/DOCS/tech/libavc-options.txt b/DOCS/tech/libavc-options.txt
index 1927c581c1..3fa37fa44a 100644
--- a/DOCS/tech/libavc-options.txt
+++ b/DOCS/tech/libavc-options.txt
@@ -247,20 +247,28 @@ ildct use interlaced dct
lavdopts: (decoder options)
---------------------------
-ver error resilience
- -1 needed for some very broken, encoders which completly ignore the
- standards (one M4S2 asf sample know to need this) (default)
- 0
- 1 more aggressive error detection, lavc might think that some correct
- streams contain errors
-
-bug manual workaround encoder bugs (cant be easily detected automatically)
- 0 (default)
- 1 for msmpeg4v3 workaround for some old lavc generated msmpeg4v3 files
- 1 for mpeg4 workaround some opendivx? files (autodetected hopefully)
- see http://heroinewarrior.com for some samples
- 2 for mpeg4 workaround xvid interlacing bug
- 3 for mpeg4 workaround for UMP4 (autodetected hopefully)
+ec error concealment
+ 1 use strong deblock filter for damaged MBs
+ 2 iterative MV search (slow)
+ 3 all (default)
+ Note: just add the ones u want to enable
+
+er error resilience
+ 0 disabled
+ 1 carefull (should work with broken encoders)
+ 2 normal (default) (works with compliant encoders)
+ 3 agressive (more checks but might cause problems even for valid bitstreams)
+ 4 very agressive
+
+bug manual workaround encoder bugs (autodetection isnt foolproof for these)
+ 0 nothing
+ 1 autodetect bugs (default)
+ 2 for msmpeg4v3 some old lavc generated msmpeg4v3 files (no autodetect)
+ 4 for mpeg4 xvid interlacing bug (autodetected if fourcc==XVIX)
+ 8 for mpeg4 UMP4 (autodetected if fourcc==UMP4)
+ 16for mpeg4 padding bug
+ 32for mpeg4 illegal vlc bug (autodetected per fourcc)
+ Note: just add the ones u want to enable
gray grayscale only decoding (a bit faster than with color ...)
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c
index c1881b3507..efcfbc7ba6 100644
--- a/libmpcodecs/vd_ffmpeg.c
+++ b/libmpcodecs/vd_ffmpeg.c
@@ -56,8 +56,13 @@ typedef struct {
static void get_buffer(struct AVCodecContext *avctx, int width, int height, int pict_type);
-static int lavc_param_workaround_bugs=0;
-static int lavc_param_error_resilience=-1;
+#ifdef FF_BUG_AUTODETECT
+static int lavc_param_workaround_bugs= FF_BUG_AUTODETECT;
+#else
+static int lavc_param_workaround_bugs= 0;
+#endif
+static int lavc_param_error_resilience=2;
+static int lavc_param_error_concealment=3;
static int lavc_param_gray=0;
static int lavc_param_vstats=0;
static int lavc_param_idct_algo=0;
@@ -65,7 +70,7 @@ static int lavc_param_idct_algo=0;
struct config lavc_decode_opts_conf[]={
#if LIBAVCODEC_BUILD >= 4611
{"bug", &lavc_param_workaround_bugs, CONF_TYPE_INT, CONF_RANGE, -1, 99, NULL},
- {"ver", &lavc_param_error_resilience, CONF_TYPE_INT, CONF_RANGE, -1, 99, NULL},
+ {"er", &lavc_param_error_resilience, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
#endif
#if LIBAVCODEC_BUILD >= 4614
{"gray", &lavc_param_gray, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
@@ -73,6 +78,9 @@ struct config lavc_decode_opts_conf[]={
#if LIBAVCODEC_BUILD >= 4629
{"idct", &lavc_param_idct_algo, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
#endif
+#if LIBAVCODEC_BUILD >= 4631
+ {"ec", &lavc_param_error_concealment, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
+#endif
{"vstats", &lavc_param_vstats, CONF_TYPE_FLAG, 0, 0, 1, NULL},
{NULL, NULL, 0, 0, 0, 0, NULL}
};
@@ -170,6 +178,9 @@ static int init(sh_video_t *sh){
#if LIBAVCODEC_BUILD >= 4629
avctx->idct_algo= lavc_param_idct_algo;
#endif
+#if LIBAVCODEC_BUILD >= 4631
+ avctx->error_concealment= lavc_param_error_concealment;
+#endif
mp_dbg(MSGT_DECVIDEO,MSGL_DBG2,"libavcodec.size: %d x %d\n",avctx->width,avctx->height);
#if LIBAVCODEC_BUILD >= 4605