Use I420ToRGB24Matrix() in reformat_libyuv.c
As suggested in https://crbug.com/libyuv/936
diff --git a/src/reformat_libyuv.c b/src/reformat_libyuv.c
index 9fd91a0..7e42d80 100644
--- a/src/reformat_libyuv.c
+++ b/src/reformat_libyuv.c
@@ -239,14 +239,52 @@
//
// libavif format libyuv Func UV matrix (and UV argument ordering)
// -------------------- ------------- ------------------------------------
- // AVIF_RGB_FORMAT_RGB n/a n/a
- // AVIF_RGB_FORMAT_BGR n/a n/a
+ // AVIF_RGB_FORMAT_RGB *ToRGB24Matrix matrixYVU
+ // AVIF_RGB_FORMAT_BGR *ToRGB24Matrix matrixYUV
// AVIF_RGB_FORMAT_BGRA *ToARGBMatrix matrixYUV
// AVIF_RGB_FORMAT_RGBA *ToARGBMatrix matrixYVU
// AVIF_RGB_FORMAT_ABGR *ToRGBAMatrix matrixYUV
// AVIF_RGB_FORMAT_ARGB *ToRGBAMatrix matrixYVU
- if (rgb->format == AVIF_RGB_FORMAT_BGRA) {
+ if (rgb->format == AVIF_RGB_FORMAT_RGB) {
+ // AVIF_RGB_FORMAT_RGB *ToRGB24Matrix matrixYVU
+
+ if (image->yuvFormat == AVIF_PIXEL_FORMAT_YUV420) {
+ if (I420ToRGB24Matrix(image->yuvPlanes[AVIF_CHAN_Y],
+ image->yuvRowBytes[AVIF_CHAN_Y],
+ image->yuvPlanes[AVIF_CHAN_V],
+ image->yuvRowBytes[AVIF_CHAN_V],
+ image->yuvPlanes[AVIF_CHAN_U],
+ image->yuvRowBytes[AVIF_CHAN_U],
+ rgb->pixels,
+ rgb->rowBytes,
+ matrixYVU,
+ image->width,
+ image->height) != 0) {
+ return AVIF_RESULT_REFORMAT_FAILED;
+ }
+ return AVIF_RESULT_OK;
+ }
+ } else if (rgb->format == AVIF_RGB_FORMAT_BGR) {
+ // AVIF_RGB_FORMAT_BGR *ToRGB24Matrix matrixYUV
+
+ if (image->yuvFormat == AVIF_PIXEL_FORMAT_YUV420) {
+ if (I420ToRGB24Matrix(image->yuvPlanes[AVIF_CHAN_Y],
+ image->yuvRowBytes[AVIF_CHAN_Y],
+ image->yuvPlanes[AVIF_CHAN_U],
+ image->yuvRowBytes[AVIF_CHAN_U],
+ image->yuvPlanes[AVIF_CHAN_V],
+ image->yuvRowBytes[AVIF_CHAN_V],
+ rgb->pixels,
+ rgb->rowBytes,
+ matrixYUV,
+ image->width,
+ image->height) != 0) {
+ return AVIF_RESULT_REFORMAT_FAILED;
+ }
+ return AVIF_RESULT_OK;
+ }
+ } else if (rgb->format == AVIF_RGB_FORMAT_BGRA) {
// AVIF_RGB_FORMAT_BGRA *ToARGBMatrix matrixYUV
if (image->yuvFormat == AVIF_PIXEL_FORMAT_YUV444) {