1
0
forked from jengelh/ffmpeg-5

Accepting request 1124867 from home:iznogood:factory

- Update to version 5.1.4:
  * Updates and bugfixes to avcodecs, avformat and avfilters
    mainly.
- Drop patches fixed upstream:
  * 0001-avcodec-libsvtav1-replace-vbv_bufsize-with-maximum_b.patch
  * 0002-avcodec-libsvtav1-remove-compressed_ten_bit_format-a.patch
  * 0003-avcodec-libsvtav1-only-set-max_buf_sz-if-both-bitrat.patch
  * 0004-avcodec-libsvtav1-use-larger-of-bit-rate-and-max-rat.patch
  * 0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch

OBS-URL: https://build.opensuse.org/request/show/1124867
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-5?expand=0&rev=74
This commit is contained in:
Jan Engelhardt 2023-11-10 13:09:48 +00:00 committed by Git OBS Bridge
parent 51222908f8
commit 070008e71c
11 changed files with 29 additions and 265 deletions

View File

@ -1,43 +0,0 @@
From bea695d54372b66a6b9b136982fc92adb63e4745 Mon Sep 17 00:00:00 2001
From: Christopher Degawa <christopher.degawa@intel.com>
Date: Thu, 20 Oct 2022 22:55:28 -0500
Subject: [PATCH 1/4] avcodec/libsvtav1: replace vbv_bufsize with
maximum_buffer_size_ms
svt-av1 v1.2.0 has deprecated vbv_bufsize in favor of using
- maximum_buffer_size_ms (--buf-sz)
- starting_buffer_level_ms (--buf-initial-sz)
- optimal_buffer_level_ms (--buf-optimal-sz)
and vbv_bufsize has not been in use since svt-av1 v0.8.6
Signed-off-by: Christopher Degawa <christopher.degawa@intel.com>
---
libavcodec/libsvtav1.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index 4001cf7f03..ecf5f9cb63 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -183,7 +183,7 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
param->min_qp_allowed = avctx->qmin;
}
param->max_bit_rate = avctx->rc_max_rate;
- param->vbv_bufsize = avctx->rc_buffer_size;
+ param->maximum_buffer_size_ms = avctx->rc_buffer_size * 1000LL / avctx->bit_rate;
if (svt_enc->crf > 0) {
param->qp = svt_enc->crf;
@@ -300,7 +300,7 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
avctx->bit_rate = param->rate_control_mode > 0 ?
param->target_bit_rate : 0;
avctx->rc_max_rate = param->max_bit_rate;
- avctx->rc_buffer_size = param->vbv_bufsize;
+ avctx->rc_buffer_size = param->maximum_buffer_size_ms * avctx->bit_rate / 1000LL;
if (avctx->bit_rate || avctx->rc_max_rate || avctx->rc_buffer_size) {
AVCPBProperties *cpb_props = ff_add_cpb_side_data(avctx);
--
2.41.0

View File

@ -1,77 +0,0 @@
From 25cd95a9dc3510c3cc0d7aad6f9d83f6a1078c7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
Date: Sun, 16 Jul 2023 18:18:02 +0300
Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
instructions within inline assembly
Fixes assembling with binutil as >= 2.41
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit effadce6c756247ea8bae32dc13bb3e6f464f0eb)
---
libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h
index 6298f5ed19..ca7e2dffc1 100644
--- a/libavcodec/x86/mathops.h
+++ b/libavcodec/x86/mathops.h
@@ -35,12 +35,20 @@
static av_always_inline av_const int MULL(int a, int b, unsigned shift)
{
int rt, dummy;
+ if (__builtin_constant_p(shift))
__asm__ (
"imull %3 \n\t"
"shrdl %4, %%edx, %%eax \n\t"
:"=a"(rt), "=d"(dummy)
- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
);
+ else
+ __asm__ (
+ "imull %3 \n\t"
+ "shrdl %4, %%edx, %%eax \n\t"
+ :"=a"(rt), "=d"(dummy)
+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
+ );
return rt;
}
@@ -113,19 +121,31 @@ __asm__ volatile(\
// avoid +32 for shift optimization (gcc should do that ...)
#define NEG_SSR32 NEG_SSR32
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
+ if (__builtin_constant_p(s))
__asm__ ("sarl %1, %0\n\t"
: "+r" (a)
- : "ic" ((uint8_t)(-s))
+ : "i" (-s & 0x1F)
);
+ else
+ __asm__ ("sarl %1, %0\n\t"
+ : "+r" (a)
+ : "c" ((uint8_t)(-s))
+ );
return a;
}
#define NEG_USR32 NEG_USR32
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
+ if (__builtin_constant_p(s))
__asm__ ("shrl %1, %0\n\t"
: "+r" (a)
- : "ic" ((uint8_t)(-s))
+ : "i" (-s & 0x1F)
);
+ else
+ __asm__ ("shrl %1, %0\n\t"
+ : "+r" (a)
+ : "c" ((uint8_t)(-s))
+ );
return a;
}
--
2.42.0

View File

@ -1,46 +0,0 @@
From 3344d47a88506aba060b5fd2a214cf7785b11483 Mon Sep 17 00:00:00 2001
From: Christopher Degawa <christopher.degawa@intel.com>
Date: Thu, 20 Oct 2022 22:55:27 -0500
Subject: [PATCH 2/4] avcodec/libsvtav1: remove compressed_ten_bit_format and
simplify alloc_buffer
compressed_ten_bit_format has been deprecated upstream and has no effect
and can be removed. Plus, technically it was never used in the first place
since it would require the app (ffmpeg) to set it and do additional
processing of the input frames.
Also simplify alloc_buffer by removing calculations relating to the
non-existant processing.
Signed-off-by: Christopher Degawa <christopher.degawa@intel.com>
---
libavcodec/libsvtav1.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index ecf5f9cb63..90f7c4236c 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -124,16 +124,12 @@ static int svt_print_error(void *log_ctx, EbErrorType err,
static int alloc_buffer(EbSvtAv1EncConfiguration *config, SvtContext *svt_enc)
{
- const int pack_mode_10bit =
- (config->encoder_bit_depth > 8) && (config->compressed_ten_bit_format == 0) ? 1 : 0;
- const size_t luma_size_8bit =
- config->source_width * config->source_height * (1 << pack_mode_10bit);
- const size_t luma_size_10bit =
- (config->encoder_bit_depth > 8 && pack_mode_10bit == 0) ? luma_size_8bit : 0;
+ const size_t luma_size = config->source_width * config->source_height *
+ (config->encoder_bit_depth > 8 ? 2 : 1);
EbSvtIOFormat *in_data;
- svt_enc->raw_size = (luma_size_8bit + luma_size_10bit) * 3 / 2;
+ svt_enc->raw_size = luma_size * 3 / 2;
// allocate buffer for in and out
svt_enc->in_buf = av_mallocz(sizeof(*svt_enc->in_buf));
--
2.41.0

View File

@ -1,31 +0,0 @@
From 8fe2fec45321d1b82f98f9725ad9118cefcfa58d Mon Sep 17 00:00:00 2001
From: Christopher Degawa <ccom@randomderp.com>
Date: Sun, 20 Nov 2022 13:07:36 -0600
Subject: [PATCH 3/4] avcodec/libsvtav1: only set max_buf_sz if both bitrate
and rc_buf_sz is set
maximum_buffer_size_ms should only be set if both are specified or if
the user sets it through -svtav1-params buf-sz=val
Signed-off-by: Christopher Degawa <ccom@randomderp.com>
---
libavcodec/libsvtav1.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index 90f7c4236c..d41bed480b 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -179,7 +179,8 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
param->min_qp_allowed = avctx->qmin;
}
param->max_bit_rate = avctx->rc_max_rate;
- param->maximum_buffer_size_ms = avctx->rc_buffer_size * 1000LL / avctx->bit_rate;
+ if (avctx->bit_rate && avctx->rc_buffer_size)
+ param->maximum_buffer_size_ms = avctx->rc_buffer_size * 1000LL / avctx->bit_rate;
if (svt_enc->crf > 0) {
param->qp = svt_enc->crf;
--
2.41.0

View File

@ -1,46 +0,0 @@
From e5b5dd66535f444451e0fee59247b224d866f334 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Ekstr=C3=B6m?= <jeebjp@gmail.com>
Date: Thu, 9 Mar 2023 20:27:06 +0200
Subject: [PATCH 4/4] avcodec/libsvtav1: use larger of bit rate and max rate
for buffer size
Generally if maxrate is set, the calculation should be maxrate over
bufsize. This additionally enables CRF + maxrate & bufsize usage.
In order to keep negative values from enabling zero to be treated
as larger and causing a division by zero, check that one of the
variables is larger than zero.
---
libavcodec/libsvtav1.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index d41bed480b..0f9d455660 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -179,8 +179,10 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
param->min_qp_allowed = avctx->qmin;
}
param->max_bit_rate = avctx->rc_max_rate;
- if (avctx->bit_rate && avctx->rc_buffer_size)
- param->maximum_buffer_size_ms = avctx->rc_buffer_size * 1000LL / avctx->bit_rate;
+ if ((avctx->bit_rate > 0 || avctx->rc_max_rate > 0) && avctx->rc_buffer_size)
+ param->maximum_buffer_size_ms =
+ avctx->rc_buffer_size * 1000LL /
+ FFMAX(avctx->bit_rate, avctx->rc_max_rate);
if (svt_enc->crf > 0) {
param->qp = svt_enc->crf;
@@ -297,7 +299,8 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
avctx->bit_rate = param->rate_control_mode > 0 ?
param->target_bit_rate : 0;
avctx->rc_max_rate = param->max_bit_rate;
- avctx->rc_buffer_size = param->maximum_buffer_size_ms * avctx->bit_rate / 1000LL;
+ avctx->rc_buffer_size = param->maximum_buffer_size_ms *
+ FFMAX(avctx->bit_rate, avctx->rc_max_rate) / 1000LL;
if (avctx->bit_rate || avctx->rc_max_rate || avctx->rc_buffer_size) {
AVCPBProperties *cpb_props = ff_add_cpb_side_data(avctx);
--
2.41.0

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1b113593ff907293be7aed95acdda5e785dd73616d7d4ec90a0f6adbc5a0312e
size 10007756

View File

@ -1,11 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQFMBAABCAA2FiEE/PmG6hXm4pOlZE8QtDIvBNZ2WNgFAmQgVfwYHGZmbXBlZy1k
ZXZlbEBmZm1wZWcub3JnAAoJELQyLwTWdljYntkH/1aN/nVkVPhbalrPdX14VIau
aW2OxXleh7AJe9FVjYduJPQZHS5+wm1GTTl5/IHje3sMG54RdkezRIfx/XCeZefd
c+P6OPvqpIXvhEHoKABB/hD7bI/+0bkAfUtDDp0Nfv05sag9PPC0XAJfLGlvWTPl
Ci8rLbO7VnsOo35+3dRVHgx6N6vNQuKRx5oZVgb3GEo18gjV1zsoDD91cQjR7GeF
64Jol7CPAikSnGwi3rxjARTk+V2YqaPM0KY/VR9QlVReIT2CdrRvQtUTvL1WB5mC
6nQ3tHDkRk5uEohAT+e9dxAUBxSTQhKHJn8V4pFS1QVBKH4slPqGvTPnKf5vg+8=
=Tdc7
-----END PGP SIGNATURE-----

BIN
ffmpeg-5.1.4.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

11
ffmpeg-5.1.4.tar.xz.asc Normal file
View File

@ -0,0 +1,11 @@
-----BEGIN PGP SIGNATURE-----
iQFMBAABCAA2FiEE/PmG6hXm4pOlZE8QtDIvBNZ2WNgFAmVNbhEYHGZmbXBlZy1k
ZXZlbEBmZm1wZWcub3JnAAoJELQyLwTWdljYdNMIAI+dP+nDw3YxOpr4H7ACcmpD
mfKku9WKbrp648wqWDeB2jEFEe4F2Wh1hViGBoMs0bZ6ZnZY37SbvOAAGSP5aMNM
DTxspAf5VwoBGWRFcx8ljSZImozwfDQuXL2DjxVA71s+7v47b8ww1flGIveIxnJG
uFAZ0MUR6CN3NHMAjbpro+pZRam4hSA3UzNCgLF00iqzksOm9WxZqbOL0AJoH+en
6wTqH+29BZhfY+zICyZnknYla3PcKxvO73grSY+dlpmleQEE2HIsmu0/b+v6CCeI
qXoGEFF5PazrCW4JLuCXDOQmcxLreesCSdCsdHxPg8pU4zj3jQpO2UV6r/YdAE0=
=LL3G
-----END PGP SIGNATURE-----

View File

@ -1,3 +1,16 @@
-------------------------------------------------------------------
Fri Nov 10 11:19:52 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 5.1.4:
* Updates and bugfixes to avcodecs, avformat and avfilters
mainly.
- Drop patches fixed upstream:
* 0001-avcodec-libsvtav1-replace-vbv_bufsize-with-maximum_b.patch
* 0002-avcodec-libsvtav1-remove-compressed_ten_bit_format-a.patch
* 0003-avcodec-libsvtav1-only-set-max_buf_sz-if-both-bitrat.patch
* 0004-avcodec-libsvtav1-use-larger-of-bit-rate-and-max-rat.patch
* 0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
-------------------------------------------------------------------
Wed Oct 4 07:59:01 UTC 2023 - Manfred Hollstein <manfred.h@gmx.net>

View File

@ -83,7 +83,7 @@
%define _major_expected 6
Name: ffmpeg-5
Version: 5.1.3
Version: 5.1.4
Release: 0
Summary: Set of libraries for working with various multimedia formats
License: GPL-3.0-or-later
@ -109,13 +109,8 @@ Patch4: ffmpeg-4.2-dlopen-fdk_aac.patch
Patch5: work-around-abi-break.patch
Patch9: ffmpeg-4.4-CVE-2020-22046.patch
Patch10: ffmpeg-chromium.patch
Patch11: 0001-avcodec-libsvtav1-replace-vbv_bufsize-with-maximum_b.patch
Patch12: 0002-avcodec-libsvtav1-remove-compressed_ten_bit_format-a.patch
Patch13: 0003-avcodec-libsvtav1-only-set-max_buf_sz-if-both-bitrat.patch
Patch14: 0004-avcodec-libsvtav1-use-larger-of-bit-rate-and-max-rat.patch
Patch91: ffmpeg-dlopen-openh264.patch
Patch93: soname.diff
Patch94: 0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
%if %{with amf_sdk}
BuildRequires: AMF-devel
@ -827,7 +822,7 @@ done
%define _name ffmpeg
Name: ffmpeg-5-mini
Version: 5.1.3
Version: 5.1.4
Release: 0
Summary: Set of libraries for working with various multimedia formats
License: GPL-3.0-or-later
@ -846,7 +841,6 @@ Patch9: ffmpeg-4.4-CVE-2020-22046.patch
Patch10: ffmpeg-chromium.patch
Patch91: ffmpeg-dlopen-openh264.patch
Patch93: soname.diff
Patch94: 0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
BuildRequires: c_compiler
Requires: this-is-only-for-build-envs