Index: source/libvpx/vpxdec.c |
=================================================================== |
--- source/libvpx/vpxdec.c (revision 281795) |
+++ source/libvpx/vpxdec.c (working copy) |
@@ -77,6 +77,8 @@ |
"Enable decoder error-concealment"); |
static const arg_def_t scalearg = ARG_DEF("S", "scale", 0, |
"Scale output frames uniformly"); |
+static const arg_def_t continuearg = |
+ ARG_DEF("k", "keep-going", 0, "(debug) Continue decoding after error"); |
static const arg_def_t fb_arg = |
ARG_DEF(NULL, "frame-buffers", 1, "Number of frame buffers to use"); |
@@ -88,8 +90,7 @@ |
&codecarg, &use_yv12, &use_i420, &flipuvarg, &noblitarg, |
&progressarg, &limitarg, &skiparg, &postprocarg, &summaryarg, &outputfile, |
&threadsarg, &verbosearg, &scalearg, &fb_arg, |
- &md5arg, |
- &error_concealment, |
+ &md5arg, &error_concealment, &continuearg, |
NULL |
}; |
@@ -497,6 +498,7 @@ |
int stop_after = 0, postproc = 0, summary = 0, quiet = 1; |
int arg_skip = 0; |
int ec_enabled = 0; |
+ int keep_going = 0; |
const VpxInterface *interface = NULL; |
const VpxInterface *fourcc_interface = NULL; |
uint64_t dx_time = 0; |
@@ -632,6 +634,8 @@ |
} |
} else if (arg_match(&arg, &error_concealment, argi)) { |
ec_enabled = 1; |
+ } else if (arg_match(&arg, &continuearg, argi)) { |
+ keep_going = 1; |
} |
#endif |
@@ -814,7 +818,8 @@ |
if (detail) |
warn("Additional information: %s", detail); |
- goto fail; |
+ if (!keep_going) |
+ goto fail; |
} |
vpx_usec_timer_mark(&timer); |
@@ -895,7 +900,8 @@ |
len = y4m_write_file_header(buf, sizeof(buf), |
vpx_input_ctx.width, |
vpx_input_ctx.height, |
- &vpx_input_ctx.framerate, img->fmt); |
+ &vpx_input_ctx.framerate, |
+ img->fmt, 8); |
if (do_md5) { |
MD5Update(&md5_ctx, (md5byte *)buf, (unsigned int)len); |
} else { |