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