forked from jengelh/ffmpeg-5
- Add 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 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-5?expand=0&rev=69
This commit is contained in:
parent
a6e6aeedfc
commit
8097484d43
@ -0,0 +1,43 @@
|
||||
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
|
||||
|
@ -0,0 +1,46 @@
|
||||
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
|
||||
|
@ -0,0 +1,31 @@
|
||||
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
|
||||
|
@ -0,0 +1,46 @@
|
||||
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
|
||||
|
@ -1,3 +1,11 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jun 29 12:26:41 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
|
||||
|
||||
- Add 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
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 19 20:09:16 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||
|
||||
|
@ -106,6 +106,10 @@ 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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user