commit:     786f54b7aa322c015dd121519970eaba3e17bec1
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed May 31 18:40:25 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed May 31 18:43:01 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=786f54b7

media-video/ffmpeg: fix build w/ svt-av1-1.5.0

Closes: https://bugs.gentoo.org/907478
Closes: https://bugs.gentoo.org/907493
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild          |  1 +
 media-video/ffmpeg/ffmpeg-5.1.3.ebuild             |  1 +
 .../ffmpeg-4.4.4-fix-build-svt-av1-1.5.0.patch     | 44 ++++++++++++
 .../ffmpeg-5.1.3-fix-build-svt-av1-1.5.0.patch     | 81 ++++++++++++++++++++++
 4 files changed, 127 insertions(+)

diff --git a/media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild 
b/media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild
index bc0fa635b1d9..9acb849c9349 100644
--- a/media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.4.4-r2.ebuild
@@ -336,6 +336,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-4.4.3-clang-14-ff_seek_frame_binary-crash.patch
        "${FILESDIR}"/${PN}-4.4.3-get_cabac_inline_x86-32-bit.patch
        "${FILESDIR}"/${PN}-4.4.4-wint-conversion-vulkan.patch
+       "${FILESDIR}"/${P}-fix-build-svt-av1-1.5.0.patch
 )
 
 MULTILIB_WRAPPED_HEADERS=(

diff --git a/media-video/ffmpeg/ffmpeg-5.1.3.ebuild 
b/media-video/ffmpeg/ffmpeg-5.1.3.ebuild
index 7cc06a079480..f9ccdb2776aa 100644
--- a/media-video/ffmpeg/ffmpeg-5.1.3.ebuild
+++ b/media-video/ffmpeg/ffmpeg-5.1.3.ebuild
@@ -337,6 +337,7 @@ S=${WORKDIR}/${P/_/-}
 PATCHES=(
        "${FILESDIR}"/chromium-r1.patch
        "${FILESDIR}"/${PN}-5.1.2-get_cabac_inline_x86-32-bit.patch
+       "${FILESDIR}"/${P}-fix-build-svt-av1-1.5.0.patch
 )
 
 MULTILIB_WRAPPED_HEADERS=(

diff --git 
a/media-video/ffmpeg/files/ffmpeg-4.4.4-fix-build-svt-av1-1.5.0.patch 
b/media-video/ffmpeg/files/ffmpeg-4.4.4-fix-build-svt-av1-1.5.0.patch
new file mode 100644
index 000000000000..c9c180f06641
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.4.4-fix-build-svt-av1-1.5.0.patch
@@ -0,0 +1,44 @@
+https://bugs.gentoo.org/907478
+https://bugs.gentoo.org/907493
+https://git.videolan.org/?p=ffmpeg.git;a=commit;h=c3c8f97a9804b4234e97f13b0057ffc2c9af27c0
+
+From c3c8f97a9804b4234e97f13b0057ffc2c9af27c0 Mon Sep 17 00:00:00 2001
+From: Christopher Degawa <[email protected]>
+Date: Thu, 20 Oct 2022 22:55:27 -0500
+Subject: [PATCH] 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 <[email protected]>
+(cherry picked from commit 031f1561cd286596cdb374da32f8aa816ce3b135)
+--- a/libavcodec/libsvtav1.c
++++ b/libavcodec/libsvtav1.c
+@@ -120,16 +120,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.30.2

diff --git 
a/media-video/ffmpeg/files/ffmpeg-5.1.3-fix-build-svt-av1-1.5.0.patch 
b/media-video/ffmpeg/files/ffmpeg-5.1.3-fix-build-svt-av1-1.5.0.patch
new file mode 100644
index 000000000000..51a8cb02d7b5
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-5.1.3-fix-build-svt-av1-1.5.0.patch
@@ -0,0 +1,81 @@
+https://bugs.gentoo.org/907478
+https://bugs.gentoo.org/907493
+https://git.videolan.org/?p=ffmpeg.git;a=commit;h=bea695d54372b66a6b9b136982fc92adb63e4745
+https://git.videolan.org/?p=ffmpeg.git;a=commit;h=3344d47a88506aba060b5fd2a214cf7785b11483
+
+From bea695d54372b66a6b9b136982fc92adb63e4745 Mon Sep 17 00:00:00 2001
+From: Christopher Degawa <[email protected]>
+Date: Thu, 20 Oct 2022 22:55:28 -0500
+Subject: [PATCH] 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 <[email protected]>
+--- 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.30.2
+
+From 3344d47a88506aba060b5fd2a214cf7785b11483 Mon Sep 17 00:00:00 2001
+From: Christopher Degawa <[email protected]>
+Date: Thu, 20 Oct 2022 22:55:27 -0500
+Subject: [PATCH] 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 <[email protected]>
+--- 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.30.2

Reply via email to