shithub: libvpx

Download patch

ref: 28e44bbb0b71ef5343b87587cbbce6d8a3c25018
parent: 2117fe059319e87b101c39fe13bf523523c5a394
parent: d427fab587842abee67f0f29c1aa8a904fd0a2b0
author: Yaowu Xu <yaowu@google.com>
date: Fri Nov 22 12:01:07 EST 2013

Merge "Fix bug in extend_frame chroma extended too far"

--- a/vpx_scale/generic/yv12extend.c
+++ b/vpx_scale/generic/yv12extend.c
@@ -84,14 +84,13 @@
 static void extend_frame(YV12_BUFFER_CONFIG *const ybf,
                          int subsampling_x, int subsampling_y,
                          int ext_size) {
-  const int c_w = (ybf->y_crop_width + subsampling_x) >> subsampling_x;
-  const int c_h = (ybf->y_crop_height + subsampling_y) >> subsampling_y;
-  const int c_et = ext_size >> subsampling_y;
-  const int c_el = ext_size >> subsampling_x;
-  const int c_eb = (ext_size + ybf->y_height - ybf->y_crop_height +
-                    subsampling_y) >> subsampling_y;
-  const int c_er = (ext_size + ybf->y_width - ybf->y_crop_width +
-                    subsampling_x) >> subsampling_x;
+  const int c_w = ybf->uv_crop_width;
+  const int c_h = ybf->uv_crop_height;
+  const int c_ext_size = ext_size >> 1;
+  const int c_et = c_ext_size;
+  const int c_el = c_ext_size;
+  const int c_eb = c_ext_size + ybf->uv_height - ybf->uv_crop_height;
+  const int c_er = c_ext_size + ybf->uv_width - ybf->uv_crop_width;
 
   assert(ybf->y_height - ybf->y_crop_height < 16);
   assert(ybf->y_width - ybf->y_crop_width < 16);
--- a/vpxdec.c
+++ b/vpxdec.c
@@ -864,7 +864,8 @@
 fail:
 
   if (vpx_codec_destroy(&decoder)) {
-    fprintf(stderr, "Failed to destroy decoder: %s\n", vpx_codec_error(&decoder));
+    fprintf(stderr, "Failed to destroy decoder: %s\n",
+            vpx_codec_error(&decoder));
     return EXIT_FAILURE;
   }
 
@@ -875,6 +876,8 @@
     webm_free(input.webm_ctx);
   else
     free(buf);
+
+  if (scaled_img) vpx_img_free(scaled_img);
 
   fclose(infile);
   free(argv);
--