Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: source/libvpx/vpxdec.c

Issue 7671004: Update libvpx snapshot to v0.9.7-p1 (Cayuga). (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: source/libvpx/vpxdec.c
===================================================================
--- source/libvpx/vpxdec.c (revision 96967)
+++ source/libvpx/vpxdec.c (working copy)
@@ -87,7 +87,10 @@
"Max threads to use");
static const arg_def_t verbosearg = ARG_DEF("v", "verbose", 0,
"Show version string");
+static const arg_def_t error_concealment = ARG_DEF(NULL, "error-concealment", 0,
+ "Enable decoder error-concealment");
+
#if CONFIG_MD5
static const arg_def_t md5arg = ARG_DEF(NULL, "md5", 0,
"Compute the MD5 sum of the decoded frame");
@@ -100,6 +103,7 @@
#if CONFIG_MD5
&md5arg,
#endif
+ &error_concealment,
NULL
};
@@ -573,12 +577,10 @@
{
unsigned int i, n;
int track_type = -1;
- uint64_t tstamp=0;
nestegg_io io = {nestegg_read_cb, nestegg_seek_cb, nestegg_tell_cb,
input->infile};
nestegg_video_params params;
- nestegg_packet * pkt;
if(nestegg_init(&input->nestegg_ctx, io, NULL))
goto fail;
@@ -702,6 +704,7 @@
FILE *infile;
int frame_in = 0, frame_out = 0, flipuv = 0, noblit = 0, do_md5 = 0, progress = 0;
int stop_after = 0, postproc = 0, summary = 0, quiet = 1;
+ int ec_enabled = 0;
vpx_codec_iface_t *iface = NULL;
unsigned int fourcc;
unsigned long dx_time = 0;
@@ -725,6 +728,8 @@
int vp8_dbg_display_mv = 0;
#endif
struct input_ctx input = {0};
+ int frames_corrupted = 0;
+ int dec_flags = 0;
/* Parse command line */
exec_name = argv_[0];
@@ -844,6 +849,10 @@
vp8_dbg_display_mv = flags;
}
}
+ else if (arg_match(&arg, &error_concealment, argi))
+ {
+ ec_enabled = 1;
+ }
#endif
else
@@ -964,8 +973,10 @@
break;
}
+ dec_flags = (postproc ? VPX_CODEC_USE_POSTPROC : 0) |
+ (ec_enabled ? VPX_CODEC_USE_ERROR_CONCEALMENT : 0);
if (vpx_codec_dec_init(&decoder, iface ? iface : ifaces[0].iface, &cfg,
- postproc ? VPX_CODEC_USE_POSTPROC : 0))
+ dec_flags))
{
fprintf(stderr, "Failed to initialize decoder: %s\n", vpx_codec_error(&decoder));
return EXIT_FAILURE;
@@ -1018,6 +1029,7 @@
vpx_codec_iter_t iter = NULL;
vpx_image_t *img;
struct vpx_usec_timer timer;
+ int corrupted;
vpx_usec_timer_start(&timer);
@@ -1037,6 +1049,14 @@
++frame_in;
+ if (vpx_codec_control(&decoder, VP8D_GET_FRAME_CORRUPTED, &corrupted))
+ {
+ fprintf(stderr, "Failed VP8_GET_FRAME_CORRUPTED: %s\n",
+ vpx_codec_error(&decoder));
+ goto fail;
+ }
+ frames_corrupted += corrupted;
+
if ((img = vpx_codec_get_frame(&decoder, &iter)))
++frame_out;
@@ -1102,6 +1122,9 @@
fprintf(stderr, "\n");
}
+ if (frames_corrupted)
+ fprintf(stderr, "WARNING: %d frames corrupted.\n",frames_corrupted);
+
fail:
if (vpx_codec_destroy(&decoder))
@@ -1120,5 +1143,5 @@
fclose(infile);
free(argv);
- return EXIT_SUCCESS;
+ return frames_corrupted ? EXIT_FAILURE : EXIT_SUCCESS;
}

Powered by Google App Engine
This is Rietveld 408576698