From bc41fc5b22786976ca23664905875ccd104f55c4 Mon Sep 17 00:00:00 2001 From: Wan-Teh Chang Date: Mon, 28 Aug 2023 15:03:40 -0700 Subject: [PATCH] v1.0.0 --- CHANGELOG.md | 27 +++++++++++++++++++++++++-- CMakeLists.txt | 6 +++--- include/avif/avif.h | 8 ++++---- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc9c85873e..0389b0dfb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [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. @@ -36,23 +42,33 @@ List of incompatible ABI changes in this release: should be updated to set quality (and qualityAlpha if applicable) and leave minQuantizer, maxQuantizer, minQuantizerAlpha, and maxQuantizerAlpha initialized to the default values. -* The --targetSize flag in avifenc was added to adapt the quality so that the +* 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 @@ -81,7 +97,13 @@ List of incompatible ABI changes in this release: 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(). ## [0.11.1] - 2022-10-19 @@ -951,7 +973,8 @@ code. - Constants `AVIF_VERSION`, `AVIF_VERSION_MAJOR`, `AVIF_VERSION_MINOR`, `AVIF_VERSION_PATCH` - `avifVersion()` function -[Unreleased]: https://github.com/AOMediaCodec/libavif/compare/v0.11.1...HEAD +[Unreleased]: https://github.com/AOMediaCodec/libavif/compare/v1.0.0...HEAD +[1.0.0]: https://github.com/AOMediaCodec/libavif/compare/v0.11.1...v1.0.0 [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 diff --git a/CMakeLists.txt b/CMakeLists.txt index aa89c87281..c39ab1c45d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ endif() # 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.1) +project(libavif LANGUAGES C VERSION 1.0.0) # Set C99 as the default set(CMAKE_C_STANDARD 99) @@ -23,9 +23,9 @@ set(CMAKE_C_STANDARD 99) # Increment MINOR. Set PATCH to 0 # If the source code was changed, but there were no interface changes: # Increment PATCH. -set(LIBRARY_VERSION_MAJOR 15) +set(LIBRARY_VERSION_MAJOR 16) set(LIBRARY_VERSION_MINOR 0) -set(LIBRARY_VERSION_PATCH 1) +set(LIBRARY_VERSION_PATCH 0) set(LIBRARY_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}") set(LIBRARY_SOVERSION ${LIBRARY_VERSION_MAJOR}) diff --git a/include/avif/avif.h b/include/avif/avif.h index 6122353e76..b0cfa98e64 100644 --- a/include/avif/avif.h +++ b/include/avif/avif.h @@ -55,10 +55,10 @@ extern "C" { // and non-zero during development of the next release. This should allow for // downstream projects to do greater-than preprocessor checks on AVIF_VERSION // to leverage in-development code without breaking their stable builds. -#define AVIF_VERSION_MAJOR 0 -#define AVIF_VERSION_MINOR 11 -#define AVIF_VERSION_PATCH 1 -#define AVIF_VERSION_DEVEL 1 +#define AVIF_VERSION_MAJOR 1 +#define AVIF_VERSION_MINOR 0 +#define AVIF_VERSION_PATCH 0 +#define AVIF_VERSION_DEVEL 0 #define AVIF_VERSION \ ((AVIF_VERSION_MAJOR * 1000000) + (AVIF_VERSION_MINOR * 10000) + (AVIF_VERSION_PATCH * 100) + AVIF_VERSION_DEVEL)