diff --git a/.compat-ffmpeg4.metadata b/.compat-ffmpeg4.metadata index 4de3380..23786e5 100644 --- a/.compat-ffmpeg4.metadata +++ b/.compat-ffmpeg4.metadata @@ -1 +1,2 @@ -0a1b8ed0c2f923d69a6c4e4b4e015ffbd798a114 SOURCES/ffmpeg-4.4.4.tar.xz +1e863eff4a9830275298c2762645df3c1a7ef36b SOURCES/ffmpeg-4.4.5.tar.xz +b98d392acb4de914babe5297563227dc11a1f650 SOURCES/ffmpeg-4.4.5.tar.xz.asc diff --git a/.gitignore b/.gitignore index 2848ef0..2d27356 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -SOURCES/ffmpeg-4.4.4.tar.xz +SOURCES/ffmpeg-4.4.5.tar.xz +SOURCES/ffmpeg-4.4.5.tar.xz.asc diff --git a/SOURCES/configure-fix-nvenc-detection.patch b/SOURCES/configure-fix-nvenc-detection.patch new file mode 100644 index 0000000..a827225 --- /dev/null +++ b/SOURCES/configure-fix-nvenc-detection.patch @@ -0,0 +1,22 @@ +From 03823ac0c6a38bd6ba972539e3203a592579792f Mon Sep 17 00:00:00 2001 +From: Timo Rothenpieler +Date: Thu, 1 Jun 2023 23:24:43 +0200 +Subject: [PATCH] configure: use non-deprecated nvenc GUID for conftest + +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure b/configure +index 495493aa0e8a..ae56540f4eb0 100755 +--- a/configure ++++ b/configure +@@ -7079,7 +7079,7 @@ enabled nvenc && + test_cc -I$source_path < + NV_ENCODE_API_FUNCTION_LIST flist; +-void f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; } ++void f(void) { struct { const GUID guid; } s[] = { { NV_ENC_CODEC_H264_GUID } }; } + int main(void) { return 0; } + EOF + diff --git a/SOURCES/ffmpeg-4.4.4.tar.xz.asc b/SOURCES/ffmpeg-4.4.4.tar.xz.asc deleted file mode 100644 index 4f482f1..0000000 --- a/SOURCES/ffmpeg-4.4.4.tar.xz.asc +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQFMBAABCAA2FiEE/PmG6hXm4pOlZE8QtDIvBNZ2WNgFAmQ2/oUYHGZmbXBlZy1k -ZXZlbEBmZm1wZWcub3JnAAoJELQyLwTWdljYkGMH/iRlBGO1ZcCPnNpJt6pAqxcY -cP4hmanIPLLBPQfbHIwGUJDiTDIpXuFeWC7dt08Q8ndXtXbjTJ0T+hZP7Riuzns8 -bwXfrCRioKlmIZSUg9WMErNW+vE/nUFn20q4PdzaWbeUbIsZEW6Btt4C4JuBCLsn -K2WZa7/GwaMnLLPIUIaNzW//aeUj11IhY74qB3k5nOhidgptY1en7xa9x1kZ3dvW -wx2vO+2fS5SlvBfj2KFAey+FX2LAEZFjRaiWRnzlO5daqO4acWMtRAQeMk5rs21W -NeTZUqZoPaaNfcFz1yWsBv19Fte4R9D8oD4TwMd5ikZZ2hjV+N+EMEFNWLoH02Q= -=e6RR ------END PGP SIGNATURE----- diff --git a/SOURCES/nvenc-stop-using-deprecated-rc-modes.patch b/SOURCES/nvenc-stop-using-deprecated-rc-modes.patch new file mode 100644 index 0000000..7bf48f3 --- /dev/null +++ b/SOURCES/nvenc-stop-using-deprecated-rc-modes.patch @@ -0,0 +1,130 @@ +diff -uNrp a/libavcodec/nvenc.c b/libavcodec/nvenc.c +--- a/libavcodec/nvenc.c 2023-04-12 19:02:02.000000000 +0100 ++++ b/libavcodec/nvenc.c 2024-04-06 17:42:31.123436353 +0100 +@@ -39,9 +39,14 @@ + #define CHECK_CU(x) FF_CUDA_CHECK_DL(avctx, dl_fn->cuda_dl, x) + + #define NVENC_CAP 0x30 ++ ++#ifndef NVENC_NO_DEPRECATED_RC + #define IS_CBR(rc) (rc == NV_ENC_PARAMS_RC_CBR || \ + rc == NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ || \ + rc == NV_ENC_PARAMS_RC_CBR_HQ) ++#else ++#define IS_CBR(rc) (rc == NV_ENC_PARAMS_RC_CBR) ++#endif + + const enum AVPixelFormat ff_nvenc_pix_fmts[] = { + AV_PIX_FMT_YUV420P, +@@ -825,6 +830,7 @@ static void nvenc_override_rate_control( + case NV_ENC_PARAMS_RC_CONSTQP: + set_constqp(avctx); + return; ++#ifndef NVENC_NO_DEPRECATED_RC + case NV_ENC_PARAMS_RC_VBR_MINQP: + if (avctx->qmin < 0) { + av_log(avctx, AV_LOG_WARNING, +@@ -835,12 +841,15 @@ static void nvenc_override_rate_control( + } + /* fall through */ + case NV_ENC_PARAMS_RC_VBR_HQ: ++#endif + case NV_ENC_PARAMS_RC_VBR: + set_vbr(avctx); + break; + case NV_ENC_PARAMS_RC_CBR: ++#ifndef NVENC_NO_DEPRECATED_RC + case NV_ENC_PARAMS_RC_CBR_HQ: + case NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ: ++#endif + break; + } + +@@ -1074,12 +1083,14 @@ static av_cold int nvenc_setup_h264_conf + + h264->outputPictureTimingSEI = 1; + ++#ifndef NVENC_NO_DEPRECATED_RC + if (cc->rcParams.rateControlMode == NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ || + cc->rcParams.rateControlMode == NV_ENC_PARAMS_RC_CBR_HQ || + cc->rcParams.rateControlMode == NV_ENC_PARAMS_RC_VBR_HQ) { + h264->adaptiveTransformMode = NV_ENC_H264_ADAPTIVE_TRANSFORM_ENABLE; + h264->fmoMode = NV_ENC_H264_FMO_DISABLE; + } ++#endif + + if (ctx->flags & NVENC_LOSSLESS) { + h264->qpPrimeYZeroTransformBypassFlag = 1; +diff -uNrp a/libavcodec/nvenc.h b/libavcodec/nvenc.h +--- a/libavcodec/nvenc.h 2023-04-12 19:01:50.000000000 +0100 ++++ b/libavcodec/nvenc.h 2024-04-06 17:42:31.123436353 +0100 +@@ -70,6 +70,11 @@ typedef void ID3D11Device; + #define NVENC_HAVE_H264_LVL6 + #endif + ++// SDK 12.1 compile time feature checks ++#if NVENCAPI_CHECK_VERSION(12, 1) ++#define NVENC_NO_DEPRECATED_RC ++#endif ++ + typedef struct NvencSurface + { + NV_ENC_INPUT_PTR input_surface; +diff -uNrp a/libavcodec/nvenc_h264.c b/libavcodec/nvenc_h264.c +--- a/libavcodec/nvenc_h264.c 2023-04-12 19:01:50.000000000 +0100 ++++ b/libavcodec/nvenc_h264.c 2024-04-06 17:42:31.124436369 +0100 +@@ -100,6 +100,7 @@ static const AVOption options[] = { + { "constqp", "Constant QP mode", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_PARAMS_RC_CONSTQP }, 0, 0, VE, "rc" }, + { "vbr", "Variable bitrate mode", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_PARAMS_RC_VBR }, 0, 0, VE, "rc" }, + { "cbr", "Constant bitrate mode", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_PARAMS_RC_CBR }, 0, 0, VE, "rc" }, ++#ifndef NVENC_NO_DEPRECATED_RC + { "vbr_minqp", "Variable bitrate mode with MinQP (deprecated)", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR_MINQP) }, 0, 0, VE, "rc" }, + { "ll_2pass_quality", "Multi-pass optimized for image quality (deprecated)", + 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_2_PASS_QUALITY) }, 0, 0, VE, "rc" }, +@@ -109,6 +110,17 @@ static const AVOption options[] = { + { "cbr_ld_hq", "Constant bitrate low delay high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ) }, 0, 0, VE, "rc" }, + { "cbr_hq", "Constant bitrate high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR_HQ) }, 0, 0, VE, "rc" }, + { "vbr_hq", "Variable bitrate high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR_HQ) }, 0, 0, VE, "rc" }, ++#else ++ { "vbr_minqp", "Variable bitrate mode with MinQP (deprecated)", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR) }, 0, 0, VE, "rc" }, ++ { "ll_2pass_quality", "Multi-pass optimized for image quality (deprecated)", ++ 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR) }, 0, 0, VE, "rc" }, ++ { "ll_2pass_size", "Multi-pass optimized for constant frame size (deprecated)", ++ 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR) }, 0, 0, VE, "rc" }, ++ { "vbr_2pass", "Multi-pass variable bitrate mode (deprecated)", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR) }, 0, 0, VE, "rc" }, ++ { "cbr_ld_hq", "Constant bitrate low delay high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR) }, 0, 0, VE, "rc" }, ++ { "cbr_hq", "Constant bitrate high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR) }, 0, 0, VE, "rc" }, ++ { "vbr_hq", "Variable bitrate high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR) }, 0, 0, VE, "rc" }, ++#endif + { "rc-lookahead", "Number of frames to look ahead for rate-control", + OFFSET(rc_lookahead), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE }, + { "surfaces", "Number of concurrent surfaces", OFFSET(nb_surfaces), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, MAX_REGISTERED_FRAMES, VE }, +diff -uNrp a/libavcodec/nvenc_hevc.c b/libavcodec/nvenc_hevc.c +--- a/libavcodec/nvenc_hevc.c 2023-04-12 19:01:50.000000000 +0100 ++++ b/libavcodec/nvenc_hevc.c 2024-04-06 17:42:31.124436369 +0100 +@@ -89,6 +89,7 @@ static const AVOption options[] = { + { "constqp", "Constant QP mode", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_PARAMS_RC_CONSTQP }, 0, 0, VE, "rc" }, + { "vbr", "Variable bitrate mode", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_PARAMS_RC_VBR }, 0, 0, VE, "rc" }, + { "cbr", "Constant bitrate mode", 0, AV_OPT_TYPE_CONST, { .i64 = NV_ENC_PARAMS_RC_CBR }, 0, 0, VE, "rc" }, ++#ifndef NVENC_NO_DEPRECATED_RC + { "vbr_minqp", "Variable bitrate mode with MinQP (deprecated)", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR_MINQP) }, 0, 0, VE, "rc" }, + { "ll_2pass_quality", "Multi-pass optimized for image quality (deprecated)", + 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_2_PASS_QUALITY) }, 0, 0, VE, "rc" }, +@@ -98,6 +99,17 @@ static const AVOption options[] = { + { "cbr_ld_hq", "Constant bitrate low delay high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ) }, 0, 0, VE, "rc" }, + { "cbr_hq", "Constant bitrate high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR_HQ) }, 0, 0, VE, "rc" }, + { "vbr_hq", "Variable bitrate high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR_HQ) }, 0, 0, VE, "rc" }, ++#else ++ { "vbr_minqp", "Variable bitrate mode with MinQP (deprecated)", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR) }, 0, 0, VE, "rc" }, ++ { "ll_2pass_quality", "Multi-pass optimized for image quality (deprecated)", ++ 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR) }, 0, 0, VE, "rc" }, ++ { "ll_2pass_size", "Multi-pass optimized for constant frame size (deprecated)", ++ 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR) }, 0, 0, VE, "rc" }, ++ { "vbr_2pass", "Multi-pass variable bitrate mode (deprecated)", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR) }, 0, 0, VE, "rc" }, ++ { "cbr_ld_hq", "Constant bitrate low delay high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR) }, 0, 0, VE, "rc" }, ++ { "cbr_hq", "Constant bitrate high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_CBR) }, 0, 0, VE, "rc" }, ++ { "vbr_hq", "Variable bitrate high quality mode", 0, AV_OPT_TYPE_CONST, { .i64 = RCD(NV_ENC_PARAMS_RC_VBR) }, 0, 0, VE, "rc" }, ++#endif + { "rc-lookahead", "Number of frames to look ahead for rate-control", + OFFSET(rc_lookahead), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE }, + { "surfaces", "Number of concurrent surfaces", OFFSET(nb_surfaces), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, MAX_REGISTERED_FRAMES, VE }, diff --git a/SPECS/compat-ffmpeg4.spec b/SPECS/compat-ffmpeg4.spec index ba1d45e..1cb3591 100644 --- a/SPECS/compat-ffmpeg4.spec +++ b/SPECS/compat-ffmpeg4.spec @@ -42,13 +42,15 @@ Summary: Digital VCR and streaming server Name: compat-ffmpeg4 -Version: 4.4.4 +Version: 4.4.5 Release: 1%{?dist} License: %{ffmpeg_license} URL: https://ffmpeg.org/ Source0: %{url}/releases/ffmpeg-%{version}.tar.xz Source1: %{url}/releases/ffmpeg-%{version}.tar.xz.asc Source2: %{url}/ffmpeg-devel.asc +Patch0: configure-fix-nvenc-detection.patch +Patch1: nvenc-stop-using-deprecated-rc-modes.patch BuildRequires: gcc BuildRequires: alsa-lib-devel @@ -174,7 +176,7 @@ This package contains development files for %{name} --libdir=%{_libdir} \\\ --mandir=%{_mandir} \\\ --arch=%{_target_cpu} \\\ - --optflags="%{optflags}" \\\ + --optflags="%{optflags} -Wno-int-conversion" \\\ --extra-ldflags="%{?__global_ldflags}" \\\ --disable-manpages \\\ %{!?_without_amr:--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3} \\\ @@ -331,6 +333,24 @@ rm -rf %{buildroot}/%{_datadir}/compat-ffmpeg4/ %changelog +* Sun Aug 04 2024 Leigh Scott - 4.4.5-1 +- Update to 4.4.5 + +* Thu Aug 01 2024 RPM Fusion Release Engineering - 4.4.4-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Apr 06 2024 Leigh Scott - 4.4.4-5 +- Rebuild for new x265 version + +* Sat Feb 03 2024 RPM Fusion Release Engineering - 4.4.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jan 18 2024 Leigh Scott - 4.4.4-3 +- rebuilt + +* Wed Aug 02 2023 RPM Fusion Release Engineering - 4.4.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Tue Jul 18 2023 Arkady L. Shane - 4.4.4-1 - Rebuilt for MSVSphere 9.2