Here is an update to libavif 1.2.1.

## [1.2.1] - 2025-03-17

### Added since 1.2.0

* Add support for outputting all frames of an image sequence in `avifdec`.
  `avifdec --index all sequence.avif out.png` creates files named
  `out-xxxxxxxxxx.png` where xxxxxxxxxx are the zero-padded frame indices.

### Changed since 1.2.0

* Fix local libargparse dependency patch step on macOS 10.15 and earlier.
* Patch local libyuv dependency for compatibility with gcc 10.
* Use stricter C99 syntax to avoid related compilation issues.

## [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. https://github.com/AOMediaCodec/libavif/issues/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 parseAV2SequenceHeader() and avm.cmd: research-v9.0.0
* Remove AVIF_ENABLE_GTEST CMake option. It's now implied by
  AVIF_GTEST=LOCAL/SYSTEM.
* Deprecate `avifEncoder`'s `minQuantizer`, `maxQuantizer`, `minQuantizerAlpha`,
  and `maxQuantizerAlpha` fields. `quality` and `qualityAlpha`\xc2\xa0should be 
used
  instead. Deprecate\xc2\xa0`avifenc`'s `--min`, `--max`, `--minalpha` and 
`--maxalpha`
  flags. `-q` or `--qcolor` and `--qalpha`\xc2\xa0should 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.


Index: Makefile
===================================================================
RCS file: /cvs/ports/graphics/libavif/Makefile,v
retrieving revision 1.24
diff -u -p -u -p -r1.24 Makefile
--- Makefile    30 Aug 2024 07:48:53 -0000      1.24
+++ Makefile    20 Mar 2025 01:58:40 -0000
@@ -1,11 +1,11 @@
 COMMENT=       library for encoding and decoding .avif files
 
-DIST_TUPLE+=   github AOMediaCodec libavif v1.1.1 .
+DIST_TUPLE+=   github AOMediaCodec libavif v1.2.1 .
 DIST_TUPLE+=   github lemenkov libyuv \
-               a6a2ec654b1be1166b376476a7555c89eca0c275 ext/libyuv
+               ccdf870348764e4b77fa3b56accb2a896a901bad ext/libyuv
 CATEGORIES=    graphics
 
-SHARED_LIBS=   avif    7.1
+SHARED_LIBS=   avif    8.0
 
 HOMEPAGE=      https://github.com/AOMediaCodec/libavif
 
Index: distinfo
===================================================================
RCS file: /cvs/ports/graphics/libavif/distinfo,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 distinfo
--- distinfo    30 Aug 2024 07:48:53 -0000      1.18
+++ distinfo    20 Mar 2025 01:58:40 -0000
@@ -1,4 +1,4 @@
-SHA256 (AOMediaCodec-libavif-v1.1.1.tar.gz) = 
kUZi4WJF4GLtc/kBEvu0VIJBMAhDp3ctjUQbtoWd5Fs=
-SHA256 (lemenkov-libyuv-a6a2ec654b1be1166b376476a7555c89eca0c275.tar.gz) = 
+5dXKi3B2Ok3bmGzPrSHCMzPs0Egb8m02atl9Asyb7M=
-SIZE (AOMediaCodec-libavif-v1.1.1.tar.gz) = 13644189
-SIZE (lemenkov-libyuv-a6a2ec654b1be1166b376476a7555c89eca0c275.tar.gz) = 570482
+SHA256 (AOMediaCodec-libavif-v1.2.1.tar.gz) = 
nIWcfBLMsPQHURv+MD5qckf19nOPVIUmYsbfgEja3fQ=
+SHA256 (lemenkov-libyuv-ccdf870348764e4b77fa3b56accb2a896a901bad.tar.gz) = 
F0H+XOzsy+15Q/nMzwJgHrQwtzF/jUTMaFY5XEaqyuw=
+SIZE (AOMediaCodec-libavif-v1.2.1.tar.gz) = 13942041
+SIZE (lemenkov-libyuv-ccdf870348764e4b77fa3b56accb2a896a901bad.tar.gz) = 614050
Index: patches/patch-ext_libyuv_include_libyuv_cpu_id_h
===================================================================
RCS file: patches/patch-ext_libyuv_include_libyuv_cpu_id_h
diff -N patches/patch-ext_libyuv_include_libyuv_cpu_id_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-ext_libyuv_include_libyuv_cpu_id_h    20 Mar 2025 01:58:40 
-0000
@@ -0,0 +1,12 @@
+Index: ext/libyuv/include/libyuv/cpu_id.h
+--- ext/libyuv/include/libyuv/cpu_id.h.orig
++++ ext/libyuv/include/libyuv/cpu_id.h
+@@ -94,7 +94,7 @@ int MipsCpuCaps(const char* cpuinfo_name);
+ LIBYUV_API
+ int RiscvCpuCaps(const char* cpuinfo_name);
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ // On Linux, parse AArch64 features from getauxval(AT_HWCAP{,2}).
+ LIBYUV_API
+ int AArch64CpuCaps(unsigned long hwcap, unsigned long hwcap2);
Index: patches/patch-ext_libyuv_source_cpu_id_cc
===================================================================
RCS file: patches/patch-ext_libyuv_source_cpu_id_cc
diff -N patches/patch-ext_libyuv_source_cpu_id_cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-ext_libyuv_source_cpu_id_cc   20 Mar 2025 01:58:40 -0000
@@ -0,0 +1,44 @@
+Index: ext/libyuv/source/cpu_id.cc
+--- ext/libyuv/source/cpu_id.cc.orig
++++ ext/libyuv/source/cpu_id.cc
+@@ -23,7 +23,8 @@
+ #include <stdio.h>  // For fopen()
+ #include <string.h>
+ 
+-#if defined(__linux__) && defined(__aarch64__)
++#if (defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)) && \
++    defined(__aarch64__)
+ #include <sys/auxv.h>  // For getauxval()
+ #endif
+ 
+@@ -179,7 +180,7 @@ LIBYUV_API SAFEBUFFERS int ArmCpuCaps(const char* cpui
+ }
+ 
+ #ifdef __aarch64__
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ // Define hwcap values ourselves: building with an old auxv header where these
+ // hwcap values are not defined should not prevent features from being 
enabled.
+ #define YUV_AARCH64_HWCAP_ASIMDDP (1 << 20)
+@@ -464,13 +465,20 @@ static SAFEBUFFERS int GetCpuFlags(void) {
+   cpu_info |= kCpuHasLOONGARCH;
+ #endif
+ #if defined(__aarch64__)
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#if defined(__FreeBSD__) || defined(__OpenBSD__)
++  unsigned long hwcap = 0;
++  unsigned long hwcap2 = 0;
++  elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
++  elf_aux_info(AT_HWCAP2, &hwcap2, sizeof(hwcap2));
++#else
+   // getauxval is supported since Android SDK version 18, minimum at time of
+   // writing is 21, so should be safe to always use this. If getauxval is
+   // somehow disabled then getauxval returns 0, which will leave Neon enabled
+   // since Neon is mandatory on AArch64.
+   unsigned long hwcap = getauxval(AT_HWCAP);
+   unsigned long hwcap2 = getauxval(AT_HWCAP2);
++#endif
+   cpu_info = AArch64CpuCaps(hwcap, hwcap2);
+ #else
+   cpu_info = AArch64CpuCaps();
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/graphics/libavif/pkg/PLIST,v
retrieving revision 1.6
diff -u -p -u -p -r1.6 PLIST
--- pkg/PLIST   27 Aug 2024 07:54:17 -0000      1.6
+++ pkg/PLIST   20 Mar 2025 01:58:40 -0000
@@ -1,5 +1,6 @@
 @bin bin/avifdec
 @bin bin/avifenc
+@bin bin/avifgainmaputil
 include/avif/
 include/avif/avif.h
 include/avif/avif_cxx.h

Reply via email to