diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-10-01 18:17:16 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-10-07 23:58:59 +0200 |
commit | b6b9c150f06adc5a2feada116e9d8f3c3fba8b71 (patch) | |
tree | 14485ef7dd94b9b6d89df397398ffdc38448e7eb | |
parent | 728bb910ec04ef7138a4089ca72398270210e11f (diff) | |
download | ffmpeg-b6b9c150f06adc5a2feada116e9d8f3c3fba8b71.tar.gz |
ffmpeg: add max_error_rate to allow tuning the point decoding errors are considered a failure of the whole transcoding.
Suggested-by: Daemon404
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | ffmpeg.c | 2 | ||||
-rw-r--r-- | ffmpeg.h | 1 | ||||
-rw-r--r-- | ffmpeg_opt.c | 3 |
3 files changed, 5 insertions, 1 deletions
@@ -3420,7 +3420,7 @@ int main(int argc, char **argv) } av_log(NULL, AV_LOG_DEBUG, "%"PRIu64" frames successfully decoded, %"PRIu64" decoding errors\n", decode_error_stat[0], decode_error_stat[1]); - if (2*decode_error_stat[0] < decode_error_stat[1]) + if ((decode_error_stat[0] + decode_error_stat[1]) * max_error_rate < decode_error_stat[1]) exit_program(69); exit_program(received_nb_signals ? 255 : 0); @@ -420,6 +420,7 @@ extern int qp_hist; extern int stdin_interaction; extern int frame_bits_per_raw_sample; extern AVIOContext *progress_avio; +extern float max_error_rate; extern const AVIOInterruptCB int_cb; diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index 59470f5588..738d61269a 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -84,6 +84,7 @@ int print_stats = -1; int qp_hist = 0; int stdin_interaction = 1; int frame_bits_per_raw_sample = 0; +float max_error_rate = 2.0/3; static int intra_only = 0; @@ -2717,6 +2718,8 @@ const OptionDef options[] = { "extract an attachment into a file", "filename" }, { "debug_ts", OPT_BOOL | OPT_EXPERT, { &debug_ts }, "print timestamp debugging info" }, + { "max_error_rate", HAS_ARG | OPT_FLOAT, { &max_error_rate }, + "maximum error rate", "ratio of errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success." }, /* video options */ { "vframes", OPT_VIDEO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_video_frames }, |