Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

0.3.0 - 2019-07-22

Added

  • new CMake option AVIF_CODEC_AOM to enable/disable the usage of AOM's codec (default: on)
  • new CMake option AVIF_CODEC_DAV1D to enable/disable the usage of dav1d's codec (default: off)
  • codec_dav1d.c, which provides decoding via libdav1d
  • fuzz.sh which builds with afl-clang and runs afl-fuzz
  • aviffuzz tool, used in fuzzing script
  • fuzz inputs made with colorist
  • .clang-format file
  • avifArray*() functions for basic dynamic arrays when parsing
  • moov box parsing
  • now reads ‘avis’ brands
  • Split avifDecoderRead() into components for image sequences:
    • avifDecoderSetSource()
    • avifDecoderParse()
    • avifDecoderNextImage()
    • avifImageCopy()
    • avifDecoderReset()
  • Added decoder and image timings for image sequences

Changed

  • Reorganized internal struct avifCodec to accomodate multiple codecs simultaneously (compile time; not exposed to API)
  • Fix some compiler warnings
  • Sanity check offsets and sizes in items table before using
  • Bail out of box header advertises an impossible size
  • Ran clang-format on all of src and include
  • Fix copypasta leading to a memory leak in RGB planes
  • Switched items and properties during parse to use dynamic arrays
  • Refactored codec API to not require each codec to maintain per-plane decoder instances
  • avifImage can now “not own” its planes and directly point at decoder planes to avoid copies
  • aviffuzz attempts to decode all images in source material twice (using avifDecoderReset())
  • Switch decoder->quality to explicit [minQuantizer, maxQuantizer], update assoc. constants
  • Add examples to README

0.2.0 - 2019-06-12

Added

  • Added avifEncoder and avifDecoder to match avifImage's pattern and allow for easier future parameterization

Changed

  • Renamed project in cmake to libavif to match new official repo naming
  • Updated appveyor script to use libavif
  • Updated examples and apps to use new encoder/decoder pattern

0.1.4 - 2019-06-11

Added

  • avifPixelFormatToString() convenience function for debugging/printing
  • avifenc and avifdec “apps” which show basic bidirectional conversion to y4m

Changed

  • Make calling avifImageYUVToRGB() upon reading an avif optional
  • Moved ext/aom submodule to use official remote
  • Update ext/aom submodule to commit 38711e7fe

Removed

  • Remove all calls to convertXYZToXYY() as they were all unnecessary

0.1.3 - 2019-04-23

Changed

  • ftyp - Change major_brand to avif
  • ftyp - Reorder compatible_brands, add MA1A or MA1B when appropriate
  • Write meta box before mdat box for streaming friendliness

0.1.2 - 2019-04-18

Added

  • AVIF_NCLX_COLOUR_PRIMARIES_P3 (convenient mirrored value)
  • avifNclxColourPrimariesFind() - Finds a builtin avifNclxColourPrimaries and name by a set of primaries

Changed

  • Fixed enum name copypasta for AVIF_NCLX_COLOUR_PRIMARIES_EG432_1
  • Fix UV limited ranges when doing full<->limited range conversion

0.1.1 - 2019-04-15

Added

  • Added appveyor.yml (exported from Appveyor)
  • Move ext/aom to a proper submodule
  • Update AOM to commit 3e3b9342a with minor CMake changes

Changed

  • Added static library artifact zip to Windows x64 builds (Appveyor)
  • Updated README to explain libavif's goals and a little more build info
  • Fix clang warning in avifVersion() signature

0.1.0 - 2019-04-12

Added

  • First version. Plenty of bugfixes and features await!
  • ext/aom based off AOM commit 3563b12b with minor CMake changes
  • An interest and willingness to maintain this file.
  • Constants AVIF_VERSION, AVIF_VERSION_MAJOR, AVIF_VERSION_MINOR, AVIF_VERSION_PATCH
  • avifVersion() function