This commit is contained in:
Christoph Reiter
2025-03-04 09:19:26 +01:00
parent d23550c371
commit ef3107dcdf
8 changed files with 233 additions and 13 deletions

View File

@@ -7,7 +7,7 @@ _realname=ffmpeg
pkgbase="mingw-w64-${_realname}"
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=7.1.1
pkgrel=1
pkgrel=2
pkgdesc="Complete solution to record, convert and stream audio and video (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')
@@ -78,13 +78,15 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
source=(https://ffmpeg.org/releases/${_realname}-${pkgver}.tar.xz{,.asc}
"pathtools.c"
"pathtools.h"
"0005-Win32-Add-path-relocation-to-frei0r-plugins-search.patch")
"0005-Win32-Add-path-relocation-to-frei0r-plugins-search.patch"
"https://github.com/FFmpeg/FFmpeg/commit/d1ed5c06e3edc5f2b5f3664c80121fa55b0baa95.patch")
validpgpkeys=('FCF986EA15E6E293A5644F10B4322F04D67658D8')
sha256sums=('733984395e0dbbe5c046abda2dc49a5544e7e0e1e2366bba849222ae9e3a03b1'
'SKIP'
'ebf471173f5ee9c4416c10a78760cea8afaf1a4a6e653977321e8547ce7bf3c0'
'1585ef1b61cf53a2ca27049c11d49e0834683dfda798f03547761375df482a90'
'8c74e9b5800dbb41c33a60114712726ec768ad6de8f147c2eb30656fd4c899cc')
'8c74e9b5800dbb41c33a60114712726ec768ad6de8f147c2eb30656fd4c899cc'
'50af862d25bbeddd0d2e3eff7ebe25899651ee24cc23ed6f785180b5523d246e')
# Helper macros to help make tasks easier #
apply_patch_with_msg() {
@@ -106,6 +108,10 @@ prepare() {
apply_patch_with_msg \
0005-Win32-Add-path-relocation-to-frei0r-plugins-search.patch
# svt-av1 3.0 support
apply_patch_with_msg \
d1ed5c06e3edc5f2b5f3664c80121fa55b0baa95.patch
}
build() {

View File

@@ -7,7 +7,7 @@ _realname=ffmpeg
pkgbase="mingw-w64-${_realname}4.4"
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}4.4"
pkgver=4.4.5
pkgrel=4
pkgrel=5
pkgdesc="Complete solution to record, convert and stream audio and video (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
@@ -77,7 +77,8 @@ source=(https://ffmpeg.org/releases/${_realname}-${pkgver}.tar.xz{,.asc}
"0003-fix-clang32-build.patch"
https://github.com/FFmpeg/FFmpeg/commit/f9620d74cd49c35223304ba41e28be6144e45783.patch
https://github.com/FFmpeg/FFmpeg/commit/03823ac0c6a38bd6ba972539e3203a592579792f.patch
https://github.com/FFmpeg/FFmpeg/commit/d2b46c1ef768bc31ba9180f6d469d5b8be677500.patch)
https://github.com/FFmpeg/FFmpeg/commit/d2b46c1ef768bc31ba9180f6d469d5b8be677500.patch
https://github.com/FFmpeg/FFmpeg/commit/d1ed5c06e3edc5f2b5f3664c80121fa55b0baa95.patch)
validpgpkeys=('FCF986EA15E6E293A5644F10B4322F04D67658D8')
sha256sums=('f9514e0d3515aee5a271283df71636e1d1ff7274b15853bcd84e144be416ab07'
'SKIP'
@@ -87,7 +88,8 @@ sha256sums=('f9514e0d3515aee5a271283df71636e1d1ff7274b15853bcd84e144be416ab07'
'06481611d3449e2cc4f4759d2e0ad5b1ce2c4f313d0b63d4cb0a51d9fe02a424'
'17df7ec458c7c04f365b3a00328abb3a7cf7f9a7ba9cecf0e492be116d7e6277'
'2d90ce59ca85ef42e02b0e707080a6b1447783c035f48a7103d71c4d691a4dcf'
'24cbefad7b2ce3b813ef36a36b984e631c579d43b4107baf5d198fb9da23412b')
'24cbefad7b2ce3b813ef36a36b984e631c579d43b4107baf5d198fb9da23412b'
'50af862d25bbeddd0d2e3eff7ebe25899651ee24cc23ed6f785180b5523d246e')
# Helper macros to help make tasks easier #
apply_patch_with_msg() {
@@ -109,6 +111,10 @@ prepare() {
03823ac0c6a38bd6ba972539e3203a592579792f.patch \
d2b46c1ef768bc31ba9180f6d469d5b8be677500.patch \
f9620d74cd49c35223304ba41e28be6144e45783.patch
# svt-av1 3.0 support
apply_patch_with_msg \
d1ed5c06e3edc5f2b5f3664c80121fa55b0baa95.patch
}
build() {

View File

@@ -0,0 +1,156 @@
diff --git a/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c b/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c
index 2ea84982fad2..65e940d43d98 100644
--- a/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c
+++ b/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c
@@ -75,7 +75,11 @@ typedef struct _GstSvtAv1Enc
guint maximum_buffer_size;
gint intra_period_length;
gint intra_refresh_type;
+#if SVT_AV1_CHECK_VERSION(3, 0, 0)
+ gint level_of_parallelism;
+#else
gint logical_processors;
+#endif
gint target_socket;
gchar *parameters_string;
@@ -127,9 +131,10 @@ enum
PROP_MAXIMUM_BUFFER_SIZE,
PROP_INTRA_PERIOD_LENGTH,
PROP_INTRA_REFRESH_TYPE,
- PROP_LOGICAL_PROCESSORS,
+ PROP_LOGICAL_PROCESSORS, /// DEPRECATED: should be removed once the minimum version is 3.0.0
PROP_TARGET_SOCKET,
PROP_PARAMETERS_STRING,
+ PROP_LEVEL_OF_PARALLELISM,
};
#define PROP_PRESET_DEFAULT 10
@@ -142,7 +147,8 @@ enum
#define PROP_MAXIMUM_BUFFER_SIZE_DEFAULT 1000
#define PROP_INTRA_PERIOD_LENGTH_DEFAULT -2
#define PROP_INTRA_REFRESH_TYPE_DEFAULT SVT_AV1_KF_REFRESH
-#define PROP_LOGICAL_PROCESSORS_DEFAULT 0
+#define PROP_LEVEL_OF_PARALLELISM_DEFAULT 0
+#define PROP_LOGICAL_PROCESSORS_DEFAULT 0 /// DEPRECATED: should be removed once the minimum version is 3.0.0
#define PROP_TARGET_SOCKET_DEFAULT -1
#define PROP_PARAMETERS_STRING_DEFAULT NULL
@@ -307,15 +313,30 @@ gst_svtav1enc_class_init (GstSvtAv1EncClass * klass)
PROP_INTRA_REFRESH_TYPE_DEFAULT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#if SVT_AV1_CHECK_VERSION(3, 0, 0)
+ g_object_class_install_property (gobject_class,
+ PROP_LEVEL_OF_PARALLELISM,
+ g_param_spec_uint ("level-of-parallelism",
+ "Level of Parallelism",
+ "Controls the number of threads and buffers to allocate. 0: auto",
+ 0,
+ 6,
+ PROP_LEVEL_OF_PARALLELISM_DEFAULT,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#endif
+
g_object_class_install_property (gobject_class,
PROP_LOGICAL_PROCESSORS,
- g_param_spec_uint ("logical-processors",
- "Logical Processors",
- "Number of logical CPU cores to be used. 0: auto",
+ g_param_spec_uint ("logical-processors", "Logical Processors",
+#if SVT_AV1_CHECK_VERSION(3, 0, 0)
+ "Deprecated. Use level-of-parallelism instead. 0: auto",
+#else
+ "Number of logical CPU cores to be used. Deprecated and replaced with level-of-parallelism in SVT-AV1 3.0.0. 0: auto",
+#endif
0,
G_MAXUINT,
PROP_LOGICAL_PROCESSORS_DEFAULT,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_DEPRECATED));
g_object_class_install_property (gobject_class,
PROP_TARGET_SOCKET,
@@ -352,7 +373,11 @@ gst_svtav1enc_init (GstSvtAv1Enc * svtav1enc)
svtav1enc->maximum_buffer_size = PROP_MAXIMUM_BUFFER_SIZE_DEFAULT;
svtav1enc->intra_period_length = PROP_INTRA_PERIOD_LENGTH_DEFAULT;
svtav1enc->intra_refresh_type = PROP_INTRA_REFRESH_TYPE_DEFAULT;
+#if SVT_AV1_CHECK_VERSION(3, 0, 0)
+ svtav1enc->level_of_parallelism = PROP_LEVEL_OF_PARALLELISM_DEFAULT;
+#else
svtav1enc->logical_processors = PROP_LOGICAL_PROCESSORS_DEFAULT;
+#endif
svtav1enc->target_socket = PROP_TARGET_SOCKET_DEFAULT;
svtav1enc->parameters_string = PROP_PARAMETERS_STRING_DEFAULT;
}
@@ -403,8 +428,15 @@ gst_svtav1enc_set_property (GObject * object, guint property_id,
case PROP_INTRA_REFRESH_TYPE:
svtav1enc->intra_refresh_type = g_value_get_enum (value);
break;
+ case PROP_LEVEL_OF_PARALLELISM:
+#if SVT_AV1_CHECK_VERSION(3, 0, 0)
+ svtav1enc->level_of_parallelism = g_value_get_int (value);
+#endif
+ break;
case PROP_LOGICAL_PROCESSORS:
+#if !SVT_AV1_CHECK_VERSION(3, 0, 0)
svtav1enc->logical_processors = g_value_get_uint (value);
+#endif
break;
case PROP_TARGET_SOCKET:
svtav1enc->target_socket = g_value_get_int (value);
@@ -459,8 +491,13 @@ gst_svtav1enc_get_property (GObject * object, guint property_id, GValue * value,
case PROP_INTRA_REFRESH_TYPE:
g_value_set_enum (value, svtav1enc->intra_refresh_type);
break;
+ case PROP_LEVEL_OF_PARALLELISM:
case PROP_LOGICAL_PROCESSORS:
+#if SVT_AV1_CHECK_VERSION(3, 0, 0)
+ g_value_set_int (value, svtav1enc->level_of_parallelism);
+#else
g_value_set_uint (value, svtav1enc->logical_processors);
+#endif
break;
case PROP_TARGET_SOCKET:
g_value_set_int (value, svtav1enc->target_socket);
@@ -556,7 +593,11 @@ gst_svtav1enc_configure_svt (GstSvtAv1Enc * svtav1enc)
}
svtav1enc->svt_config->intra_period_length = svtav1enc->intra_period_length;
svtav1enc->svt_config->intra_refresh_type = svtav1enc->intra_refresh_type;
+#if SVT_AV1_CHECK_VERSION(3, 0, 0)
+ svtav1enc->svt_config->level_of_parallelism = svtav1enc->level_of_parallelism;
+#else
svtav1enc->svt_config->logical_processors = svtav1enc->logical_processors;
+#endif
svtav1enc->svt_config->target_socket = svtav1enc->target_socket;
gst_svtav1enc_parse_parameters_string (svtav1enc);
@@ -725,11 +766,9 @@ gst_svtav1enc_configure_svt (GstSvtAv1Enc * svtav1enc)
master_display_info.max_display_mastering_luminance;
svtav1enc->svt_config->mastering_display.min_luma =
master_display_info.min_display_mastering_luminance;
- svtav1enc->svt_config->high_dynamic_range_input = TRUE;
} else {
memset (&svtav1enc->svt_config->mastering_display,
0, sizeof (svtav1enc->svt_config->mastering_display));
- svtav1enc->svt_config->high_dynamic_range_input = FALSE;
}
GstVideoContentLightLevel content_light_level;
@@ -938,8 +977,13 @@ gst_svtav1enc_open (GstVideoEncoder * encoder)
GST_DEBUG_OBJECT (svtav1enc, "open");
+#if SVT_AV1_CHECK_VERSION(3, 0, 0)
+ EbErrorType res = svt_av1_enc_init_handle (&svtav1enc->svt_encoder,
+ svtav1enc->svt_config);
+#else
EbErrorType res = svt_av1_enc_init_handle (&svtav1enc->svt_encoder, NULL,
svtav1enc->svt_config);
+#endif
if (res != EB_ErrorNone) {
GST_ELEMENT_ERROR (svtav1enc,
LIBRARY,
--
GitLab

View File

@@ -8,7 +8,7 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-gst-plugins-bad-libs"
"${MINGW_PACKAGE_PREFIX}-gst-plugins-bad"
"${MINGW_PACKAGE_PREFIX}-gst-plugin-opencv")
pkgver=1.24.12
pkgrel=1
pkgrel=2
pkgdesc="GStreamer Multimedia Framework Bad Plugins (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
@@ -86,13 +86,15 @@ source=("${url}/src/${_realname}/${_realname}-${pkgver}.tar.xz"{,.asc}
"0001-meson-fix-vulkan.patch"
"0002-fix-vulkan-mkenum.patch"
"0003-enable-mediafoundation-plugin.patch"
"0004-check-d3d11-header.patch")
"0004-check-d3d11-header.patch"
"0005-svt-av1-3.0.0.patch")
sha256sums=('3d386af3d1dbd1a06c74a6251250c269b481e703f0e3255ba89ef6c1e063afea'
'SKIP'
'000907bb77b31bd5717297aaa9f7ab7d01a0c9a0e7966fd05f077e786b8e652f'
'5ca55fdfc4c5d10d2319f83dddac8130c2ffab67b1248d2233cdcb188d5a0fd3'
'5cf2daa1b967112139e780a256957642cd005c25b1572e892d03021d1dec60ef'
'547248d0ea092dee103c452f5d12fc0302237244b3184d00bcb3afdac2476470')
'547248d0ea092dee103c452f5d12fc0302237244b3184d00bcb3afdac2476470'
'19ea78c3acc8a1d53858f6b51388cb1367510462ab56ea518122826eed189b66')
validpgpkeys=('D637032E45B8C6585B9456565D2EEE6F6F349D7C') # Tim Müller <tim@gstreamer-foundation.org>
apply_patch_with_msg() {
@@ -116,6 +118,9 @@ prepare() {
apply_patch_with_msg \
0004-check-d3d11-header.patch
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8539
patch -Nbp3 -i "${srcdir}/0005-svt-av1-3.0.0.patch"
}
build() {

View File

@@ -0,0 +1,41 @@
From 75f9c84c140c8841cfe1324ef59452025899ad8b Mon Sep 17 00:00:00 2001
From: Damiano Galassi <damiog@gmail.com>
Date: Fri, 21 Feb 2025 12:05:14 +0100
Subject: [PATCH] contrib: update SVT-AV1 to 3.0.0
---
contrib/svt-av1/A02-memory-leak-fix.patch | 10 ++++++++++
contrib/svt-av1/module.defs | 6 +++---
libhb/encsvtav1.c | 2 +-
3 files changed, 14 insertions(+), 4 deletions(-)
create mode 100644 contrib/svt-av1/A02-memory-leak-fix.patch
diff --git a/contrib/svt-av1/A02-memory-leak-fix.patch b/contrib/svt-av1/A02-memory-leak-fix.patch
new file mode 100644
index 000000000000..2615b1e75c31
--- /dev/null
+++ b/contrib/svt-av1/A02-memory-leak-fix.patch
@@ -0,0 +1,10 @@
+diff --git a/Source/Lib/Codec/global_me.c b/Source/Lib/Codec/global_me.c
+index f6adbf59..53002238 100644
+--- a/Source/Lib/Codec/global_me.c
++++ b/Source/Lib/Codec/global_me.c
+@@ -454,4 +454,5 @@ void compute_global_motion(PictureParentControlSet *pcs, int *frm_corners, int n
+ *best_wm = global_motion;
+
+ for (int m = 0; m < RANSAC_NUM_MOTIONS; m++) { free(params_by_motion[m].inliers); }
++ free(correspondences);
+ }
diff --git a/libhb/encsvtav1.c b/libhb/encsvtav1.c
index 2f16984d5139..54f52a117465 100644
--- a/libhb/encsvtav1.c
+++ b/libhb/encsvtav1.c
@@ -99,7 +99,7 @@ int encsvtInit(hb_work_object_t *w, hb_job_t *job)
EbErrorType svt_ret;
int ret;
- svt_ret = svt_av1_enc_init_handle(&pv->svt_handle, pv, &pv->enc_params);
+ svt_ret = svt_av1_enc_init_handle(&pv->svt_handle, &pv->enc_params);
if (svt_ret != EB_ErrorNone)
{
hb_error("encsvtav1: error initializing encoder handle");

View File

@@ -4,7 +4,7 @@ _realname=handbrake
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=1.9.2
pkgrel=1
pkgrel=2
pkgdesc="The open source video transcoder (mingw-w64)"
arch=('any')
mingw_arch=('ucrt64' 'clang64')
@@ -39,13 +39,15 @@ source=(
"https://github.com/HandBrake/HandBrake/commit/09e99ce641c840686b1b5f860263e89ad7d6651d.patch"
"0001-handbrake-workaround-build-system.patch"
"0003-Remove-ambient-viewing-support.patch"
"0004-fix-svt-av1-3-build.patch"
)
sha256sums=('f56696b9863a6c926c0eabdcb980cece9aa222c650278d455ac6873d3220ce49'
'SKIP'
'010910a0c287d7a93ba9d13c52e1c671a64b65915f6b232c37b695e44ef02eb5'
'f1da71bb593a5ad18893c60a3e07d059d34245351fb7957472b2e749fc6f939d'
'3a240bc164143706c025dd8809f969352e0dbd0226611ee9a97c05eb772a9d75'
'5245ef3310df3326a28f0da40e78d8bfd6cd83f790600e3557acc99b1de6ac32')
'5245ef3310df3326a28f0da40e78d8bfd6cd83f790600e3557acc99b1de6ac32'
'f420fb4de585ccb461eb0fdae3572c5c3d8b80a8a3b1dde822aa81e9754a6189')
validpgpkeys=('1629C061B3DDE7EB4AE34B81021DB8B44E4A8645') # HandBrake Team <developers@handbrake.fr>
_apply_patch_with_msg() {
@@ -67,6 +69,10 @@ prepare() {
patch -R -p1 -i "${srcdir}/6f2cd466ef0e029d9e5a51ac8640c3ab64e212f6.patch"
patch -R -p1 -i "${srcdir}/09e99ce641c840686b1b5f860263e89ad7d6651d.patch"
# update SVT-AV1 to 3.0.0
# https://github.com/HandBrake/HandBrake/commit/75f9c84c140c8841cfe1324ef59452025899ad8b
patch -p1 -i "${srcdir}/0004-fix-svt-av1-3-build.patch"
# Put all the magic here
_apply_patch_with_msg 0001-handbrake-workaround-build-system.patch

View File

@@ -4,7 +4,7 @@ _realname=libavif
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=1.2.0
pkgrel=1
pkgrel=2
pkgdesc="Library for encoding and decoding .avif files (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')

View File

@@ -4,7 +4,7 @@ _realname=libheif
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=1.19.7
pkgrel=1
pkgrel=2
pkgdesc="HEIF image decoder/encoder library and tools (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')