From cb4ac0fe3ace91661a9970e33af05054e7ce002b Mon Sep 17 00:00:00 2001 From: Rudi Heitbaum Date: Fri, 31 Jan 2025 10:39:26 +0000 Subject: [PATCH] ffmpegx: update to 7.1 --- .../addons/addon-depends/ffmpegx/package.mk | 4 +- ...lpdsp_armv5te-fix-label-format-to-wo.patch | 52 ---------- ...--unbreak-build-for-X265-BUILD---210.patch | 96 ------------------- 3 files changed, 2 insertions(+), 150 deletions(-) delete mode 100644 packages/addons/addon-depends/ffmpegx/patches/ffmpeg-002-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch delete mode 100644 packages/addons/addon-depends/ffmpegx/patches/ffmpeg-03-lavc-libx265--unbreak-build-for-X265-BUILD---210.patch diff --git a/packages/addons/addon-depends/ffmpegx/package.mk b/packages/addons/addon-depends/ffmpegx/package.mk index 0215a9fa43..878208be57 100644 --- a/packages/addons/addon-depends/ffmpegx/package.mk +++ b/packages/addons/addon-depends/ffmpegx/package.mk @@ -2,8 +2,8 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="ffmpegx" -PKG_VERSION="7.0" -PKG_SHA256="4426a94dd2c814945456600c8adfc402bee65ec14a70e8c531ec9a2cd651da7b" +PKG_VERSION="7.1" +PKG_SHA256="40973d44970dbc83ef302b0609f2e74982be2d85916dd2ee7472d30678a7abe6" PKG_LICENSE="GPL-3.0-only" PKG_SITE="https://ffmpeg.org" PKG_URL="https://ffmpeg.org/releases/ffmpeg-${PKG_VERSION}.tar.xz" diff --git a/packages/addons/addon-depends/ffmpegx/patches/ffmpeg-002-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch b/packages/addons/addon-depends/ffmpegx/patches/ffmpeg-002-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch deleted file mode 100644 index 2551eb17d7..0000000000 --- a/packages/addons/addon-depends/ffmpegx/patches/ffmpeg-002-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 0b541aa54b9573d8eef7401a0cc58c422fe60a9a Mon Sep 17 00:00:00 2001 -From: Ross Burton -Date: Thu, 8 Aug 2024 18:04:17 +0100 -Subject: [PATCH] libavcodec/arm/mlpdsp_armv5te: fix label format to work with - binutils 2.43 - -binutils 2.43 has stricter validation for labels[1] and results in errors -when building ffmpeg for armv5: - -src/libavcodec/arm/mlpdsp_armv5te.S:232: Error: junk at end of line, first unrecognized character is `0' - -Remove the leading zero in the "01" label to resolve this error. - -[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=226749d5a6ff0d5c607d6428d6c81e1e7e7a994b - -Upstream-Status: Submitted [https://ffmpeg.org//pipermail/ffmpeg-devel/2024-August/332149.html] -Signed-off-by: Ross Burton ---- - libavcodec/arm/mlpdsp_armv5te.S | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/libavcodec/arm/mlpdsp_armv5te.S b/libavcodec/arm/mlpdsp_armv5te.S -index 4f9aa48..d315686 100644 ---- a/libavcodec/arm/mlpdsp_armv5te.S -+++ b/libavcodec/arm/mlpdsp_armv5te.S -@@ -229,7 +229,7 @@ A .endif - .endif - - // Begin loop --01: -+1: - .if TOTAL_TAPS == 0 - // Things simplify a lot in this case - // In fact this could be pipelined further if it's worth it... -@@ -241,7 +241,7 @@ A .endif - str ST0, [PST, #-4]! - str ST0, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)] - str ST0, [PSAMP], #4 * MAX_CHANNELS -- bne 01b -+ bne 1b - .else - .if \fir_taps & 1 - .set LOAD_REG, 1 -@@ -333,7 +333,7 @@ T orr AC0, AC0, AC1 - str ST3, [PST, #-4]! - str ST2, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)] - str ST3, [PSAMP], #4 * MAX_CHANNELS -- bne 01b -+ bne 1b - .endif - b 99f - diff --git a/packages/addons/addon-depends/ffmpegx/patches/ffmpeg-03-lavc-libx265--unbreak-build-for-X265-BUILD---210.patch b/packages/addons/addon-depends/ffmpegx/patches/ffmpeg-03-lavc-libx265--unbreak-build-for-X265-BUILD---210.patch deleted file mode 100644 index 7911e522fd..0000000000 --- a/packages/addons/addon-depends/ffmpegx/patches/ffmpeg-03-lavc-libx265--unbreak-build-for-X265-BUILD---210.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 1f801dfdb5066aadf0ade9cb5e94d620f33eacdc Mon Sep 17 00:00:00 2001 -From: Gyan Doshi -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 0dc7ab6eeb6a3..3bc3b5a03e9fc 100644 ---- a/libavcodec/libx265.c -+++ b/libavcodec/libx265.c -@@ -661,7 +661,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; -@@ -798,8 +804,16 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt, - #endif - } - -+#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); -@@ -829,10 +843,16 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt, - 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; -@@ -850,16 +870,16 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt, - } - - #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]; - - pkt->duration = rd->duration;