Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libavif for openSUSE:Factory checked in at 2022-11-15 13:18:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libavif (Old) and /work/SRC/openSUSE:Factory/.libavif.new.1597 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libavif" Tue Nov 15 13:18:23 2022 rev:19 rq:1035657 version:0.11.1 Changes: -------- --- /work/SRC/openSUSE:Factory/libavif/libavif.changes 2022-11-01 13:40:25.763213393 +0100 +++ /work/SRC/openSUSE:Factory/.libavif.new.1597/libavif.changes 2022-11-15 13:21:08.948715168 +0100 @@ -1,0 +2,10 @@ +Mon Nov 14 11:41:20 UTC 2022 - ecsos <ec...@opensuse.org> + +- Update to version 0.11.1: + * Changed: + - avifincrtest_helpers: Cast 64-bit offset to size_t + - avifmetadatatest: don't include avif/internal.h + - avifrgbtoyuvtest: skip if no libsharpyuv + - Disable tests that may fail if the codec is not aom (#1176) + +------------------------------------------------------------------- Old: ---- libavif-0.11.0.tar.gz New: ---- libavif-0.11.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libavif.spec ++++++ --- /var/tmp/diff_new_pack.wvx8gl/_old 2022-11-15 13:21:09.360717295 +0100 +++ /var/tmp/diff_new_pack.wvx8gl/_new 2022-11-15 13:21:09.364717316 +0100 @@ -29,7 +29,7 @@ %global lib_name libavif%{lib_soversion} Name: libavif -Version: 0.11.0 +Version: 0.11.1 Release: 0 Summary: Library for encoding and decoding .avif files License: BSD-2-Clause ++++++ libavif-0.11.0.tar.gz -> libavif-0.11.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/CHANGELOG.md new/libavif-0.11.1/CHANGELOG.md --- old/libavif-0.11.0/CHANGELOG.md 2022-10-12 23:58:15.000000000 +0200 +++ new/libavif-0.11.1/CHANGELOG.md 2022-10-19 23:32:35.000000000 +0200 @@ -6,6 +6,14 @@ ## [Unreleased] +## [0.11.1] - 2022-10-19 + +### Changed +* avifincrtest_helpers: Cast 64-bit offset to size_t +* avifmetadatatest: don't include avif/internal.h +* avifrgbtoyuvtest: skip if no libsharpyuv +* Disable tests that may fail if the codec is not aom (#1176) + ## [0.11.0] - 2022-10-12 There are incompatible ABI changes in this release. The alphaRange member was @@ -866,7 +874,8 @@ - Constants `AVIF_VERSION`, `AVIF_VERSION_MAJOR`, `AVIF_VERSION_MINOR`, `AVIF_VERSION_PATCH` - `avifVersion()` function -[Unreleased]: https://github.com/AOMediaCodec/libavif/compare/v0.11.0...HEAD +[Unreleased]: https://github.com/AOMediaCodec/libavif/compare/v0.11.1...HEAD +[0.11.1]: https://github.com/AOMediaCodec/libavif/compare/v0.11.0...v0.11.1 [0.11.0]: https://github.com/AOMediaCodec/libavif/compare/v0.10.1...v0.11.0 [0.10.1]: https://github.com/AOMediaCodec/libavif/compare/v0.10.0...v0.10.1 [0.10.0]: https://github.com/AOMediaCodec/libavif/compare/v0.9.3...v0.10.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/CMakeLists.txt new/libavif-0.11.1/CMakeLists.txt --- old/libavif-0.11.0/CMakeLists.txt 2022-10-12 23:58:15.000000000 +0200 +++ new/libavif-0.11.1/CMakeLists.txt 2022-10-19 23:32:35.000000000 +0200 @@ -11,7 +11,7 @@ # Specify search path for CMake modules to be loaded by include() and find_package() list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") -project(libavif LANGUAGES C VERSION 0.11.0) +project(libavif LANGUAGES C VERSION 0.11.1) # Set C99 as the default set(CMAKE_C_STANDARD 99) @@ -25,7 +25,7 @@ # Increment PATCH. set(LIBRARY_VERSION_MAJOR 15) set(LIBRARY_VERSION_MINOR 0) -set(LIBRARY_VERSION_PATCH 0) +set(LIBRARY_VERSION_PATCH 1) set(LIBRARY_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}") set(LIBRARY_SOVERSION ${LIBRARY_VERSION_MAJOR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/include/avif/avif.h new/libavif-0.11.1/include/avif/avif.h --- old/libavif-0.11.0/include/avif/avif.h 2022-10-12 23:58:15.000000000 +0200 +++ new/libavif-0.11.1/include/avif/avif.h 2022-10-19 23:32:35.000000000 +0200 @@ -57,7 +57,7 @@ // to leverage in-development code without breaking their stable builds. #define AVIF_VERSION_MAJOR 0 #define AVIF_VERSION_MINOR 11 -#define AVIF_VERSION_PATCH 0 +#define AVIF_VERSION_PATCH 1 #define AVIF_VERSION_DEVEL 0 #define AVIF_VERSION \ ((AVIF_VERSION_MAJOR * 1000000) + (AVIF_VERSION_MINOR * 10000) + (AVIF_VERSION_PATCH * 100) + AVIF_VERSION_DEVEL) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/tests/CMakeLists.txt new/libavif-0.11.1/tests/CMakeLists.txt --- old/libavif-0.11.0/tests/CMakeLists.txt 2022-10-12 23:58:15.000000000 +0200 +++ new/libavif-0.11.1/tests/CMakeLists.txt 2022-10-19 23:32:35.000000000 +0200 @@ -116,6 +116,19 @@ target_link_libraries(avify4mtest aviftest_helpers ${GTEST_BOTH_LIBRARIES}) target_include_directories(avify4mtest PRIVATE ${GTEST_INCLUDE_DIRS}) add_test(NAME avify4mtest COMMAND avify4mtest) + + if(NOT AVIF_CODEC_AOM OR NOT AVIF_CODEC_AOM_ENCODE OR NOT AVIF_CODEC_AOM_DECODE) + # These tests are supported with aom being the encoder and decoder. If aom is unavailable, + # these tests are disabled because other codecs may not implement all the necessary features. + # For example, SVT-AV1 requires 4:2:0 images with even dimensions of at least 64x64 px. + set_tests_properties(avifallocationtest avifgridapitest avifmetadatatest avifincrtest PROPERTIES DISABLED True) + + message(STATUS "Some tests are disabled because aom is unavailable for encoding or decoding.") + endif() + + if(NOT libsharpyuv_FOUND) + message(STATUS "Some tests are skipped because libsharpyuv is unavailable.") + endif() else() message(STATUS "Most tests are disabled because AVIF_ENABLE_GTEST is OFF.") endif() @@ -131,4 +144,22 @@ add_test(NAME test_cmd COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test_cmd.sh ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/data ) + add_test(NAME test_cmd_lossless COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test_cmd_lossless.sh ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/data + ) + add_test(NAME test_cmd_metadata COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test_cmd_metadata.sh ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/data + ) + + if(NOT AVIF_CODEC_AOM OR NOT AVIF_CODEC_AOM_ENCODE) + # Only aom encoder supports lossless encoding. + set_property(TEST test_cmd_lossless PROPERTY DISABLED True) + + # SVT-AV1 does not support the images with odd dimensions that are used in this test. + if(NOT AVIF_CODEC_RAV1E) + set_property(TEST test_cmd_metadata PROPERTY DISABLED True) + endif() + + message(STATUS "Some tests are disabled because aom is unavailable for encoding.") + endif() endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/tests/docker/build.sh new/libavif-0.11.1/tests/docker/build.sh --- old/libavif-0.11.0/tests/docker/build.sh 2022-10-12 23:58:15.000000000 +0200 +++ new/libavif-0.11.1/tests/docker/build.sh 2022-10-19 23:32:35.000000000 +0200 @@ -19,21 +19,12 @@ # build env apt update -DEBIAN_FRONTEND="noninteractive" apt install -y build-essential libjpeg-dev libpng-dev libssl-dev ninja-build cmake pkg-config git perl vim curl python3-pip -pip3 install meson +DEBIAN_FRONTEND="noninteractive" apt install -y build-essential libjpeg-dev libpng-dev libssl-dev ninja-build cmake pkg-config git perl vim meson cargo nasm # Rust env -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y -source $HOME/.cargo/env +export PATH="$HOME/.cargo/bin:$PATH" cargo install cargo-c -# NASM -cd -curl -L https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz | tar xvz -cd nasm-2.15.05 -./configure --prefix=/usr && make -j2 && make install -nasm --version - # aom cd git clone -b v3.5.0 --depth 1 https://aomedia.googlesource.com/aom diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/tests/gtest/avifincrtest_helpers.cc new/libavif-0.11.1/tests/gtest/avifincrtest_helpers.cc --- old/libavif-0.11.0/tests/gtest/avifincrtest_helpers.cc 2022-10-12 23:58:15.000000000 +0200 +++ new/libavif-0.11.1/tests/gtest/avifincrtest_helpers.cc 2022-10-19 23:32:35.000000000 +0200 @@ -126,13 +126,15 @@ // Implementation of avifIOReadFunc simulating a stream from an array. See // avifIOReadFunc documentation. io->data is expected to point to PartialData. -avifResult PartialRead(struct avifIO* io, uint32_t read_flags, uint64_t offset, - size_t size, avifROData* out) { +avifResult PartialRead(struct avifIO* io, uint32_t read_flags, + uint64_t offset64, size_t size, avifROData* out) { PartialData* data = reinterpret_cast<PartialData*>(io->data); - if ((read_flags != 0) || !data || (data->full_size < offset)) { + if ((read_flags != 0) || !data || (data->full_size < offset64)) { return AVIF_RESULT_IO_ERROR; } - if (data->full_size < (offset + size)) { + const size_t offset = static_cast<size_t>(offset64); + // Use |offset| instead of |offset64| from this point on. + if (size > (data->full_size - offset)) { size = data->full_size - offset; } if (data->available.size < (offset + size)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/tests/gtest/avifmetadatatest.cc new/libavif-0.11.1/tests/gtest/avifmetadatatest.cc --- old/libavif-0.11.0/tests/gtest/avifmetadatatest.cc 2022-10-12 23:58:15.000000000 +0200 +++ new/libavif-0.11.1/tests/gtest/avifmetadatatest.cc 2022-10-19 23:32:35.000000000 +0200 @@ -4,7 +4,7 @@ #include <array> #include <tuple> -#include "avif/internal.h" +#include "avif/avif.h" #include "aviftest_helpers.h" #include "gtest/gtest.h" @@ -305,12 +305,18 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // tag, type, count, valueOffset 0, 0, 0, 8 // Invalid IFD offset, infinitely looping back to 0th IFD. }; - avifRWDataSet(&image->exif, kBadExifPayload, - sizeof(kBadExifPayload) / sizeof(kBadExifPayload[0])); - // avifImageExtractExifOrientationToIrotImir() does not verify the whole - // payload, only the parts necessary to extract Exif orientation. - ASSERT_EQ(avifImageExtractExifOrientationToIrotImir(image.get()), - AVIF_RESULT_OK); + // avifImageSetMetadataExif() calls + // avifImageExtractExifOrientationToIrotImir() internally. + // The avifImageExtractExifOrientationToIrotImir() call should not enter an + // infinite loop. + // + // TODO(wtc): When we change avifImageSetMetadataExif() to return avifResult, + // assert that the avifImageSetMetadataExif() call returns AVIF_RESULT_OK + // because avifImageExtractExifOrientationToIrotImir() does not verify the + // whole payload, only the parts necessary to extract Exif orientation. + avifImageSetMetadataExif( + image.get(), kBadExifPayload, + sizeof(kBadExifPayload) / sizeof(kBadExifPayload[0])); } //------------------------------------------------------------------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/tests/gtest/avifrgbtoyuvtest.cc new/libavif-0.11.1/tests/gtest/avifrgbtoyuvtest.cc --- old/libavif-0.11.0/tests/gtest/avifrgbtoyuvtest.cc 2022-10-12 23:58:15.000000000 +0200 +++ new/libavif-0.11.1/tests/gtest/avifrgbtoyuvtest.cc 2022-10-19 23:32:35.000000000 +0200 @@ -203,7 +203,13 @@ ModifyImageChannel(&src_rgb, offsets.b, kBlueNoise); } - ASSERT_EQ(avifImageRGBToYUV(yuv.get(), &src_rgb), AVIF_RESULT_OK); + const avifResult result = avifImageRGBToYUV(yuv.get(), &src_rgb); + if (result == AVIF_RESULT_NOT_IMPLEMENTED && + src_rgb.chromaDownsampling == + AVIF_CHROMA_DOWNSAMPLING_SHARP_YUV) { + GTEST_SKIP() << "libsharpyuv unavailable, skip test."; + } + ASSERT_EQ(result, AVIF_RESULT_OK); ASSERT_EQ(avifImageYUVToRGB(yuv.get(), &dst_rgb), AVIF_RESULT_OK); GetDiffSumAndSqDiffSum(src_rgb, dst_rgb, &diff_sum, &abs_diff_sum, &sq_diff_sum, &max_abs_diff); @@ -290,7 +296,12 @@ testutil::FillImageChannel(&src_rgb, offsets.a, rgb_max); } - ASSERT_EQ(avifImageRGBToYUV(yuv.get(), &src_rgb), AVIF_RESULT_OK); + const avifResult result = avifImageRGBToYUV(yuv.get(), &src_rgb); + if (result == AVIF_RESULT_NOT_IMPLEMENTED && + src_rgb.chromaDownsampling == AVIF_CHROMA_DOWNSAMPLING_SHARP_YUV) { + GTEST_SKIP() << "libsharpyuv unavailable, skip test."; + } + ASSERT_EQ(result, AVIF_RESULT_OK); ASSERT_EQ(avifImageYUVToRGB(yuv.get(), &dst_rgb), AVIF_RESULT_OK); GetDiffSumAndSqDiffSum(src_rgb, dst_rgb, &diff_sum, &abs_diff_sum, &sq_diff_sum, &max_abs_diff); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/tests/test_cmd.sh new/libavif-0.11.1/tests/test_cmd.sh --- old/libavif-0.11.0/tests/test_cmd.sh 2022-10-12 23:58:15.000000000 +0200 +++ new/libavif-0.11.1/tests/test_cmd.sh 2022-10-19 23:32:35.000000000 +0200 @@ -47,20 +47,15 @@ # Input file paths. INPUT_Y4M="${TESTDATA_DIR}/kodim03_yuv420_8bpc.y4m" -INPUT_PNG="${TESTDATA_DIR}/paris_icc_exif_xmp.png" -INPUT_JPG="${TESTDATA_DIR}/paris_exif_xmp_icc.jpg" # Output file names. ENCODED_FILE="avif_test_cmd_encoded.avif" -ENCODED_FILE_NO_METADATA="avif_test_cmd_encoded_no_metadata.avif" ENCODED_FILE_WITH_DASH="-avif_test_cmd_encoded.avif" DECODED_FILE="avif_test_cmd_decoded.png" -DECODED_FILE_LOSSLESS="avif_test_cmd_decoded_lossless.png" # Cleanup cleanup() { pushd ${TMP_DIR} - rm -- "${ENCODED_FILE}" "${ENCODED_FILE_NO_METADATA}" \ - "${ENCODED_FILE_WITH_DASH}" "${DECODED_FILE}" "${DECODED_FILE_LOSSLESS}" + rm -- "${ENCODED_FILE}" "${ENCODED_FILE_WITH_DASH}" "${DECODED_FILE}" popd } trap cleanup EXIT @@ -72,33 +67,13 @@ "${AVIFDEC}" "${ENCODED_FILE}" "${DECODED_FILE}" "${ARE_IMAGES_EQUAL}" "${INPUT_Y4M}" "${DECODED_FILE}" 0 && exit 1 - # Lossless test. The decoded pixels should be the same as the original image. - echo "Testing basic lossless" - # TODO(yguyon): Make this test pass with INPUT_PNG instead of DECODED_FILE. - "${AVIFENC}" -s 10 -l "${DECODED_FILE}" -o "${ENCODED_FILE}" - "${AVIFDEC}" "${ENCODED_FILE}" "${DECODED_FILE_LOSSLESS}" - "${ARE_IMAGES_EQUAL}" "${DECODED_FILE}" "${DECODED_FILE_LOSSLESS}" 0 - # Argument parsing test with filenames starting with a dash. echo "Testing arguments" - "${AVIFENC}" -s 10 "${INPUT_PNG}" -- "${ENCODED_FILE_WITH_DASH}" + "${AVIFENC}" -s 10 "${INPUT_Y4M}" -- "${ENCODED_FILE_WITH_DASH}" "${AVIFDEC}" --info -- "${ENCODED_FILE_WITH_DASH}" # Passing a filename starting with a dash without using -- should fail. - "${AVIFENC}" -s 10 "${INPUT_PNG}" "${ENCODED_FILE_WITH_DASH}" && exit 1 + "${AVIFENC}" -s 10 "${INPUT_Y4M}" "${ENCODED_FILE_WITH_DASH}" && exit 1 "${AVIFDEC}" --info "${ENCODED_FILE_WITH_DASH}" && exit 1 - - # Metadata test. - echo "Testing metadata enc/dec" - for INPUT in "${INPUT_PNG}" "${INPUT_JPG}"; do - "${AVIFENC}" "${INPUT}" -o "${ENCODED_FILE}" - # Ignoring a metadata chunk should produce a different output file. - "${AVIFENC}" "${INPUT}" -o "${ENCODED_FILE_NO_METADATA}" --ignore-icc - cmp "${ENCODED_FILE}" "${ENCODED_FILE_NO_METADATA}" && exit 1 - "${AVIFENC}" "${INPUT}" -o "${ENCODED_FILE_NO_METADATA}" --ignore-exif - cmp "${ENCODED_FILE}" "${ENCODED_FILE_NO_METADATA}" && exit 1 - "${AVIFENC}" "${INPUT}" -o "${ENCODED_FILE_NO_METADATA}" --ignore-xmp - cmp "${ENCODED_FILE}" "${ENCODED_FILE_NO_METADATA}" && exit 1 - done popd exit 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/tests/test_cmd_lossless.sh new/libavif-0.11.1/tests/test_cmd_lossless.sh --- old/libavif-0.11.0/tests/test_cmd_lossless.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/libavif-0.11.1/tests/test_cmd_lossless.sh 2022-10-19 23:32:35.000000000 +0200 @@ -0,0 +1,72 @@ +#!/bin/bash +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# tests for command lines (lossless) + +# Very verbose but useful for debugging. +set -ex + +if [[ "$#" -ge 1 ]]; then + # eval so that the passed in directory can contain variables. + BINARY_DIR="$(eval echo "$1")" +else + # Assume "tests" is the current directory. + BINARY_DIR="$(pwd)/.." +fi +if [[ "$#" -ge 2 ]]; then + TESTDATA_DIR="$(eval echo "$2")" +else + TESTDATA_DIR="$(pwd)/data" +fi +if [[ "$#" -ge 3 ]]; then + TMP_DIR="$(eval echo "$3")" +else + TMP_DIR="$(mktemp -d)" +fi + +AVIFENC="${BINARY_DIR}/avifenc" +AVIFDEC="${BINARY_DIR}/avifdec" +ARE_IMAGES_EQUAL="${BINARY_DIR}/tests/are_images_equal" + +# Input file paths. +INPUT_PNG="${TESTDATA_DIR}/paris_icc_exif_xmp.png" +# Output file names. +ENCODED_FILE="avif_test_cmd_lossless_encoded.avif" +DECODED_FILE="avif_test_cmd_lossless_decoded.png" +DECODED_FILE_LOSSLESS="avif_test_cmd_lossless_decoded_lossless.png" + +# Cleanup +cleanup() { + pushd ${TMP_DIR} + rm -- "${ENCODED_FILE}" "${DECODED_FILE}" "${DECODED_FILE_LOSSLESS}" + popd +} +trap cleanup EXIT + +pushd ${TMP_DIR} + # Generate test data. + "${AVIFENC}" -s 8 "${INPUT_PNG}" -o "${ENCODED_FILE}" + "${AVIFDEC}" "${ENCODED_FILE}" "${DECODED_FILE}" + + # Lossless test. The decoded pixels should be the same as the original image. + echo "Testing basic lossless" + # TODO(yguyon): Make this test pass with INPUT_PNG instead of DECODED_FILE. + "${AVIFENC}" -s 10 -l "${DECODED_FILE}" -o "${ENCODED_FILE}" + "${AVIFDEC}" "${ENCODED_FILE}" "${DECODED_FILE_LOSSLESS}" + "${ARE_IMAGES_EQUAL}" "${DECODED_FILE}" "${DECODED_FILE_LOSSLESS}" 0 +popd + +exit 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libavif-0.11.0/tests/test_cmd_metadata.sh new/libavif-0.11.1/tests/test_cmd_metadata.sh --- old/libavif-0.11.0/tests/test_cmd_metadata.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/libavif-0.11.1/tests/test_cmd_metadata.sh 2022-10-19 23:32:35.000000000 +0200 @@ -0,0 +1,72 @@ +#!/bin/bash +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# tests for command lines (metadata) + +# Very verbose but useful for debugging. +set -ex + +if [[ "$#" -ge 1 ]]; then + # eval so that the passed in directory can contain variables. + BINARY_DIR="$(eval echo "$1")" +else + # Assume "tests" is the current directory. + BINARY_DIR="$(pwd)/.." +fi +if [[ "$#" -ge 2 ]]; then + TESTDATA_DIR="$(eval echo "$2")" +else + TESTDATA_DIR="$(pwd)/data" +fi +if [[ "$#" -ge 3 ]]; then + TMP_DIR="$(eval echo "$3")" +else + TMP_DIR="$(mktemp -d)" +fi + +AVIFENC="${BINARY_DIR}/avifenc" + +# Input file paths. +INPUT_PNG="${TESTDATA_DIR}/paris_icc_exif_xmp.png" +INPUT_JPG="${TESTDATA_DIR}/paris_exif_xmp_icc.jpg" +# Output file names. +ENCODED_FILE="avif_test_cmd_metadata_encoded.avif" +ENCODED_FILE_NO_METADATA="avif_test_cmd_metadata_encoded_no_metadata.avif" + +# Cleanup +cleanup() { + pushd ${TMP_DIR} + rm -- "${ENCODED_FILE}" "${ENCODED_FILE_NO_METADATA}" + popd +} +trap cleanup EXIT + +pushd ${TMP_DIR} + # Metadata test. + echo "Testing metadata enc" + for INPUT in "${INPUT_PNG}" "${INPUT_JPG}"; do + "${AVIFENC}" "${INPUT}" -o "${ENCODED_FILE}" + # Ignoring a metadata chunk should produce a different output file. + "${AVIFENC}" "${INPUT}" -o "${ENCODED_FILE_NO_METADATA}" --ignore-icc + cmp "${ENCODED_FILE}" "${ENCODED_FILE_NO_METADATA}" && exit 1 + "${AVIFENC}" "${INPUT}" -o "${ENCODED_FILE_NO_METADATA}" --ignore-exif + cmp "${ENCODED_FILE}" "${ENCODED_FILE_NO_METADATA}" && exit 1 + "${AVIFENC}" "${INPUT}" -o "${ENCODED_FILE_NO_METADATA}" --ignore-xmp + cmp "${ENCODED_FILE}" "${ENCODED_FILE_NO_METADATA}" && exit 1 + done +popd + +exit 0