public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/libavif] epel9-next: Update to version 0.7.2
@ 2026-07-14 21:39 Andreas Schneider
0 siblings, 0 replies; only message in thread
From: Andreas Schneider @ 2026-07-14 21:39 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/libavif
Branch : epel9-next
Commit : b0bfd6d028d50f55585b970df0426dc30df91854
Author : Andreas Schneider <asn@cryptomilk.org>
Date : 2020-04-29T17:44:26+02:00
Stats : +464/-2 in 6 file(s)
URL : https://src.fedoraproject.org/rpms/libavif/c/b0bfd6d028d50f55585b970df0426dc30df91854?branch=epel9-next
Log:
Update to version 0.7.2
---
diff --git a/.gitignore b/.gitignore
index cb30d3c..735a4c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/libavif-0.5.7.tar.gz
/libavif-0.7.1.tar.gz
+/libavif-0.7.2.tar.gz
diff --git a/155.patch b/155.patch
new file mode 100644
index 0000000..77f38ce
--- /dev/null
+++ b/155.patch
@@ -0,0 +1,23 @@
+From 84232e2d786967e1ce9aec668f0d31568e83f72c Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn@cryptomilk.org>
+Date: Wed, 29 Apr 2020 17:34:57 +0200
+Subject: [PATCH] apps: Use correct enum for colourPrimaries
+
+Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
+---
+ apps/avifenc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/apps/avifenc.c b/apps/avifenc.c
+index 11595b7..e812670 100644
+--- a/apps/avifenc.c
++++ b/apps/avifenc.c
+@@ -352,7 +352,7 @@ int main(int argc, char * argv[])
+ if (lossless && (inputFormat != AVIF_APP_FILE_FORMAT_Y4M)) {
+ if (!nclxSet) { // don't stomp on the user's cmdline nclx values
+ // Assume SRGB unless they tell us otherwise via --nclx
+- nclx.colourPrimaries = AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT709;
++ nclx.colourPrimaries = AVIF_NCLX_COLOUR_PRIMARIES_BT709;
+ nclx.transferCharacteristics = AVIF_NCLX_TRANSFER_CHARACTERISTICS_SRGB;
+ nclx.matrixCoefficients = AVIF_NCLX_MATRIX_COEFFICIENTS_IDENTITY; // this is key for lossless
+ nclx.range = AVIF_RANGE_FULL;
diff --git a/e4e5d752ece581d6ef9fbb8bab0ab2edfde13fc5.patch b/e4e5d752ece581d6ef9fbb8bab0ab2edfde13fc5.patch
new file mode 100644
index 0000000..622e232
--- /dev/null
+++ b/e4e5d752ece581d6ef9fbb8bab0ab2edfde13fc5.patch
@@ -0,0 +1,279 @@
+From e4e5d752ece581d6ef9fbb8bab0ab2edfde13fc5 Mon Sep 17 00:00:00 2001
+From: Joe Drago <jdrago@netflix.com>
+Date: Mon, 27 Apr 2020 14:27:31 -0700
+Subject: [PATCH] Added avifenc Lossless (--lossless, -l) mode, which sets new
+ defaults and warns when anything would cause the AVIF to not be lossless
+
+---
+ CHANGELOG.md | 2 +
+ apps/avifenc.c | 119 ++++++++++++++++++++++++++++++++++++++---
+ apps/shared/avifjpeg.c | 2 +-
+ apps/shared/avifjpeg.h | 2 +-
+ apps/shared/avifpng.c | 8 ++-
+ apps/shared/avifpng.h | 4 +-
+ 6 files changed, 123 insertions(+), 14 deletions(-)
+
+diff --git a/CHANGELOG.md b/CHANGELOG.md
+index 19c8d08..8d05a5f 100644
+--- a/CHANGELOG.md
++++ b/CHANGELOG.md
+@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+ ## [Unreleased]
++### Added
++- avifenc: Lossless (--lossless, -l) mode, which sets new defaults and warns when anything would cause the AVIF to not be lossless
+
+ ## [0.7.2] - 2020-04-24
+ ### Added
+diff --git a/apps/avifenc.c b/apps/avifenc.c
+index 357596c..2d5a591 100644
+--- a/apps/avifenc.c
++++ b/apps/avifenc.c
+@@ -25,6 +25,7 @@ static void syntax(void)
+ printf("Options:\n");
+ printf(" -h,--help : Show syntax help\n");
+ printf(" -j,--jobs J : Number of jobs (worker threads, default: 1)\n");
++ printf(" -l,--lossless : Set all defaults to encode losslessly, and emit warnings when settings/input don't allow for it\n");
+ printf(" -d,--depth D : Output depth [8,10,12]. (JPEG/PNG only; For y4m, depth is retained)\n");
+ printf(" -y,--yuv FORMAT : Output format [default=444, 422, 420]. (JPEG/PNG only; For y4m, format is retained)\n");
+ printf(" -n,--nclx P/T/M : Set nclx colr box values (3 raw numbers, use -r to set range flag)\n");
+@@ -156,6 +157,7 @@ int main(int argc, char * argv[])
+ avifRange requestedRange = AVIF_RANGE_FULL;
+ avifBool requestedRangeSet = AVIF_FALSE;
+ avifBool nclxSet = AVIF_FALSE;
++ avifBool lossless = AVIF_FALSE;
+ avifEncoder * encoder = NULL;
+
+ avifNclxColorProfile nclx;
+@@ -300,6 +302,19 @@ int main(int argc, char * argv[])
+ fprintf(stderr, "ERROR: Invalid imir axis: %s\n", arg);
+ return 1;
+ }
++ } else if (!strcmp(arg, "-l") || !strcmp(arg, "--lossless")) {
++ lossless = AVIF_TRUE;
++
++ // Set defaults, and warn later on if anything looks incorrect
++ requestedFormat = AVIF_PIXEL_FORMAT_YUV444; // don't subsample GBR
++ minQuantizer = AVIF_QUANTIZER_LOSSLESS; // lossless
++ maxQuantizer = AVIF_QUANTIZER_LOSSLESS; // lossless
++ minQuantizerAlpha = AVIF_QUANTIZER_LOSSLESS; // lossless
++ maxQuantizerAlpha = AVIF_QUANTIZER_LOSSLESS; // lossless
++ codecChoice = AVIF_CODEC_CHOICE_AOM; // rav1e doesn't support lossless transform yet:
++ // https://github.com/xiph/rav1e/issues/151
++ requestedRange = AVIF_RANGE_FULL; // avoid limited range
++ requestedRangeSet = AVIF_TRUE;
+ } else {
+ // Positional argument
+ if (!inputFilename) {
+@@ -325,6 +340,26 @@ int main(int argc, char * argv[])
+ avifImage * avif = avifImageCreateEmpty();
+ avifRWData raw = AVIF_DATA_EMPTY;
+
++ uint32_t sourceDepth = 0;
++ avifBool sourceWasRGB = AVIF_TRUE;
++ avifAppFileFormat inputFormat = avifGuessFileFormat(inputFilename);
++ if (inputFormat == AVIF_APP_FILE_FORMAT_UNKNOWN) {
++ fprintf(stderr, "Cannot determine input file extension: %s\n", inputFilename);
++ returnCode = 1;
++ goto cleanup;
++ }
++
++ if (lossless && (inputFormat != AVIF_APP_FILE_FORMAT_Y4M)) {
++ if (!nclxSet) { // don't stomp on the user's cmdline nclx values
++ // Assume SRGB unless they tell us otherwise via --nclx
++ nclx.colourPrimaries = AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT709;
++ nclx.transferCharacteristics = AVIF_NCLX_TRANSFER_CHARACTERISTICS_SRGB;
++ nclx.matrixCoefficients = AVIF_NCLX_MATRIX_COEFFICIENTS_IDENTITY; // this is key for lossless
++ nclx.range = AVIF_RANGE_FULL;
++ nclxSet = AVIF_TRUE;
++ }
++ }
++
+ // Set range and nclx in advance so any upcoming RGB -> YUV use the proper coefficients
+ if (requestedRangeSet) {
+ avif->yuvRange = requestedRange;
+@@ -334,12 +369,6 @@ int main(int argc, char * argv[])
+ avifImageSetProfileNCLX(avif, &nclx);
+ }
+
+- avifAppFileFormat inputFormat = avifGuessFileFormat(inputFilename);
+- if (inputFormat == AVIF_APP_FILE_FORMAT_UNKNOWN) {
+- fprintf(stderr, "Cannot determine input file extension: %s\n", inputFilename);
+- returnCode = 1;
+- goto cleanup;
+- }
+ if (inputFormat == AVIF_APP_FILE_FORMAT_Y4M) {
+ if (requestedRangeSet) {
+ fprintf(stderr, "WARNING: Ignoring range (-r) value when encoding from y4m content.\n");
+@@ -353,13 +382,16 @@ int main(int argc, char * argv[])
+ nclx.range = avif->yuvRange;
+ avifImageSetProfileNCLX(avif, &nclx);
+ }
++ sourceDepth = avif->depth;
++ sourceWasRGB = AVIF_FALSE;
+ } else if (inputFormat == AVIF_APP_FILE_FORMAT_JPEG) {
+ if (!avifJPEGRead(avif, inputFilename, requestedFormat, requestedDepth)) {
+ returnCode = 1;
+ goto cleanup;
+ }
++ sourceDepth = 8;
+ } else if (inputFormat == AVIF_APP_FILE_FORMAT_PNG) {
+- if (!avifPNGRead(avif, inputFilename, requestedFormat, requestedDepth)) {
++ if (!avifPNGRead(avif, inputFilename, requestedFormat, requestedDepth, &sourceDepth)) {
+ returnCode = 1;
+ goto cleanup;
+ }
+@@ -395,7 +427,78 @@ int main(int argc, char * argv[])
+ avif->imir.axis = imirAxis;
+ }
+
+- printf("AVIF to be written:\n");
++ avifBool usingAOM = AVIF_FALSE;
++ const char * codecName = avifCodecName(codecChoice, AVIF_CODEC_FLAG_CAN_ENCODE);
++ if (codecName && !strcmp(codecName, "aom")) {
++ usingAOM = AVIF_TRUE;
++ }
++ avifBool hasAlpha = (avif->alphaPlane && avif->alphaRowBytes);
++ avifBool losslessColorQP = (minQuantizer == AVIF_QUANTIZER_LOSSLESS) && (maxQuantizer == AVIF_QUANTIZER_LOSSLESS);
++ avifBool losslessAlphaQP = (minQuantizerAlpha == AVIF_QUANTIZER_LOSSLESS) && (maxQuantizerAlpha == AVIF_QUANTIZER_LOSSLESS);
++ avifBool depthMatches = (sourceDepth == avif->depth);
++ avifBool using444 = (avif->yuvFormat == AVIF_PIXEL_FORMAT_YUV444);
++ avifBool usingFullRange = (avif->yuvRange == AVIF_RANGE_FULL);
++ avifBool usingIdentityMatrix = (nclxSet && (nclx.matrixCoefficients == AVIF_NCLX_MATRIX_COEFFICIENTS_IDENTITY));
++
++ // Guess if the enduser is asking for lossless and enable it so that warnings can be emitted
++ if (losslessColorQP && (!hasAlpha || losslessAlphaQP)) {
++ // The enduser is probably expecting lossless. Turn it on and emit warnings
++ printf("Min/max QPs set to %d, assuming --lossless to enable warnings on potential lossless issues.\n", AVIF_QUANTIZER_LOSSLESS);
++ lossless = AVIF_TRUE;
++ }
++
++ // Check for any reasons lossless will fail, and complain loudly
++ if (lossless) {
++ if (!usingAOM) {
++ fprintf(stderr, "WARNING: [--lossless] Only aom (-c) supports lossless transforms. Output might not be lossless.\n");
++ lossless = AVIF_FALSE;
++ }
++
++ if (!losslessColorQP) {
++ fprintf(stderr,
++ "WARNING: [--lossless] Color quantizer range (--min, --max) not set to %d. Color output might not be lossless.\n",
++ AVIF_QUANTIZER_LOSSLESS);
++ lossless = AVIF_FALSE;
++ }
++
++ if (hasAlpha && !losslessAlphaQP) {
++ fprintf(stderr,
++ "WARNING: [--lossless] Alpha present and alpha quantizer range (--minalpha, --maxalpha) not set to %d. Alpha output might not be lossless.\n",
++ AVIF_QUANTIZER_LOSSLESS);
++ lossless = AVIF_FALSE;
++ }
++
++ if (!depthMatches) {
++ fprintf(stderr,
++ "WARNING: [--lossless] Input depth (%d) does not match output depth (%d). Output might not be lossless.\n",
++ sourceDepth,
++ avif->depth);
++ lossless = AVIF_FALSE;
++ }
++
++ if (sourceWasRGB) {
++ if (!using444) {
++ fprintf(stderr, "WARNING: [--lossless] Input data was RGB and YUV subsampling (-y) isn't YUV444. Output might not be lossless.\n");
++ lossless = AVIF_FALSE;
++ }
++
++ if (!usingFullRange) {
++ fprintf(stderr, "WARNING: [--lossless] Input data was RGB and output range (-r) isn't full. Output might not be lossless.\n");
++ lossless = AVIF_FALSE;
++ }
++
++ if (!usingIdentityMatrix) {
++ fprintf(stderr, "WARNING: [--lossless] Input data was RGB and nclx matrixCoefficients isn't set to identity (--nclx x/x/0); Output might not be lossless.\n");
++ lossless = AVIF_FALSE;
++ }
++ }
++ }
++
++ const char * lossyHint = " (Lossy)";
++ if (lossless) {
++ lossyHint = " (Lossless)";
++ }
++ printf("AVIF to be written:%s\n", lossyHint);
+ avifImageDump(avif);
+
+ printf("Encoding with AV1 codec '%s' speed [%d], color QP [%d (%s) <-> %d (%s)], alpha QP [%d (%s) <-> %d (%s)], %d worker thread(s), please wait...\n",
+diff --git a/apps/shared/avifjpeg.c b/apps/shared/avifjpeg.c
+index dcefb41..39bd0cd 100644
+--- a/apps/shared/avifjpeg.c
++++ b/apps/shared/avifjpeg.c
+@@ -30,7 +30,7 @@ static void my_error_exit(j_common_ptr cinfo)
+ longjmp(myerr->setjmp_buffer, 1);
+ }
+
+-avifBool avifJPEGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, int requestedDepth)
++avifBool avifJPEGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, uint32_t requestedDepth)
+ {
+ avifBool ret = AVIF_FALSE;
+ FILE * f = NULL;
+diff --git a/apps/shared/avifjpeg.h b/apps/shared/avifjpeg.h
+index 13c54dd..3824aea 100644
+--- a/apps/shared/avifjpeg.h
++++ b/apps/shared/avifjpeg.h
+@@ -6,7 +6,7 @@
+
+ #include "avif/avif.h"
+
+-avifBool avifJPEGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, int requestedDepth);
++avifBool avifJPEGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, uint32_t requestedDepth);
+ avifBool avifJPEGWrite(avifImage * avif, const char * outputFilename, int jpegQuality);
+
+ #endif // ifndef LIBAVIF_APPS_SHARED_AVIFJPEG_H
+diff --git a/apps/shared/avifpng.c b/apps/shared/avifpng.c
+index 843d6b0..3573a46 100644
+--- a/apps/shared/avifpng.c
++++ b/apps/shared/avifpng.c
+@@ -14,7 +14,7 @@
+ #pragma GCC diagnostic ignored "-Wclobbered"
+ #endif
+
+-avifBool avifPNGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, int requestedDepth)
++avifBool avifPNGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, uint32_t requestedDepth, uint32_t * outPNGDepth)
+ {
+ avifBool readResult = AVIF_FALSE;
+ png_structp png = NULL;
+@@ -104,6 +104,10 @@ avifBool avifPNGRead(avifImage * avif, const char * inputFilename, avifPixelForm
+ imgBitDepth = 16;
+ }
+
++ if (outPNGDepth) {
++ *outPNGDepth = imgBitDepth;
++ }
++
+ png_read_update_info(png, info);
+
+ avif->width = rawWidth;
+@@ -143,7 +147,7 @@ avifBool avifPNGRead(avifImage * avif, const char * inputFilename, avifPixelForm
+ return readResult;
+ }
+
+-avifBool avifPNGWrite(avifImage * avif, const char * outputFilename, int requestedDepth)
++avifBool avifPNGWrite(avifImage * avif, const char * outputFilename, uint32_t requestedDepth)
+ {
+ avifBool writeResult = AVIF_FALSE;
+ png_structp png = NULL;
+diff --git a/apps/shared/avifpng.h b/apps/shared/avifpng.h
+index a10220e..12b68ad 100644
+--- a/apps/shared/avifpng.h
++++ b/apps/shared/avifpng.h
+@@ -7,7 +7,7 @@
+ #include "avif/avif.h"
+
+ // if (requestedDepth == 0), do best-fit
+-avifBool avifPNGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, int requestedDepth);
+-avifBool avifPNGWrite(avifImage * avif, const char * outputFilename, int requestedDepth);
++avifBool avifPNGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, uint32_t requestedDepth, uint32_t * outPNGDepth);
++avifBool avifPNGWrite(avifImage * avif, const char * outputFilename, uint32_t requestedDepth);
+
+ #endif // ifndef LIBAVIF_APPS_SHARED_AVIFPNG_H
diff --git a/ebb29b37711c749681278f8b778f0e6c031c4ca2.patch b/ebb29b37711c749681278f8b778f0e6c031c4ca2.patch
new file mode 100644
index 0000000..b2b4881
--- /dev/null
+++ b/ebb29b37711c749681278f8b778f0e6c031c4ca2.patch
@@ -0,0 +1,150 @@
+From ebb29b37711c749681278f8b778f0e6c031c4ca2 Mon Sep 17 00:00:00 2001
+From: Wan-Teh Chang <wtc@google.com>
+Date: Mon, 27 Apr 2020 18:43:51 -0700
+Subject: [PATCH] Do not ignore GCC's -Wclobbered warning
+
+The C Standard requires certain local variables in the function calling
+setjmp be declared as volatile. I went through the code and declare
+variables as volatile according to the C Standard, except for the 'rgb'
+struct variable. Document my rationale.
+---
+ apps/shared/avifjpeg.c | 44 ++++++++++++++++++++++++++----------------
+ apps/shared/avifpng.c | 25 ++++++++++++++++--------
+ 2 files changed, 44 insertions(+), 25 deletions(-)
+
+diff --git a/apps/shared/avifjpeg.c b/apps/shared/avifjpeg.c
+index 39bd0cd..5e68211 100644
+--- a/apps/shared/avifjpeg.c
++++ b/apps/shared/avifjpeg.c
+@@ -12,11 +12,6 @@
+
+ #include "iccjpeg.h"
+
+-// This warning triggers false postives way too often in here.
+-#if defined(__GNUC__) && !defined(__clang__)
+-#pragma GCC diagnostic ignored "-Wclobbered"
+-#endif
+-
+ struct my_error_mgr
+ {
+ struct jpeg_error_mgr pub;
+@@ -30,31 +25,44 @@ static void my_error_exit(j_common_ptr cinfo)
+ longjmp(myerr->setjmp_buffer, 1);
+ }
+
++// Note on setjmp() and volatile variables:
++//
++// K & R, The C Programming Language 2nd Ed, p. 254 says:
++// ... Accessible objects have the values they had when longjmp was called,
++// except that non-volatile automatic variables in the function calling setjmp
++// become undefined if they were changed after the setjmp call.
++//
++// Therefore, 'iccData' is declared as volatile. 'rgb' should be declared as
++// volatile, but doing so would be inconvenient (try it) and since it is a
++// struct, the compiler is unlikely to put it in a register. 'ret' does not need
++// to be declared as volatile because it is not modified between setjmp and
++// longjmp. But GCC's -Wclobbered warning may have trouble figuring that out, so
++// we preemptively declare it as volatile.
++
+ avifBool avifJPEGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, uint32_t requestedDepth)
+ {
+- avifBool ret = AVIF_FALSE;
+- FILE * f = NULL;
+- uint8_t * iccData = NULL;
++ volatile avifBool ret = AVIF_FALSE;
++ uint8_t * volatile iccData = NULL;
+
+ avifRGBImage rgb;
+ memset(&rgb, 0, sizeof(avifRGBImage));
+
++ FILE * f = fopen(inputFilename, "rb");
++ if (!f) {
++ fprintf(stderr, "Can't open JPEG file for read: %s\n", inputFilename);
++ goto cleanup;
++ }
++
+ struct my_error_mgr jerr;
+ struct jpeg_decompress_struct cinfo;
+ cinfo.err = jpeg_std_error(&jerr.pub);
+ jerr.pub.error_exit = my_error_exit;
+ if (setjmp(jerr.setjmp_buffer)) {
+- return AVIF_FALSE;
++ goto cleanup;
+ }
+
+ jpeg_create_decompress(&cinfo);
+
+- f = fopen(inputFilename, "rb");
+- if (!f) {
+- fprintf(stderr, "Can't open JPEG file for read: %s\n", inputFilename);
+- goto cleanup;
+- }
+-
+ setup_read_icc_profile(&cinfo);
+ jpeg_stdio_src(&cinfo, f);
+ jpeg_read_header(&cinfo, TRUE);
+@@ -63,10 +71,12 @@ avifBool avifJPEGRead(avifImage * avif, const char * inputFilename, avifPixelFor
+ int row_stride = cinfo.output_width * cinfo.output_components;
+ JSAMPARRAY buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr)&cinfo, JPOOL_IMAGE, row_stride, 1);
+
++ uint8_t * iccDataTmp;
+ unsigned int iccDataLen;
+- if (read_icc_profile(&cinfo, &iccData, &iccDataLen)) {
++ if (read_icc_profile(&cinfo, &iccDataTmp, &iccDataLen)) {
++ iccData = iccDataTmp;
+ if (avif->profileFormat == AVIF_PROFILE_FORMAT_NONE) {
+- avifImageSetProfileICC(avif, iccData, (size_t)iccDataLen);
++ avifImageSetProfileICC(avif, iccDataTmp, (size_t)iccDataLen);
+ } else {
+ fprintf(stderr, "WARNING: JPEG contains ICC profile which is being overridden with --nclx\n");
+ }
+diff --git a/apps/shared/avifpng.c b/apps/shared/avifpng.c
+index 3573a46..934b5aa 100644
+--- a/apps/shared/avifpng.c
++++ b/apps/shared/avifpng.c
+@@ -9,17 +9,26 @@
+ #include <stdlib.h>
+ #include <string.h>
+
+-// This warning triggers false postives way too often in here.
+-#if defined(__GNUC__) && !defined(__clang__)
+-#pragma GCC diagnostic ignored "-Wclobbered"
+-#endif
++// Note on setjmp() and volatile variables:
++//
++// K & R, The C Programming Language 2nd Ed, p. 254 says:
++// ... Accessible objects have the values they had when longjmp was called,
++// except that non-volatile automatic variables in the function calling setjmp
++// become undefined if they were changed after the setjmp call.
++//
++// Therefore, 'rowPointers' is declared as volatile. 'rgb' should be declared as
++// volatile, but doing so would be inconvenient (try it) and since it is a
++// struct, the compiler is unlikely to put it in a register. 'readResult' and
++// 'writeResult' do not need to be declared as volatile because they are not
++// modified between setjmp and longjmp. But GCC's -Wclobbered warning may have
++// trouble figuring that out, so we preemptively declare them as volatile.
+
+ avifBool avifPNGRead(avifImage * avif, const char * inputFilename, avifPixelFormat requestedFormat, uint32_t requestedDepth, uint32_t * outPNGDepth)
+ {
+- avifBool readResult = AVIF_FALSE;
++ volatile avifBool readResult = AVIF_FALSE;
+ png_structp png = NULL;
+ png_infop info = NULL;
+- png_bytep * rowPointers = NULL;
++ png_bytep * volatile rowPointers = NULL;
+
+ avifRGBImage rgb;
+ memset(&rgb, 0, sizeof(avifRGBImage));
+@@ -149,10 +158,10 @@ avifBool avifPNGRead(avifImage * avif, const char * inputFilename, avifPixelForm
+
+ avifBool avifPNGWrite(avifImage * avif, const char * outputFilename, uint32_t requestedDepth)
+ {
+- avifBool writeResult = AVIF_FALSE;
++ volatile avifBool writeResult = AVIF_FALSE;
+ png_structp png = NULL;
+ png_infop info = NULL;
+- png_bytep * rowPointers = NULL;
++ png_bytep * volatile rowPointers = NULL;
+
+ avifRGBImage rgb;
+ memset(&rgb, 0, sizeof(avifRGBImage));
diff --git a/libavif.spec b/libavif.spec
index 51ecbae..1fc61f1 100644
--- a/libavif.spec
+++ b/libavif.spec
@@ -1,7 +1,7 @@
%bcond_with aom
Name: libavif
-Version: 0.7.1
+Version: 0.7.2
Release: 1%{?dist}
Summary: Library for encoding and decoding .avif files
License: BSD
@@ -10,6 +10,11 @@ Url: https://github.com/AOMediaCodec/libavif
Source0: https://github.com/AOMediaCodec/libavif/archive/v%{version}/%{name}-%{version}.tar.gz
+Patch0: e4e5d752ece581d6ef9fbb8bab0ab2edfde13fc5.patch
+Patch1: ebb29b37711c749681278f8b778f0e6c031c4ca2.patch
+# https://github.com/AOMediaCodec/libavif/pull/155
+Patch2: 155.patch
+
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: nasm
@@ -89,6 +94,10 @@ popd
%{_bindir}/avifenc
%changelog
+* Wed Apr 29 2020 Andreas Schneider <asn@redhat.com> - 0.7.2-1
+- Update to version 0.7.2
+ * https://github.com/AOMediaCodec/libavif/blob/master/CHANGELOG.md
+
* Wed Apr 29 2020 Andreas Schneider <asn@redhat.com> - 0.7.1-1
- Update to version 0.7.1
diff --git a/sources b/sources
index 9b38806..c3f8005 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libavif-0.7.1.tar.gz) = d6b2850797d37de3986bd1c1a366c8b35d1b1565db07ad7034cf4de88f17d2798d042b6fa61596b068161a645a9209070ac454dd5d9928cb6c08e5a58fe585ac
+SHA512 (libavif-0.7.2.tar.gz) = 543aae3dde2ed19a8d2d22425260d09f577fbddbd5bc293cc9ec97e427f3854e7a957b4975130b1129a0c73847398ce88ab22de48bec500b83bc56fde671e6b7
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-14 21:39 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-14 21:39 [rpms/libavif] epel9-next: Update to version 0.7.2 Andreas Schneider
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox