libavif v0.11.0 has been released. The source code of the release can
be checked out from the git repository using the release tag
Here is the change log:
[0.11.0] - 2022-10-12
There are incompatible ABI changes in this release. The alphaRange member was
removed from the avifImage struct. The chromaDownsampling and avoidLibYUV
members were added to the avifRGBImage struct. The imageDimensionLimit member
was added to the avifDecoder struct. avifImageCopy() and
avifImageAllocatePlanes() signatures changed. It is necessary to recompile your
code. Also check the return values of avifImageCopy() and
* Add man pages for avifenc and avifdec
* Add the avifChannelIndex type alias for enum avifChannelIndex
* Add avifChromaDownsampling enum
* Add chromaDownsampling field to avifRGBImage struct
* Add support for AVIF_RGB_FORMAT_RGB_565
* Add imageDimensionLimit field to avifDecoder struct
* Add autoTiling field to avifEncoder struct
* Add new avifResult codes AVIF_RESULT_CANNOT_CHANGE_SETTING and
* Add new enum constants AVIF_PIXEL_FORMAT_COUNT and AVIF_RGB_FORMAT_COUNT
* avifdec: Add --dimension-limit, which specifies the image dimension limit
(width or height) that should be tolerated
* avifenc: Add --sharpyuv, which enables "sharp" RGB to YUV420 conversion, which
reduces artifacts caused by 420 chroma downsampling. Needs libsharpyuv (part
of the libwebp repository) at compile time.
* avifenc: Add --ignore-exif and --ignore-xmp flags.
* avifenc: Add --autotiling, which sets --tilerowslog2 and --tilecolslog2
* avifenc: Input Exif orientation is converted to irot/imir by default.
* Fix memory leaks of metadata on avifenc exit
* Update the handling of 'lsel' and progressive decoding to AVIF spec v1.1.0
* Treat an absent lsel and layer_id == 0xFFFF equivalently for backward
compatibility with earlier drafts of AVIF spec v1.1.0
* Set libavif's own default value of cfg.rc_end_usage for libaom
* Fix https://github.com/AOMediaCodec/libavif/issues/953
* Set the libaom-specific option -a tune=ssim by default
* Bump cmake_minimum_required from 3.5 to 3.13
* Fix https://crbug.com/oss-fuzz/48135
* Use several new libyuv functions in reformat_libyuv.c
* Fix SVT-AV1's issue 1957 related to uninitialized variables crashing the
* Fix https://github.com/AOMediaCodec/libavif/issues/787
* Update aom.cmd: v3.5.0
* Update rav1e.cmd: v0.5.1
* Update svt.cmd/svt.sh: v1.2.1
* Update libgav1.cmd: v0.18.0
* Update libyuv.cmd: f9fda6e7 (version 1844)
* avifImageCopy() and avifImageAllocatePlanes() now return avifResult instead of
void to report invalid parameters or memory allocation failures.
* avifImageRGBToYUV() now uses libyuv fast paths by default. It may slightly
change conversion results. The old behavior can be restored by setting
avifRGBImage::chromaDownsampling to AVIF_CHROMA_DOWNSAMPLING_BEST_QUALITY
and avifRGBImage::avoidLibYUV to AVIF_TRUE.
* avifRGBImage::chromaUpsampling now only applies to conversions that need
upsampling chroma from 4:2:0 or 4:2:2 and has no impact on the use of libyuv.
Set avifRGBImage::avoidLibYUV accordingly to control the use of libyuv.
* avifenc: Set the YUV format to 4:0:0 for grayscale PNGs
* Support updating encoder settings and codec-specific options during encoding
* Disable AVIF_STRICT_CLAP_VALID and AVIF_STRICT_PIXI_REQUIRED in the JNI
* avifdec: Return proper exit code in "info" mode
* In avifenc and avifdec, treat all arguments that start with '-' as options
* Fix https://github.com/AOMediaCodec/libavif/issues/1086
* Exif and XMP metadata is imported from PNG and JPEG files.
* avifImageSetMetadataExif() parses the Exif metadata and converts any Exif
orientation found into transformFlags, irot and imir values.
* Write 'auxi' box for animated images with alpha channel
* Write 'auxv' as handler_type for alpha channel track
* Use PNG_COLOR_TYPE_GRAY for 8-bit grayscale output
* Replace repeated subtraction by modulo in calcGCD (fix b/246649620)
* Change avifImageCreate to take uint32_t instead of int parameters
* When writing an image sequence, check if it's safe to cast width and height to
* Allow clamped grid cells in avifEncoderAddImageGrid()
* alphaRange field was removed from the avifImage struct. It it presumed that
alpha plane is always full range.
* The avifCodecConfigurationBox struct becomes a private type for libavif