avifPNGWrite: Output RGB if input has no alpha

avifPNGWrite() should output RGB instead of RGBA if the input AVIF image
has no alpha plane.

Fix https://github.com/AOMediaCodec/libavif/issues/787.
diff --git a/apps/shared/avifpng.c b/apps/shared/avifpng.c
index b824b57..5bc1b3e 100644
--- a/apps/shared/avifpng.c
+++ b/apps/shared/avifpng.c
@@ -190,6 +190,11 @@
 
     avifRGBImageSetDefaults(&rgb, avif);
     rgb.depth = rgbDepth;
+    int colorType = PNG_COLOR_TYPE_RGBA;
+    if (!avif->alphaPlane) {
+        colorType = PNG_COLOR_TYPE_RGB;
+        rgb.format = AVIF_RGB_FORMAT_RGB;
+    }
     rgb.chromaUpsampling = chromaUpsampling;
     avifRGBImageAllocatePixels(&rgb);
     if (avifImageYUVToRGB(avif, &rgb) != AVIF_RESULT_OK) {
@@ -231,7 +236,7 @@
         png_set_compression_level(png, compressionLevel);
     }
 
-    png_set_IHDR(png, info, avif->width, avif->height, rgb.depth, PNG_COLOR_TYPE_RGBA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
+    png_set_IHDR(png, info, avif->width, avif->height, rgb.depth, colorType, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
     if (avif->icc.data && (avif->icc.size > 0)) {
         png_set_iCCP(png, info, "libavif", 0, (png_iccp_datap)avif->icc.data, (png_uint_32)avif->icc.size);
     }