Compare commits

..
6 Commits
Author SHA1 Message Date
EnumDev 3dca11669c Rebuild with ffmpeg 9.0.1 2026-08-30 14:28:17 +03:00
EnumDev 4b4cf48a36 Update package version to 1.23.1 2026-07-08 13:33:29 +03:00
EnumDev 394968c788 Switch to new package format 2026-06-13 19:59:49 +03:00
EnumDev c9e8dc97d4 Update package version to 1.23.0 2026-06-01 14:42:33 +03:00
EnumDev f18895dec4 Rebuild with x265 4.2 and svt-av1 4.1 2026-04-26 12:20:31 +03:00
EnumDev 3e85ce69f0 Update .gitignore 2026-02-24 12:45:08 +02:00
4 changed files with 7 additions and 94 deletions
+3 -2
View File
@@ -1,2 +1,3 @@
# Exclude bpm archives
*.bpm
# Ignore BPM archives and signatures
*.bpm
*.bpm.sig
+3 -3
View File
@@ -1,7 +1,7 @@
name: libheif
description: HEIF and AVIF file format decoder and encoder
version: 1.21.2
revision: 3
version: 1.23.1
revision: 2
url: https://github.com/strukturag/libheif
license: LGPL3-or-later
maintainers:
@@ -38,4 +38,4 @@ downloads:
- url: https://github.com/strukturag/libheif/archive/refs/tags/v${BPM_PKG_VERSION}.tar.gz
extract_to: ${BPM_SOURCE}
extract_strip_components: 1
checksum: 79996de959d28ca82ef070c382304683f5cdaf04cbe2953a74587160a3710a36
checksum: 0b14d6bdf5680488e3aede354b1e11be1444b3fc4a30fcf2ae06bd6b601466be
+1 -8
View File
@@ -1,14 +1,7 @@
# This is the source.sh script. It is executed by BPM in a temporary directory when compiling a source package
# This is the recipe.sh script. It is executed by BPM in a temporary directory when compiling a source package
# 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
# 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
# This function is used to compile the source code
build() {
-81
View File
@@ -1,81 +0,0 @@
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:
*/