Fix avifImageSetViewRect() for monochrome odd xy
avifGetPixelFormatInfo() sets chromaShiftX,Y to 1 even when there is
no chroma.
diff --git a/src/avif.c b/src/avif.c
index 8fa2b36..e74aba7 100644
--- a/src/avif.c
+++ b/src/avif.c
@@ -255,7 +255,10 @@
avifPixelFormatInfo formatInfo;
avifGetPixelFormatInfo(srcImage->yuvFormat, &formatInfo);
if ((rect->width > srcImage->width) || (rect->height > srcImage->height) || (rect->x > (srcImage->width - rect->width)) ||
- (rect->y > (srcImage->height - rect->height)) || (rect->x & formatInfo.chromaShiftX) || (rect->y & formatInfo.chromaShiftY)) {
+ (rect->y > (srcImage->height - rect->height))) {
+ return AVIF_RESULT_INVALID_ARGUMENT;
+ }
+ if (!formatInfo.monochrome && ((rect->x & formatInfo.chromaShiftX) || (rect->y & formatInfo.chromaShiftY))) {
return AVIF_RESULT_INVALID_ARGUMENT;
}
avifImageFreePlanes(dstImage, AVIF_PLANES_ALL); // dstImage->imageOwnsYUVPlanes and dstImage->imageOwnsAlphaPlane set to AVIF_FALSE.