Commit 9c53ff2c authored by Frank Barchard's avatar Frank Barchard

Fix temporary stride for ConvertToARGB with rotation.

BUG=libyuv:578
TESTED=local unittests pass
R=harryjin@google.com

Review URL: https://codereview.chromium.org/1879783002 .
parent 9cb07057
Name: libyuv Name: libyuv
URL: http://code.google.com/p/libyuv/ URL: http://code.google.com/p/libyuv/
Version: 1583 Version: 1584
License: BSD License: BSD
License File: LICENSE License File: LICENSE
......
...@@ -11,6 +11,6 @@ ...@@ -11,6 +11,6 @@
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT #ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
#define INCLUDE_LIBYUV_VERSION_H_ #define INCLUDE_LIBYUV_VERSION_H_
#define LIBYUV_VERSION 1583 #define LIBYUV_VERSION 1584
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT #endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
...@@ -23,7 +23,7 @@ namespace libyuv { ...@@ -23,7 +23,7 @@ namespace libyuv {
extern "C" { extern "C" {
#endif #endif
// Convert camera sample to I420 with cropping, rotation and vertical flip. // Convert camera sample to ARGB with cropping, rotation and vertical flip.
// src_width is used for source stride computation // src_width is used for source stride computation
// src_height is used to compute location of planes, and indicate inversion // src_height is used to compute location of planes, and indicate inversion
// sample_size is measured in bytes and is the size of the frame. // sample_size is measured in bytes and is the size of the frame.
...@@ -51,8 +51,8 @@ int ConvertToARGB(const uint8* sample, size_t sample_size, ...@@ -51,8 +51,8 @@ int ConvertToARGB(const uint8* sample, size_t sample_size,
// also enable temporary buffer. // also enable temporary buffer.
LIBYUV_BOOL need_buf = (rotation && format != FOURCC_ARGB) || LIBYUV_BOOL need_buf = (rotation && format != FOURCC_ARGB) ||
crop_argb == sample; crop_argb == sample;
uint8* tmp_argb = crop_argb; uint8* dest_argb = crop_argb;
int tmp_argb_stride = argb_stride; int dest_argb_stride = argb_stride;
uint8* rotate_buffer = NULL; uint8* rotate_buffer = NULL;
int abs_crop_height = (crop_height < 0) ? -crop_height : crop_height; int abs_crop_height = (crop_height < 0) ? -crop_height : crop_height;
...@@ -66,13 +66,13 @@ int ConvertToARGB(const uint8* sample, size_t sample_size, ...@@ -66,13 +66,13 @@ int ConvertToARGB(const uint8* sample, size_t sample_size,
} }
if (need_buf) { if (need_buf) {
int argb_size = crop_width * abs_crop_height * 4; int argb_size = crop_width * 4 * abs_crop_height;
rotate_buffer = (uint8*)malloc(argb_size); rotate_buffer = (uint8*)malloc(argb_size);
if (!rotate_buffer) { if (!rotate_buffer) {
return 1; // Out of memory runtime error. return 1; // Out of memory runtime error.
} }
crop_argb = rotate_buffer; crop_argb = rotate_buffer;
argb_stride = crop_width; argb_stride = crop_width * 4;
} }
switch (format) { switch (format) {
...@@ -291,7 +291,7 @@ int ConvertToARGB(const uint8* sample, size_t sample_size, ...@@ -291,7 +291,7 @@ int ConvertToARGB(const uint8* sample, size_t sample_size,
if (need_buf) { if (need_buf) {
if (!r) { if (!r) {
r = ARGBRotate(crop_argb, argb_stride, r = ARGBRotate(crop_argb, argb_stride,
tmp_argb, tmp_argb_stride, dest_argb, dest_argb_stride,
crop_width, abs_crop_height, rotation); crop_width, abs_crop_height, rotation);
} }
free(rotate_buffer); free(rotate_buffer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment