Rebuild with svt-av1 4.0.1
This commit is contained in:
@@ -1,9 +1,11 @@
|
|||||||
name: libheif
|
name: libheif
|
||||||
description: HEIF and AVIF file format decoder and encoder
|
description: HEIF and AVIF file format decoder and encoder
|
||||||
version: 1.21.2
|
version: 1.21.2
|
||||||
revision: 1
|
revision: 2
|
||||||
url: https://github.com/strukturag/libheif
|
url: https://github.com/strukturag/libheif
|
||||||
license: LGPL3-or-later
|
license: LGPL3-or-later
|
||||||
|
maintainers:
|
||||||
|
- [email protected]
|
||||||
architecture: any
|
architecture: any
|
||||||
type: source
|
type: source
|
||||||
depends:
|
depends:
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
From 61923302d12f80e2a5c945a3903d1009cf67778f Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= <[email protected]>
|
||||||
|
Date: Sat, 24 Jan 2026 17:30:35 +0100
|
||||||
|
Subject: [PATCH 1/2] Set SVT-AV1's avif option for v4.0.0 or later
|
||||||
|
|
||||||
|
---
|
||||||
|
libheif/plugins/encoder_svt.cc | 7 ++++---
|
||||||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libheif/plugins/encoder_svt.cc b/libheif/plugins/encoder_svt.cc
|
||||||
|
index 03d87ca1ae..7993e3959a 100644
|
||||||
|
--- a/libheif/plugins/encoder_svt.cc
|
||||||
|
+++ b/libheif/plugins/encoder_svt.cc
|
||||||
|
@@ -858,9 +858,10 @@ static heif_error svt_start_sequence_encoding_intern(void* encoder_raw, const he
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- // TODO: enable when https://gitlab.com/AOMediaCodec/SVT-AV1/-/issues/2245 is resolved
|
||||||
|
- // svt_config.avif = true;
|
||||||
|
- // encoder->still_image_mode = true;
|
||||||
|
+#if SVT_AV1_CHECK_VERSION(4, 0, 0)
|
||||||
|
+ svt_config.avif = true;
|
||||||
|
+ encoder->still_image_mode = true;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
if (color_format == EB_YUV422 || bitdepth_y > 10) {
|
||||||
|
|
||||||
|
From f9919e34868920000ddba13c55e1bf3731b1e64b Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= <[email protected]>
|
||||||
|
Date: Sat, 24 Jan 2026 18:18:46 +0100
|
||||||
|
Subject: [PATCH 2/2] Use PredStructure values from definitions.h instead of
|
||||||
|
removed SvtAv1PredStructure for v4.0.0 or later
|
||||||
|
|
||||||
|
---
|
||||||
|
libheif/plugins/encoder_svt.cc | 17 +++++++++++++++--
|
||||||
|
1 file changed, 15 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libheif/plugins/encoder_svt.cc b/libheif/plugins/encoder_svt.cc
|
||||||
|
index 7993e3959a..393748e997 100644
|
||||||
|
--- a/libheif/plugins/encoder_svt.cc
|
||||||
|
+++ b/libheif/plugins/encoder_svt.cc
|
||||||
|
@@ -838,8 +838,20 @@ static heif_error svt_start_sequence_encoding_intern(void* encoder_raw, const he
|
||||||
|
// svt_config.force_key_frames = true; TODO: this does not seem to work (see all [1])
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
+#if SVT_AV1_CHECK_VERSION(4, 0, 0)
|
||||||
|
+ switch (options->gop_structure) {
|
||||||
|
+ case heif_sequence_gop_structure_intra_only:
|
||||||
|
+ //svt_config.pred_structure = 1; // LOW_DELAY
|
||||||
|
+ break;
|
||||||
|
+ case heif_sequence_gop_structure_lowdelay:
|
||||||
|
+ //svt_config.pred_structure = 1; // LOW_DELAY
|
||||||
|
+ break;
|
||||||
|
+ case heif_sequence_gop_structure_unrestricted:
|
||||||
|
+ svt_config.pred_structure = 2; // RANDOM_ACCESS
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+#else
|
||||||
|
// TODO: setting pref_structure to SVT_AV1_PRED_LOW_DELAY_B hangs the encoder
|
||||||
|
-
|
||||||
|
switch (options->gop_structure) {
|
||||||
|
case heif_sequence_gop_structure_intra_only:
|
||||||
|
//svt_config.pred_structure = SvtAv1PredStructure::SVT_AV1_PRED_LOW_DELAY_B;
|
||||||
|
@@ -851,6 +863,7 @@ static heif_error svt_start_sequence_encoding_intern(void* encoder_raw, const he
|
||||||
|
svt_config.pred_structure = SvtAv1PredStructure::SVT_AV1_PRED_RANDOM_ACCESS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (options->keyframe_distance_max) {
|
||||||
|
svt_config.intra_period_length = options->keyframe_distance_max; // TODO -1 ?
|
||||||
|
@@ -921,7 +934,7 @@ static heif_error read_encoder_output_packets(void* encoder_raw, bool done_sendi
|
||||||
|
|
||||||
|
/* TODO: this is a hack
|
||||||
|
* When using
|
||||||
|
- * svt_config.pred_structure = SvtAv1PredStructure::SVT_AV1_PRED_LOW_DELAY_B;
|
||||||
|
+ * svt_config.pred_structure = 1; // LOW_DELAY
|
||||||
|
* svt_av1_enc_get_packet() hangs on the second call. As a workaround, we can leave the
|
||||||
|
* loop when we got the image:
|
||||||
|
*/
|
||||||
@@ -2,6 +2,13 @@
|
|||||||
# BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE
|
# BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE
|
||||||
# BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT
|
# BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT
|
||||||
|
|
||||||
|
# The prepare function is executed in the root of the temp directory
|
||||||
|
# This function is used for putting downloaded files to the correct location or applying patches
|
||||||
|
prepare() {
|
||||||
|
cd "$BPM_SOURCE"
|
||||||
|
patch -Np1 -i "$BPM_WORKDIR"/svt-av1-4.0-fix.patch
|
||||||
|
}
|
||||||
|
|
||||||
# The build function is executed in the source directory
|
# The build function is executed in the source directory
|
||||||
# This function is used to compile the source code
|
# This function is used to compile the source code
|
||||||
build() {
|
build() {
|
||||||
|
|||||||
Reference in New Issue
Block a user