git: 874d8e4b5d2e - main - multimedia/av1an: unbreak build with ffmpeg 7.0

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Sat, 11 May 2024 16:04:49 UTC
The branch main has been updated by jbeich:

URL: https://cgit.FreeBSD.org/ports/commit/?id=874d8e4b5d2e2a0152e555b8e09f573a95b255ab

commit 874d8e4b5d2e2a0152e555b8e09f573a95b255ab
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2024-05-11 13:58:44 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2024-05-11 16:03:30 +0000

    multimedia/av1an: unbreak build with ffmpeg 7.0
    
    error[E0425]: cannot find value `AV_CH_LAYOUT_NATIVE` in this scope
         --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/channel_layout.rs:31:39
          |
    31    |         const NATIVE                = AV_CH_LAYOUT_NATIVE;
          |                                       ^^^^^^^^^^^^^^^^^^^ help: a constant with a similar name exists: `AV_CH_LAYOUT_STEREO`
          |
         ::: ../target/x86_64-unknown-freebsd/release/build/ffmpeg-sys-the-third-ec468502176024bc/out/bindings.rs:20777:1
          |
    20777 | pub const AV_CH_LAYOUT_STEREO: libc::c_ulonglong = 3;
          | ------------------------------------------------ similarly named constant `AV_CH_LAYOUT_STEREO` defined here
    
    error[E0425]: cannot find value `AV_PIX_FMT_XVMC` in this scope
        --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/format/pixel.rs:1040:28
         |
    1040 |             Pixel::XVMC => AV_PIX_FMT_XVMC,
         |                            ^^^^^^^^^^^^^^^ help: a unit variant with a similar name exists: `AV_PIX_FMT_NV12`
         |
        ::: ../target/x86_64-unknown-freebsd/release/build/ffmpeg-sys-the-third-ec468502176024bc/out/bindings.rs:4854:3
         |
    4854 |   AV_PIX_FMT_NV12 = 23,
         |   --------------- similarly named unit variant `AV_PIX_FMT_NV12` defined here
    
    error[E0425]: cannot find value `AV_OPT_TYPE_CHANNEL_LAYOUT` in this scope
         --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/option/mod.rs:88:36
          |
    88    |             Type::ChannelLayout => AV_OPT_TYPE_CHANNEL_LAYOUT,
          |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: a unit variant with a similar name exists: `AV_OPT_TYPE_CHLAYOUT`
          |
         ::: ../target/x86_64-unknown-freebsd/release/build/ffmpeg-sys-the-third-ec468502176024bc/out/bindings.rs:13179:3
          |
    13179 |   AV_OPT_TYPE_CHLAYOUT = 19,
          |   -------------------- similarly named unit variant `AV_OPT_TYPE_CHLAYOUT` defined here
    
    error[E0425]: cannot find value `AV_CODEC_ID_AYUV` in this scope
        --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/id.rs:1514:25
         |
    1514 |             Id::AYUV => AV_CODEC_ID_AYUV,
         |                         ^^^^^^^^^^^^^^^^ help: a unit variant with a similar name exists: `AV_CODEC_ID_CYUV`
         |
        ::: ../target/x86_64-unknown-freebsd/release/build/ffmpeg-sys-the-third-ec468502176024bc/out/bindings.rs:7538:3
         |
    7538 |   AV_CODEC_ID_CYUV = 26,
         |   ---------------- similarly named unit variant `AV_CODEC_ID_CYUV` defined here
    
    error[E0425]: cannot find function `av_get_channel_layout_nb_channels` in this scope
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/channel_layout.rs:67:18
       |
    67 |         unsafe { av_get_channel_layout_nb_channels(self.bits()) }
       |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
    
    error[E0425]: cannot find function `av_get_default_channel_layout` in this scope
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/channel_layout.rs:72:47
       |
    72 |             ChannelLayout::from_bits_truncate(av_get_default_channel_layout(number) as c_ulonglong)
       |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
    
    error[E0609]: no field `coded_picture_number` on type `sys::AVFrame`
       --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/frame/video.rs:178:35
        |
    178 |         unsafe { (*self.as_ptr()).coded_picture_number as usize }
        |                                   ^^^^^^^^^^^^^^^^^^^^ unknown field
        |
        = note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
    
    error[E0609]: no field `display_picture_number` on type `sys::AVFrame`
       --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/frame/video.rs:183:35
        |
    183 |         unsafe { (*self.as_ptr()).display_picture_number as usize }
        |                                   ^^^^^^^^^^^^^^^^^^^^^^ unknown field
        |
        = note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
    
    error[E0609]: no field `channel_layout` on type `sys::AVFrame`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/frame/audio.rs:66:69
       |
    66 |         unsafe { ChannelLayout::from_bits_truncate((*self.as_ptr()).channel_layout as c_ulonglong) }
       |                                                                     ^^^^^^^^^^^^^^ unknown field
       |
       = note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
    
    error[E0609]: no field `channel_layout` on type `sys::AVFrame`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/frame/audio.rs:72:34
       |
    72 |             (*self.as_mut_ptr()).channel_layout = value.bits() as u64;
       |                                  ^^^^^^^^^^^^^^ unknown field
       |
       = note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
    
    error[E0609]: no field `channels` on type `sys::AVFrame`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/frame/audio.rs:78:35
       |
    78 |         unsafe { (*self.as_ptr()).channels as u16 }
       |                                   ^^^^^^^^ unknown field
       |
       = note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
    
    error[E0609]: no field `channels` on type `sys::AVFrame`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/frame/audio.rs:84:34
       |
    84 |             (*self.as_mut_ptr()).channels = i32::from(value);
       |                                  ^^^^^^^^ unknown field
       |
       = note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
    
    error[E0609]: no field `pkt_duration` on type `sys::AVFrame`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/frame/mod.rs:82:44
       |
    82 |                 duration: (*self.as_ptr()).pkt_duration as i64,
       |                                            ^^^^^^^^^^^^ unknown field
       |
    help: a field with a similar name exists
       |
    82 |                 duration: (*self.as_ptr()).duration as i64,
       |                                            ~~~~~~~~
    
    error[E0425]: cannot find function `av_opt_set_channel_layout` in this scope
         --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/option/traits.rs:137:20
          |
    137   |               check!(av_opt_set_channel_layout(
          |                      ^^^^^^^^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `av_opt_set_chlayout`
          |
         ::: ../target/x86_64-unknown-freebsd/release/build/ffmpeg-sys-the-third-ec468502176024bc/out/bindings.rs:13786:3
          |
    13786 | /   pub fn av_opt_set_chlayout(
    13787 | |     obj: *mut libc::c_void,
    13788 | |     name: *const libc::c_char,
    13789 | |     layout: *const AVChannelLayout,
    13790 | |     search_flags: libc::c_int,
    13791 | |   ) -> libc::c_int;
          | |__________________- similarly named function `av_opt_set_chlayout` defined here
    
    error[E0609]: no field `channel_layouts` on type `sys::AVCodec`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/audio.rs:41:39
       |
    41 |             if (*self.codec.as_ptr()).channel_layouts.is_null() {
       |                                       ^^^^^^^^^^^^^^^ unknown field
       |
    help: a field with a similar name exists
       |
    41 |             if (*self.codec.as_ptr()).ch_layouts.is_null() {
       |                                       ~~~~~~~~~~
    
    error[E0609]: no field `channel_layouts` on type `sys::AVCodec`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/audio.rs:45:44
       |
    45 |                     (*self.codec.as_ptr()).channel_layouts,
       |                                            ^^^^^^^^^^^^^^^ unknown field
       |
    help: a field with a similar name exists
       |
    45 |                     (*self.codec.as_ptr()).ch_layouts,
       |                                            ~~~~~~~~~~
    
    error[E0609]: no field `slice_count` on type `sys::AVCodecContext`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/decoder/video.rs:89:34
       |
    89 |             (*self.as_mut_ptr()).slice_count = value as c_int;
       |                                  ^^^^^^^^^^^ unknown field
       |
       = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0609]: no field `channels` on type `sys::AVCodecContext`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/decoder/audio.rs:51:35
       |
    51 |         unsafe { (*self.as_ptr()).channels as u16 }
       |                                   ^^^^^^^^ unknown field
       |
       = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0609]: no field `frame_number` on type `sys::AVCodecContext`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/decoder/audio.rs:65:35
       |
    65 |         unsafe { (*self.as_ptr()).frame_number as usize }
       |                                   ^^^^^^^^^^^^ unknown field
       |
       = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0609]: no field `channel_layout` on type `sys::AVCodecContext`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/decoder/audio.rs:73:69
       |
    73 |         unsafe { ChannelLayout::from_bits_truncate((*self.as_ptr()).channel_layout) }
       |                                                                     ^^^^^^^^^^^^^^ unknown field
       |
       = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0609]: no field `channel_layout` on type `sys::AVCodecContext`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/decoder/audio.rs:78:34
       |
    78 |             (*self.as_mut_ptr()).channel_layout = value.bits();
       |                                  ^^^^^^^^^^^^^^ unknown field
       |
       = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0609]: no field `request_channel_layout` on type `sys::AVCodecContext`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/decoder/audio.rs:84:34
       |
    84 |             (*self.as_mut_ptr()).request_channel_layout = value.bits();
       |                                  ^^^^^^^^^^^^^^^^^^^^^^ unknown field
       |
       = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0609]: no field `channel_layout` on type `sys::AVCodecContext`
      --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/encoder/audio.rs:98:34
       |
    98 |             (*self.as_mut_ptr()).channel_layout = value.bits();
       |                                  ^^^^^^^^^^^^^^ unknown field
       |
       = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0609]: no field `channel_layout` on type `sys::AVCodecContext`
       --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/encoder/audio.rs:103:69
        |
    103 |         unsafe { ChannelLayout::from_bits_truncate((*self.as_ptr()).channel_layout) }
        |                                                                     ^^^^^^^^^^^^^^ unknown field
        |
        = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0609]: no field `channels` on type `sys::AVCodecContext`
       --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/encoder/audio.rs:108:34
        |
    108 |             (*self.as_mut_ptr()).channels = value;
        |                                  ^^^^^^^^ unknown field
        |
        = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0609]: no field `channels` on type `sys::AVCodecContext`
       --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/codec/encoder/audio.rs:113:35
        |
    113 |         unsafe { (*self.as_ptr()).channels as u16 }
        |                                   ^^^^^^^^ unknown field
        |
        = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
    
    error[E0425]: cannot find function `swr_alloc_set_opts` in this scope
         --> cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/software/resampling/context.rs:71:23
          |
    71    |               let ptr = swr_alloc_set_opts(
          |                         ^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `swr_alloc_set_opts2`
          |
         ::: ../target/x86_64-unknown-freebsd/release/build/ffmpeg-sys-the-third-ec468502176024bc/out/bindings.rs:23165:3
          |
    23165 | /   pub fn swr_alloc_set_opts2(
    23166 | |     ps: *mut *mut SwrContext,
    23167 | |     out_ch_layout: *const AVChannelLayout,
    23168 | |     out_sample_fmt: AVSampleFormat,
    ...     |
    23174 | |     log_ctx: *mut libc::c_void,
    23175 | |   ) -> libc::c_int;
          | |__________________- similarly named function `swr_alloc_set_opts2` defined here
    
    Some errors have detailed explanations: E0425, E0609.
    
    Reported by:    antoine (via bug 278705 exp-run)
---
 multimedia/av1an/Makefile            |   2 +-
 multimedia/av1an/Makefile.crates     |   9 +--
 multimedia/av1an/distinfo            |  18 ++---
 multimedia/av1an/files/patch-ffmpeg  |   4 +-
 multimedia/av1an/files/patch-ffmpeg7 | 146 +++++++++++++++++++++++++++++++++++
 5 files changed, 161 insertions(+), 18 deletions(-)

diff --git a/multimedia/av1an/Makefile b/multimedia/av1an/Makefile
index 27a34c6063f9..5d07e03ce425 100644
--- a/multimedia/av1an/Makefile
+++ b/multimedia/av1an/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	av1an
 DISTVERSION=	0.4.2
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	multimedia
 
 MAINTAINER=	jbeich@FreeBSD.org
diff --git a/multimedia/av1an/Makefile.crates b/multimedia/av1an/Makefile.crates
index 36c31f1b1911..5f91d16549f3 100644
--- a/multimedia/av1an/Makefile.crates
+++ b/multimedia/av1an/Makefile.crates
@@ -23,9 +23,9 @@ CARGO_CRATES=	addr2line-0.21.0 \
 		av-scenechange-0.10.0 \
 		av1-grain-0.2.3 \
 		backtrace-0.3.69 \
-		bindgen-0.64.0 \
+		bindgen-0.69.4 \
 		bitflags-1.3.2 \
-		bitflags-2.4.1 \
+		bitflags-2.5.0 \
 		bitstream-io-2.2.0 \
 		built-0.7.1 \
 		bumpalo-3.14.0 \
@@ -54,8 +54,8 @@ CARGO_CRATES=	addr2line-0.21.0 \
 		encode_unicode-0.3.6 \
 		equivalent-1.0.1 \
 		errno-0.3.8 \
-		ffmpeg-sys-the-third-1.1.1+ffmpeg-6.0 \
-		ffmpeg-the-third-1.2.2+ffmpeg-6.0 \
+		ffmpeg-sys-the-third-2.0.0+ffmpeg-7.0 \
+		ffmpeg-the-third-2.0.1+ffmpeg-7.0 \
 		flexi_logger-0.27.3 \
 		form_urlencoded-1.2.1 \
 		getrandom-0.2.12 \
@@ -115,7 +115,6 @@ CARGO_CRATES=	addr2line-0.21.0 \
 		parking_lot_core-0.9.9 \
 		paste-1.0.14 \
 		path_abs-0.5.1 \
-		peeking_take_while-0.1.2 \
 		percent-encoding-2.3.1 \
 		pin-project-lite-0.2.13 \
 		pkg-config-0.3.28 \
diff --git a/multimedia/av1an/distinfo b/multimedia/av1an/distinfo
index 202ad73539e4..96cf9b4ce605 100644
--- a/multimedia/av1an/distinfo
+++ b/multimedia/av1an/distinfo
@@ -49,12 +49,12 @@ SHA256 (rust/crates/av1-grain-0.2.3.crate) = 6678909d8c5d46a42abcf571271e15fdbc0
 SIZE (rust/crates/av1-grain-0.2.3.crate) = 34703
 SHA256 (rust/crates/backtrace-0.3.69.crate) = 2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837
 SIZE (rust/crates/backtrace-0.3.69.crate) = 77299
-SHA256 (rust/crates/bindgen-0.64.0.crate) = c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4
-SIZE (rust/crates/bindgen-0.64.0.crate) = 204700
+SHA256 (rust/crates/bindgen-0.69.4.crate) = a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0
+SIZE (rust/crates/bindgen-0.69.4.crate) = 221092
 SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
 SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
-SHA256 (rust/crates/bitflags-2.4.1.crate) = 327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07
-SIZE (rust/crates/bitflags-2.4.1.crate) = 37043
+SHA256 (rust/crates/bitflags-2.5.0.crate) = cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1
+SIZE (rust/crates/bitflags-2.5.0.crate) = 43821
 SHA256 (rust/crates/bitstream-io-2.2.0.crate) = 06c9989a51171e2e81038ab168b6ae22886fe9ded214430dbb4f41c28cf176da
 SIZE (rust/crates/bitstream-io-2.2.0.crate) = 34113
 SHA256 (rust/crates/built-0.7.1.crate) = 38d17f4d6e4dc36d1a02fbedc2753a096848e7c1b0772f7654eab8e2c927dd53
@@ -111,10 +111,10 @@ SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8d
 SIZE (rust/crates/equivalent-1.0.1.crate) = 6615
 SHA256 (rust/crates/errno-0.3.8.crate) = a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245
 SIZE (rust/crates/errno-0.3.8.crate) = 10645
-SHA256 (rust/crates/ffmpeg-sys-the-third-1.1.1+ffmpeg-6.0.crate) = 94a4b2e9c02074c0ee85661b23b3ac849bad6afc554b503c183975f5e2e0d3de
-SIZE (rust/crates/ffmpeg-sys-the-third-1.1.1+ffmpeg-6.0.crate) = 14894
-SHA256 (rust/crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0.crate) = 301c55f432cce71d0cc5266e8e70e69cc7a865f8aa8785c44cb56c3935a13715
-SIZE (rust/crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0.crate) = 89833
+SHA256 (rust/crates/ffmpeg-sys-the-third-2.0.0+ffmpeg-7.0.crate) = a82bfdb0a7925996707f0a7dc37b2f3251ff5a15d26e78c586adb60c240dedc5
+SIZE (rust/crates/ffmpeg-sys-the-third-2.0.0+ffmpeg-7.0.crate) = 17325
+SHA256 (rust/crates/ffmpeg-the-third-2.0.1+ffmpeg-7.0.crate) = c4aa99eb55979d5c1db3b0b7a807a5e50dda07f5f6c2dbc6e9b50c205f611646
+SIZE (rust/crates/ffmpeg-the-third-2.0.1+ffmpeg-7.0.crate) = 93679
 SHA256 (rust/crates/flexi_logger-0.27.3.crate) = 2ac35b454b60e1836602173e2eb7ef531173388c0212e02ec7f9fac086159ee5
 SIZE (rust/crates/flexi_logger-0.27.3.crate) = 216178
 SHA256 (rust/crates/form_urlencoded-1.2.1.crate) = e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456
@@ -233,8 +233,6 @@ SHA256 (rust/crates/paste-1.0.14.crate) = de3145af08024dea9fa9914f381a17b8fc6034
 SIZE (rust/crates/paste-1.0.14.crate) = 18157
 SHA256 (rust/crates/path_abs-0.5.1.crate) = 05ef02f6342ac01d8a93b65f96db53fe68a92a15f41144f97fb00a9e669633c3
 SIZE (rust/crates/path_abs-0.5.1.crate) = 31072
-SHA256 (rust/crates/peeking_take_while-0.1.2.crate) = 19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099
-SIZE (rust/crates/peeking_take_while-0.1.2.crate) = 6697
 SHA256 (rust/crates/percent-encoding-2.3.1.crate) = e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e
 SIZE (rust/crates/percent-encoding-2.3.1.crate) = 10235
 SHA256 (rust/crates/pin-project-lite-0.2.13.crate) = 8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58
diff --git a/multimedia/av1an/files/patch-ffmpeg b/multimedia/av1an/files/patch-ffmpeg
index f9a5ee9fd73b..e93e44713a00 100644
--- a/multimedia/av1an/files/patch-ffmpeg
+++ b/multimedia/av1an/files/patch-ffmpeg
@@ -22,8 +22,8 @@ help: a similar name exists in the module
 23 |     EPROTONOSUPPORT, EPROTOTYPE, ERANGE, EROFS, ESPIPE, ESRCH, VTIME, ETIMEDOUT, ETXTBSY,
    |                                                                ~~~~~
 
---- cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/error.rs.orig	2006-07-24 01:21:28 UTC
-+++ cargo-crates/ffmpeg-the-third-1.2.2+ffmpeg-6.0/src/util/error.rs
+--- cargo-crates/ffmpeg-the-third-2.0.1+ffmpeg-7.0/src/util/error.rs.orig	2006-07-24 01:21:28 UTC
++++ cargo-crates/ffmpeg-the-third-2.0.1+ffmpeg-7.0/src/util/error.rs
 @@ -19,10 +19,10 @@ pub use libc::{
      EBUSY, ECANCELED, ECHILD, ECONNABORTED, ECONNREFUSED, ECONNRESET, EDEADLK, EDESTADDRREQ, EDOM,
      EEXIST, EFAULT, EFBIG, EHOSTUNREACH, EIDRM, EILSEQ, EINPROGRESS, EINTR, EINVAL, EIO, EISCONN,
diff --git a/multimedia/av1an/files/patch-ffmpeg7 b/multimedia/av1an/files/patch-ffmpeg7
new file mode 100644
index 000000000000..52182f6f3345
--- /dev/null
+++ b/multimedia/av1an/files/patch-ffmpeg7
@@ -0,0 +1,146 @@
+https://github.com/master-of-zen/Av1an/commit/6db39663755a
+
+--- Cargo.lock.orig	2024-02-13 12:45:43 UTC
++++ Cargo.lock
+@@ -311,22 +311,22 @@ name = "bindgen"
+ 
+ [[package]]
+ name = "bindgen"
+-version = "0.64.0"
++version = "0.69.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4"
++checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
+ dependencies = [
+- "bitflags 1.3.2",
++ "bitflags 2.5.0",
+  "cexpr",
+  "clang-sys",
++ "itertools",
+  "lazy_static",
+  "lazycell",
+- "peeking_take_while",
+  "proc-macro2",
+  "quote",
+  "regex",
+  "rustc-hash",
+  "shlex",
+- "syn 1.0.109",
++ "syn 2.0.48",
+ ]
+ 
+ [[package]]
+@@ -337,9 +337,9 @@ name = "bitflags"
+ 
+ [[package]]
+ name = "bitflags"
+-version = "2.4.1"
++version = "2.5.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
++checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+ 
+ [[package]]
+ name = "bitstream-io"
+@@ -581,25 +581,24 @@ name = "ffmpeg-sys-the-third"
+ 
+ [[package]]
+ name = "ffmpeg-sys-the-third"
+-version = "1.1.1+ffmpeg-6.0"
++version = "2.0.0+ffmpeg-7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "94a4b2e9c02074c0ee85661b23b3ac849bad6afc554b503c183975f5e2e0d3de"
++checksum = "a82bfdb0a7925996707f0a7dc37b2f3251ff5a15d26e78c586adb60c240dedc5"
+ dependencies = [
+  "bindgen",
+  "cc",
+  "libc",
+- "num_cpus",
+  "pkg-config",
+  "vcpkg",
+ ]
+ 
+ [[package]]
+ name = "ffmpeg-the-third"
+-version = "1.2.2+ffmpeg-6.0"
++version = "2.0.1+ffmpeg-7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "301c55f432cce71d0cc5266e8e70e69cc7a865f8aa8785c44cb56c3935a13715"
++checksum = "c4aa99eb55979d5c1db3b0b7a807a5e50dda07f5f6c2dbc6e9b50c205f611646"
+ dependencies = [
+- "bitflags 1.3.2",
++ "bitflags 2.5.0",
+  "ffmpeg-sys-the-third",
+  "libc",
+  "serde",
+@@ -652,7 +651,7 @@ dependencies = [
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd"
+ dependencies = [
+- "bitflags 2.4.1",
++ "bitflags 2.5.0",
+  "libc",
+  "libgit2-sys",
+  "log",
+@@ -1143,12 +1142,6 @@ dependencies = [
+ ]
+ 
+ [[package]]
+-name = "peeking_take_while"
+-version = "0.1.2"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+-
+-[[package]]
+ name = "percent-encoding"
+ version = "2.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+@@ -1420,7 +1413,7 @@ dependencies = [
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca"
+ dependencies = [
+- "bitflags 2.4.1",
++ "bitflags 2.5.0",
+  "errno",
+  "libc",
+  "linux-raw-sys",
+--- av1an-core/Cargo.toml.orig	2024-02-13 12:45:43 UTC
++++ av1an-core/Cargo.toml
+@@ -63,7 +63,7 @@ package = "ffmpeg-the-third"
+ 
+ [dependencies.ffmpeg]
+ package = "ffmpeg-the-third"
+-version = "1.2.0"
++version = "2.0.1"
+ features = ["serialize"]
+ 
+ [dependencies.plotters]
+--- av1an-core/src/ffmpeg.rs.orig	2024-02-13 12:45:43 UTC
++++ av1an-core/src/ffmpeg.rs
+@@ -51,6 +51,7 @@ pub fn num_frames(source: &Path) -> Result<usize, ffmp
+   Ok(
+     ictx
+       .packets()
++      .filter_map(Result::ok)
+       .filter(|(stream, _)| stream.index() == video_stream_index)
+       .count(),
+   )
+@@ -122,6 +123,7 @@ pub fn get_keyframes(source: &Path) -> Result<Vec<usiz
+ 
+   let kfs = ictx
+     .packets()
++    .filter_map(Result::ok)
+     .filter(|(stream, _)| stream.index() == video_stream_index)
+     .map(|(_, packet)| packet)
+     .enumerate()
+--- av1an/Cargo.toml.orig	2024-02-13 12:45:43 UTC
++++ av1an/Cargo.toml
+@@ -39,7 +39,7 @@ package = "ffmpeg-the-third"
+ 
+ [dependencies.ffmpeg]
+ package = "ffmpeg-the-third"
+-version = "1.2.0"
++version = "2.0.1"
+ features = ["serialize"]
+ 
+ [features]