diff --git a/src/reformat.c b/src/reformat.c index 0575b4f4b6..47a2600a11 100644 --- a/src/reformat.c +++ b/src/reformat.c @@ -430,13 +430,13 @@ avifResult avifImageRGBToYUV(avifImage * image, const avifRGBImage * rgb) int uvI = outerI >> chromaShiftX; int uvJ = outerJ >> chromaShiftY; if (state.yuv.channelBytes > 1) { - uint16_t * pU = (uint16_t *)&uPlane[(uvI * 2) + (uvJ * uRowBytes)]; + uint16_t * pU = (uint16_t *)&uPlane[(uvI * 2) + ((size_t)uvJ * uRowBytes)]; *pU = (uint16_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgU); - uint16_t * pV = (uint16_t *)&vPlane[(uvI * 2) + (uvJ * vRowBytes)]; + uint16_t * pV = (uint16_t *)&vPlane[(uvI * 2) + ((size_t)uvJ * vRowBytes)]; *pV = (uint16_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgV); } else { - uPlane[uvI + (uvJ * uRowBytes)] = (uint8_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgU); - vPlane[uvI + (uvJ * vRowBytes)] = (uint8_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgV); + uPlane[uvI + ((size_t)uvJ * uRowBytes)] = (uint8_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgU); + vPlane[uvI + ((size_t)uvJ * vRowBytes)] = (uint8_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgV); } } else if (image->yuvFormat == AVIF_PIXEL_FORMAT_YUV422) { // YUV422, average 2 samples (1x2), twice @@ -456,13 +456,13 @@ avifResult avifImageRGBToYUV(avifImage * image, const avifRGBImage * rgb) int uvI = outerI >> chromaShiftX; int uvJ = outerJ + bJ; if (state.yuv.channelBytes > 1) { - uint16_t * pU = (uint16_t *)&uPlane[(uvI * 2) + (uvJ * uRowBytes)]; + uint16_t * pU = (uint16_t *)&uPlane[(uvI * 2) + ((size_t)uvJ * uRowBytes)]; *pU = (uint16_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgU); - uint16_t * pV = (uint16_t *)&vPlane[(uvI * 2) + (uvJ * vRowBytes)]; + uint16_t * pV = (uint16_t *)&vPlane[(uvI * 2) + ((size_t)uvJ * vRowBytes)]; *pV = (uint16_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgV); } else { - uPlane[uvI + (uvJ * uRowBytes)] = (uint8_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgU); - vPlane[uvI + (uvJ * vRowBytes)] = (uint8_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgV); + uPlane[uvI + ((size_t)uvJ * uRowBytes)] = (uint8_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgU); + vPlane[uvI + ((size_t)uvJ * vRowBytes)] = (uint8_t)avifYUVColorSpaceInfoUVToUNorm(&state.yuv, avgV); } } }