From: Brad Smith Subject: Re: UPDATE: libavif 1.0.4 To: ports@openbsd.org Date: Wed, 3 Apr 2024 04:18:51 -0400 ping. On 2024-02-27 8:08 p.m., Brad Smith wrote: > Here is an update to libavif 1.0.4. > > > ## [1.0.4] - 2024-02-08 > > ### Changed > * AVIF_ENABLE_WERROR is set to OFF by default. > * Fix wrong alpha plane deallocation when decoded tile pixel format does not > match reconstructed output image pixel format (b/320234262). > * Fix identical chunk skipping optimization when writing animation data > (b/321189607). > * Fix ID selection for artificial grid alpha item when decoding a grid of tiles > which each have an associated auxiliary alpha image item > (https://crbug.com/oss-fuzz/65657). > > ## [1.0.3] - 2023-12-03 > > ### Changed > * Rewrite the fix for memory errors reported in crbug.com/1501770. > * Fix memory errors reported in crbug.com/1504792 by [Fudan > University](https://secsys.fudan.edu.cn/). > * src/reformat.c: Allocate the threadData array directly. > > ## [1.0.2] - 2023-11-16 > > ### Changed > * Update avifCropRectConvertCleanApertureBox() to the revised requirements in > ISO/IEC 23000-22:2019/Amd. 2:2021 Section 7.3.6.7. > * Fix memory errors reported in crbug.com/1501766 and crbug.com/1501770 by > [Fudan University](https://secsys.fudan.edu.cn/). > > ## [1.0.1] - 2023-08-29 > > ### Changed > * gdk-pixbuf: Explicitly pass link directories > * gdk-pixbuf: Fix build failure after imir.mode -> imir.axis rename > > ## [1.0.0] - 2023-08-24 > > With the 1.0.0 release, the ABI will be more stable from now on. Please note > the allocation and initialization requirements for avifImage, avifDecoder, > avifEncoder, and avifRGBImage in the "avif/avif.h" header. > > List of incompatible ABI changes in this release: > > * The clli member was added to the avifImage struct. > * The repetitionCount member was added to the avifEncoder and avifDecoder > structs. > * The quality and qualityAlpha members were added to the avifEncoder struct. > * Check that functions returning pointers do not return NULL before accessing > those pointers. > * Check the return value of avifEncoderSetCodecSpecificOption(). > * The maxThreads member was added to the avifRGBImage struct. > * Check the return value of avifRGBImageAllocatePixels(), avifRWDataRealloc(), > avifRWDataSet(), avifImageSetProfileICC(), avifImageSetMetadataExif() and > avifImageSetMetadataXMP(). > * The meaning of the keyframeInterval member of avifEncoder struct has changed > slightly. When set to a value of "n", > * Before: It forces a keyframe on every nth frame. > * After: Any set of "n" consecutive frame will have at least one keyframe > (every nth frame may or may not be a keyframe). > > ### Added > * Add STATIC library target avif_internal to allow tests to access functions > from internal.h when BUILD_SHARED_LIBS is ON. > * Add clli metadata read and write support > * Add repetitionCount member to avifEncoder and avifDecoder structs to specify > the number of repetitions for animated image sequences. > * Add quality and qualityAlpha to avifEncoder. Note: minQuantizer, > maxQuantizer, minQuantizerAlpha, and maxQuantizerAlpha are deprecated. Code > should be updated to set quality (and qualityAlpha if applicable) and leave > minQuantizer, maxQuantizer, minQuantizerAlpha, and maxQuantizerAlpha > initialized to the default values. > * The --target-size flag in avifenc was added to adapt the quality so that the > output file size is as close to the given number of bytes as possible. > * Add the public API function avifImageIsOpaque() in avif.h. > * Add the public API functions avifImagePlane(), avifImagePlaneRowBytes(), > avifImagePlaneWidth(), and avifImagePlaneHeight() in avif.h. > * Add experimental API for progressive AVIF encoding. > * Add API for multi-threaded YUV to RGB color conversion. > * Add experimental support for AV2 behind the compilation flag AVIF_CODEC_AVM. > AVIF_CODEC_CHOICE_AVM is now part of avifCodecChoice. > * Add experimental YCgCo-R support behind the compilation flag > AVIF_ENABLE_EXPERIMENTAL_YCGCO_R. > * Allow lossless 4:0:0 on grayscale input. > * Add avifenc --no-overwrite flag to avoid overwriting output file. > * Add avifenc --clli flag to set clli. > * Add support for all transfer functions when using libsharpyuv. > > ### Changed > * Enable the libaom AV1E_SET_SKIP_POSTPROC_FILTERING codec control by default. > * Use the constant rate factor (CRF) instead of the constant quantization > parameter (CQP) rate control mode with the SVT-AV1 encoder. > * Exif and XMP metadata is exported to PNG and JPEG files by default, > except XMP payloads larger than 65502 bytes in JPEG. > * The --grid flag in avifenc can be used for images that are not evenly divided > into cells. > * Apps must be built with libpng version 1.6.32 or above. > * Change the encoder to write the boxes within the "stbl" box in the order of > stsd, stts, stsc, stsz, stco, stss. > * avifImageCopy() no longer accepts source U and V channels to be NULL for > non-4:0:0 input if Y is not NULL and if AVIF_PLANES_YUV is specified. > * The default values of the maxQuantizer and maxQuantizerAlpha members of > avifEncoder changed from AVIF_QUANTIZER_LOSSLESS (0) to > AVIF_QUANTIZER_WORST_QUALITY (63). The behavior changed if minQuantizer and > maxQuantizer are left initialized to the default values. Code should be > updated to set the quality member. Similarly for the alpha quantizers and > qualityAlpha. > * avifImageRGBToYUV() and avifImageYUVToRGB() handle avifImage bit depths 8, 10, > 12 and now also 16. Files read by apps/shared/ can output 16-bit avifImage > instances. > * avifImageCreate(), avifImageCreateEmpty(), avifEncoderCreate() and other > internal functions now return NULL if a memory allocation failed. > * avifEncoderSetCodecSpecificOption() now returns avifResult instead of void to > report memory allocation failures. > * At decoding, avifIOStats now returns the same values as at encoding. > * avifRGBImageAllocatePixels(), avifRWDataRealloc(), avifRWDataSet(), > avifImageSetProfileICC(), avifImageSetMetadataExif() and > avifImageSetMetadataXMP() now return avifResult instead of void to report > memory allocation failures. > * avifReadImage(), avifJPEGRead() and avifPNGRead() now remove the trailing zero > byte from read XMP chunks, if any. See avifImageFixXMP(). > * Force keyframe for alpha if color is a keyframe. > * Write primaries and transfer characteritics info in decoded PNG. > * Add support for reading PNG gAMA, cHRM and sRGB chunks. > * The 'mode' member of the avifImageMirror struct was renamed 'axis'. > * Change the type of the 'depth' parameter from int to uint32_t in > avifFullToLimitedY(), avifFullToLimitedUV(), avifLimitedToFullY(), and > avifLimitedToFullUV(). > > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/graphics/libavif/Makefile,v > retrieving revision 1.21 > diff -u -p -u -p -r1.21 Makefile > --- Makefile 4 Oct 2023 15:15:40 -0000 1.21 > +++ Makefile 22 Feb 2024 08:20:22 -0000 > @@ -2,11 +2,10 @@ COMMENT= library for encoding and decodi > > GH_ACCOUNT= AOMediaCodec > GH_PROJECT= libavif > -GH_TAGNAME= v0.11.1 > -REVISION= 0 > +GH_TAGNAME= v1.0.4 > CATEGORIES= graphics > > -SHARED_LIBS= avif 6.0 > +SHARED_LIBS= avif 7.0 > > HOMEPAGE= https://github.com/AOMediaCodec/libavif > > Index: distinfo > =================================================================== > RCS file: /cvs/ports/graphics/libavif/distinfo,v > retrieving revision 1.15 > diff -u -p -u -p -r1.15 distinfo > --- distinfo 25 Nov 2022 21:14:09 -0000 1.15 > +++ distinfo 22 Feb 2024 08:20:22 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (libavif-0.11.1.tar.gz) = DrSZZVYqDl5d5YOJZQ1DTP8yr4TDQYW2ybey/MrgbU4= > -SIZE (libavif-0.11.1.tar.gz) = 5826813 > +SHA256 (libavif-1.0.4.tar.gz) = 3FZwjIOkuTSoryt49n+Ga6L7VoYFx8+UMSrPUe5X0UY= > +SIZE (libavif-1.0.4.tar.gz) = 10575992 > Index: patches/patch-tests_CMakeLists_txt > =================================================================== > RCS file: patches/patch-tests_CMakeLists_txt > diff -N patches/patch-tests_CMakeLists_txt > --- patches/patch-tests_CMakeLists_txt 25 Nov 2022 21:14:09 -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,28 +0,0 @@ > -Build aviftest_helpers for are_images_equal.cc > -e279707a001c8f95f8a2bc51c0d19bf35bfc79ab > - > -Index: tests/CMakeLists.txt > ---- tests/CMakeLists.txt.orig > -+++ tests/CMakeLists.txt > -@@ -39,15 +39,17 @@ foreach(AVIFYUV_MODE limited rgb) # Modes drift and pr > - add_test(NAME avifyuv_${AVIFYUV_MODE} COMMAND avifyuv -m ${AVIFYUV_MODE}) > - endforeach() > - > --################################################################################ > --# GoogleTest > -- > --if(AVIF_ENABLE_GTEST) > -+if(AVIF_ENABLE_GTEST OR AVIF_BUILD_APPS) > - enable_language(CXX) > - set(CMAKE_CXX_STANDARD 11) > - add_library(aviftest_helpers OBJECT gtest/aviftest_helpers.cc) > - target_link_libraries(aviftest_helpers avif_apps) > -+endif() > - > -+################################################################################ > -+# GoogleTest > -+ > -+if(AVIF_ENABLE_GTEST) > - if(AVIF_LOCAL_GTEST) > - set(GTEST_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/ext/googletest/googletest/include) > - set(GTEST_LIBRARIES