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