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

Unified Diff: source/libvpx/vpx_scale/generic/yv12config.c

Issue 394353005: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 5 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
« no previous file with comments | « source/libvpx/vpx/vpx_encoder.h ('k') | source/libvpx/vpxdec.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/libvpx/vpx_scale/generic/yv12config.c
===================================================================
--- source/libvpx/vpx_scale/generic/yv12config.c (revision 284462)
+++ source/libvpx/vpx_scale/generic/yv12config.c (working copy)
@@ -142,34 +142,39 @@
const int aligned_width = (width + 7) & ~7;
const int aligned_height = (height + 7) & ~7;
const int y_stride = ((aligned_width + 2 * border) + 31) & ~31;
- const int yplane_size = (aligned_height + 2 * border) * y_stride;
+ const uint64_t yplane_size = (aligned_height + 2 * border) *
+ (uint64_t)y_stride;
const int uv_width = aligned_width >> ss_x;
const int uv_height = aligned_height >> ss_y;
const int uv_stride = y_stride >> ss_x;
const int uv_border_w = border >> ss_x;
const int uv_border_h = border >> ss_y;
- const int uvplane_size = (uv_height + 2 * uv_border_h) * uv_stride;
+ const uint64_t uvplane_size = (uv_height + 2 * uv_border_h) *
+ (uint64_t)uv_stride;
#if CONFIG_ALPHA
const int alpha_width = aligned_width;
const int alpha_height = aligned_height;
const int alpha_stride = y_stride;
const int alpha_border_w = border;
const int alpha_border_h = border;
- const int alpha_plane_size = (alpha_height + 2 * alpha_border_h) *
- alpha_stride;
- const int frame_size = yplane_size + 2 * uvplane_size +
- alpha_plane_size;
+ const uint64_t alpha_plane_size = (alpha_height + 2 * alpha_border_h) *
+ (uint64_t)alpha_stride;
+ const uint64_t frame_size = yplane_size + 2 * uvplane_size +
+ alpha_plane_size;
#else
- const int frame_size = yplane_size + 2 * uvplane_size;
+ const uint64_t frame_size = yplane_size + 2 * uvplane_size;
#endif
if (cb != NULL) {
const int align_addr_extra_size = 31;
- const size_t external_frame_size = frame_size + align_addr_extra_size;
+ const uint64_t external_frame_size = frame_size + align_addr_extra_size;
assert(fb != NULL);
+ if (external_frame_size != (size_t)external_frame_size)
+ return -1;
+
// Allocation to hold larger frame, or first allocation.
- if (cb(cb_priv, external_frame_size, fb) < 0)
+ if (cb(cb_priv, (size_t)external_frame_size, fb) < 0)
return -1;
if (fb->data == NULL || fb->size < external_frame_size)
@@ -181,14 +186,19 @@
vpx_memset(fb->data, 0, fb->size);
ybf->buffer_alloc = (uint8_t *)yv12_align_addr(fb->data, 32);
- } else if (frame_size > ybf->buffer_alloc_sz) {
+ } else if (frame_size > (size_t)ybf->buffer_alloc_sz) {
// Allocation to hold larger frame, or first allocation.
vpx_free(ybf->buffer_alloc);
- ybf->buffer_alloc = (uint8_t *)vpx_memalign(32, frame_size);
+ ybf->buffer_alloc = NULL;
+
+ if (frame_size != (size_t)frame_size)
+ return -1;
+
+ ybf->buffer_alloc = (uint8_t *)vpx_memalign(32, (size_t)frame_size);
if (!ybf->buffer_alloc)
return -1;
- ybf->buffer_alloc_sz = frame_size;
+ ybf->buffer_alloc_sz = (int)frame_size;
// This memset is needed for fixing valgrind error from C loop filter
// due to access uninitialized memory in frame border. It could be
@@ -217,7 +227,7 @@
ybf->uv_stride = uv_stride;
ybf->border = border;
- ybf->frame_size = frame_size;
+ ybf->frame_size = (int)frame_size;
ybf->y_buffer = ybf->buffer_alloc + (border * y_stride) + border;
ybf->u_buffer = ybf->buffer_alloc + yplane_size +
« no previous file with comments | « source/libvpx/vpx/vpx_encoder.h ('k') | source/libvpx/vpxdec.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698