diff --git a/tools_common.c b/tools_common.c index 4f2ac7401..8825528a5 100644 --- a/tools_common.c +++ b/tools_common.c @@ -83,11 +83,12 @@ int read_yuv_frame(struct VpxInputContext *input_ctx, vpx_image_t *yuv_frame) { struct FileTypeDetectionBuffer *detect = &input_ctx->detect; int plane = 0; int shortread = 0; + const int bytespp = (input_ctx->fmt & VPX_IMG_FMT_HIGH) ? 2 : 1; for (plane = 0; plane < 3; ++plane) { uint8_t *ptr; - const int w = (plane ? (1 + yuv_frame->d_w) / 2 : yuv_frame->d_w); - const int h = (plane ? (1 + yuv_frame->d_h) / 2 : yuv_frame->d_h); + const int w = vpx_img_plane_width(yuv_frame, plane); + const int h = vpx_img_plane_height(yuv_frame, plane); int r; /* Determine the correct plane based on the image format. The for-loop @@ -108,7 +109,7 @@ int read_yuv_frame(struct VpxInputContext *input_ctx, vpx_image_t *yuv_frame) { } for (r = 0; r < h; ++r) { - size_t needed = w; + size_t needed = w * bytespp; size_t buf_position = 0; const size_t left = detect->buf_read - detect->position; if (left > 0) { diff --git a/vp8/vp8_dx_iface.c b/vp8/vp8_dx_iface.c index b695ddc8d..fb3c236ce 100644 --- a/vp8/vp8_dx_iface.c +++ b/vp8/vp8_dx_iface.c @@ -269,6 +269,7 @@ static void yuvconfig2image(vpx_image_t *img, img->stride[VPX_PLANE_U] = yv12->uv_stride; img->stride[VPX_PLANE_V] = yv12->uv_stride; img->stride[VPX_PLANE_ALPHA] = yv12->y_stride; + img->bit_depth = 8; img->bps = 12; img->user_priv = user_priv; img->img_data = yv12->buffer_alloc; diff --git a/vpxdec.c b/vpxdec.c index 1213ab6b5..5c98d2667 100644 --- a/vpxdec.c +++ b/vpxdec.c @@ -875,6 +875,7 @@ int main_loop(int argc, const char **argv_) { } scaled_img = vpx_img_alloc(NULL, VPX_IMG_FMT_I420, display_width, display_height, 16); + scaled_img->bit_depth = img->bit_depth; } if (img->d_w != scaled_img->d_w || img->d_h != scaled_img->d_h) { @@ -901,7 +902,7 @@ int main_loop(int argc, const char **argv_) { vpx_input_ctx.width, vpx_input_ctx.height, &vpx_input_ctx.framerate, - img->fmt, 8); + img->fmt, img->bit_depth); if (do_md5) { MD5Update(&md5_ctx, (md5byte *)buf, (unsigned int)len); } else {