diff --git a/Cargo.lock b/Cargo.lock index b4587e1..d96a9a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.24" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e08104bebc65a46f8bc7aa733d39ea6874bfa7156f41a46b805785e3af1587d" +checksum = "6f90148830dac590fac7ccfe78ec4a8ea404c60f75a24e16407a71f0f40de775" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -76,9 +76,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" [[package]] name = "approx" @@ -103,7 +103,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -175,12 +175,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.0" @@ -205,7 +199,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -227,7 +221,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.58", + "syn 2.0.59", "which", ] @@ -266,15 +260,15 @@ dependencies = [ [[package]] name = "built" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d17f4d6e4dc36d1a02fbedc2753a096848e7c1b0772f7654eab8e2c927dd53" +checksum = "41bfbdb21256b87a8b5e80fab81a8eed158178e812fd7ba451907518b2742f16" [[package]] name = "bumpalo" -version = "3.15.4" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" @@ -302,9 +296,9 @@ checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" [[package]] name = "cc" -version = "1.0.90" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" dependencies = [ "jobserver", "libc", @@ -321,9 +315,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" dependencies = [ "smallvec", "target-lexicon", @@ -337,16 +331,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -493,7 +487,7 @@ checksum = "64b697ac90ff296f0fc031ee5a61c7ac31fb9fff50e3fb32873b09223613fc0c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -515,15 +509,15 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "either" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -685,9 +679,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "js-sys", @@ -863,9 +857,9 @@ dependencies = [ [[package]] name = "half" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ "cfg-if", "crunchy", @@ -963,9 +957,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "hyper" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" dependencies = [ "bytes", "futures-channel", @@ -1135,7 +1129,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -1161,9 +1155,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +checksum = "685a7d121ee3f65ae4fddd72b25a04bb36b6af81bc0828f7d5434c0fe60fa3a2" dependencies = [ "libc", ] @@ -1239,7 +1233,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -1452,9 +1446,9 @@ checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" [[package]] name = "num" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" dependencies = [ "num-bigint", "num-complex", @@ -1493,7 +1487,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -1565,9 +1559,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opencv" -version = "0.89.0" +version = "0.90.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38147846b39e60b686bf8f5bd289b0a667c5bb629e37c88569339a07dab97970" +checksum = "525ba5814b4b82cd8305fe1db6df6ad91568574d276c1fb1e92b22706ec0d017" dependencies = [ "cc", "dunce", @@ -1584,9 +1578,9 @@ dependencies = [ [[package]] name = "opencv-binding-generator" -version = "0.85.0" +version = "0.86.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f742feaf7cbc1279aea73d7bf0834896ca5f226cc9230d212e5092440776b81c" +checksum = "e31b62a9dc77684935c80b6cae9aa204ae3310f9836e56fa83cc4567d521ce6f" dependencies = [ "clang", "clang-sys", @@ -1619,7 +1613,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -1765,7 +1759,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -1813,19 +1807,19 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" +checksum = "5ac2cf0f2e4f42b49f5ffd07dae8d746508ef7526c13940e5f524012ae6c6550" dependencies = [ "proc-macro2", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] @@ -1846,7 +1840,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" dependencies = [ "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -1866,9 +1860,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -2033,7 +2027,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e6cc1e89e689536eb5aeede61520e874df5a4707df811cd5da4aa5fbb2aae19" dependencies = [ - "base64 0.22.0", + "base64", "bytes", "encoding_rs", "futures-core", @@ -2100,11 +2094,10 @@ dependencies = [ [[package]] name = "rsmpeg" -version = "0.14.2+ffmpeg.6.1" +version = "0.15.0+ffmpeg.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927012cd6ae43519f519741f4a69602ce3a47cf84750784da124dffd03527cc0" +checksum = "4fd06356fe9f1b77b8e6a5cfd771c124515a30d36cfb785f3fc7f135572ef4ba" dependencies = [ - "libc", "paste", "rusty_ffmpeg", "thiserror", @@ -2137,11 +2130,11 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.21.7", + "base64", "rustls-pki-types", ] @@ -2153,9 +2146,9 @@ checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" [[package]] name = "rusty_ffmpeg" -version = "0.13.3+ffmpeg.6.1" +version = "0.14.1+ffmpeg.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "716adffa5f909c8533611b1dab9ab5666bece35687845865b75ed6a990fc239c" +checksum = "40f4db8e3e23d4a3044d53a41aba5324eae70d3e7fe82375ce833521533bc315" dependencies = [ "bindgen 0.69.4", "camino", @@ -2226,29 +2219,29 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] name = "serde_json" -version = "1.0.115" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ "itoa", "ryu", @@ -2426,9 +2419,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a" dependencies = [ "proc-macro2", "quote", @@ -2521,7 +2514,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -2576,7 +2569,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -2815,7 +2808,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", "wasm-bindgen-shared", ] @@ -2849,7 +2842,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2902,9 +2895,9 @@ dependencies = [ [[package]] name = "wide" -version = "0.7.15" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89beec544f246e679fc25490e3f8e08003bc4bf612068f325120dad4cea02c1c" +checksum = "81a1851a719f11d1d2fea40e15c72f6c00de8c142d7ac47c1441cc7e4d0d5bc6" dependencies = [ "bytemuck", "safe_arch", @@ -2938,7 +2931,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -2956,7 +2949,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -2976,17 +2969,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -2997,9 +2991,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -3009,9 +3003,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -3021,9 +3015,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -3033,9 +3033,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -3045,9 +3045,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -3057,9 +3057,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -3069,15 +3069,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 60c2d34..4e4f023 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,10 +11,10 @@ flate2 = "1.0.28" image = "0.25.1" imageproc = "0.24.0" lazy_static = "1.4.0" -opencv = { version = "0.89.0", default-features = false, features = ["clang-runtime", "imgcodecs", "objdetect"] } +opencv = { version = "0.90.0", default-features = false, features = ["clang-runtime", "imgcodecs", "objdetect"] } reqwest = "0.12.3" rlottie = "0.5.2" -rsmpeg = "0.14.2" +rsmpeg = "0.15.0" grammers-client = { version = "0.5.0", features = ["unstable_raw"] } grammers-tl-types = "0.5.1" grammers-session = "0.5.1" diff --git a/builder/Dockerfile b/builder/Dockerfile index 3b7f5c0..c81f3b9 100644 --- a/builder/Dockerfile +++ b/builder/Dockerfile @@ -17,7 +17,7 @@ EOF chmod +x /usr/local/bin/rustc_wrapper RLOTTIE_VERSION="d400087" -FFMPEG_VERSION="6.1.1" +FFMPEG_VERSION="7.0" LIBVPX_VERSION="1.14.0" OPENCV_VERSION="4.9.0" diff --git a/src/ffmpeg.rs b/src/ffmpeg.rs index 13f4541..1c1b77d 100644 --- a/src/ffmpeg.rs +++ b/src/ffmpeg.rs @@ -54,7 +54,7 @@ pub fn video_to_png(data: Vec) -> Result, Error> { let (video_stream_index, mut decode_context) = { let (stream_index, mut decoder) = input_format_context - .find_best_stream(ffi::AVMediaType_AVMEDIA_TYPE_VIDEO)? + .find_best_stream(ffi::AVMEDIA_TYPE_VIDEO)? .ok_or("Failed to find the best stream")?; let stream = input_format_context.streams().get(stream_index).unwrap(); @@ -93,15 +93,14 @@ pub fn video_to_png(data: Vec) -> Result, Error> { }; let mut encode_context = { - let encoder = - AVCodec::find_encoder(ffi::AVCodecID_AV_CODEC_ID_PNG).ok_or("Encoder not found")?; + let encoder = AVCodec::find_encoder(ffi::AV_CODEC_ID_PNG).ok_or("Encoder not found")?; let mut encode_context = AVCodecContext::new(&encoder); encode_context.set_bit_rate(decode_context.bit_rate); encode_context.set_width(decode_context.width); encode_context.set_height(decode_context.height); encode_context.set_time_base(ffi::AVRational { num: 1, den: 1 }); - encode_context.set_pix_fmt(ffi::AVPixelFormat_AV_PIX_FMT_RGBA); + encode_context.set_pix_fmt(ffi::AV_PIX_FMT_RGBA); encode_context.open(None)?; encode_context @@ -116,6 +115,9 @@ pub fn video_to_png(data: Vec) -> Result, Error> { encode_context.height, encode_context.pix_fmt, ffi::SWS_FAST_BILINEAR | ffi::SWS_ACCURATE_RND, + None, + None, + None, ) .ok_or("Invalid sws_context parameter")?; let image_buffer = AVImage::new( diff --git a/src/video.rs b/src/video.rs index a3ad5d2..4ca71c0 100644 --- a/src/video.rs +++ b/src/video.rs @@ -9,7 +9,7 @@ use rsmpeg::avcodec::{AVCodec, AVCodecContext}; use rsmpeg::avformat::{ AVFormatContextInput, AVFormatContextOutput, AVIOContextContainer, AVIOContextCustom, }; -use rsmpeg::avutil::{av_d2q, av_inv_q, AVFrame, AVMem, AVRational}; +use rsmpeg::avutil::{av_d2q, av_inv_q, opt_set, AVFrame, AVMem, AVRational}; use rsmpeg::error::RsmpegError; use rsmpeg::ffi; use rsmpeg::swscale::SwsContext; @@ -41,7 +41,7 @@ struct AVFrameIter { } unsafe fn frame_set_color(frame: &mut AVFrame, color: Color) { - if frame.format != ffi::AVPixelFormat_AV_PIX_FMT_BGRA { + if frame.format != ffi::AV_PIX_FMT_BGRA { return; } let len = frame.width * frame.height * 4; @@ -69,7 +69,7 @@ impl FrameDataIter for SurfaceIter { unsafe { self.frame_buffer.fill_arrays( self.surface.data_as_bytes().as_ptr(), - ffi::AVPixelFormat_AV_PIX_FMT_BGRA, + ffi::AV_PIX_FMT_BGRA, self.width, self.height, )?; @@ -119,13 +119,13 @@ impl FrameDataIter for AVFrameIter { if self.sws_context.is_none() && (frame.width != frame.height - || frame.format == ffi::AVPixelFormat_AV_PIX_FMT_YUVA420P + || frame.format == ffi::AV_PIX_FMT_YUVA420P || min(frame.width, frame.height) % 2 != 0) { - let dst_fromat = if frame.format == ffi::AVPixelFormat_AV_PIX_FMT_YUVA420P { - ffi::AVPixelFormat_AV_PIX_FMT_BGRA + let dst_fromat = if frame.format == ffi::AV_PIX_FMT_YUVA420P { + ffi::AV_PIX_FMT_BGRA } else { - ffi::AVPixelFormat_AV_PIX_FMT_YUV420P + ffi::AV_PIX_FMT_YUV420P }; let diff = frame.width - frame.height; @@ -144,6 +144,9 @@ impl FrameDataIter for AVFrameIter { dst_length, dst_fromat, 0, + None, + None, + None, ) .ok_or("Failed to get sws_context")?; self.sws_context = Some(sws_context); @@ -184,7 +187,7 @@ impl FrameDataIter for AVFrameIter { }; self.frame_buffer.make_writable()?; sws_ctx.scale_frame(&frame, 0, frame.height, &mut self.frame_buffer)?; - if self.frame_buffer.format == ffi::AVPixelFormat_AV_PIX_FMT_BGRA { + if self.frame_buffer.format == ffi::AV_PIX_FMT_BGRA { unsafe { frame_set_color(&mut self.frame_buffer, self.color) }; } self.frame_buffer.set_pts(frame.pts); @@ -223,7 +226,7 @@ fn decode_lottie(animation: Animation, color: Color) -> Result Result { let (stream_index, decode_context) = { let (stream_index, mut decoder) = input_format_context - .find_best_stream(ffi::AVMediaType_AVMEDIA_TYPE_VIDEO)? + .find_best_stream(ffi::AVMEDIA_TYPE_VIDEO)? .ok_or("Failed to find the best stream")?; let stream = input_format_context.streams().get(stream_index).unwrap(); @@ -387,17 +390,9 @@ fn encode_mp4(mut src: S) -> Result, Error> { encode_context.set_height(height); encode_context.set_time_base(time_base); encode_context.set_framerate(framerate); - encode_context.set_pix_fmt(ffi::AVPixelFormat_AV_PIX_FMT_YUV420P); - unsafe { - if ffi::av_opt_set( - encode_context.priv_data, - c"preset".as_ptr(), - c"slow".as_ptr(), - 0, - ) < 0 - { - return Err("Failed to set preset".into()); - } + encode_context.set_pix_fmt(ffi::AV_PIX_FMT_YUV420P); + if unsafe { opt_set(encode_context.priv_data, c"preset", c"slow", 0) }.is_err() { + return Err("Failed to set x264 option".into()); } if output_format_context.oformat().flags & ffi::AVFMT_GLOBALHEADER as i32 != 0 { encode_context @@ -427,6 +422,9 @@ fn encode_mp4(mut src: S) -> Result, Error> { height, encode_context.pix_fmt, ffi::SWS_FAST_BILINEAR | ffi::SWS_ACCURATE_RND, + None, + None, + None, ) .ok_or("Failed to get sws_context")?; Some(sws_context) @@ -486,18 +484,10 @@ fn encode_write_frame( packet.set_stream_index(out_stream_index as i32); packet.rescale_ts( encode_context.time_base, - output_format_context - .streams() - .get(out_stream_index) - .ok_or("Failed to get stream")? - .time_base, + output_format_context.streams()[out_stream_index].time_base, ); - match output_format_context.interleaved_write_frame(&mut packet) { - Ok(()) => Ok(()), - Err(RsmpegError::InterleavedWriteFrameError(-22)) => Ok(()), - Err(e) => Err(e), - }?; + output_format_context.interleaved_write_frame(&mut packet)?; } Ok(())