From 814f8b9464dc250a7093415fdd72a27c6f9e7621 Mon Sep 17 00:00:00 2001 From: FreezyLemon Date: Fri, 18 Oct 2024 06:06:01 +0200 Subject: [PATCH] FFmpeg 7.1 support (#74) * Add new build-lib features * Update CI to use 7.1 jrottenberg/ffmpeg does not have 7.1 yet * Add libavcodec version for 7.1 * Add FF_API flags for 7.1 * Update crate versions, bump MSRV to 1.65 * Add new audio channel masks * Add new AVColorSpace variants * Add new AVFrameSideDataType variants * Add new AVCodecID variants * Add new AVPacketSideDataType variants --- .github/workflows/build.yml | 24 +- Cargo.lock.MSRV | 321 ++++++++++-------- Cargo.toml | 6 +- README.md | 2 +- ffmpeg-sys-the-third/Cargo.toml | 17 +- ffmpeg-sys-the-third/build.rs | 23 +- .../src/avutil/channel_layout.rs | 9 + src/codec/id.rs | 12 + src/codec/packet/side_data.rs | 15 + src/util/channel_layout/channel.rs | 29 ++ src/util/color/space.rs | 21 ++ src/util/frame/side_data.rs | 15 + 12 files changed, 337 insertions(+), 157 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4b5a45e..e8b3d93 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,7 +30,15 @@ jobs: strategy: matrix: ffmpeg_version: - ["4.2", "4.3", "4.4", "5.0", "5.1", "6.0", "6.1", "7.0"] + - "4.2" + - "4.3" + - "4.4" + - "5.0" + - "5.1" + - "6.0" + - "6.1" + - "7.0" + - "7.1" fail-fast: false steps: @@ -45,9 +53,9 @@ jobs: components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 with: - prefix-key: "v2-rust" + prefix-key: "v3-rust" # Only save cache for one FFmpeg version - save-if: ${{ matrix.ffmpeg_version == '7.0' }} + save-if: ${{ matrix.ffmpeg_version == '7.1' }} - name: Check format run: cargo fmt -- --check @@ -108,7 +116,7 @@ jobs: strategy: matrix: # GyanD builds don't go as far back as the Ubuntu builds - ffmpeg_version: ["4.4", "5.0", "5.1", "6.0", "6.1", "7.0"] + ffmpeg_version: ["4.4", "5.0", "5.1", "6.0", "6.1", "7.0", "7.1"] fail-fast: false env: @@ -138,8 +146,8 @@ jobs: components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 with: - prefix-key: "v2-rust" - save-if: ${{ matrix.ffmpeg_version == '7.0' }} + prefix-key: "v3-rust" + save-if: ${{ matrix.ffmpeg_version == '7.1' }} - name: Check format run: cargo fmt -- --check @@ -167,8 +175,8 @@ jobs: apt-get update apt-get install -y --no-install-recommends clang curl pkg-config # rust-version from Cargo.toml - - name: Install Rust 1.61.0 - uses: dtolnay/rust-toolchain@1.61.0 + - name: Install Rust 1.65.0 + uses: dtolnay/rust-toolchain@1.65.0 - uses: Swatinem/rust-cache@v2 with: prefix-key: "v2-rust" diff --git a/Cargo.lock.MSRV b/Cargo.lock.MSRV index 96df275..d203e92 100644 --- a/Cargo.lock.MSRV +++ b/Cargo.lock.MSRV @@ -8,6 +8,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aho-corasick" version = "1.1.3" @@ -25,9 +31,9 @@ checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" [[package]] name = "anyhow" -version = "1.0.83" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "arbitrary" @@ -48,15 +54,15 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "av1-grain" @@ -83,11 +89,11 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.4" +version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cexpr", "clang-sys", "itertools", @@ -115,21 +121,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitstream-io" -version = "2.3.0" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e" +checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452" [[package]] name = "built" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41bfbdb21256b87a8b5e80fab81a8eed158178e812fd7ba451907518b2742f16" +checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" [[package]] name = "bumpalo" @@ -139,9 +145,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" [[package]] name = "byteorder" @@ -157,12 +163,13 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "cc" -version = "1.0.94" +version = "1.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" +checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -202,9 +209,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -219,9 +226,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] @@ -247,9 +254,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -259,9 +266,9 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "either" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "equivalent" @@ -279,7 +286,7 @@ dependencies = [ "flume", "half", "lebe", - "miniz_oxide", + "miniz_oxide 0.7.4", "rayon-core", "smallvec", "zune-inflate", @@ -287,16 +294,16 @@ dependencies = [ [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" dependencies = [ "simd-adler32", ] [[package]] name = "ffmpeg-sys-the-third" -version = "2.0.0+ffmpeg-7.0" +version = "2.1.0+ffmpeg-7.1" dependencies = [ "bindgen", "cc", @@ -308,9 +315,9 @@ dependencies = [ [[package]] name = "ffmpeg-the-third" -version = "2.0.1+ffmpeg-7.0" +version = "2.1.0+ffmpeg-7.1" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "ffmpeg-sys-the-third", "image", "libc", @@ -319,12 +326,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -375,9 +382,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "heck" @@ -387,12 +394,12 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "image" -version = "0.25.1" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd54d660e773627692c524beaad361aca785a4f9f5730ce91f42aabe5bce3d11" +checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" dependencies = [ "bytemuck", - "byteorder", + "byteorder-lite", "color_quant", "exr", "gif", @@ -410,12 +417,12 @@ dependencies = [ [[package]] name = "image-webp" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d730b085583c4d789dfd07fdcf185be59501666a90c97c40162b37e4fdad272d" +checksum = "f79afb8cbee2ef20f59ccd477a218c12a93943d075b492015ecb1bb81f8ee904" dependencies = [ "byteorder-lite", - "thiserror", + "quick-error", ] [[package]] @@ -426,9 +433,9 @@ checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126" [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", "hashbrown", @@ -456,9 +463,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -471,9 +478,9 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -489,9 +496,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.154" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libfuzzer-sys" @@ -506,9 +513,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", "windows-targets", @@ -526,9 +533,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "loop9" @@ -546,14 +553,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" dependencies = [ "cfg-if", - "rayon", ] [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "minimal-lexical" @@ -563,11 +569,20 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", "simd-adler32", ] @@ -595,9 +610,9 @@ checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -645,9 +660,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "paste" @@ -657,34 +672,37 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "png" -version = "0.17.13" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" dependencies = [ "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro2" -version = "1.0.82" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] @@ -725,9 +743,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -799,16 +817,15 @@ dependencies = [ [[package]] name = "ravif" -version = "0.11.5" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234" +checksum = "a8f0bfd976333248de2078d350bfdf182ff96e168a24d23d2436cef320dd4bdd" dependencies = [ "avif-serialize", "imgref", "loop9", "quick-error", "rav1e", - "rayon", "rgb", ] @@ -834,9 +851,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -846,9 +863,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.9" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -857,15 +874,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rgb" -version = "0.8.37" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" dependencies = [ "bytemuck", ] @@ -884,18 +901,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.201" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.201" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", @@ -904,9 +921,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -949,9 +966,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.61" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -973,24 +990,24 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "thiserror" -version = "1.0.60" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.60" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", @@ -1010,9 +1027,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.12" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", @@ -1022,18 +1039,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.12" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "serde", @@ -1044,9 +1061,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "v_frame" @@ -1079,19 +1096,20 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "ef073ced962d62984fb38a36e5fdc1a2b23c9e0e1fa0689bb97afa4202ef6887" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "c4bfab14ef75323f4eb75fa52ee0a3fb59611977fd3240da19b2cf36ff85030e" dependencies = [ "bumpalo", "log", @@ -1104,9 +1122,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "a7bec9830f60924d9ceb3ef99d55c155be8afa76954edffbb5936ff4509474e7" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1114,9 +1132,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "4c74f6e152a76a2ad448e223b0fc0b6b5747649c3d769cc6bf45737bf97d0ed6" dependencies = [ "proc-macro2", "quote", @@ -1127,9 +1145,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "a42f6c679374623f295a8623adfe63d9284091245c3504bde47c17a3ce2777d9" [[package]] name = "weezl" @@ -1139,9 +1157,9 @@ checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1155,61 +1173,82 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.8" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zune-core" version = "0.4.12" @@ -1227,9 +1266,9 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec866b44a2a1fd6133d363f073ca1b179f438f99e7e5bfb1e33f7181facfe448" +checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768" dependencies = [ "zune-core", ] diff --git a/Cargo.toml b/Cargo.toml index 89660bc..e82c0d4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ffmpeg-the-third" -version = "2.0.1+ffmpeg-7.0" +version = "2.1.0+ffmpeg-7.1" edition = "2021" authors = ["meh. ", "Zhiming Wang "] @@ -16,7 +16,7 @@ categories = ["multimedia"] include = ["LICENSE", "build.rs", "src/"] # When changing MSRV: Also update build.yml and README.md -rust-version = "1.61.0" +rust-version = "1.65.0" [dependencies] libc = "0.2" @@ -27,7 +27,7 @@ version = "0.25" optional = true [dependencies.ffmpeg-sys-the-third] -version = "2.0.0" +version = "2.1.0" default-features = false path = "ffmpeg-sys-the-third" diff --git a/README.md b/README.md index 29c109f..e46cfa2 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ _See [CHANGELOG.md](CHANGELOG.md) for other information on version upgrades._ ## Minimum supported Rust version (MSRV) -Both `ffmpeg-the-third` and `ffmpeg-sys-the-third` currently require a Rust version of 1.61.0 or higher. Increases in MSRV will result in a semver MINOR version increase. +Both `ffmpeg-the-third` and `ffmpeg-sys-the-third` currently require a Rust version of 1.65.0 or higher. Increases in MSRV will result in a semver MINOR version increase. If you are having issues compiling this crate on your version of Rust, there are two tools you can use to help find MSRV-compatible dependency versions: diff --git a/ffmpeg-sys-the-third/Cargo.toml b/ffmpeg-sys-the-third/Cargo.toml index 0d6a41b..5f5051a 100644 --- a/ffmpeg-sys-the-third/Cargo.toml +++ b/ffmpeg-sys-the-third/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ffmpeg-sys-the-third" -version = "2.0.0+ffmpeg-7.0" +version = "2.1.0+ffmpeg-7.1" links = "ffmpeg" edition = "2021" @@ -19,7 +19,7 @@ keywords = ["audio", "video"] categories = ["multimedia", "external-ffi-bindings"] # When changing MSRV: Also update build.yml and README.md -rust-version = "1.61.0" +rust-version = "1.65.0" [lib] # Disable doctests as a workaround for https://github.com/rust-lang/rust-bindgen/issues/1313 @@ -98,35 +98,48 @@ build-lib-vmaf = ["build"] # encoders/decoders build-lib-aacplus = ["build"] build-lib-celt = ["build"] +build-lib-codec2 = ["build"] build-lib-dav1d = ["build"] +build-lib-davs2 = ["build"] build-lib-dcadec = ["build"] build-lib-faac = ["build"] build-lib-fdk-aac = ["build"] build-lib-gsm = ["build"] build-lib-ilbc = ["build"] +build-lib-jxl = ["build"] build-lib-kvazaar = ["build"] +build-lib-lc3 = ["build"] +build-lib-lcevc-dec = ["build"] build-lib-mp3lame = ["build"] build-lib-opencore-amrnb = ["build"] build-lib-opencore-amrwb = ["build"] build-lib-openh264 = ["build"] build-lib-openjpeg = ["build"] build-lib-opus = ["build"] +build-lib-rav1e = ["build"] build-lib-schroedinger = ["build"] build-lib-shine = ["build"] build-lib-snappy = ["build"] build-lib-speex = ["build"] build-lib-stagefright-h264 = ["build"] +build-lib-svtav1 = ["build"] build-lib-theora = ["build"] build-lib-twolame = ["build"] +build-lib-uavs3d = ["build"] build-lib-utvideo = ["build"] build-lib-vo-aacenc = ["build"] build-lib-vo-amrwbenc = ["build"] build-lib-vorbis = ["build"] build-lib-vpx = ["build"] +build-lib-vvenc = ["build"] build-lib-wavpack = ["build"] build-lib-webp = ["build"] build-lib-x264 = ["build"] build-lib-x265 = ["build"] +build-lib-xeve = ["build"] +build-lib-xevd = ["build"] +build-lib-xavs = ["build"] +build-lib-xavs2 = ["build"] build-lib-avs = ["build"] build-lib-xvid = ["build"] diff --git a/ffmpeg-sys-the-third/build.rs b/ffmpeg-sys-the-third/build.rs index f6a95e9..f9e125c 100644 --- a/ffmpeg-sys-the-third/build.rs +++ b/ffmpeg-sys-the-third/build.rs @@ -121,6 +121,9 @@ static AVUTIL_FEATURES: &[AVFeature] = &[ AVFeature::new("PALETTE_HAS_CHANGED"), AVFeature::new("VULKAN_CONTIGUOUS_MEMORY"), AVFeature::new("H274_FILM_GRAIN_VCS"), + AVFeature::new("MOD_UINTP2"), + AVFeature::new("RISCV_FD_ZBA"), + AVFeature::new("VULKAN_FIXED_QUEUES"), ]; static AVCODEC_FEATURES: &[AVFeature] = &[ @@ -209,6 +212,7 @@ static AVCODEC_FEATURES: &[AVFeature] = &[ AVFeature::new("AVCODEC_CLOSE"), AVFeature::new("BUFFER_MIN_SIZE"), AVFeature::new("VDPAU_ALLOC_GET_SET"), + AVFeature::new("QUALITY_FACTOR"), ]; static AVFORMAT_FEATURES: &[AVFeature] = &[ @@ -231,6 +235,7 @@ static AVFORMAT_FEATURES: &[AVFeature] = &[ AVFeature::new("ALLOW_FLUSH"), AVFeature::new("AVSTREAM_SIDE_DATA"), AVFeature::new("GET_DUR_ESTIMATE_METHOD"), + AVFeature::new("INTERNAL_TIMING"), ]; static AVDEVICE_FEATURES: &[AVFeature] = &[ @@ -484,13 +489,18 @@ static EXTERNAL_BUILD_LIBS: &[(&str, &str)] = &[ // Encoders/decoders ("AACPLUS", "libaacplus"), ("CELT", "libcelt"), - ("DCADEC", "libdcadec"), + ("CODEC2", "libcodec2"), ("DAV1D", "libdav1d"), + ("DAVS2", "libdavs2"), + ("DCADEC", "libdcadec"), ("FAAC", "libfaac"), ("FDK_AAC", "libfdk-aac"), ("GSM", "libgsm"), ("ILBC", "libilbc"), - ("VAZAAR", "libvazaar"), + ("JXL", "libjxl"), + ("KVAZAAR", "libkvazaar"), + ("LC3", "liblc3"), + ("LCEVC_DEC", "liblcevc-dec"), ("MP3LAME", "libmp3lame"), ("OPENCORE_AMRNB", "libopencore-amrnb"), ("OPENCORE_AMRWB", "libopencore-amrwb"), @@ -498,22 +508,30 @@ static EXTERNAL_BUILD_LIBS: &[(&str, &str)] = &[ ("OPENH265", "libopenh265"), ("OPENJPEG", "libopenjpeg"), ("OPUS", "libopus"), + ("RAV1E", "librav1e"), ("SCHROEDINGER", "libschroedinger"), ("SHINE", "libshine"), ("SNAPPY", "libsnappy"), ("SPEEX", "libspeex"), ("STAGEFRIGHT_H264", "libstagefright-h264"), + ("SVTAV1", "libsvtav1"), ("THEORA", "libtheora"), ("TWOLAME", "libtwolame"), + ("UAVS3D", "libuavs3d"), ("UTVIDEO", "libutvideo"), ("VO_AACENC", "libvo-aacenc"), ("VO_AMRWBENC", "libvo-amrwbenc"), ("VORBIS", "libvorbis"), ("VPX", "libvpx"), + ("VVENC", "libvvenc"), ("WAVPACK", "libwavpack"), ("WEBP", "libwebp"), ("X264", "libx264"), ("X265", "libx265"), + ("XEVE", "libxeve"), + ("XEVD", "libxevd"), + ("XAVS", "libxavs"), + ("XAVS2", "libxavs2"), ("AVS", "libavs"), ("XVID", "libxvid"), // Protocols @@ -837,6 +855,7 @@ fn check_features(include_paths: &[PathBuf]) { ("ffmpeg_6_0", 60, 3), ("ffmpeg_6_1", 60, 31), ("ffmpeg_7_0", 61, 3), + ("ffmpeg_7_1", 61, 19), ]; let lavc_version = *versions diff --git a/ffmpeg-sys-the-third/src/avutil/channel_layout.rs b/ffmpeg-sys-the-third/src/avutil/channel_layout.rs index d14b241..f23c57a 100644 --- a/ffmpeg-sys-the-third/src/avutil/channel_layout.rs +++ b/ffmpeg-sys-the-third/src/avutil/channel_layout.rs @@ -137,6 +137,15 @@ pub const AV_CH_BOTTOM_FRONT_CENTER: u64 = 1 << (AV_CHAN_BOTTOM_FRONT_CENTER as pub const AV_CH_BOTTOM_FRONT_LEFT: u64 = 1 << (AV_CHAN_BOTTOM_FRONT_LEFT as i32); pub const AV_CH_BOTTOM_FRONT_RIGHT: u64 = 1 << (AV_CHAN_BOTTOM_FRONT_RIGHT as i32); +#[cfg(feature = "ffmpeg_7_1")] +pub const AV_CH_SIDE_SURROUND_LEFT: u64 = 1 << (AV_CHAN_SIDE_SURROUND_LEFT as i32); +#[cfg(feature = "ffmpeg_7_1")] +pub const AV_CH_SIDE_SURROUND_RIGHT: u64 = 1 << (AV_CHAN_SIDE_SURROUND_RIGHT as i32); +#[cfg(feature = "ffmpeg_7_1")] +pub const AV_CH_TOP_SURROUND_LEFT: u64 = 1 << (AV_CHAN_TOP_SURROUND_LEFT as i32); +#[cfg(feature = "ffmpeg_7_1")] +pub const AV_CH_TOP_SURROUND_RIGHT: u64 = 1 << (AV_CHAN_TOP_SURROUND_RIGHT as i32); + // Audio channel layouts pub const AV_CH_LAYOUT_MONO: u64 = AV_CH_FRONT_CENTER; pub const AV_CH_LAYOUT_STEREO: u64 = AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT; diff --git a/src/codec/id.rs b/src/codec/id.rs index a4642c8..8863c14 100644 --- a/src/codec/id.rs +++ b/src/codec/id.rs @@ -644,8 +644,12 @@ pub enum Id { OSQ, #[cfg(feature = "ffmpeg_7_0")] QOA, + #[cfg(feature = "ffmpeg_7_1")] + LC3, #[cfg(feature = "ffmpeg_6_1")] SMPTE_2038, + #[cfg(feature = "ffmpeg_7_1")] + LCEVC, } impl Id { @@ -1294,8 +1298,12 @@ impl From for Id { AV_CODEC_ID_OSQ => Id::OSQ, #[cfg(feature = "ffmpeg_7_0")] AV_CODEC_ID_QOA => Id::QOA, + #[cfg(feature = "ffmpeg_7_1")] + AV_CODEC_ID_LC3 => Id::LC3, #[cfg(feature = "ffmpeg_6_1")] AV_CODEC_ID_SMPTE_2038 => Id::SMPTE_2038, + #[cfg(feature = "ffmpeg_7_1")] + AV_CODEC_ID_LCEVC => Id::LCEVC, #[cfg(feature = "non-exhaustive-enums")] _ => unimplemented!(), @@ -1938,8 +1946,12 @@ impl From for AVCodecID { Id::OSQ => AV_CODEC_ID_OSQ, #[cfg(feature = "ffmpeg_7_0")] Id::QOA => AV_CODEC_ID_QOA, + #[cfg(feature = "ffmpeg_7_1")] + Id::LC3 => AV_CODEC_ID_LC3, #[cfg(feature = "ffmpeg_6_1")] Id::SMPTE_2038 => AV_CODEC_ID_SMPTE_2038, + #[cfg(feature = "ffmpeg_7_1")] + Id::LCEVC => AV_CODEC_ID_LCEVC, } } } diff --git a/src/codec/packet/side_data.rs b/src/codec/packet/side_data.rs index a950f3f..566b5d8 100644 --- a/src/codec/packet/side_data.rs +++ b/src/codec/packet/side_data.rs @@ -63,6 +63,11 @@ pub enum Type { IAMF_RECON_GAIN_INFO_PARAM, #[cfg(feature = "ffmpeg_7_0")] AMBIENT_VIEWING_ENVIRONMENT, + + #[cfg(feature = "ffmpeg_7_1")] + FrameCropping, + #[cfg(feature = "ffmpeg_7_1")] + LCEVC, } impl From for Type { @@ -122,6 +127,11 @@ impl From for Type { #[cfg(feature = "ffmpeg_7_0")] AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT => Type::AMBIENT_VIEWING_ENVIRONMENT, + #[cfg(feature = "ffmpeg_7_1")] + AV_PKT_DATA_FRAME_CROPPING => Type::FrameCropping, + #[cfg(feature = "ffmpeg_7_1")] + AV_PKT_DATA_LCEVC => Type::LCEVC, + #[cfg(feature = "non-exhaustive-enums")] _ => unimplemented!(), } @@ -184,6 +194,11 @@ impl From for AVPacketSideDataType { Type::IAMF_RECON_GAIN_INFO_PARAM => AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM, #[cfg(feature = "ffmpeg_7_0")] Type::AMBIENT_VIEWING_ENVIRONMENT => AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT, + + #[cfg(feature = "ffmpeg_7_1")] + Type::FrameCropping => AV_PKT_DATA_FRAME_CROPPING, + #[cfg(feature = "ffmpeg_7_1")] + Type::LCEVC => AV_PKT_DATA_LCEVC, } } } diff --git a/src/util/channel_layout/channel.rs b/src/util/channel_layout/channel.rs index 881f808..6f36cd7 100644 --- a/src/util/channel_layout/channel.rs +++ b/src/util/channel_layout/channel.rs @@ -40,6 +40,15 @@ pub enum Channel { BottomFrontLeft, BottomFrontRight, + #[cfg(feature = "ffmpeg_7_1")] + SideSurroundLeft, + #[cfg(feature = "ffmpeg_7_1")] + SideSurroundRight, + #[cfg(feature = "ffmpeg_7_1")] + TopSurroundLeft, + #[cfg(feature = "ffmpeg_7_1")] + TopSurroundRight, + /// Channel is empty and can be safely skipped. Unused, @@ -142,6 +151,16 @@ impl From for Channel { AV_CHAN_BOTTOM_FRONT_CENTER => BottomFrontCenter, AV_CHAN_BOTTOM_FRONT_LEFT => BottomFrontLeft, AV_CHAN_BOTTOM_FRONT_RIGHT => BottomFrontRight, + + #[cfg(feature = "ffmpeg_7_1")] + AV_CHAN_SIDE_SURROUND_LEFT => SideSurroundLeft, + #[cfg(feature = "ffmpeg_7_1")] + AV_CHAN_SIDE_SURROUND_RIGHT => SideSurroundRight, + #[cfg(feature = "ffmpeg_7_1")] + AV_CHAN_TOP_SURROUND_LEFT => TopSurroundLeft, + #[cfg(feature = "ffmpeg_7_1")] + AV_CHAN_TOP_SURROUND_RIGHT => TopSurroundRight, + AV_CHAN_UNUSED => Unused, AV_CHAN_UNKNOWN => Unknown, AV_CHAN_AMBISONIC_BASE => AmbisonicBase, @@ -190,6 +209,16 @@ impl From for AVChannel { BottomFrontCenter => AV_CHAN_BOTTOM_FRONT_CENTER, BottomFrontLeft => AV_CHAN_BOTTOM_FRONT_LEFT, BottomFrontRight => AV_CHAN_BOTTOM_FRONT_RIGHT, + + #[cfg(feature = "ffmpeg_7_1")] + SideSurroundLeft => AV_CHAN_SIDE_SURROUND_LEFT, + #[cfg(feature = "ffmpeg_7_1")] + SideSurroundRight => AV_CHAN_SIDE_SURROUND_RIGHT, + #[cfg(feature = "ffmpeg_7_1")] + TopSurroundLeft => AV_CHAN_TOP_SURROUND_LEFT, + #[cfg(feature = "ffmpeg_7_1")] + TopSurroundRight => AV_CHAN_TOP_SURROUND_RIGHT, + Unused => AV_CHAN_UNUSED, Unknown => AV_CHAN_UNKNOWN, AmbisonicBase => AV_CHAN_AMBISONIC_BASE, diff --git a/src/util/color/space.rs b/src/util/color/space.rs index 789f65d..eaceca1 100644 --- a/src/util/color/space.rs +++ b/src/util/color/space.rs @@ -25,6 +25,13 @@ pub enum Space { ChromaDerivedNCL, ChromaDerivedCL, ICTCP, + + #[cfg(feature = "ffmpeg_7_1")] + IPTC2, + #[cfg(feature = "ffmpeg_7_1")] + YCGCORE, + #[cfg(feature = "ffmpeg_7_1")] + YCGCORO, } impl Space { @@ -63,6 +70,13 @@ impl From for Space { AVCOL_SPC_CHROMA_DERIVED_CL => Space::ChromaDerivedCL, AVCOL_SPC_ICTCP => Space::ICTCP, + #[cfg(feature = "ffmpeg_7_1")] + AVCOL_SPC_IPT_C2 => Space::IPTC2, + #[cfg(feature = "ffmpeg_7_1")] + AVCOL_SPC_YCGCO_RE => Space::YCGCORE, + #[cfg(feature = "ffmpeg_7_1")] + AVCOL_SPC_YCGCO_RO => Space::YCGCORO, + #[cfg(feature = "non-exhaustive-enums")] _ => unimplemented!(), } @@ -88,6 +102,13 @@ impl From for AVColorSpace { Space::ChromaDerivedNCL => AVCOL_SPC_CHROMA_DERIVED_NCL, Space::ChromaDerivedCL => AVCOL_SPC_CHROMA_DERIVED_CL, Space::ICTCP => AVCOL_SPC_ICTCP, + + #[cfg(feature = "ffmpeg_7_1")] + Space::IPTC2 => AVCOL_SPC_IPT_C2, + #[cfg(feature = "ffmpeg_7_1")] + Space::YCGCORE => AVCOL_SPC_YCGCO_RE, + #[cfg(feature = "ffmpeg_7_1")] + Space::YCGCORO => AVCOL_SPC_YCGCO_RO, } } } diff --git a/src/util/frame/side_data.rs b/src/util/frame/side_data.rs index 499e932..2413221 100644 --- a/src/util/frame/side_data.rs +++ b/src/util/frame/side_data.rs @@ -64,6 +64,11 @@ pub enum Type { #[cfg(feature = "ffmpeg_6_1")] VIDEO_HINT, + + #[cfg(feature = "ffmpeg_7_1")] + LCEVC, + #[cfg(feature = "ffmpeg_7_1")] + ViewId, } impl Type { @@ -130,6 +135,11 @@ impl From for Type { #[cfg(feature = "ffmpeg_6_1")] AV_FRAME_DATA_VIDEO_HINT => Type::VIDEO_HINT, + #[cfg(feature = "ffmpeg_7_1")] + AV_FRAME_DATA_LCEVC => Type::LCEVC, + #[cfg(feature = "ffmpeg_7_1")] + AV_FRAME_DATA_VIEW_ID => Type::ViewId, + #[cfg(feature = "non-exhaustive-enums")] _ => unimplemented!(), } @@ -190,6 +200,11 @@ impl From for AVFrameSideDataType { #[cfg(feature = "ffmpeg_6_1")] Type::VIDEO_HINT => AV_FRAME_DATA_VIDEO_HINT, + + #[cfg(feature = "ffmpeg_7_1")] + Type::LCEVC => AV_FRAME_DATA_LCEVC, + #[cfg(feature = "ffmpeg_7_1")] + Type::ViewId => AV_FRAME_DATA_VIEW_ID, } } }