[packages/ffmpeg] - added fix for x265 >= 210, enable x265 also on x32; release 1.2
qboosh
qboosh at pld-linux.org
Sun Sep 15 08:30:20 CEST 2024
commit b5ff82117803867777801952ed8e2c357a339a01
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Sun Sep 15 08:33:09 2024 +0200
- added fix for x265 >= 210, enable x265 also on x32; release 1.2
ffmpeg-x265-210.patch | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++
ffmpeg.spec | 6 ++--
2 files changed, 103 insertions(+), 2 deletions(-)
---
diff --git a/ffmpeg.spec b/ffmpeg.spec
index 26aa3a1..b3cd0f0 100644
--- a/ffmpeg.spec
+++ b/ffmpeg.spec
@@ -119,7 +119,7 @@
%ifnarch %{ix86} %{x8664} aarch64
%undefine with_rav1e
%endif
-%ifnarch %{ix86} %{x8664} %{arm} aarch64
+%ifnarch %{ix86} %{x8664} x32 %{arm} aarch64
%undefine with_x265
%endif
%ifarch i386 i486
@@ -133,7 +133,7 @@ Summary(pl.UTF-8): FFmpeg - szybki konwerter audio/wideo
Name: ffmpeg
# NOTE: 7.0 prepared on DEVEL-7 branch, but other software is not ready (e.g. xine-lib 1.2.13, gstreamer-libav 1.24.2)
Version: 6.1.2
-Release: 1.1
+Release: 1.2
# LGPL or GPL, chosen at configure time (GPL version is more featured)
# GPL: frei0r libcdio libdavs2 rubberband vidstab x264 x265 xavs xavs2 xvid
# v3 (allows *GPLv3 or Apache-licensed libs): gmp lensfun opencore-amr vmaf vo-*enc rkmpp
@@ -148,6 +148,7 @@ Patch2: opencv4.patch
Patch3: v4l2-request-hwdec.patch
Patch4: ffmpeg-vulkan1.3.280.patch
Patch5: gcc14.patch
+Patch6: %{name}-x265-210.patch
URL: https://ffmpeg.org/
%{?with_avisynth:BuildRequires: AviSynthPlus-devel >= 3.7.3}
%{?with_decklink:BuildRequires: Blackmagic_DeckLink_SDK >= 10.11}
@@ -576,6 +577,7 @@ Dokumentacja pakietu FFmpeg w formacie HTML.
%endif
%patch4 -p1
%patch5 -p1
+%patch6 -p1
# package the grep result for mplayer, the result formatted as ./mplayer/configure
cat <<EOF > ffmpeg-avconfig
diff --git a/ffmpeg-x265-210.patch b/ffmpeg-x265-210.patch
new file mode 100644
index 0000000..94a6947
--- /dev/null
+++ b/ffmpeg-x265-210.patch
@@ -0,0 +1,99 @@
+From f749aaf108696fcfc2be6a9f6c1059415474caf3 Mon Sep 17 00:00:00 2001
+From: Gyan Doshi <ffmpeg at gyani.pro>
+Date: Sun, 11 Aug 2024 12:51:50 +0530
+Subject: [PATCH] lavc/libx265: unbreak build for X265_BUILD >= 210
+
+x265 added support for alpha starting with build 210.
+While doing so, x265_encoder_encode() changed its fifth arg to
+an array of pointers to x265_picture. This broke building lavc/libx265.c
+
+This patch simply unbreaks the build and maintains existing single-layer
+non-alpha encoding support.
+
+Fixes #11130
+---
+ libavcodec/libx265.c | 40 ++++++++++++++++++++++++++++++----------
+ 1 file changed, 30 insertions(+), 10 deletions(-)
+
+diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c
+index 447e6da25f..29fc26eab4 100644
+--- a/libavcodec/libx265.c
++++ b/libavcodec/libx265.c
+@@ -581,7 +581,13 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
+ {
+ libx265Context *ctx = avctx->priv_data;
+ x265_picture x265pic;
+- x265_picture x265pic_out = { 0 };
++#if X265_BUILD >= 210
++ x265_picture x265pic_layers_out[MAX_SCALABLE_LAYERS];
++ x265_picture* x265pic_lyrptr_out[MAX_SCALABLE_LAYERS];
++#else
++ x265_picture x265pic_solo_out = { 0 };
++#endif
++ x265_picture* x265pic_out;
+ x265_nal *nal;
+ x265_sei *sei;
+ uint8_t *dst;
+@@ -704,8 +710,16 @@ FF_ENABLE_DEPRECATION_WARNINGS
+ }
+ }
+
++#if X265_BUILD >= 210
++ for (i = 0; i < MAX_SCALABLE_LAYERS; i++)
++ x265pic_lyrptr_out[i] = &x265pic_layers_out[i];
++
++ ret = ctx->api->encoder_encode(ctx->encoder, &nal, &nnal,
++ pic ? &x265pic : NULL, x265pic_lyrptr_out);
++#else
+ ret = ctx->api->encoder_encode(ctx->encoder, &nal, &nnal,
+- pic ? &x265pic : NULL, &x265pic_out);
++ pic ? &x265pic : NULL, &x265pic_solo_out);
++#endif
+
+ for (i = 0; i < sei->numPayloads; i++)
+ av_free(sei->payloads[i].payload);
+@@ -735,10 +749,16 @@ FF_ENABLE_DEPRECATION_WARNINGS
+ pkt->flags |= AV_PKT_FLAG_KEY;
+ }
+
+- pkt->pts = x265pic_out.pts;
+- pkt->dts = x265pic_out.dts;
++#if X265_BUILD >= 210
++ x265pic_out = x265pic_lyrptr_out[0];
++#else
++ x265pic_out = &x265pic_solo_out;
++#endif
++
++ pkt->pts = x265pic_out->pts;
++ pkt->dts = x265pic_out->dts;
+
+- switch (x265pic_out.sliceType) {
++ switch (x265pic_out->sliceType) {
+ case X265_TYPE_IDR:
+ case X265_TYPE_I:
+ pict_type = AV_PICTURE_TYPE_I;
+@@ -756,16 +776,16 @@ FF_ENABLE_DEPRECATION_WARNINGS
+ }
+
+ #if X265_BUILD >= 130
+- if (x265pic_out.sliceType == X265_TYPE_B)
++ if (x265pic_out->sliceType == X265_TYPE_B)
+ #else
+- if (x265pic_out.frameData.sliceType == 'b')
++ if (x265pic_out->frameData.sliceType == 'b')
+ #endif
+ pkt->flags |= AV_PKT_FLAG_DISPOSABLE;
+
+- ff_side_data_set_encoder_stats(pkt, x265pic_out.frameData.qp * FF_QP2LAMBDA, NULL, 0, pict_type);
++ ff_side_data_set_encoder_stats(pkt, x265pic_out->frameData.qp * FF_QP2LAMBDA, NULL, 0, pict_type);
+
+- if (x265pic_out.userData) {
+- int idx = (int)(intptr_t)x265pic_out.userData - 1;
++ if (x265pic_out->userData) {
++ int idx = (int)(intptr_t)x265pic_out->userData - 1;
+ ReorderedData *rd = &ctx->rd[idx];
+
+ #if FF_API_REORDERED_OPAQUE
+--
+2.25.1
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ffmpeg.git/commitdiff/b5ff82117803867777801952ed8e2c357a339a01
More information about the pld-cvs-commit
mailing list