gecko-dev/media/libvpx/input_frame_validation_vp9.patch
Johann ea398a02dc Bug 1331498: Update libvpx to v1.6.1. r=rillian
Removes armv6 and mmx optimizations.

Removes x86inc.asm distinction. This was put in place because of issues
with 32bit PIC builds but x86inc.asm has since been improved to support
those.

Switch to '.S' for arm assembly. There is now an #include for a helper
file. All build systems appear to support .S so switch to it for
consistency.

Remove clang-cl.patch. There have been numerous changes upstream to
improve clang support.

MozReview-Commit-ID: IHVTbqSY2U7

--HG--
extra : rebase_source : 788796674e3eabed0c178ca327bc5e7628e03382
2017-01-17 13:46:42 -08:00

45 lines
1.8 KiB
Diff

# HG changeset patch
# User Randell Jesup <rjesup@jesup.org>
# Parent 87841f3bfc9d99a37e31cd43b2e2d03c325af84f
Bug 1315288: Add input checks for VP9 r=rillian
diff --git a/media/libvpx/libvpx/vp9/vp9_cx_iface.c b/media/libvpx/libvpx/vp9/vp9_cx_iface.c
--- a/media/libvpx/libvpx/vp9/vp9_cx_iface.c
+++ b/media/libvpx/libvpx/vp9/vp9_cx_iface.c
@@ -1129,21 +1129,30 @@ static vpx_codec_err_t encoder_encode(vpx_codec_alg_priv_t *ctx,
unsigned char *cx_data;
// Set up internal flags
if (ctx->base.init_flags & VPX_CODEC_USE_PSNR) cpi->b_calculate_psnr = 1;
if (img != NULL) {
res = image2yuvconfig(img, &sd);
- // Store the original flags in to the frame buffer. Will extract the
- // key frame flag when we actually encode this frame.
- if (vp9_receive_raw_frame(cpi, flags | ctx->next_frame_flags, &sd,
- dst_time_stamp, dst_end_time_stamp)) {
- res = update_error_state(ctx, &cpi->common.error);
+ if (sd.y_width != ctx->cfg.g_w || sd.y_height != ctx->cfg.g_h) {
+ /* from vpx_encoder.h for g_w/g_h:
+ "Note that the frames passed as input to the encoder must have this
+ resolution"
+ */
+ ctx->base.err_detail = "Invalid input frame resolution";
+ res = VPX_CODEC_INVALID_PARAM;
+ } else {
+ // Store the original flags in to the frame buffer. Will extract the
+ // key frame flag when we actually encode this frame.
+ if (vp9_receive_raw_frame(cpi, flags | ctx->next_frame_flags, &sd,
+ dst_time_stamp, dst_end_time_stamp)) {
+ res = update_error_state(ctx, &cpi->common.error);
+ }
}
ctx->next_frame_flags = 0;
}
cx_data = ctx->cx_data;
cx_data_sz = ctx->cx_data_sz;
/* Any pending invisible frames? */