X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2Flibvpx%2Fsource%2Flibvpx%2Fvpx%2Fsrc%2Fvpx_image.c;h=8c7e3cfcaec137c4665bdfd139eda0fa49c92153;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=36eda958ede75424d4d1a7ca98385a47420fe788;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/libvpx/source/libvpx/vpx/src/vpx_image.c b/src/third_party/libvpx/source/libvpx/vpx/src/vpx_image.c index 36eda95..8c7e3cf 100644 --- a/src/third_party/libvpx/source/libvpx/vpx/src/vpx_image.c +++ b/src/third_party/libvpx/source/libvpx/vpx/src/vpx_image.c @@ -12,6 +12,7 @@ #include #include #include "vpx/vpx_image.h" +#include "vpx/vpx_integer.h" #define ADDRESS_STORAGE_SIZE sizeof(size_t) /*returns an addr aligned to the byte boundary specified by align*/ @@ -40,13 +41,13 @@ static void img_buf_free(void *memblk) { } } -static vpx_image_t *img_alloc_helper(vpx_image_t *img, - vpx_img_fmt_t fmt, - unsigned int d_w, - unsigned int d_h, - unsigned int buf_align, - unsigned int stride_align, - unsigned char *img_data) { +static vpx_image_t *img_alloc_helper(vpx_image_t *img, + vpx_img_fmt_t fmt, + unsigned int d_w, + unsigned int d_h, + unsigned int buf_align, + unsigned int stride_align, + unsigned char *img_data) { unsigned int h, w, s, xcs, ycs, bps; int align; @@ -94,6 +95,21 @@ static vpx_image_t *img_alloc_helper(vpx_image_t *img, case VPX_IMG_FMT_VPXYV12: bps = 12; break; + case VPX_IMG_FMT_I422: + bps = 16; + break; + case VPX_IMG_FMT_I444: + bps = 24; + break; + case VPX_IMG_FMT_I42016: + bps = 24; + break; + case VPX_IMG_FMT_I42216: + bps = 32; + break; + case VPX_IMG_FMT_I44416: + bps = 48; + break; default: bps = 16; break; @@ -105,6 +121,9 @@ static vpx_image_t *img_alloc_helper(vpx_image_t *img, case VPX_IMG_FMT_YV12: case VPX_IMG_FMT_VPXI420: case VPX_IMG_FMT_VPXYV12: + case VPX_IMG_FMT_I422: + case VPX_IMG_FMT_I42016: + case VPX_IMG_FMT_I42216: xcs = 1; break; default: @@ -147,8 +166,13 @@ static vpx_image_t *img_alloc_helper(vpx_image_t *img, img->img_data = img_data; if (!img_data) { - img->img_data = img_buf_memalign(buf_align, ((fmt & VPX_IMG_FMT_PLANAR) ? - h * s * bps / 8 : h * s)); + const uint64_t alloc_size = (fmt & VPX_IMG_FMT_PLANAR) ? + (uint64_t)h * s * bps / 8 : (uint64_t)h * s; + + if (alloc_size != (size_t)alloc_size) + goto fail; + + img->img_data = img_buf_memalign(buf_align, (size_t)alloc_size); img->img_data_owner = 1; } @@ -156,6 +180,7 @@ static vpx_image_t *img_alloc_helper(vpx_image_t *img, goto fail; img->fmt = fmt; + img->bit_depth = (fmt & VPX_IMG_FMT_HIGH) ? 16 : 8; img->w = w; img->h = h; img->x_chroma_shift = xcs;