1.2.0 - 2025-02-25
Added since 1.1.1
- Turn on the gain map API. Remove the AVIF_ENABLE_EXPERIMENTAL_GAIN_MAP CMake
flag. - Allow YCgCo_Re and YCgCo_Ro encoding/decoding and update the enum values to
the latest CICP specification. Remove the AVIF_ENABLE_EXPERIMENTAL_YCGCO_R
CMake flag. - Add the properties and numProperties fields to avifImage. They are filled by
the avifDecoder instance with the properties unrecognized by libavif. They are
written by the avifEncoder. - Add avif(Un)SignedFraction structs and avifDoubleTo(Un)SignedFraction
utility functions. - Add 'avifgainmaputil' command line tool to installed apps.
- Add avifCropRectRequiresUpsampling().
- Add experimental support for PixelInformationProperty syntax from HEIF 3rd Ed.
Amd2 behind the compilation flag AVIF_ENABLE_EXPERIMENTAL_EXTENDED_PIXI. - Add experimental Sample Transform recipe
BIT_DEPTH_EXTENSION_12B_8B_OVERLAP_4B.
Changed since 1.1.1
- avifenc: Allow large images to be encoded.
- Fix empty CMAKE_CXX_FLAGS_RELEASE if -DAVIF_CODEC_AOM=LOCAL -DAVIF_LIBYUV=OFF
is specified. #2365. - Rename AVIF_ENABLE_EXPERIMENTAL_METAV1 to AVIF_ENABLE_EXPERIMENTAL_MINI and
update the experimental reduced header feature to the latest specification
draft. Rename AVIF_HEADER_REDUCED to AVIF_HEADER_MINI. - Update the experimental Sample Transform feature behind the
AVIF_ENABLE_EXPERIMENTAL_SAMPLE_TRANSFORM CMake flag to the latest
specification draft. - Ignore gain maps with unsupported metadata. Handle gain maps with
writer_version > 0 correctly. - Simplify gain map API: remove the enableParsingGainMapMetadata setting, now
gain map metadata is always parsed if present and if this feature is compiled
in. Replace enableDecodingGainMap and ignoreColorAndAlpha with a bit field to
choose image content to decode. Remove gainMapPresent: users can check if
decoder->image->gainMap != NULL instead. Remove avifGainMapMetadata and
avifGainMapMetadataDouble structs. - Write an empty HandlerBox name field instead of "libavif" (saves 7 bytes).
- Check for FileTypeBox precedence in avifParse().
- Do not write an alternative group with the same ID as an item.
- Update aom.cmd/LocalAom.cmake: v3.12.0. The new codec-specific option tune=iq
(image quality) is added in libaom v3.12.0. - Update parseAV2SequenceHeader() and avm.cmd: research-v9.0.0
- Update dav1d.cmd/dav1d_android.sh/LocalDav1d.cmake: 1.5.1
- Update libjpeg.cmd/LocalJpeg.cmake: v3.0.4
- Update libxml2.cmd/LocalLibXml2.cmake: v2.13.5
- Update libyuv.cmd: ccdf87034 (1903)
- Update svt.cmd/svt.sh/LocalSvt.cmake to v3.0.0. When available, use
EbSvtAv1EncConfiguration::lossless and ::level_of_parallelism in libavif. - Remove AVIF_ENABLE_GTEST CMake option. It's now implied by
AVIF_GTEST=LOCAL/SYSTEM. - Deprecate
avifEncoder
'sminQuantizer
,maxQuantizer
,minQuantizerAlpha
,
andmaxQuantizerAlpha
fields.quality
andqualityAlpha
should be used
instead. Deprecateavifenc
's--min
,--max
,--minalpha
and--maxalpha
flags.-q
or--qcolor
and--qalpha
should be used instead. - For dependencies, the deprecated way of setting AVIF_LOCAL_* to ON is
removed. Dependency options can now only be set to OFF/LOCAL/SYSTEM. - Change the default quality for alpha to be the same as the quality for color.
- Allow decoding subsampled images with odd Clean Aperture dimensions or offsets.
- Deprecate avifCropRectConvertCleanApertureBox() and
avifCleanApertureBoxConvertCropRect(). Replace them with
avifCropRectFromCleanApertureBox() and avifCleanApertureBoxFromCropRect(). - Write descriptive properties before transformative properties.
- Reject non-essential transformative properties.
- Treat avifenc --stdin as a regular positional file path argument.
- Update man pages based on avifenc/dec's --help message.
- android_jni: Support 16kb page size
- android_jni: Set threads to 2 instead of CPU count
- Fix overflows when dealing with alpha during YUV/RGB conversions and in
avifRGBImageAllocatePixels(). - Make avifEncoder.headerFormat a flag combination for future features.
- Rename AVIF_HEADER_FULL to AVIF_HEADER_DEFAULT. Deprecate AVIF_HEADER_FULL.
- Fix decoding image sequences with non video tracks (such as audio or subtitles).
- Fix type checking of auxiliary tracks: previously any auxiliary track was
assumed to be alpha, even if it was a different type. If the aux type is absent,
it is assumed to be alpha.