diff --git a/source/scale.cc b/source/scale.cc index 7e762a1f..dd292f2f 100644 --- a/source/scale.cc +++ b/source/scale.cc @@ -51,7 +51,7 @@ static void ScalePlaneDown2(int src_width, ? ScaleRowDown2_C : (filtering == kFilterLinear ? ScaleRowDown2Linear_C : ScaleRowDown2Box_C); - int row_stride = src_stride * 2; + ptrdiff_t row_stride = (ptrdiff_t)src_stride * 2; (void)src_width; (void)src_height; if (!filtering) { @@ -163,7 +163,7 @@ static void ScalePlaneDown2_16(int src_width, ? ScaleRowDown2_16_C : (filtering == kFilterLinear ? ScaleRowDown2Linear_16_C : ScaleRowDown2Box_16_C); - int row_stride = src_stride * 2; + ptrdiff_t row_stride = (ptrdiff_t)src_stride * 2; (void)src_width; (void)src_height; if (!filtering) { @@ -228,7 +228,7 @@ void ScalePlaneDown2_16To8(int src_width, ? ScaleRowDown2_16To8_C : (filtering == kFilterLinear ? ScaleRowDown2Linear_16To8_C : ScaleRowDown2Box_16To8_C)); - int row_stride = src_stride * 2; + ptrdiff_t row_stride = (ptrdiff_t)src_stride * 2; (void)dst_height; if (!filtering) { src_ptr += src_stride; // Point to odd rows. @@ -268,7 +268,7 @@ static void ScalePlaneDown4(int src_width, void (*ScaleRowDown4)(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_ptr, int dst_width) = filtering ? ScaleRowDown4Box_C : ScaleRowDown4_C; - int row_stride = src_stride * 4; + ptrdiff_t row_stride = (ptrdiff_t)src_stride * 4; (void)src_width; (void)src_height; if (!filtering) { @@ -340,7 +340,7 @@ static void ScalePlaneDown4_16(int src_width, void (*ScaleRowDown4)(const uint16_t* src_ptr, ptrdiff_t src_stride, uint16_t* dst_ptr, int dst_width) = filtering ? ScaleRowDown4Box_16_C : ScaleRowDown4_16_C; - int row_stride = src_stride * 4; + ptrdiff_t row_stride = (ptrdiff_t)src_stride * 4; (void)src_width; (void)src_height; if (!filtering) { diff --git a/source/scale_argb.cc b/source/scale_argb.cc index eb6caa53..08515275 100644 --- a/source/scale_argb.cc +++ b/source/scale_argb.cc @@ -48,7 +48,7 @@ static void ScaleARGBDown2(int src_width, int dy, enum FilterMode filtering) { int j; - int row_stride = src_stride * (dy >> 16); + ptrdiff_t row_stride = (ptrdiff_t)((dy >> 16) * (intptr_t)src_stride); void (*ScaleARGBRowDown2)(const uint8_t* src_argb, ptrdiff_t src_stride, uint8_t* dst_argb, int dst_width) = filtering == kFilterNone @@ -169,7 +169,7 @@ static int ScaleARGBDown4Box(int src_width, align_buffer_64(row, row_size * 2); if (!row) return 1; - int row_stride = src_stride * (dy >> 16); + ptrdiff_t row_stride = (ptrdiff_t)((dy >> 16) * (intptr_t)src_stride); void (*ScaleARGBRowDown2)(const uint8_t* src_argb, ptrdiff_t src_stride, uint8_t* dst_argb, int dst_width) = ScaleARGBRowDown2Box_C; @@ -209,7 +209,7 @@ static int ScaleARGBDown4Box(int src_width, for (j = 0; j < dst_height; ++j) { ScaleARGBRowDown2(src_argb, src_stride, row, dst_width * 2); - ScaleARGBRowDown2(src_argb + src_stride * 2, src_stride, row + row_size, + ScaleARGBRowDown2(src_argb + (ptrdiff_t)src_stride * 2, src_stride, row + row_size, dst_width * 2); ScaleARGBRowDown2(row, row_size, dst_argb, dst_width); src_argb += row_stride; diff --git a/source/scale_uv.cc b/source/scale_uv.cc index 35ad55dd..f6d2fff8 100644 --- a/source/scale_uv.cc +++ b/source/scale_uv.cc @@ -69,7 +69,7 @@ static void ScaleUVDown2(int src_width, int dy, enum FilterMode filtering) { int j; - int row_stride = src_stride * (dy >> 16); + ptrdiff_t row_stride = (ptrdiff_t)((dy >> 16) * (intptr_t)src_stride); void (*ScaleUVRowDown2)(const uint8_t* src_uv, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width) = filtering == kFilterNone @@ -188,7 +188,7 @@ static int ScaleUVDown4Box(int src_width, align_buffer_64(row, row_size * 2); if (!row) return 1; - int row_stride = src_stride * (dy >> 16); + ptrdiff_t row_stride = (ptrdiff_t)((dy >> 16) * (intptr_t)src_stride); void (*ScaleUVRowDown2)(const uint8_t* src_uv, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width) = ScaleUVRowDown2Box_C; @@ -237,7 +237,7 @@ static int ScaleUVDown4Box(int src_width, for (j = 0; j < dst_height; ++j) { ScaleUVRowDown2(src_uv, src_stride, row, dst_width * 2); - ScaleUVRowDown2(src_uv + src_stride * 2, src_stride, row + row_size, + ScaleUVRowDown2(src_uv + (ptrdiff_t)src_stride * 2, src_stride, row + row_size, dst_width * 2); ScaleUVRowDown2(row, row_size, dst_uv, dst_width); src_uv += row_stride;