From 08392458acf94abc6ab10b67b63caf30ba30192f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kornel=20Lesi=C5=84ski?= Date: Sat, 29 Aug 2020 19:41:44 +0100 Subject: [PATCH] Update Rust gif crate --- Cargo.lock | 91 ++++++++++++++++++++++++++++------------------------ Cargo.toml | 8 +++-- src/error.rs | 12 +++++++ 3 files changed, 66 insertions(+), 45 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index be4eb59..fa6436e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,9 +43,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "bindgen" -version = "0.54.0" +version = "0.55.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c0bb6167449588ff70803f4127f0684f9063097eca5016f37eb52b92c2cf36" +checksum = "75b13ce559e6433d360c26305643803cb52cfbabbc2b9c47ce04a58493dfb443" dependencies = [ "bitflags 1.2.1", "cexpr", @@ -79,15 +79,15 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bytemuck" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7a1029718df60331e557c9e83a55523c955e5dd2a7bfeffad6bbd50b538ae9" +checksum = "41aa2ec95ca3b5c54cf73c91acf06d24f4495d5f1b1c12506ae3483d646177ac" [[package]] name = "cc" -version = "1.0.59" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66120af515773fb005778dc07c261bd201ec8ce50bd6e7144c927753fe013381" +checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d" [[package]] name = "cexpr" @@ -106,9 +106,9 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "clang-sys" -version = "0.29.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a" +checksum = "fa785e9017cb8e8c8045e3f096b7d1ebc4d7337cceccdca8d678a27f788ac133" dependencies = [ "glob", "libc", @@ -132,9 +132,9 @@ dependencies = [ [[package]] name = "color_quant" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dbbb57365263e881e805dc77d94697c9118fd94d8da011240555aa7b23445bd" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "crc32fast" @@ -147,12 +147,12 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ee0cc8804d5393478d743b035099520087a5186f3b93fa58cec08fa62407b6" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" dependencies = [ - "cfg-if", "crossbeam-utils", + "maybe-uninit", ] [[package]] @@ -198,7 +198,7 @@ dependencies = [ [[package]] name = "ffmpeg-sys" version = "4.2.1" -source = "git+https://github.com/meh/rust-ffmpeg-sys#ee388176f72643239d93611d264789f539917e18" +source = "git+https://github.com/meh/rust-ffmpeg-sys#70f711a43eb7ff7447fcffa98bb9f533acc08a1e" dependencies = [ "bindgen", "cc", @@ -210,9 +210,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766d0e77a2c1502169d4a93ff3b8c15a71fd946cd0126309752104e5f3c46d94" +checksum = "da80be589a72651dcda34d8b35bcdc9b7254ad06325611074d9cc0fbb19f60ee" dependencies = [ "cfg-if", "crc32fast", @@ -222,19 +222,19 @@ dependencies = [ [[package]] name = "gif" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471d90201b3b223f3451cd4ad53e34295f16a1df17b1edf3736d47761c3981af" +checksum = "02efba560f227847cb41463a7395c514d127d4f74fff12ef0137fff1b84b96c4" dependencies = [ "color_quant", - "lzw", + "weezl", ] [[package]] name = "gif-dispose" -version = "2.4.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859994eec21f53c14561cddb2c84e211d100732d1997f87e80b80ac956502ceb" +checksum = "3415630fa303c4deecd014fa68a6cfbf1099e4df5b93e3e7a49b7e139278f469" dependencies = [ "gif", "imgref", @@ -253,7 +253,7 @@ dependencies = [ [[package]] name = "gifski" -version = "1.2.1" +version = "1.2.2" dependencies = [ "clap", "crossbeam-channel", @@ -281,9 +281,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "hermit-abi" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" dependencies = [ "libc", ] @@ -338,25 +338,25 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.76" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "755456fae044e6fa1ebbbd1b3e902ae19e73097ed4ed87bb79934a867c007bc3" +checksum = "2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743" [[package]] name = "libloading" -version = "0.5.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +checksum = "3557c9384f7f757f6d139cd3a4c62ef4e850696c16bf27924a5538c8a09717a1" dependencies = [ - "cc", + "cfg-if", "winapi", ] [[package]] name = "lodepng" -version = "3.2.1" +version = "3.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6face0280146377ad4959c588399014554f2875e953fdec135655ca769e1da" +checksum = "b6eb909184223b89c76d66b80199b7ad4163aebb2519244e6ebac8ba74e67eab" dependencies = [ "flate2", "libc", @@ -373,10 +373,10 @@ dependencies = [ ] [[package]] -name = "lzw" -version = "0.10.0" +name = "maybe-uninit" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" @@ -386,11 +386,12 @@ checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "miniz_oxide" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d7559a8a40d0f97e1edea3220f698f78b1c5ab67532e49f68fde3910323b722" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" dependencies = [ "adler", + "autocfg", ] [[package]] @@ -454,9 +455,9 @@ checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" [[package]] name = "proc-macro2" -version = "1.0.19" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ "unicode-xid", ] @@ -502,18 +503,18 @@ checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" [[package]] name = "resize" -version = "0.5.0" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "040293555c2c5a9c1b06e273a02ac97948fea0f09a3b1f02473e035d5a080f6d" +checksum = "f2a08c42ea86684dc00256494c4eb8b54707890ddac50c05060a717f29669029" dependencies = [ "rgb", ] [[package]] name = "rgb" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7466cad0eb3303798229ffab23bb8f598d185c71f3dfa17cd751d440e375782a" +checksum = "287f3c3f8236abb92d8b7e36797f19159df4b58f0a658cc3fb6dd3004b1f3bd3" dependencies = [ "bytemuck", ] @@ -610,6 +611,12 @@ version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +[[package]] +name = "weezl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e26e7a4d998e3d7949c69444b8b4916bac810da0d3a82ae612c89e952782f4" + [[package]] name = "which" version = "3.1.1" diff --git a/Cargo.toml b/Cargo.toml index f27c94b..e331957 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ license = "AGPL-3.0+" name = "gifski" readme = "README.md" repository = "https://github.com/ImageOptim/gifski" -version = "1.2.1" +version = "1.2.2" autobins = false edition = "2018" @@ -21,8 +21,8 @@ name = "gifski" [dependencies] gifsicle = { version = "1.92.1", optional = true } clap = "2.33.3" -gif = "0.10.3" -gif-dispose = "2.4.1" +gif = "0.11" +gif-dispose = "3" imagequant = "2.12.5" imgref = "1.7.0" lodepng = "3.2.1" @@ -36,6 +36,8 @@ dunce = "1.0.1" crossbeam-channel = "0.4.3" [dependencies.ffmpeg] +# package = "ffmpeg-next" +# version = "4.3.6" git = "https://github.com/kornelski/rust-ffmpeg" optional = true default-features = false diff --git a/src/error.rs b/src/error.rs index 52f7bfb..c04812f 100644 --- a/src/error.rs +++ b/src/error.rs @@ -14,6 +14,9 @@ quick_error! { Gifsicle { display("gifsicle failure") } + Gif(err: gif::EncodingError) { + display("GIF encoding error: {}", err) + } NoFrames { display("Found no usable frames to encode") } @@ -40,6 +43,15 @@ quick_error! { pub type CatResult = Result; +impl From for Error { + fn from(err: gif::EncodingError) -> Self { + match err { + gif::EncodingError::Io(err) => err.into(), + other => Error::Gif(other), + } + } +} + impl From> for Error { fn from(_: crossbeam_channel::SendError) -> Self { Self::ThreadSend