media/libvpx/input_frame_validation.patch
author Johann <johannkoenig@google.com>
Tue, 17 Jan 2017 13:46:42 -0800
changeset 360708 58764883978d7959d480b9d2722c16f40f63bf96
parent 360482 70a5310085fa0c77bfcf88c4180c3e3af438a44d
permissions -rw-r--r--
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 changeset patch
# User Randell Jesup <rjesup@jesup.org>
# Parent  1b77af186da211485fa9c5573d843d96c708a829
Bug 1263384: validate input frames against configured resolution in vp8 r=rillian

MozReview-Commit-ID: BxDCnJe0mzs

diff --git a/media/libvpx/libvpx/vp8/vp8_cx_iface.c b/media/libvpx/libvpx/vp8/vp8_cx_iface.c
--- a/media/libvpx/libvpx/vp8/vp8_cx_iface.c
+++ b/media/libvpx/libvpx/vp8/vp8_cx_iface.c
@@ -855,20 +855,29 @@ static vpx_codec_err_t vp8e_encode(vpx_codec_alg_priv_t *ctx,
     dst_time_stamp =
         pts * 10000000 * ctx->cfg.g_timebase.num / ctx->cfg.g_timebase.den;
     dst_end_time_stamp = (pts + duration) * 10000000 * ctx->cfg.g_timebase.num /
                          ctx->cfg.g_timebase.den;

     if (img != NULL) {
       res = image2yuvconfig(img, &sd);
 
-      if (vp8_receive_raw_frame(ctx->cpi, ctx->next_frame_flag | lib_flags, &sd,
-                                dst_time_stamp, dst_end_time_stamp)) {
-        VP8_COMP *cpi = (VP8_COMP *)ctx->cpi;
-        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 {
+        if (vp8_receive_raw_frame(ctx->cpi, ctx->next_frame_flag | lib_flags,
+                                  &sd, dst_time_stamp, dst_end_time_stamp)) {
+          VP8_COMP *cpi = (VP8_COMP *)ctx->cpi;
+          res = update_error_state(ctx, &cpi->common.error);
+        }
       }

       /* reset for next frame */
       ctx->next_frame_flag = 0;
     }

     cx_data = ctx->cx_data;
     cx_data_sz = ctx->cx_data_sz;