avifenc: Report the tiling options for each frame

Test the updating of tiling options in test_cmd_animation.sh.
diff --git a/apps/avifenc.c b/apps/avifenc.c
index e596af8..6c532d6 100644
--- a/apps/avifenc.c
+++ b/apps/avifenc.c
@@ -1009,7 +1009,10 @@
             goto cleanup;
         }
 
-        printf(" * Encoding frame %d [%" PRIu64 "/%" PRIu64 " ts] color quality [%d (%s)], alpha quality [%d (%s)]: %s\n",
+        char manualTilingStr[128];
+        snprintf(manualTilingStr, sizeof(manualTilingStr), "tileRowsLog2 [%d], tileColsLog2 [%d]", encoder->tileRowsLog2, encoder->tileColsLog2);
+
+        printf(" * Encoding frame %d [%" PRIu64 "/%" PRIu64 " ts] color quality [%d (%s)], alpha quality [%d (%s)], %s: %s\n",
                imageIndex,
                nextDurationInTimescales,
                settings->outputTiming.timescale,
@@ -1017,6 +1020,7 @@
                qualityString(encoder->quality),
                encoder->qualityAlpha,
                qualityString(encoder->qualityAlpha),
+               encoder->autoTiling ? "automatic tiling" : manualTilingStr,
                avifPrettyFilename(nextFile->filename));
 
         const avifResult nextImageResult = avifEncoderAddImage(encoder, nextImage, nextDurationInTimescales, AVIF_ADD_IMAGE_FLAG_NONE);
@@ -1157,13 +1161,6 @@
         goto cleanup;
     }
 
-    char manualTilingStr[128];
-    snprintf(manualTilingStr,
-             sizeof(manualTilingStr),
-             "tileRowsLog2 [%d], tileColsLog2 [%d]",
-             firstFile->settings.tileRowsLog2.value,
-             firstFile->settings.tileColsLog2.value);
-
     encoder->maxThreads = settings->jobs;
     encoder->codecChoice = settings->codecChoice;
     encoder->speed = settings->speed;
@@ -1202,6 +1199,9 @@
     }
 #endif
 
+    char manualTilingStr[128];
+    snprintf(manualTilingStr, sizeof(manualTilingStr), "tileRowsLog2 [%d], tileColsLog2 [%d]", encoder->tileRowsLog2, encoder->tileColsLog2);
+
     printf("Encoding with initial settings: codec '%s' speed [%s], color quality [%d (%s)], alpha quality [%d (%s)]%s, %s, %d worker thread(s), please wait...\n",
            codecName ? codecName : "none",
            speedStr,
@@ -1247,7 +1247,13 @@
 
         uint64_t firstDurationInTimescales = firstFile->duration ? firstFile->duration : settings->outputTiming.duration;
         if (firstFile->filename == AVIF_FILENAME_STDIN || (settings->layers == 1 && input->filesCount > 1)) {
-            printf(" * Encoding frame %d [%" PRIu64 "/%" PRIu64 " ts] color quality [%d (%s)], alpha quality [%d (%s)]: %s\n",
+            snprintf(manualTilingStr,
+                     sizeof(manualTilingStr),
+                     "tileRowsLog2 [%d], tileColsLog2 [%d]",
+                     encoder->tileRowsLog2,
+                     encoder->tileColsLog2);
+
+            printf(" * Encoding frame %d [%" PRIu64 "/%" PRIu64 " ts] color quality [%d (%s)], alpha quality [%d (%s)], %s: %s\n",
                    0,
                    firstDurationInTimescales,
                    settings->outputTiming.timescale,
@@ -1255,6 +1261,7 @@
                    qualityString(encoder->quality),
                    encoder->qualityAlpha,
                    qualityString(encoder->qualityAlpha),
+                   encoder->autoTiling ? "automatic tiling" : manualTilingStr,
                    avifPrettyFilename(firstFile->filename));
         }
         const avifResult addImageResult = avifEncoderAddImage(encoder, firstImage, firstDurationInTimescales, addImageFlags);
diff --git a/tests/test_cmd_animation.sh b/tests/test_cmd_animation.sh
index ee473c0..e673711 100755
--- a/tests/test_cmd_animation.sh
+++ b/tests/test_cmd_animation.sh
@@ -82,6 +82,18 @@
   out=$("${AVIFENC}" -s 8 "${INPUT_Y4M_0}" "${INPUT_Y4M_1}" -o "${ENCODED_FILE}")
   findstr "Encoding frame 0 [1/25 ts] color quality [60 (Medium)], alpha quality [60 (Medium)]" "${out}"
   findstr "Encoding frame 1 [1/25 ts] color quality [60 (Medium)], alpha quality [60 (Medium)]" "${out}"
+
+  # Test updating of tiling options.
+  out=$("${AVIFENC}" -s 10 "${INPUT_Y4M_0}" --tilerowslog2:u 1 "${INPUT_Y4M_1}" --tilecolslog2:u 2 "${INPUT_Y4M_0}" --autotiling:u "${INPUT_Y4M_1}" --tilecolslog2:u 1 "${INPUT_Y4M_0}" -o "${ENCODED_FILE}")
+  findstr "Encoding frame 0 [1/25 ts] color quality [60 (Medium)], alpha quality [60 (Medium)], tileRowsLog2 [0], tileColsLog2 [0]" "${out}"
+  findstr "Encoding frame 1 [1/25 ts] color quality [60 (Medium)], alpha quality [60 (Medium)], tileRowsLog2 [1], tileColsLog2 [0]" "${out}"
+  findstr "Encoding frame 2 [1/25 ts] color quality [60 (Medium)], alpha quality [60 (Medium)], tileRowsLog2 [1], tileColsLog2 [2]" "${out}"
+  findstr "Encoding frame 3 [1/25 ts] color quality [60 (Medium)], alpha quality [60 (Medium)], automatic tiling" "${out}"
+  findstr "Encoding frame 4 [1/25 ts] color quality [60 (Medium)], alpha quality [60 (Medium)], tileRowsLog2 [0], tileColsLog2 [1]" "${out}"
+  # --autotiling:u and --tilerowslog2:u R --tilecolslog2:u C are mutually exclusive.
+  "${AVIFENC}" -s 10 "${INPUT_Y4M_0}" --autotiling:u --tilerowslog2:u 1 "${INPUT_Y4M_1}" -o "${ENCODED_FILE}" && exit 1
+  "${AVIFENC}" -s 10 "${INPUT_Y4M_0}" --autotiling:u --tilecolslog2:u 2 "${INPUT_Y4M_1}" -o "${ENCODED_FILE}" && exit 1
+  "${AVIFENC}" -s 10 "${INPUT_Y4M_0}" --autotiling:u --tilerowslog2:u 1 --tilecolslog2:u 2 "${INPUT_Y4M_1}" -o "${ENCODED_FILE}" && exit 1
 popd
 
 exit 0