image-0.24.7/.cargo_vcs_info.json 0000644 00000000136 00000000001 0012210 0 ustar { "git": { "sha1": "e5580ec13c56e1303bec2e1b94d71da5efc6dcf8" }, "path_in_vcs": "" } image-0.24.7/.gitattributes 0000644 0000000 0000000 00000000050 10461020230 0013666 0 ustar 0000000 0000000 *.jpg binary -delta *.png binary -delta image-0.24.7/.github/ISSUE_TEMPLATE/bug_template.md 0000644 0000000 0000000 00000000414 10461020230 0017514 0 ustar 0000000 0000000 --- name: Bug report about: Reporting a bug labels: bug title: '' assignees: '' --- This happens in ,... ## Expected What behaviour should have happened ## Actual behaviour What did happen ## Reproduction steps Provide source code, a repository link, or steps image-0.24.7/.github/ISSUE_TEMPLATE/feature_request.md 0000644 0000000 0000000 00000001225 10461020230 0020250 0 ustar 0000000 0000000 --- name: Feature request about: Enabling something that is not yet possible labels: enhancement title: '' assignees: '' --- I would like to be able ... My specific use case for this functionality is ... This is more generally applicable to ... ## Draft image-0.24.7/.github/ISSUE_TEMPLATE/question.md 0000644 0000000 0000000 00000000722 10461020230 0016715 0 ustar 0000000 0000000 --- name: Question about: Unsure how to get something to work labels: question title: '' assignees: '' --- How does one ... ? Overall, I'm trying to achieve ... image-0.24.7/.github/PULL_REQUEST_TEMPLATE.md 0000644 0000000 0000000 00000000423 10461020230 0016140 0 ustar 0000000 0000000 image-0.24.7/.github/workflows/rust.yml 0000644 0000000 0000000 00000014516 10461020230 0016124 0 ustar 0000000 0000000 name: Rust CI on: push: branches: [ master, main, next ] pull_request: branches: [ master, main, next ] schedule: - cron: '5 16 * * 6' jobs: test_features: runs-on: ubuntu-latest strategy: fail-fast: false matrix: features: ['', default, gif, jpeg, png, tiff, ico, pnm, tga, webp, bmp, hdr, dxt, dds, farbfeld, openexr, jpeg_rayon, webp-encoder] steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable - name: Cache Cargo Dependencies uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: build run: cargo build -v --no-default-features --features "$FEATURES" env: FEATURES: ${{ matrix.features }} - name: test run: > cargo test -v --no-default-features --features "$FEATURES" && cargo doc -v --no-default-features --features "$FEATURES" env: FEATURES: ${{ matrix.features }} test_toolchains: runs-on: ubuntu-latest strategy: fail-fast: false matrix: rust: ["1.61.0", nightly, beta] steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ matrix.rust }} - name: Cache Cargo Dependencies uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install MSRV Cargo.lock if: ${{ matrix.rust == '1.61.0' }} run: mv Cargo.lock.msrv Cargo.lock - name: build run: cargo build -v --features webp,webp-encoder - name: test if: ${{ matrix.rust != '1.61.0' }} run: > cargo test -v --features webp,webp-encoder && cargo doc -v --features webp,webp-encoder test_big_endian: # github actions does not support big endian systems directly, but it does support QEMU. # so we install qemu, then build and run the tests in an emulated mips system. # note: you can also use this approach to test for big endian locally. runs-on: ubuntu-latest strategy: matrix: features: ['', default, webp, webp-encoder] # we are using the cross project for cross compilation to mips: # https://github.com/cross-rs/cross steps: - uses: actions/checkout@v2 - name: Install or use cached cross-rs/cross uses: baptiste0928/cargo-install@v1 with: crate: cross - name: Cache Cargo Dependencies uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Start Docker (required for cross-rs) run: sudo systemctl start docker - name: Cross-Compile project to mips-unknown-linux-gnu run: | cross build --target=mips-unknown-linux-gnu --verbose -v --no-default-features --features "$FEATURES" env: FEATURES: ${{ matrix.features }} # https://github.com/cross-rs/cross#supported-targets - name: Cross-Run Tests in mips-unknown-linux-gnu using Qemu continue-on-error: true run: | cross test --target mips-unknown-linux-gnu --verbose -v --no-default-features --features "$FEATURES" env: FEATURES: ${{ matrix.features }} test_avif: runs-on: ubuntu-latest steps: - name: install-dependencies run: sudo apt update && sudo apt install nasm - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable - name: build run: cargo build -v --no-default-features --features="avif" test_avif_decoding: runs-on: ubuntu-latest steps: - name: install-dependencies run: sudo apt update && sudo apt install ninja-build meson nasm - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable - name: build run: cargo build -v --no-default-features --features="avif-decoder" env: SYSTEM_DEPS_DAV1D_BUILD_INTERNAL: always clippy: runs-on: ubuntu-latest steps: - name: install-dependencies run: sudo apt update && sudo apt install ninja-build meson nasm - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable with: components: clippy - run: cargo clippy --all-features -- -D warnings env: SYSTEM_DEPS_DAV1D_BUILD_INTERNAL: always build_fuzz_afl: name: "Fuzz targets (afl)" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@nightly - name: install-deps run: sudo apt-get -y install clang llvm - name: build run: | cargo install afl cd fuzz-afl cargo check --bin reproduce_webp cargo check --bin reproduce_pnm cargo afl check --bin fuzz_webp cargo afl check --bin fuzz_pnm env: RUSTFLAGS: "" build_fuzz_cargo-fuzz: name: "Fuzz targets (cargo-fuzz)" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@nightly - name: build run: | cargo install cargo-fuzz cargo fuzz build - name: fuzz run: | for format in $(cargo fuzz list); do cargo fuzz run "$format" -- -runs=0; done public_private_dependencies: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@nightly - name: build run: | mv ./Cargo.toml.public-private-dependencies ./Cargo.toml echo "#![deny(exported_private_dependencies)]" | cat - src/lib.rs > src/lib.rs.0 mv src/lib.rs.0 src/lib.rs cargo check build_benchmarks: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@nightly - name: build run: cargo build -v --benches --features=benchmarks rustfmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Run rustfmt check run: cargo fmt -- --check cargo-deny: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: EmbarkStudios/cargo-deny-action@v1 verify_msrv: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install or use cached `cargo-msrv` uses: baptiste0928/cargo-install@v1 with: crate: cargo-msrv - name: Install MSRV Cargo.lock run: mv Cargo.lock.msrv Cargo.lock - name: Verify Minimum Rust Version run: cargo-msrv verify image-0.24.7/.gitignore 0000644 0000000 0000000 00000000262 10461020230 0012770 0 ustar 0000000 0000000 .DS_Store *~ *# *.o *.so *.swp *.dylib *.dSYM *.dll *.rlib *.dummy *.exe *-test /bin/main /bin/test-internal /bin/test-external /doc/ /target /build/ /.rust/ rusti.sh Cargo.lock image-0.24.7/CHANGES.md 0000644 0000000 0000000 00000062744 10461020230 0012407 0 ustar 0000000 0000000 # Release Notes ## Known issues - Many decoders will panic on malicous input. In most cases, this is caused by not enforcing memory limits, though other panics have been seen from fuzzing. - The color space information of pixels is not clearly communicated. ## Changes ### Unreleased - More convenient to use buffers will be added in the future. In particular, improving initialization, passing of output buffers, and adding a more complete representation for layouts. The plan is for these to interact with the rest of the library through a byte-based interface similar to `ImageDecoder`. See ongoing work on [`image-canvas`](https://github.com/image-rs/canvas) if you want to participate. ### Version 0.24.7 New features: - Added `{ImageBuffer, DynamicImage}::write_with_encoder` to simplify writing images with custom settings. - Expose ICC profiles stored in tiff and wepb files. - Added option to set the background color of animated webp images. - New methods for sampling and interpolation of `GenericImageView`s Bug fixes: - Fix panic on empty dxt. - Fix several panics in webp decoder. - Allow unknown chunks at the end of webp files. ### Version 0.24.6 - Add support for QOI. - ImageDecoders now expose ICC profiles on supported formats. - Add support for BMPs without a file header. - Improved AVIF encoder. - WebP decoding fixes. ### Version 0.24.5 Structural changes: - Increased the minimum supported Rust version (MSRV) to 1.61. - Increased the version requirement for the `tiff` crate to 0.8.0. - Increased the version requirement for the `jpeg` crate to 0.3.0. Bug fixes: - The `as_rgb32f` function of `DynamicImage` is now correctly documented. - Fixed a crash when decoding ICO images. Added a regression test. - Fixed a panic when transforming webp images. Added a regression test. - Added a check to prevent integer overflow when calculating file size for BMP images. The missing check could panic in debug mode or else set an incorrect file size in release mode. - Upgraded the PNG image encoder to use the newer `PngEncoder::write_image` instead of the deprecated `PngEncoder::encode` which did not account for byte order and could result in images with incorrect colors. - Fixed `InsufficientMemory` error when trying to decode a PNG image. - Fix warnings and CI issues. - Typos and links in the documentation have been corrected. Performance: - Added check for dynamic image dimensions before resizing. This improves performance in cases where the image does not need to be resized or has already been resized. ### Version 0.24.4 New Features: - Encoding for `webp` is now available with the native library. This needs to be activate explicitly with the `web-encoder` feature. - `exr` decoding has gained basic limit support. Bug fixes: - The `Iterator::size_hint` implementation of pixel iterators has been fixed to return the current length indicated by its `ExactSizeIterator` hint. - Typos and bad references in the documentation have been removed. Performance: - `ImageBuffer::get_pixel{,_mut}` is now marked inline. - `resize` now short-circuits when image dimensions are unchanged. ### Version 0.24.3 New Features: - `TiffDecoder` now supports setting resource limits. Bug fixes: - Fix compile issues on little endian systems. - Various panics discovered by fuzzing. ### Version 0.24.2 Structural changes: - CI now runs `cargo-deny`, checking dependent crates to an OSS license list and against RUSTSEC advisories. New Features: - The WebP decoder recognizes and decodes images with `VP8X` header. - The DDS decoder recognizes and decodes images with `DX10` headers. Bug fixes: - Calling `DynamicImage`/`ImageBuffer`'s methods `write_to` and `save` will now work properly even if the backing container is larger than the image layout requires. Only the relevant slice of pixel data is passed to the encoder. - Fixed a OOM-panic caused by malformed images in the `gif` decoder. ### Version 0.24.1 Bug Fixes: - ImageBuffer::get_pixel_checked would sometimes return the incorrect pixel. - PNG encoding would sometimes not recognize unsupported color. ### Version 0.24.0 Breaking changes Structural changes: - Minimum Rust version is now `1.56` and may change in minor versions until further notice. It is now tracked in the library's `Cargo.toml`, instead, by the standard `[package.rust-version]` field. Note: this applies _to the library itself_. You may need different version resolutions for dependencies when using a non-stable version of Rust. - The `math::utils::{nq, utils}` modules have been removed. These are better served through the `color_quant` crate and the standard library respectively. - All codecs are now available through `image::codecs`, no longer top-level. - `ExtendedColorType` and `DynamicImage` have been made `#[non_exhaustive]`, providing more methods instead of exhaustive matching. - Reading images through the generic `io::Reader`, as well as generic convenience interfaces, now requires the underlying reader to be `BufRead + Seek`. This allows more efficient support more formats. Similarly, writing now requires writers to be `Write + Seek`. - The `Bgra*` variants of buffers, which were only half-supported, have been removed. The owning buffer types `ImageBuffer` and `DynamicImage` fundamentally already make a choice in supported pixel representations. This allows for more consistent internal behavior. Callers are expected to convert formats when using those buffers, which they are required to do in any case already, and which is routinely performed by decoders. Trait reworks: - The `Pixel` trait is no longer implemented quite as liberally for structs defined in the crate. Instead, it is now restricted to a set of known channel which ensures accuracy in computations involving those channels. - The `ImageDecoderExt` trait has been renamed to `ImageDecoderRect`, according to its actual functionality. - The `Pixel` trait and its `Subpixel` field no longer require (or provide) a `'static` lifetime bound. - The `Pixel` trait no longer requires specifying an associated, constant `ColorType`. This was of little relevance to computation but made it much harder to implement and extend correctly. Instead, the _private_ `PixelWithColorType` extension is added for interfaces that require a properly known variant. - Reworked how `SubImage` interacts with the `GenericImage` trait. It is now a default implementation. Note that `SubImage` now has _inherent_ methods that avoid double-indirection, the trait's method will no longer avoid this. - The `Primitive` trait now requires implementations to provide a minimum and maximum logical bound for the purpose of converting to other primitive representations. Additions Image formats: - Reading lossless WebP is now supported. - The OpenEXR format is now supported. - The `jpeg` decoder has been upgraded to Lossless JPEG. - The `AvifEncoder` now correctly handles alpha-less images. Some additional color formats are converted to RGBA as well. - The `Bmp` codec now decodes more valid images. It can decode a raw image without performing the palette mapping. It provides a method to access the palette. The encoder provides the inverse capabilities. - `Tiff` is now an output format. Buffers and Operations: - The channel / primitive type `f32` is now supported. Currently only the OpenEXR codec makes full use of it but this is expected to change. - `ImageBuffer::{get_pixel_checked, get_pixel_mut_checked}` provide panic-free access to pixels and channels by returning `Option<&P>` and `Option<&mut P>`. - `ImageBuffer::write_to` has been added, encoding the buffer to a writer. This method already existed on `DynamicImage`. - `DynamicImage` now implements `From<_>` for all supported buffer types. - `DynamicImage` now implements `Default`, an empty `Rgba8` image. - `imageops::overlay` now takes coordinates as `i64`. Limits: - Added `Limits` and `LimitSupport`, utilized in `io::Reader`. These can be configured for rudimentary protection against resource exhaustion (images pretending to require a very large buffer). These types are not yet exhaustive by design, and more and stricter limits may be added in the future. - Encoders that do provide inherent support for limits, or reserve a significant amount of internal memory, are urged to implement the `set_limits` extension to `ImageDecoder`. Some strict limit are opt-in, which may cause decoding to fail if not supported. Miscellaneous: - `PNMSubtype` has been renamed to `PnmSubtype`, by Rust's naming scheme. - Several incorrectly capitalized `PNM*` aliases have been removed. - Several `enum` types that had previously used a hidden variant now use the official `#[non_exhaustive]` attribute instead. ### Version 0.23.14 - Unified gif blending in different decode methods, fixing out-of-bounds checks in a number of weirdly positioned frames. - Hardened TGA decoder against a number of malicious inputs. - Fix forward incompatible usage of the panic macro. - Fix load_rect for gif reaching `unreachable!()` code. - Added `ExtendedColorType::A8`. - Allow TGA to load alpha-only images. - Optimized load_rect to avoid unnecessary seeks. ### Version 0.23.13 - Fix an inconsistency in supported formats of different methods for encoding an image. - Fix `thumbnail` choosing an empty image. It now always prefer non-empty image dimensions. - Fix integer overflow in calculating requires bytes for decoded image buffers for farbfeld, hdr, and pnm decoders. These will now error early. - Fix a panic decoding certain `jpeg` image without frames or meta data. - Optimized the `jpeg` encoder. - Optimized `GenericImage::copy_from` default impl in various cases. - Add `avif` decoders. You must enable it explicitly and it is not covered by our usual MSRV policy of Rust 1.34. Instead, only latest stable is supported. - Add `ImageFormat::{can_read, can_write}` - Add `Frame::buffer_mut` - Add speed and quality options on `avif` encoder. - Add speed parameter to `gif` encoder. - Expose control over sequence repeat to the `gif` encoder. - Add `{contrast,brighten,huerotate}_in_place` functions in imageproc. - Relax `Default` impl of `ImageBuffer`, removing the bound on the color type. - Derive Debug, Hash, PartialEq, Eq for DynamicImage ### Version 0.23.12 - Fix a soundness issue affecting the impls of `Pixel::from_slice_mut`. This would previously reborrow the mutable input reference as a shared one but then proceed to construct the mutable result reference from it. While UB according to Rust's memory model, we're fairly certain that no miscompilation can happen with the LLVM codegen in practice. See 5cbe1e6767d11aff3f14c7ad69a06b04e8d583c7 for more details. - Fix `imageops::blur` panicking when `sigma = 0.0`. It now defaults to `1.0` as all negative values. - Fix re-exporting `png::{CompressionType, FilterType}` to maintain SemVer compatibility with the `0.23` releases. - Add `ImageFormat::from_extension` - Add copyless DynamicImage to byte slice/vec conversion. - Add bit-depth specific `into_` and `to_` DynamicImage conversion methods. ### Version 0.23.11 - The `NeuQuant` implementation is now supplied by `color_quant`. Use of the type defined by this library is discouraged. - The `jpeg` decoder can now downscale images that are decoded by 1,2,4,8. - Optimized the jpeg encoding ~5-15%. - Deprecated the `clamp` function. Use `num-traits` instead. - The ICO decoder now accepts an empty mask. - Fixed an overflow in ICO mask decoding potentially leading to panic. - Added `ImageOutputFormat` for `AVIF` - Updated `tiff` to `0.6` with lzw performance improvements. ### Version 0.23.10 - Added AVIF encoding capabilities using the `ravif` crate. Please note that the feature targets the latest stable compiler and is not enabled by default. - Added `ImageBuffer::as_raw` to inspect the underlying container. - Updated `gif` to `0.11` with large performance improvements. ### Version 0.23.9 - Introduced correctly capitalized aliases for some scream case types - Introduced `imageops::{vertical_gradient, horizontal_gradient}` for writing simple color gradients into an image. - Sped up methods iterating over `Pixels`, `PixelsMut`, etc. by using exact chunks internally. This should auto-vectorize `ImageBuffer::from_pixel`. - Adjusted `Clone` impls of iterators to not require a bound on the pixel. - Add `Debug` impls for iterators where the pixel's channel implements it. - Add comparison impls for `FilterType` ### Version 0.23.8 - `flat::Error` now implements the standard `Error` trait - The type parameter of `Map` has been relaxed to `?Sized` - Added the `imageops::tile` function that repeats one image across another ### Version 0.23.7 - Iterators over immutable pixels of `ImageBuffer` can now be cloned - Added a `tga` encoder - Added `ColorMap::lookup`, an optional reversal of the map - The `EncodableLayout` trait is now exported ### Version 0.23.6 - Added `png::ApngDecoder`, an adapter decoding the animation in an APNG. - Fixed a bug in `jpeg` encoding that would darken output colors. - Added a utility constructor `FlatSamples::with_monocolor`. - Added `ImageBuffer::as_flat_samples_mut` which is a mutable variant of the existing ffi-helper `ImageBuffer::as_flat_samples`. ### Version 0.23.5 - The `png` encoder now allows configuring compression and filter type. The output is not part of stability guarantees, see its documentation. - The `jpeg` encoder now accepts any implementor of `GenericImageView`. This allows images that are only partially present in memory to be encoded. - `ImageBuffer` now derives `Hash`, `PartialEq`, `Eq`. - The `Pixels`/`PixelsMut` iterator no longer yields out-of-bounds pixels when the underlying buffer is larger than required. - The `pbm` decoder correctly decodes ascii data again, fixing a regression where it would use the sample value `1` as white instead of `255`. - Fix encoding of RGBA data in `gif` frames. - Constructing a `Rows`/`RowsMut` iterator no longer panics when the image has a width or height of `0`. ### Version 0.23.4 - Improved the performance of decoding animated gifs - Added `crop_imm` which functions like `crop` but on a shared reference - The gif `DisposalMethod::Any` is treated as `Keep`, consistent with browsers - Most errors no longer allocate a string, instead implement Display. - Add some implementations of `Error::source` ### Version 0.23.3 - Added `ColorType::has_alpha` to facilitate lossless conversion - Recognize extended WebP formats for decoding - Added decoding and encoding for the `farbfeld` format - Export named iterator types created from various `ImageBuffer` methods - Error in jpeg encoder for images larger than 65536 pixels, fixes panic ### Version 0.23.2 - The dependency on `jpeg-decoder` now reflects minimum requirements. ### Version 0.23.1 - Fix cmyk_to_rgb (jpeg) causing off by one rounding errors. - A number of performance improvements for jpeg (encode and decode), bmp, vp8 - Added more details to errors for many formats ### Version 0.23.0 This major release intends to improve the interface with regards to handling of color format data and errors for both decoding and encoding. This necessitated many breaking changes anyways so it was used to improve the compliance to the interface guidelines such as outstanding renaming. It is not yet perfect with regards to color spaces but it was designed mainly as an improvement over the current interface with regards to in-memory color formats, first. We'll get to color spaces in a later major version. - Heavily reworked `ColorType`: - This type is now used for denoting formats for which we support operations on buffers in these memory representations. Particularly, all channels in pixel types are assumed to be an integer number of bytes (In terms of the Rust type system, these are `Sized` and one can crate slices of channel values). - An `ExtendedColorType` is used to express more generic color formats for which the library has limited support but can be converted/scaled/mapped into a `ColorType` buffer. This operation might be fallible but, for example, includes sources with 1/2/4-bit components. - Both types are non-exhaustive to add more formats in a minor release. - A work-in-progress (#1085) will further separate the color model from the specific channel instantiation, e.g. both `8-bit RGB` and `16-bit BGR` are instantiations of `RGB` color model. - Heavily rework `ImageError`: - The top-level enum type now serves to differentiate cause with multiple opaque representations for the actual error. These are no longer simple Strings but contains useful types. Third-party decoders that have no variant in `ImageFormat` have also been considered. - Support for `Error::source` that can be downcast to an error from a matching version of the underlying decoders. Note that the version is not part of the stable interface guarantees, this should not be relied upon for correctness and only be used as an optimization. - Added image format indications to errors. - The error values produced by decoder will be upgraded incrementally. See something that still produces plain old String messages? Feel free to send a PR. - Reworked the `ImageDecoder` trait: - `read_image` takes an output buffer argument instead of allocating all memory on its own. - The return type of `dimensions` now aligns with `GenericImage` sizes. - The `colortype` method was renamed to `color_type` for conformity. - The enums `ColorType`, `DynamicImage`, `imageops::FilterType`, `ImageFormat` no longer re-export all of their variants in the top-level of the crate. This removes the growing pollution in the documentation and usage. You can still insert the equivalent statement on your own: `use image::ImageFormat::{self, *};` - The result of `encode` operations is now uniformly an `ImageResult<()>`. - Removed public converters from some `tiff`, `png`, `gif`, `jpeg` types, mainly such as error conversion. This allows upgrading the dependency across major versions without a major release in `image` itself. - On that note, the public interface of `gif` encoder no longer takes a `gif::Frame` but rather deals with `image::Frame` only. If you require to specify the disposal method, transparency, etc. then you may want to wait with upgrading but (see next change). - The `gif` encoder now errors on invalid dimensions or unsupported color formats. It would previously silently reinterpret bytes as RGB/RGBA. - The capitalization of `ImageFormat` and other enum variants has been adjusted to adhere to the API guidelines. These variants are now spelled `Gif`, `Png`, etc. The same change has been made to the name of types such as `HDRDecoder`. - The `Progress` type has finally received public accessor method. Strange that no one reported them missing. - Introduced `PixelDensity` and `PixelDensityUnit` to store DPI information in formats that support encoding this form of meta data (e.g. in `jpeg`). ### Version 0.22.5 - Added `GenericImage::copy_within`, specialized for `ImageBuffer` - Fixed decoding of interlaced `gif` files - Prepare for future compatibility of array `IntoIterator` in example code ### Version 0.22.4 - Added in-place variants for flip and rotate operations. - The bmp encoder now checks if dimensions are valid for the format. It would previously write a subset or panic. - Removed deprecated implementations of `Error::description` - Added `DynamicImage::into_*` which convert without an additional allocation. - The PNG encoder errors on unsupported color types where it had previously silently swapped color channels. - Enabled saving images as `gif` with `save_buffer`. ### Version 0.22.3 - Added a new module `io` containing a configurable `Reader`. It can replace the bunch of free functions: `image::{load_*, open, image_dimensions}` while enabling new combinations such as `open` but with format deduced from content instead of file path. - Fixed `const_err` lint in the macro expanded implementations of `Pixel`. This can only affect your crate if `image` is used as a path dependency. ### Version 0.22.2 - Undeprecate `unsafe` trait accessors. Further evaluation showed that their deprecation should be delayed until trait `impl` specialization is available. - Fixed magic bytes used to detect `tiff` images. - Added `DynamicImage::from_decoder`. - Fixed a bug in the `PNGReader` that caused an infinite loop. - Added `ColorType::{bits_per_pixel, num_components}`. - Added `ImageFormat::from_path`, same format deduction as the `open` method. - Fixed a panic in the gif decoder. - Aligned background color handling of `gif` to web browser implementations. - Fixed handling of partial frames in animated `gif`. - Removed unused direct `lzw` dependency, an indirect dependency in `tiff`. ### Version 0.22.1 - Fixed build without no features enabled ### Version 0.22 - The required Rust version is now `1.34.2`. - Note the website and blog: [image-rs.org][1] and [blog.image-rs.org][2] - `PixelMut` now only on `ImageBuffer` and removed from `GenericImage` interface. Prefer iterating manually in the generic case. - Replaced an unsafe interface in the hdr decoder with a safe variant. - Support loading 2-bit BMP images - Add method to save an `ImageBuffer`/`DynamicImage` with specified format - Update tiff to `0.3` with a writer - Update png to `0.15`, fixes reading of interlaced sub-byte pixels - Always use custom struct for `ImageDecoder::Reader` - Added `apply_without_alpha` and `map_without_alpha` to `Pixel` trait - Pixel information now with associated constants instead of static methods - Changed color structs to tuple types with single component. Improves ergonomics of destructuring assignment and construction. - Add lifetime parameter on `ImageDecoder` trait. - Remove unnecessary `'static` bounds on affine operations - Add function to retrieve image dimensions without loading full image - Allow different image types in overlay and replace - Iterators over rows of `ImageBuffer`, mutable variants [1]: https://www.image-rs.org [2]: https://blog.image-rs.org ### Version 0.21.2 - Fixed a variety of crashes and opaque errors in webp - Updated the png limits to be less restrictive - Reworked even more `unsafe` operations into safe alternatives - Derived Debug on FilterType and Deref on Pixel - Removed a restriction on DXT to always require power of two dimensions - Change the encoding of RGBA in bmp using bitfields - Corrected various urls ### Version 0.21.1 - A fairly important bugfix backport - Fixed a potentially memory safety issue in the hdr and tiff decoders, see #885 - See [the full advisory](docs/2019-04-23-memory-unsafety.md) for an analysis - Fixes `ImageBuffer` index calculation for very, very large images - Fix some crashes while parsing specific incomplete pnm images - Added comprehensive fuzzing for the pam image types ### Version 0.21 - Updated README to use `GenericImageView` - Removed outdated version number from CHANGES - Compiles now with wasm-unknown-emscripten target - Restructured `ImageDecoder` trait - Updated README with a more colorful example for the Julia fractal - Use Rust 1.24.1 as minimum supported version - Support for loading GIF frames one at a time with `animation::Frames` - The TGA decoder now recognizes 32 bpp as RGBA(8) - Fixed `to_bgra` document comment - Added release test script - Removed unsafe code blocks several places - Fixed overlay overflow bug issues with documented proofs ### Version 0.20 - Clippy lint pass - Updated num-rational dependency - Added BGRA and BGR color types - Improved performance of image resizing - Improved PBM decoding - PNM P4 decoding now returns bits instead of bytes - Fixed move of overlapping buffers in BMP decoder - Fixed some document comments - `GenericImage` and `GenericImageView` is now object-safe - Moved TIFF code to its own library - Fixed README examples - Fixed ordering of interpolated parameters in TIFF decode error string - Thumbnail now handles upscaling - GIF encoding for multiple frames - Improved subimages API - Cargo fmt fixes ### Version 0.19 - Fixed panic when blending with alpha zero. - Made `save` consistent. - Consistent size calculation. - Fixed bug in `apply_with_alpha`. - Implemented `TGADecoder::read_scanline`. - Use deprecated attribute for `pixels_mut`. - Fixed bug in JPEG grayscale encoding. - Fixed multi image TIFF. - PNM encoder. - Added `#[derive(Hash)]` for `ColorType`. - Use `num-derive` for `#[derive(FromPrimitive)]`. - Added `into_frames` implementation for GIF. - Made rayon an optional dependency. - Fixed issue where resizing image did not give exact width/height. - Improved downscale. - Added a way to expose options when saving files. - Fixed some compiler warnings. - Switched to lzw crate instead of using built-in version. - Added `ExactSizeIterator` implementations to buffer structs. - Added `resize_to_fill` method. - DXT encoding support. - Applied clippy suggestions. ### Version 0.4 - Various improvements. - Additional supported image formats (BMP and ICO). - GIF and PNG codec moved into separate crates. ### Version 0.3 - Replace `std::old_io` with `std::io`. ### Version 0.2 - Support for interlaced PNG images. - Writing support for GIF images (full color and paletted). - Color quantizer that converts 32bit images to paletted including the alpha channel. - Initial support for reading TGA images. - Reading support for TIFF images (packbits and FAX compression not supported). - Various bug fixes and improvements. ### Version 0.1 - Initial release - Basic reading support for png, jpeg, gif, ppm and webp. - Basic writing support for png and jpeg. - A collection of basic imaging processing function like `blur` or `invert` image-0.24.7/Cargo.lock 0000644 00000164620 00000000001 0010174 0 ustar # This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "adler" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if", "once_cell", "version_check", ] [[package]] name = "aho-corasick" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] [[package]] name = "anes" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "ansi_term" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ "winapi", ] [[package]] name = "anyhow" version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" [[package]] name = "arbitrary" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db55d72333851e17d572bec876e390cd3b11eb1ef53ae821dd9f3b653d2b4569" [[package]] name = "arg_enum_proc_macro" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c29b43ee8654590587cd033b3eca2f9c4f8cdff945ec0e6ee91ceb057d87f3" dependencies = [ "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "arrayvec" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" dependencies = [ "serde", ] [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi 0.1.19", "libc", "winapi", ] [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "av-metrics" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13638b394190295622c0d2493d0c8c39210b92c2110895bfb14c58db213c2b39" dependencies = [ "crossbeam", "itertools", "lab", "num-traits", "rayon", "thiserror", "v_frame", ] [[package]] name = "av1-grain" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f6ca6f0c18c02c2fbfc119df551b8aeb8a385f6d5980f1475ba0255f1e97f1e" dependencies = [ "anyhow", "arrayvec", "itertools", "log", "nom", "num-rational", "serde", "v_frame", ] [[package]] name = "avif-serialize" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2" dependencies = [ "arrayvec", ] [[package]] name = "bindgen" version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" dependencies = [ "bitflags 1.3.2", "cexpr", "clang-sys", "clap 2.34.0", "env_logger 0.9.3", "lazy_static", "lazycell", "log", "peeking_take_while", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", "which", ] [[package]] name = "bit_field" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" [[package]] name = "bitreader" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f10043e4864d975e7f197f993ec4018636ad93946724b2571c4474d51845869b" dependencies = [ "cfg-if", ] [[package]] name = "bitstream-io" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82704769cb85a22df2c54d6bdd6a158b7931d256cf3248a07d6ecbe9d58b31d7" [[package]] name = "built" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b9c056b9ed43aee5e064b683aa1ec783e19c6acec7559e3ae931b7490472fbe" dependencies = [ "cargo-lock", "git2", ] [[package]] name = "bumpalo" version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytemuck" version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" [[package]] name = "byteorder" version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cargo-lock" version = "8.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "031718ddb8f78aa5def78a09e90defe30151d1f6c672f937af4dd916429ed996" dependencies = [ "semver", "serde", "toml 0.5.11", "url", ] [[package]] name = "cast" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c6b2562119bf28c3439f7f02db99faf0aa1a8cdfe5772a2ee155d32227239f0" dependencies = [ "jobserver", "libc", ] [[package]] name = "cexpr" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ "nom", ] [[package]] name = "cfg-expr" version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9" dependencies = [ "smallvec", "target-lexicon", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "ciborium" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ "ciborium-io", "ciborium-ll", "serde", ] [[package]] name = "ciborium-io" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" [[package]] name = "ciborium-ll" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ "ciborium-io", "half 1.8.2", ] [[package]] name = "clang-sys" version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", "libloading", ] [[package]] name = "clap" version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", "bitflags 1.3.2", "strsim", "textwrap 0.11.0", "unicode-width", "vec_map", ] [[package]] name = "clap" version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "bitflags 1.3.2", "clap_lex 0.2.4", "indexmap 1.9.3", "textwrap 0.16.0", ] [[package]] name = "clap" version = "4.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39" dependencies = [ "bitflags 1.3.2", "clap_derive", "clap_lex 0.3.3", "is-terminal", "once_cell", "termcolor", "terminal_size", ] [[package]] name = "clap_complete" version = "4.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10861370d2ba66b0f5989f83ebf35db6421713fd92351790e7fdd6c36774c56b" dependencies = [ "clap 4.0.32", ] [[package]] name = "clap_derive" version = "4.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" dependencies = [ "heck", "proc-macro-error", "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "clap_lex" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" dependencies = [ "os_str_bytes", ] [[package]] name = "clap_lex" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "033f6b7a4acb1f358c742aaca805c939ee73b4c6209ae4318ec7aca81c42e646" dependencies = [ "os_str_bytes", ] [[package]] name = "color_quant" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "console" version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" dependencies = [ "encode_unicode", "lazy_static", "libc", "unicode-width", "windows-sys 0.45.0", ] [[package]] name = "crc32fast" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if", ] [[package]] name = "criterion" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" dependencies = [ "anes", "atty", "cast", "ciborium", "clap 3.2.25", "criterion-plot", "itertools", "lazy_static", "num-traits", "oorandom", "plotters", "rayon", "regex", "serde", "serde_derive", "serde_json", "tinytemplate", "walkdir", ] [[package]] name = "criterion-plot" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", "itertools", ] [[package]] name = "crossbeam" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" dependencies = [ "cfg-if", "crossbeam-channel", "crossbeam-deque", "crossbeam-epoch", "crossbeam-queue", "crossbeam-utils", ] [[package]] name = "crossbeam-channel" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-queue" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] [[package]] name = "crunchy" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "dav1d" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7284148338177cb1cd0d0cdd7bf26440f8326999063eed294aa7d77b46a7e263" dependencies = [ "dav1d-sys", ] [[package]] name = "dav1d-sys" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88e40c4c77d141a3b70113ee45a1502b9c80e24f176958d39a8361abcf30c883" dependencies = [ "bindgen", "system-deps", ] [[package]] name = "dcv-color-primitives" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1457f4dd8395fef9f61996b5783b82ed7b234b4b55e1843d04e07fded0538005" dependencies = [ "paste", "wasm-bindgen", ] [[package]] name = "either" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encode_unicode" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "env_logger" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" dependencies = [ "log", "regex", ] [[package]] name = "env_logger" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "atty", "humantime", "log", "regex", "termcolor", ] [[package]] name = "equivalent" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" dependencies = [ "errno-dragonfly", "libc", "windows-sys 0.48.0", ] [[package]] name = "errno-dragonfly" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" dependencies = [ "cc", "libc", ] [[package]] name = "exr" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1e481eb11a482815d3e9d618db8c42a93207134662873809335a92327440c18" dependencies = [ "bit_field", "flume", "half 2.2.1", "lebe", "miniz_oxide", "rayon-core", "smallvec", "zune-inflate", ] [[package]] name = "fallible_collections" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a88c69768c0a15262df21899142bc6df9b9b823546d4b4b9a7bc2d6c448ec6fd" dependencies = [ "hashbrown 0.13.2", ] [[package]] name = "fdeflate" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" dependencies = [ "simd-adler32", ] [[package]] name = "fern" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" dependencies = [ "log", ] [[package]] name = "flate2" version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", "miniz_oxide", ] [[package]] name = "flume" version = "0.10.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" dependencies = [ "futures-core", "futures-sink", "nanorand", "pin-project", "spin", ] [[package]] name = "form_urlencoded" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] [[package]] name = "futures-core" version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-sink" version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "getrandom" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", "libc", "wasi", "wasm-bindgen", ] [[package]] name = "gif" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" dependencies = [ "color_quant", "weezl", ] [[package]] name = "git2" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2994bee4a3a6a51eb90c218523be382fd7ea09b16380b9312e9dbe955ff7c7d1" dependencies = [ "bitflags 1.3.2", "libc", "libgit2-sys", "log", "url", ] [[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "half" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "half" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" dependencies = [ "crunchy", ] [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ "ahash", ] [[package]] name = "hashbrown" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" [[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] [[package]] name = "hermit-abi" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "humantime" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "idna" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", ] [[package]] name = "image" version = "0.24.7" dependencies = [ "bytemuck", "byteorder", "color_quant", "crc32fast", "criterion", "dav1d", "dcv-color-primitives", "exr", "gif", "glob", "jpeg-decoder", "mp4parse", "num-complex", "num-rational", "num-traits", "png", "qoi", "quickcheck", "ravif", "rgb", "tiff", "webp", ] [[package]] name = "imgref" version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cf49df1085dcfb171460e4592597b84abe50d900fb83efb6e41b20fefd6c2c" [[package]] name = "indexmap" version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", ] [[package]] name = "indexmap" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ "equivalent", "hashbrown 0.14.0", ] [[package]] name = "interpolate_name" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4b35f4a811037cfdcd44c5db40678464b2d5d248fc1abeeaaa125b370d47f17" dependencies = [ "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "io-lifetimes" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ "hermit-abi 0.3.2", "libc", "windows-sys 0.48.0", ] [[package]] name = "is-terminal" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi 0.3.2", "rustix 0.38.6", "windows-sys 0.48.0", ] [[package]] name = "itertools" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] [[package]] name = "itoa" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "ivf" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fb01c64361a3a67b511439f0dcd54fa3aa5581c861a17e2ede76e46b9c5b7e2" dependencies = [ "bitstream-io", ] [[package]] name = "jobserver" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ "libc", ] [[package]] name = "jpeg-decoder" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" dependencies = [ "rayon", ] [[package]] name = "js-sys" version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] [[package]] name = "lab" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f" [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lazycell" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "lebe" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libfuzzer-sys" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcf184a4b6b274f82a5df6b357da6055d3e82272327bba281c28bbba6f1664ef" dependencies = [ "arbitrary", "cc", ] [[package]] name = "libgit2-sys" version = "0.14.2+1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f3d95f6b51075fe9810a7ae22c7095f12b98005ab364d8544797a825ce946a4" dependencies = [ "cc", "libc", "libz-sys", "pkg-config", ] [[package]] name = "libloading" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ "cfg-if", "winapi", ] [[package]] name = "libwebp-sys" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5df1e76f0acef0058aa2164ccf74e610e716e7f9eeb3ee2283de7d43659d823" dependencies = [ "cc", "glob", ] [[package]] name = "libz-sys" version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ "cc", "libc", "pkg-config", "vcpkg", ] [[package]] name = "linux-raw-sys" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" [[package]] name = "lock_api" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", ] [[package]] name = "log" version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "loop9" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a703804431e5927454bcaf2b2a162595e95db931130c2728c18d050090f69940" dependencies = [ "imgref", ] [[package]] name = "maybe-rayon" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" dependencies = [ "cfg-if", "rayon", ] [[package]] name = "memchr" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", "simd-adler32", ] [[package]] name = "mp4parse" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63a35203d3c6ce92d5251c77520acb2e57108c88728695aa883f70023624c570" dependencies = [ "bitreader", "byteorder", "fallible_collections", "log", "num-traits", "static_assertions", ] [[package]] name = "nanorand" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ "getrandom", ] [[package]] name = "nasm-rs" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe4d98d0065f4b1daf164b3eafb11974c94662e5e2396cf03f32d0bb5c17da51" dependencies = [ "rayon", ] [[package]] name = "new_debug_unreachable" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" [[package]] name = "nom" version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] [[package]] name = "noop_proc_macro" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" [[package]] name = "num-bigint" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" dependencies = [ "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-complex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" dependencies = [ "num-traits", ] [[package]] name = "num-derive" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "num-derive" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e6a0fd4f737c707bd9086cc16c925f294943eb62eb71499e9fd4cf71f8b9f4e" dependencies = [ "proc-macro2", "quote", "syn 2.0.28", ] [[package]] name = "num-integer" version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", "num-traits", ] [[package]] name = "num-rational" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", "num-bigint", "num-integer", "num-traits", ] [[package]] name = "num-traits" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ "hermit-abi 0.3.2", "libc", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "oorandom" version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "os_str_bytes" version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "paste" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[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.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pin-project" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" dependencies = [ "proc-macro2", "quote", "syn 2.0.28", ] [[package]] name = "pkg-config" version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "plotters" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", "plotters-svg", "wasm-bindgen", "web-sys", ] [[package]] name = "plotters-backend" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] [[package]] name = "png" version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" dependencies = [ "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", "miniz_oxide", ] [[package]] name = "ppv-lite86" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", "syn 1.0.109", "version_check", ] [[package]] name = "proc-macro-error-attr" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2", "quote", "version_check", ] [[package]] name = "proc-macro2" version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "qoi" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" dependencies = [ "bytemuck", ] [[package]] name = "quick-error" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quickcheck" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6" dependencies = [ "env_logger 0.8.4", "log", "rand", ] [[package]] name = "quote" version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" dependencies = [ "proc-macro2", ] [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", "rand_core", ] [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] [[package]] name = "rav1e" version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16c383692a5e7abd9f6d1eddb1a5e0269f859392387883361bb09e5555852ec1" dependencies = [ "arbitrary", "arg_enum_proc_macro", "arrayvec", "av-metrics", "av1-grain", "bitstream-io", "built", "cc", "cfg-if", "clap 4.0.32", "clap_complete", "console", "fern", "interpolate_name", "itertools", "ivf", "libc", "libfuzzer-sys", "log", "maybe-rayon", "nasm-rs", "new_debug_unreachable", "nom", "noop_proc_macro", "num-derive 0.3.3", "num-traits", "once_cell", "paste", "rand", "rand_chacha", "rust_hawktracer", "rustc_version", "scan_fmt", "signal-hook", "simd_helpers", "system-deps", "thiserror", "v_frame", "wasm-bindgen", "y4m", ] [[package]] name = "ravif" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cd36aa2bc280b60619e0c4386a73ff2ac343551dcf400168562ce08cc0c32e0" dependencies = [ "avif-serialize", "imgref", "loop9", "quick-error", "rav1e", "rayon", "rgb", ] [[package]] name = "rayon" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", ] [[package]] name = "rayon-core" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", "num_cpus", ] [[package]] name = "regex" version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" dependencies = [ "aho-corasick", "memchr", "regex-automata", "regex-syntax", ] [[package]] name = "regex-automata" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294" dependencies = [ "aho-corasick", "memchr", "regex-syntax", ] [[package]] name = "regex-syntax" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" [[package]] name = "rgb" version = "0.8.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" dependencies = [ "bytemuck", ] [[package]] name = "rust_hawktracer" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3480a29b927f66c6e06527be7f49ef4d291a01d694ec1fe85b0de71d6b02ac1" dependencies = [ "rust_hawktracer_normal_macro", "rust_hawktracer_proc_macro", ] [[package]] name = "rust_hawktracer_normal_macro" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a570059949e1dcdc6f35228fa389f54c2c84dfe0c94c05022baacd56eacd2e9" [[package]] name = "rust_hawktracer_proc_macro" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb626abdbed5e93f031baae60d72032f56bc964e11ac2ff65f2ba3ed98d6d3e1" [[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] [[package]] name = "rustix" version = "0.37.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ "bitflags 1.3.2", "errno", "io-lifetimes", "libc", "linux-raw-sys 0.3.8", "windows-sys 0.48.0", ] [[package]] name = "rustix" version = "0.38.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ee020b1716f0a80e2ace9b03441a749e402e86712f15f16fe8a8f75afac732f" dependencies = [ "bitflags 2.3.3", "errno", "libc", "linux-raw-sys 0.4.5", "windows-sys 0.48.0", ] [[package]] name = "ryu" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "same-file" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ "winapi-util", ] [[package]] name = "scan_fmt" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b53b0a5db882a8e2fdaae0a43f7b39e7e9082389e978398bdf223a55b581248" [[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" dependencies = [ "serde", ] [[package]] name = "serde" version = "1.0.181" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d3e73c93c3240c0bda063c239298e633114c69a888c3e37ca8bb33f343e9890" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.181" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be02f6cb0cd3a5ec20bbcfbcbd749f57daddb1a0882dc2e46a6c236c90b977ed" dependencies = [ "proc-macro2", "quote", "syn 2.0.28", ] [[package]] name = "serde_json" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" dependencies = [ "itoa", "ryu", "serde", ] [[package]] name = "serde_spanned" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" dependencies = [ "serde", ] [[package]] name = "shlex" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "signal-hook" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" dependencies = [ "libc", "signal-hook-registry", ] [[package]] name = "signal-hook-registry" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] [[package]] name = "simd-adler32" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simd_helpers" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" dependencies = [ "quote", ] [[package]] name = "smallvec" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ "lock_api", ] [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "strsim" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "syn" version = "2.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "system-deps" version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30c2de8a4d8f4b823d634affc9cd2a74ec98c53a756f317e529a48046cbf71f3" dependencies = [ "cfg-expr", "heck", "pkg-config", "toml 0.7.6", "version-compare", ] [[package]] name = "target-lexicon" version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" [[package]] name = "termcolor" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] [[package]] name = "terminal_size" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" dependencies = [ "rustix 0.37.23", "windows-sys 0.48.0", ] [[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ "unicode-width", ] [[package]] name = "textwrap" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" dependencies = [ "proc-macro2", "quote", "syn 2.0.28", ] [[package]] name = "tiff" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" dependencies = [ "flate2", "jpeg-decoder", "weezl", ] [[package]] name = "tinytemplate" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" dependencies = [ "serde", "serde_json", ] [[package]] name = "tinyvec" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "toml" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" dependencies = [ "serde", "serde_spanned", "toml_datetime", "toml_edit", ] [[package]] name = "toml_datetime" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] [[package]] name = "toml_edit" version = "0.19.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" dependencies = [ "indexmap 2.0.0", "serde", "serde_spanned", "toml_datetime", "winnow", ] [[package]] name = "unicode-bidi" version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-normalization" version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "url" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] [[package]] name = "v_frame" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85db69f33d00031c1b07f7292e56317d5aa9475bdbd3d27ef18f3633438a697e" dependencies = [ "cfg-if", "noop_proc_macro", "num-derive 0.4.0", "num-traits", "rust_hawktracer", ] [[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vec_map" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version-compare" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", "winapi-util", ] [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", "syn 2.0.28", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", "syn 2.0.28", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] name = "webp" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12ff0ebb440d1db63b778cb609db8a8abfda825a7841664a76a70b628502c7e1" dependencies = [ "libwebp-sys", ] [[package]] name = "weezl" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "which" version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" dependencies = [ "either", "libc", "once_cell", ] [[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ "winapi-i686-pc-windows-gnu", "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ "winapi", ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ "windows-targets 0.42.2", ] [[package]] name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ "windows-targets 0.48.1", ] [[package]] name = "windows-targets" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ "windows_aarch64_gnullvm 0.42.2", "windows_aarch64_msvc 0.42.2", "windows_i686_gnu 0.42.2", "windows_i686_msvc 0.42.2", "windows_x86_64_gnu 0.42.2", "windows_x86_64_gnullvm 0.42.2", "windows_x86_64_msvc 0.42.2", ] [[package]] name = "windows-targets" version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ "windows_aarch64_gnullvm 0.48.0", "windows_aarch64_msvc 0.48.0", "windows_i686_gnu 0.48.0", "windows_i686_msvc 0.48.0", "windows_x86_64_gnu 0.48.0", "windows_x86_64_gnullvm 0.48.0", "windows_x86_64_msvc 0.48.0", ] [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] name = "windows_aarch64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] name = "windows_i686_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] name = "windows_i686_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] name = "windows_x86_64_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] name = "windows_x86_64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46aab759304e4d7b2075a9aecba26228bb073ee8c50db796b2c72c676b5d807" dependencies = [ "memchr", ] [[package]] name = "y4m" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" [[package]] name = "zune-inflate" version = "0.2.54" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" dependencies = [ "simd-adler32", ] image-0.24.7/Cargo.lock.msrv 0000644 0000000 0000000 00000163527 10461020230 0013711 0 ustar 0000000 0000000 # This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "adler" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if", "once_cell", "version_check", ] [[package]] name = "aho-corasick" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] [[package]] name = "anes" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "ansi_term" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ "winapi", ] [[package]] name = "anyhow" version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "arbitrary" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db55d72333851e17d572bec876e390cd3b11eb1ef53ae821dd9f3b653d2b4569" [[package]] name = "arg_enum_proc_macro" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c29b43ee8654590587cd033b3eca2f9c4f8cdff945ec0e6ee91ceb057d87f3" dependencies = [ "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "arrayvec" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" dependencies = [ "serde", ] [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi 0.1.19", "libc", "winapi", ] [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "av-metrics" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13638b394190295622c0d2493d0c8c39210b92c2110895bfb14c58db213c2b39" dependencies = [ "crossbeam", "itertools", "lab", "num-traits", "rayon", "thiserror", "v_frame", ] [[package]] name = "av1-grain" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f6ca6f0c18c02c2fbfc119df551b8aeb8a385f6d5980f1475ba0255f1e97f1e" dependencies = [ "anyhow", "arrayvec", "itertools", "log", "nom", "num-rational", "serde", "v_frame", ] [[package]] name = "avif-serialize" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2" dependencies = [ "arrayvec", ] [[package]] name = "bindgen" version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" dependencies = [ "bitflags 1.3.2", "cexpr", "clang-sys", "clap 2.34.0", "env_logger 0.9.3", "lazy_static", "lazycell", "log", "peeking_take_while", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", "which", ] [[package]] name = "bit_field" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" [[package]] name = "bitreader" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f10043e4864d975e7f197f993ec4018636ad93946724b2571c4474d51845869b" dependencies = [ "cfg-if", ] [[package]] name = "bitstream-io" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d28070975aaf4ef1fd0bd1f29b739c06c2cdd9972e090617fb6dca3b2cb564e" [[package]] name = "built" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b9c056b9ed43aee5e064b683aa1ec783e19c6acec7559e3ae931b7490472fbe" dependencies = [ "cargo-lock", "git2", ] [[package]] name = "bumpalo" version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytemuck" version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" [[package]] name = "byteorder" version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cargo-lock" version = "8.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "031718ddb8f78aa5def78a09e90defe30151d1f6c672f937af4dd916429ed996" dependencies = [ "semver", "serde", "toml 0.5.11", "url", ] [[package]] name = "cast" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" dependencies = [ "jobserver", ] [[package]] name = "cexpr" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ "nom", ] [[package]] name = "cfg-expr" version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "215c0072ecc28f92eeb0eea38ba63ddfcb65c2828c46311d646f1a3ff5f9841c" dependencies = [ "smallvec", "target-lexicon", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "ciborium" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ "ciborium-io", "ciborium-ll", "serde", ] [[package]] name = "ciborium-io" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" [[package]] name = "ciborium-ll" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ "ciborium-io", "half 1.8.2", ] [[package]] name = "clang-sys" version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", "libloading", ] [[package]] name = "clap" version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", "bitflags 1.3.2", "strsim", "textwrap 0.11.0", "unicode-width", "vec_map", ] [[package]] name = "clap" version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "bitflags 1.3.2", "clap_lex 0.2.4", "indexmap 1.9.3", "textwrap 0.16.0", ] [[package]] name = "clap" version = "4.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39" dependencies = [ "bitflags 1.3.2", "clap_derive", "clap_lex 0.3.3", "is-terminal", "once_cell", "termcolor", "terminal_size", ] [[package]] name = "clap_complete" version = "4.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10861370d2ba66b0f5989f83ebf35db6421713fd92351790e7fdd6c36774c56b" dependencies = [ "clap 4.0.32", ] [[package]] name = "clap_derive" version = "4.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" dependencies = [ "heck", "proc-macro-error", "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "clap_lex" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" dependencies = [ "os_str_bytes", ] [[package]] name = "clap_lex" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "033f6b7a4acb1f358c742aaca805c939ee73b4c6209ae4318ec7aca81c42e646" dependencies = [ "os_str_bytes", ] [[package]] name = "color_quant" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "console" version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" dependencies = [ "encode_unicode", "lazy_static", "libc", "unicode-width", "windows-sys 0.45.0", ] [[package]] name = "crc32fast" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if", ] [[package]] name = "criterion" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" dependencies = [ "anes", "atty", "cast", "ciborium", "clap 3.2.25", "criterion-plot", "itertools", "lazy_static", "num-traits", "oorandom", "plotters", "rayon", "regex", "serde", "serde_derive", "serde_json", "tinytemplate", "walkdir", ] [[package]] name = "criterion-plot" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", "itertools", ] [[package]] name = "crossbeam" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" dependencies = [ "cfg-if", "crossbeam-channel", "crossbeam-deque", "crossbeam-epoch", "crossbeam-queue", "crossbeam-utils", ] [[package]] name = "crossbeam-channel" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-queue" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] [[package]] name = "crunchy" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "dav1d" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7284148338177cb1cd0d0cdd7bf26440f8326999063eed294aa7d77b46a7e263" dependencies = [ "dav1d-sys", ] [[package]] name = "dav1d-sys" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88e40c4c77d141a3b70113ee45a1502b9c80e24f176958d39a8361abcf30c883" dependencies = [ "bindgen", "system-deps", ] [[package]] name = "dcv-color-primitives" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1457f4dd8395fef9f61996b5783b82ed7b234b4b55e1843d04e07fded0538005" dependencies = [ "paste", "wasm-bindgen", ] [[package]] name = "either" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "encode_unicode" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "env_logger" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" dependencies = [ "log", "regex", ] [[package]] name = "env_logger" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "atty", "humantime", "log", "regex", "termcolor", ] [[package]] name = "equivalent" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" [[package]] name = "errno" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ "errno-dragonfly", "libc", "windows-sys 0.48.0", ] [[package]] name = "errno-dragonfly" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" dependencies = [ "cc", "libc", ] [[package]] name = "exr" version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "279d3efcc55e19917fff7ab3ddd6c14afb6a90881a0078465196fe2f99d08c56" dependencies = [ "bit_field", "flume", "half 2.2.1", "lebe", "miniz_oxide", "rayon-core", "smallvec", "zune-inflate", ] [[package]] name = "fallible_collections" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "618bf220e692a59c50e7b281149f53c3fe93e0cf0b40c050fc2af8c9ecb28505" dependencies = [ "hashbrown 0.13.2", ] [[package]] name = "fdeflate" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" dependencies = [ "simd-adler32", ] [[package]] name = "fern" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" dependencies = [ "log", ] [[package]] name = "flate2" version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", "miniz_oxide", ] [[package]] name = "flume" version = "0.10.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" dependencies = [ "futures-core", "futures-sink", "nanorand", "pin-project", "spin", ] [[package]] name = "form_urlencoded" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] [[package]] name = "futures-core" version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-sink" version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "getrandom" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", "libc", "wasi", "wasm-bindgen", ] [[package]] name = "gif" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" dependencies = [ "color_quant", "weezl", ] [[package]] name = "git2" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2994bee4a3a6a51eb90c218523be382fd7ea09b16380b9312e9dbe955ff7c7d1" dependencies = [ "bitflags 1.3.2", "libc", "libgit2-sys", "log", "url", ] [[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "half" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "half" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" dependencies = [ "crunchy", ] [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ "ahash", ] [[package]] name = "hashbrown" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" [[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] [[package]] name = "hermit-abi" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" [[package]] name = "humantime" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "idna" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", ] [[package]] name = "image" version = "0.24.6" dependencies = [ "bytemuck", "byteorder", "color_quant", "crc32fast", "criterion", "dav1d", "dcv-color-primitives", "exr", "gif", "glob", "jpeg-decoder", "mp4parse", "num-complex", "num-rational", "num-traits", "png", "qoi", "quickcheck", "ravif", "rgb", "tiff", "webp", ] [[package]] name = "imgref" version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cf49df1085dcfb171460e4592597b84abe50d900fb83efb6e41b20fefd6c2c" [[package]] name = "indexmap" version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", ] [[package]] name = "indexmap" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ "equivalent", "hashbrown 0.14.0", ] [[package]] name = "interpolate_name" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4b35f4a811037cfdcd44c5db40678464b2d5d248fc1abeeaaa125b370d47f17" dependencies = [ "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "io-lifetimes" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ "hermit-abi 0.3.1", "libc", "windows-sys 0.48.0", ] [[package]] name = "is-terminal" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24fddda5af7e54bf7da53067d6e802dbcc381d0a8eef629df528e3ebf68755cb" dependencies = [ "hermit-abi 0.3.1", "rustix 0.38.1", "windows-sys 0.48.0", ] [[package]] name = "itertools" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] [[package]] name = "itoa" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "ivf" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fb01c64361a3a67b511439f0dcd54fa3aa5581c861a17e2ede76e46b9c5b7e2" dependencies = [ "bitstream-io", ] [[package]] name = "jobserver" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ "libc", ] [[package]] name = "jpeg-decoder" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" dependencies = [ "rayon", ] [[package]] name = "js-sys" version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] [[package]] name = "lab" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f" [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lazycell" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "lebe" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libfuzzer-sys" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcf184a4b6b274f82a5df6b357da6055d3e82272327bba281c28bbba6f1664ef" dependencies = [ "arbitrary", "cc", ] [[package]] name = "libgit2-sys" version = "0.14.2+1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f3d95f6b51075fe9810a7ae22c7095f12b98005ab364d8544797a825ce946a4" dependencies = [ "cc", "libc", "libz-sys", "pkg-config", ] [[package]] name = "libloading" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ "cfg-if", "winapi", ] [[package]] name = "libwebp-sys" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439fd1885aa28937e7edcd68d2e793cb4a22f8733460d2519fbafd2b215672bf" dependencies = [ "cc", ] [[package]] name = "libz-sys" version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" dependencies = [ "cc", "libc", "pkg-config", "vcpkg", ] [[package]] name = "linux-raw-sys" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" [[package]] name = "lock_api" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", ] [[package]] name = "log" version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "loop9" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a703804431e5927454bcaf2b2a162595e95db931130c2728c18d050090f69940" dependencies = [ "imgref", ] [[package]] name = "maybe-rayon" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" dependencies = [ "cfg-if", "rayon", ] [[package]] name = "memchr" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", "simd-adler32", ] [[package]] name = "mp4parse" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63a35203d3c6ce92d5251c77520acb2e57108c88728695aa883f70023624c570" dependencies = [ "bitreader", "byteorder", "fallible_collections", "log", "num-traits", "static_assertions", ] [[package]] name = "nanorand" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ "getrandom", ] [[package]] name = "nasm-rs" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe4d98d0065f4b1daf164b3eafb11974c94662e5e2396cf03f32d0bb5c17da51" dependencies = [ "rayon", ] [[package]] name = "new_debug_unreachable" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" [[package]] name = "nom" version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] [[package]] name = "noop_proc_macro" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" [[package]] name = "num-bigint" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" dependencies = [ "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-complex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" dependencies = [ "num-traits", ] [[package]] name = "num-derive" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "num-integer" version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", "num-traits", ] [[package]] name = "num-rational" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", "num-bigint", "num-integer", "num-traits", ] [[package]] name = "num-traits" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ "hermit-abi 0.3.1", "libc", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "oorandom" version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "os_str_bytes" version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "paste" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" [[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.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pin-project" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e138fdd8263907a2b0e1b4e80b7e58c721126479b6e6eedfb1b402acea7b9bd" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1fef411b303e3e12d534fb6e7852de82da56edd937d895125821fb7c09436c7" dependencies = [ "proc-macro2", "quote", "syn 2.0.22", ] [[package]] name = "pkg-config" version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "plotters" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", "plotters-svg", "wasm-bindgen", "web-sys", ] [[package]] name = "plotters-backend" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] [[package]] name = "png" version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" dependencies = [ "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", "miniz_oxide", ] [[package]] name = "ppv-lite86" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", "syn 1.0.109", "version_check", ] [[package]] name = "proc-macro-error-attr" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2", "quote", "version_check", ] [[package]] name = "proc-macro2" version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" dependencies = [ "unicode-ident", ] [[package]] name = "qoi" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" dependencies = [ "bytemuck", ] [[package]] name = "quick-error" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quickcheck" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6" dependencies = [ "env_logger 0.8.4", "log", "rand", ] [[package]] name = "quote" version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" dependencies = [ "proc-macro2", ] [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", "rand_core", ] [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] [[package]] name = "rav1e" version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16c383692a5e7abd9f6d1eddb1a5e0269f859392387883361bb09e5555852ec1" dependencies = [ "arbitrary", "arg_enum_proc_macro", "arrayvec", "av-metrics", "av1-grain", "bitstream-io", "built", "cc", "cfg-if", "clap 4.0.32", "clap_complete", "console", "fern", "interpolate_name", "itertools", "ivf", "libc", "libfuzzer-sys", "log", "maybe-rayon", "nasm-rs", "new_debug_unreachable", "nom", "noop_proc_macro", "num-derive", "num-traits", "once_cell", "paste", "rand", "rand_chacha", "rust_hawktracer", "rustc_version", "scan_fmt", "signal-hook", "simd_helpers", "system-deps", "thiserror", "v_frame", "wasm-bindgen", "y4m", ] [[package]] name = "ravif" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cd36aa2bc280b60619e0c4386a73ff2ac343551dcf400168562ce08cc0c32e0" dependencies = [ "avif-serialize", "imgref", "loop9", "quick-error", "rav1e", "rayon", "rgb", ] [[package]] name = "rayon" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", ] [[package]] name = "rayon-core" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", "num_cpus", ] [[package]] name = "regex" version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" dependencies = [ "aho-corasick", "memchr", "regex-syntax", ] [[package]] name = "regex-syntax" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" [[package]] name = "rgb" version = "0.8.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" dependencies = [ "bytemuck", ] [[package]] name = "rust_hawktracer" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3480a29b927f66c6e06527be7f49ef4d291a01d694ec1fe85b0de71d6b02ac1" dependencies = [ "rust_hawktracer_normal_macro", "rust_hawktracer_proc_macro", ] [[package]] name = "rust_hawktracer_normal_macro" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a570059949e1dcdc6f35228fa389f54c2c84dfe0c94c05022baacd56eacd2e9" [[package]] name = "rust_hawktracer_proc_macro" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb626abdbed5e93f031baae60d72032f56bc964e11ac2ff65f2ba3ed98d6d3e1" [[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] [[package]] name = "rustix" version = "0.37.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f25693a73057a1b4cb56179dd3c7ea21a7c6c5ee7d85781f5749b46f34b79c" dependencies = [ "bitflags 1.3.2", "errno", "io-lifetimes", "libc", "linux-raw-sys 0.3.8", "windows-sys 0.48.0", ] [[package]] name = "rustix" version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbc6396159432b5c8490d4e301d8c705f61860b8b6c863bf79942ce5401968f3" dependencies = [ "bitflags 2.3.3", "errno", "libc", "linux-raw-sys 0.4.3", "windows-sys 0.48.0", ] [[package]] name = "ryu" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "same-file" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ "winapi-util", ] [[package]] name = "scan_fmt" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b53b0a5db882a8e2fdaae0a43f7b39e7e9082389e978398bdf223a55b581248" [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "semver" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" dependencies = [ "serde", ] [[package]] name = "serde" version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", "syn 2.0.22", ] [[package]] name = "serde_json" version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" dependencies = [ "itoa", "ryu", "serde", ] [[package]] name = "serde_spanned" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" dependencies = [ "serde", ] [[package]] name = "shlex" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "signal-hook" version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9" dependencies = [ "libc", "signal-hook-registry", ] [[package]] name = "signal-hook-registry" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] [[package]] name = "simd-adler32" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" [[package]] name = "simd_helpers" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" dependencies = [ "quote", ] [[package]] name = "smallvec" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ "lock_api", ] [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "strsim" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "syn" version = "2.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "system-deps" version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30c2de8a4d8f4b823d634affc9cd2a74ec98c53a756f317e529a48046cbf71f3" dependencies = [ "cfg-expr", "heck", "pkg-config", "toml 0.7.5", "version-compare", ] [[package]] name = "target-lexicon" version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac" [[package]] name = "termcolor" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] [[package]] name = "terminal_size" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" dependencies = [ "rustix 0.37.21", "windows-sys 0.48.0", ] [[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ "unicode-width", ] [[package]] name = "textwrap" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", "syn 2.0.22", ] [[package]] name = "tiff" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7449334f9ff2baf290d55d73983a7d6fa15e01198faef72af07e2a8db851e471" dependencies = [ "flate2", "jpeg-decoder", "weezl", ] [[package]] name = "tinytemplate" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" dependencies = [ "serde", "serde_json", ] [[package]] name = "tinyvec" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "toml" version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240" dependencies = [ "serde", "serde_spanned", "toml_datetime", "toml_edit", ] [[package]] name = "toml_datetime" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] [[package]] name = "toml_edit" version = "0.19.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" dependencies = [ "indexmap 2.0.0", "serde", "serde_spanned", "toml_datetime", "winnow", ] [[package]] name = "unicode-bidi" version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" [[package]] name = "unicode-normalization" version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "url" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] [[package]] name = "v_frame" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3753f70d50a77f5d381103ba2693a889fed0d84273dd5cbdf4eb8bda720f0c6" dependencies = [ "cfg-if", "noop_proc_macro", "num-derive", "num-traits", "rust_hawktracer", ] [[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vec_map" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version-compare" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", "winapi-util", ] [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", "syn 2.0.22", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", "syn 2.0.22", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] name = "webp" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf022f821f166079a407d000ab57e84de020e66ffbbf4edde999bc7d6e371cae" dependencies = [ "libwebp-sys", ] [[package]] name = "weezl" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "which" version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" dependencies = [ "either", "libc", "once_cell", ] [[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ "winapi-i686-pc-windows-gnu", "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ "winapi", ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ "windows-targets 0.42.2", ] [[package]] name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ "windows-targets 0.48.1", ] [[package]] name = "windows-targets" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ "windows_aarch64_gnullvm 0.42.2", "windows_aarch64_msvc 0.42.2", "windows_i686_gnu 0.42.2", "windows_i686_msvc 0.42.2", "windows_x86_64_gnu 0.42.2", "windows_x86_64_gnullvm 0.42.2", "windows_x86_64_msvc 0.42.2", ] [[package]] name = "windows-targets" version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ "windows_aarch64_gnullvm 0.48.0", "windows_aarch64_msvc 0.48.0", "windows_i686_gnu 0.48.0", "windows_i686_msvc 0.48.0", "windows_x86_64_gnu 0.48.0", "windows_x86_64_gnullvm 0.48.0", "windows_x86_64_msvc 0.48.0", ] [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] name = "windows_aarch64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] name = "windows_i686_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] name = "windows_i686_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] name = "windows_x86_64_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] name = "windows_x86_64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" dependencies = [ "memchr", ] [[package]] name = "y4m" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" [[package]] name = "zune-inflate" version = "0.2.54" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" dependencies = [ "simd-adler32", ] image-0.24.7/Cargo.toml 0000644 00000006275 00000000001 0010220 0 ustar # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO # # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies # to registry (e.g., crates.io) dependencies. # # If you are reading this file be aware that the original Cargo.toml # will likely look very different (and much more reasonable). # See Cargo.toml.orig for the original contents. [package] edition = "2018" rust-version = "1.61.0" name = "image" version = "0.24.7" authors = ["The image-rs Developers"] exclude = [ "src/png/testdata/*", "examples/*", "tests/*", ] description = "Imaging library. Provides basic image processing and encoders/decoders for common image formats." homepage = "https://github.com/image-rs/image" documentation = "https://docs.rs/image" readme = "README.md" categories = [ "multimedia::images", "multimedia::encoding", ] license = "MIT" repository = "https://github.com/image-rs/image" resolver = "2" [lib] name = "image" path = "./src/lib.rs" [[bench]] name = "decode" path = "benches/decode.rs" harness = false [[bench]] name = "encode" path = "benches/encode.rs" harness = false [[bench]] name = "copy_from" harness = false [dependencies.bytemuck] version = "1.7.0" features = ["extern_crate_alloc"] [dependencies.byteorder] version = "1.3.2" [dependencies.color_quant] version = "1.1" [dependencies.dav1d] version = "0.6.0" optional = true [dependencies.dcv-color-primitives] version = "0.4.0" optional = true [dependencies.exr] version = "1.5.0" optional = true [dependencies.gif] version = "0.12" optional = true [dependencies.jpeg] version = "0.3.0" optional = true default-features = false package = "jpeg-decoder" [dependencies.libwebp] version = "0.2.2" optional = true default-features = false package = "webp" [dependencies.mp4parse] version = "0.17.0" optional = true [dependencies.num-rational] version = "0.4" default-features = false [dependencies.num-traits] version = "0.2.0" [dependencies.png] version = "0.17.6" optional = true [dependencies.qoi] version = "0.4" optional = true [dependencies.ravif] version = "0.11.0" optional = true [dependencies.rgb] version = "0.8.25" optional = true [dependencies.tiff] version = "0.9.0" optional = true [dev-dependencies.crc32fast] version = "1.2.0" [dev-dependencies.criterion] version = "0.4" [dev-dependencies.glob] version = "0.3" [dev-dependencies.jpeg] version = "0.3.0" features = ["platform_independent"] default-features = false package = "jpeg-decoder" [dev-dependencies.num-complex] version = "0.4" [dev-dependencies.quickcheck] version = "1" [features] avif = ["avif-encoder"] avif-decoder = [ "mp4parse", "dcv-color-primitives", "dav1d", ] avif-encoder = [ "ravif", "rgb", ] benchmarks = [] bmp = [] dds = ["dxt"] default = [ "gif", "jpeg", "ico", "png", "pnm", "tga", "tiff", "webp", "bmp", "hdr", "dxt", "dds", "farbfeld", "jpeg_rayon", "openexr", "qoi", ] dxt = [] farbfeld = [] hdr = [] ico = [ "bmp", "png", ] jpeg_rayon = ["jpeg/rayon"] openexr = ["exr"] pnm = [] qoi = ["dep:qoi"] tga = [] webp = [] webp-encoder = ["libwebp"] image-0.24.7/Cargo.toml.orig 0000644 0000000 0000000 00000006220 10461020230 0013667 0 ustar 0000000 0000000 [package] name = "image" version = "0.24.7" edition = "2018" resolver = "2" # note: when changed, also update test runner in `.github/workflows/rust.yml` rust-version = "1.61.0" license = "MIT" description = "Imaging library. Provides basic image processing and encoders/decoders for common image formats." authors = ["The image-rs Developers"] readme = "README.md" # crates.io metadata documentation = "https://docs.rs/image" repository = "https://github.com/image-rs/image" homepage = "https://github.com/image-rs/image" categories = ["multimedia::images", "multimedia::encoding"] # Crate build related exclude = [ "src/png/testdata/*", "examples/*", "tests/*", ] [lib] name = "image" path = "./src/lib.rs" [dependencies] bytemuck = { version = "1.7.0", features = ["extern_crate_alloc"] } # includes cast_vec byteorder = "1.3.2" num-rational = { version = "0.4", default-features = false } num-traits = "0.2.0" gif = { version = "0.12", optional = true } jpeg = { package = "jpeg-decoder", version = "0.3.0", default-features = false, optional = true } png = { version = "0.17.6", optional = true } tiff = { version = "0.9.0", optional = true } ravif = { version = "0.11.0", optional = true } rgb = { version = "0.8.25", optional = true } mp4parse = { version = "0.17.0", optional = true } dav1d = { version = "0.6.0", optional = true } dcv-color-primitives = { version = "0.4.0", optional = true } color_quant = "1.1" exr = { version = "1.5.0", optional = true } qoi = { version = "0.4", optional = true } libwebp = { package = "webp", version = "0.2.2", default-features = false, optional = true } [dev-dependencies] crc32fast = "1.2.0" num-complex = "0.4" glob = "0.3" quickcheck = "1" criterion = "0.4" # Keep this in sync with the jpeg dependency above. This is used to enable the platform_independent # feature when testing, so `cargo test` works correctly. jpeg = { package = "jpeg-decoder", version = "0.3.0", default-features = false, features = ["platform_independent"] } [features] # TODO: Add "avif" to this list while preparing for 0.24.0 default = ["gif", "jpeg", "ico", "png", "pnm", "tga", "tiff", "webp", "bmp", "hdr", "dxt", "dds", "farbfeld", "jpeg_rayon", "openexr", "qoi"] ico = ["bmp", "png"] pnm = [] tga = [] bmp = [] hdr = [] dxt = [] dds = ["dxt"] farbfeld = [] openexr = ["exr"] qoi = ["dep:qoi"] # Enables WebP decoder support. webp = [] # Non-default, not included in `webp`. Requires native dependency libwebp. webp-encoder = ["libwebp"] # Enables multi-threading. # Requires latest stable Rust. jpeg_rayon = ["jpeg/rayon"] # Non-default, enables avif support. # Requires latest stable Rust. avif = ["avif-encoder"] # Requires latest stable Rust and recent nasm (>= 2.14). avif-encoder = ["ravif", "rgb"] # Non-default, even in `avif`. Requires stable Rust and native dependency libdav1d. avif-decoder = ["mp4parse", "dcv-color-primitives", "dav1d"] # Build some inline benchmarks. Useful only during development. # Requires rustc nightly for feature test. benchmarks = [] [[bench]] path = "benches/decode.rs" name = "decode" harness = false [[bench]] path = "benches/encode.rs" name = "encode" harness = false [[bench]] name = "copy_from" harness = false image-0.24.7/Cargo.toml.public-private-dependencies 0000644 0000000 0000000 00000005171 10461020230 0020305 0 ustar 0000000 0000000 cargo-features = ["public-dependency"] [package] name = "image" version = "0.24.0-alpha" edition = "2018" rust-version = "1.56" license = "MIT" description = "Imaging library written in Rust. Provides basic filters and decoders for the most common image formats." authors = ["The image-rs Developers"] readme = "README.md" # crates.io metadata documentation = "https://docs.rs/image" repository = "https://github.com/image-rs/image" homepage = "https://github.com/image-rs/image" categories = ["multimedia::images", "multimedia::encoding"] # Crate build related exclude = [ "src/png/testdata/*", "examples/*", "tests/*", ] [lib] name = "image" path = "./src/lib.rs" [dependencies] bytemuck = { version = "1.7.0", features = ["extern_crate_alloc"] } # includes cast_vec byteorder = "1.3.2" num-iter = "0.1.32" num-rational = { version = "0.4", default-features = false } num-traits = { version = "0.2.0", public = true } gif = { version = "0.11.1", optional = true } jpeg = { package = "jpeg-decoder", version = "0.2.1", default-features = false, optional = true } png = { version = "0.17.0", optional = true } tiff = { version = "0.9.0", optional = true } ravif = { version = "0.8.0", optional = true } rgb = { version = "0.8.25", optional = true } mp4parse = { version = "0.12.0", optional = true } dav1d = { version = "0.6.0", optional = true } dcv-color-primitives = { version = "0.4.0", optional = true } exr = { version = "1.4.1", optional = true } color_quant = { version = "1.1", public = true } [dev-dependencies] crc32fast = "1.2.0" num-complex = "0.4" glob = "0.3" quickcheck = "1" criterion = "0.3" [features] # TODO: Add "avif" to this list while preparing for 0.24.0 default = ["gif", "jpeg", "ico", "png", "pnm", "tga", "tiff", "webp", "bmp", "hdr", "dxt", "dds", "farbfeld", "jpeg_rayon", "openexr"] ico = ["bmp", "png"] pnm = [] tga = [] webp = [] bmp = [] hdr = [] dxt = [] dds = ["dxt"] farbfeld = [] openexr = ["exr"] # Enables multi-threading. # Requires latest stable Rust. jpeg_rayon = ["jpeg/rayon"] # Non-default, enables avif support. # Requires latest stable Rust. avif = ["avif-encoder"] # Requires latest stable Rust and recent nasm (>= 2.14). avif-encoder = ["ravif", "rgb"] # Non-default, even in `avif`. Requires stable Rust and native dependency libdav1d. avif-decoder = ["mp4parse", "dcv-color-primitives", "dav1d"] # Build some inline benchmarks. Useful only during development. # Requires rustc nightly for feature test. benchmarks = [] [[bench]] path = "benches/decode.rs" name = "decode" harness = false [[bench]] path = "benches/encode.rs" name = "encode" harness = false [[bench]] name = "copy_from" harness = false image-0.24.7/LICENSE 0000644 0000000 0000000 00000002072 10461020230 0012006 0 ustar 0000000 0000000 The MIT License (MIT) Copyright (c) 2014 PistonDevelopers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. image-0.24.7/README.md 0000644 0000000 0000000 00000023214 10461020230 0012261 0 ustar 0000000 0000000 # Image [](https://crates.io/crates/image) [](https://docs.rs/image) [](https://github.com/image-rs/image/actions) [](https://gitter.im/image-rs/image?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) Maintainers: [@HeroicKatora](https://github.com/HeroicKatora), [@fintelia](https://github.com/fintelia) [How to contribute](https://github.com/image-rs/organization/blob/master/CONTRIBUTING.md) ## An Image Processing Library This crate provides basic image processing functions and methods for converting to and from various image formats. All image processing functions provided operate on types that implement the `GenericImageView` and `GenericImage` traits and return an `ImageBuffer`. ## Supported Image Formats `image` provides implementations of common image format encoders and decoders. | Format | Decoding | Encoding | | ------ | -------- | -------- | | AVIF | Only 8-bit \*\* | Lossy | | BMP | Yes | Rgb8, Rgba8, Gray8, GrayA8 | | DDS | DXT1, DXT3, DXT5 | No | | Farbfeld | Yes | Yes | | GIF | Yes | Yes | | ICO | Yes | Yes | | JPEG | Baseline and progressive | Baseline JPEG | | OpenEXR | Rgb32F, Rgba32F (no dwa compression) | Rgb32F, Rgba32F (no dwa compression) | | PNG | All supported color types | Same as decoding | | PNM | PBM, PGM, PPM, standard PAM | Yes | | QOI | Yes | Yes | | TGA | Yes | Rgb8, Rgba8, Bgr8, Bgra8, Gray8, GrayA8 | | TIFF | Baseline(no fax support) + LZW + PackBits | Rgb8, Rgba8, Gray8 | | WebP | Yes | Rgb8, Rgba8 \* | - \* Requires the `webp-encoder` feature, uses the libwebp C library. - \*\* Requires the `avif-decoder` feature, uses the libdav1d C library. ### The [`ImageDecoder`](https://docs.rs/image/*/image/trait.ImageDecoder.html) and [`ImageDecoderRect`](https://docs.rs/image/*/image/trait.ImageDecoderRect.html) Traits All image format decoders implement the `ImageDecoder` trait which provide basic methods for getting image metadata and decoding images. Some formats additionally provide `ImageDecoderRect` implementations which allow for decoding only part of an image at once. The most important methods for decoders are... + **dimensions**: Return a tuple containing the width and height of the image. + **color_type**: Return the color type of the image data produced by this decoder. + **read_image**: Decode the entire image into a slice of bytes. ## Pixels `image` provides the following pixel types: + **Rgb**: RGB pixel + **Rgba**: RGB with alpha (RGBA pixel) + **Luma**: Grayscale pixel + **LumaA**: Grayscale with alpha All pixels are parameterised by their component type. ## Images Individual pixels within images are indexed with (0,0) at the top left corner. ### The [`GenericImageView`](https://docs.rs/image/*/image/trait.GenericImageView.html) and [`GenericImage`](https://docs.rs/image/*/image/trait.GenericImage.html) Traits Traits that provide methods for inspecting (`GenericImageView`) and manipulating (`GenericImage`) images, parameterised over the image's pixel type. Some of these methods for `GenericImageView` are... + **dimensions**: Return a tuple containing the width and height of the image. + **get_pixel**: Returns the pixel located at (x, y). + **pixels**: Returns an Iterator over the pixels of this image. While some of the methods for `GenericImage` are... + **put_pixel**: Put a pixel at location (x, y). + **copy_from**: Copies all of the pixels from another image into this image. ### Representation of Images `image` provides two main ways of representing image data: #### [`ImageBuffer`](https://docs.rs/image/*/image/struct.ImageBuffer.html) An image parameterised by its Pixel types, represented by a width and height and a vector of pixels. It provides direct access to its pixels and implements the `GenericImageView` and `GenericImage` traits. ```rust use image::{GenericImage, GenericImageView, ImageBuffer, RgbImage}; // Construct a new RGB ImageBuffer with the specified width and height. let img: RgbImage = ImageBuffer::new(512, 512); // Construct a new by repeated calls to the supplied closure. let mut img = ImageBuffer::from_fn(512, 512, |x, y| { if x % 2 == 0 { image::Luma([0u8]) } else { image::Luma([255u8]) } }); // Obtain the image's width and height. let (width, height) = img.dimensions(); // Access the pixel at coordinate (100, 100). let pixel = img[(100, 100)]; // Or use the `get_pixel` method from the `GenericImage` trait. let pixel = *img.get_pixel(100, 100); // Put a pixel at coordinate (100, 100). img.put_pixel(100, 100, pixel); // Iterate over all pixels in the image. for pixel in img.pixels() { // Do something with pixel. } ``` #### [`DynamicImage`](https://docs.rs/image/*/image/enum.DynamicImage.html) A `DynamicImage` is an enumeration over all supported `ImageBuffer
` types.
Its exact image type is determined at runtime. It is the type returned when opening an image.
For convenience `DynamicImage` reimplements all image processing functions.
`DynamicImage` implement the `GenericImageView` and `GenericImage` traits for RGBA pixels.
#### [`SubImage`](https://docs.rs/image/*/image/struct.SubImage.html)
A view into another image, delimited by the coordinates of a rectangle.
The coordinates given set the position of the top left corner of the rectangle.
This is used to perform image processing functions on a subregion of an image.
```rust
use image::{GenericImageView, ImageBuffer, RgbImage, imageops};
let mut img: RgbImage = ImageBuffer::new(512, 512);
let subimg = imageops::crop(&mut img, 0, 0, 100, 100);
assert!(subimg.dimensions() == (100, 100));
```
## Image Processing Functions
These are the functions defined in the `imageops` module. All functions operate on types that implement the `GenericImage` trait.
Note that some of the functions are very slow in debug mode. Make sure to use release mode if you experience any performance issues.
+ **blur**: Performs a Gaussian blur on the supplied image.
+ **brighten**: Brighten the supplied image.
+ **huerotate**: Hue rotate the supplied image by degrees.
+ **contrast**: Adjust the contrast of the supplied image.
+ **crop**: Return a mutable view into an image.
+ **filter3x3**: Perform a 3x3 box filter on the supplied image.
+ **flip_horizontal**: Flip an image horizontally.
+ **flip_vertical**: Flip an image vertically.
+ **grayscale**: Convert the supplied image to grayscale.
+ **invert**: Invert each pixel within the supplied image This function operates in place.
+ **resize**: Resize the supplied image to the specified dimensions.
+ **rotate180**: Rotate an image 180 degrees clockwise.
+ **rotate270**: Rotate an image 270 degrees clockwise.
+ **rotate90**: Rotate an image 90 degrees clockwise.
+ **unsharpen**: Performs an unsharpen mask on the supplied image.
For more options, see the [`imageproc`](https://crates.io/crates/imageproc) crate.
## Examples
### Opening and Saving Images
`image` provides the `open` function for opening images from a path. The image
format is determined from the path's file extension. An `io` module provides a
reader which offer some more control.
```rust,no_run
use image::GenericImageView;
fn main() {
// Use the open function to load an image from a Path.
// `open` returns a `DynamicImage` on success.
let img = image::open("tests/images/jpg/progressive/cat.jpg").unwrap();
// The dimensions method returns the images width and height.
println!("dimensions {:?}", img.dimensions());
// The color method returns the image's `ColorType`.
println!("{:?}", img.color());
// Write the contents of this image to the Writer in PNG format.
img.save("test.png").unwrap();
}
```
### Generating Fractals
```rust,no_run
//! An example of generating julia fractals.
fn main() {
let imgx = 800;
let imgy = 800;
let scalex = 3.0 / imgx as f32;
let scaley = 3.0 / imgy as f32;
// Create a new ImgBuf with width: imgx and height: imgy
let mut imgbuf = image::ImageBuffer::new(imgx, imgy);
// Iterate over the coordinates and pixels of the image
for (x, y, pixel) in imgbuf.enumerate_pixels_mut() {
let r = (0.3 * x as f32) as u8;
let b = (0.3 * y as f32) as u8;
*pixel = image::Rgb([r, 0, b]);
}
// A redundant loop to demonstrate reading image data
for x in 0..imgx {
for y in 0..imgy {
let cx = y as f32 * scalex - 1.5;
let cy = x as f32 * scaley - 1.5;
let c = num_complex::Complex::new(-0.4, 0.6);
let mut z = num_complex::Complex::new(cx, cy);
let mut i = 0;
while i < 255 && z.norm() <= 2.0 {
z = z * z + c;
i += 1;
}
let pixel = imgbuf.get_pixel_mut(x, y);
let image::Rgb(data) = *pixel;
*pixel = image::Rgb([data[0], i as u8, data[2]]);
}
}
// Save the image as “fractal.png”, the format is deduced from the path
imgbuf.save("fractal.png").unwrap();
}
```
Example output:
::from_slice(v))
}
#[inline(always)]
fn size_hint(&self) -> (usize, Option ::from_slice(v))
}
}
impl ::from_slice_mut(v))
}
#[inline(always)]
fn size_hint(&self) -> (usize, Option ::from_slice_mut(v))
}
}
impl ::Subpixel: 'a,
{
pixels: ChunksExact<'a, P::Subpixel>,
}
impl<'a, P: Pixel + 'a> Rows<'a, P> {
/// Construct the iterator from image pixels. This is not public since it has a (hidden) panic
/// condition. The `pixels` slice must be large enough so that all pixels are addressable.
fn with_image(pixels: &'a [P::Subpixel], width: u32, height: u32) -> Self {
let row_len = (width as usize) * usize::from( ::CHANNEL_COUNT);
if row_len == 0 {
Rows {
pixels: [].chunks_exact(1),
}
} else {
let pixels = pixels
.get(..row_len * height as usize)
.expect("Pixel buffer has too few subpixels");
// Rows are physically present. In particular, height is smaller than `usize::MAX` as
// all subpixels can be indexed.
Rows {
pixels: pixels.chunks_exact(row_len),
}
}
}
}
impl<'a, P: Pixel + 'a> Iterator for Rows<'a, P>
where
P::Subpixel: 'a,
{
type Item = Pixels<'a, P>;
#[inline(always)]
fn next(&mut self) -> Option ::CHANNEL_COUNT as usize),
})
}
#[inline(always)]
fn size_hint(&self) -> (usize, Option ::CHANNEL_COUNT as usize),
})
}
}
impl ::Subpixel: 'a,
{
pixels: ChunksExactMut<'a, P::Subpixel>,
}
impl<'a, P: Pixel + 'a> RowsMut<'a, P> {
/// Construct the iterator from image pixels. This is not public since it has a (hidden) panic
/// condition. The `pixels` slice must be large enough so that all pixels are addressable.
fn with_image(pixels: &'a mut [P::Subpixel], width: u32, height: u32) -> Self {
let row_len = (width as usize) * usize::from( ::CHANNEL_COUNT);
if row_len == 0 {
RowsMut {
pixels: [].chunks_exact_mut(1),
}
} else {
let pixels = pixels
.get_mut(..row_len * height as usize)
.expect("Pixel buffer has too few subpixels");
// Rows are physically present. In particular, height is smaller than `usize::MAX` as
// all subpixels can be indexed.
RowsMut {
pixels: pixels.chunks_exact_mut(row_len),
}
}
}
}
impl<'a, P: Pixel + 'a> Iterator for RowsMut<'a, P>
where
P::Subpixel: 'a,
{
type Item = PixelsMut<'a, P>;
#[inline(always)]
fn next(&mut self) -> Option ::CHANNEL_COUNT as usize),
})
}
#[inline(always)]
fn size_hint(&self) -> (usize, Option ::CHANNEL_COUNT as usize),
})
}
}
impl ::Subpixel: 'a,
{
pixels: Pixels<'a, P>,
x: u32,
y: u32,
width: u32,
}
impl<'a, P: Pixel + 'a> Iterator for EnumeratePixels<'a, P>
where
P::Subpixel: 'a,
{
type Item = (u32, u32, &'a P);
#[inline(always)]
fn next(&mut self) -> Option<(u32, u32, &'a P)> {
if self.x >= self.width {
self.x = 0;
self.y += 1;
}
let (x, y) = (self.x, self.y);
self.x += 1;
self.pixels.next().map(|p| (x, y, p))
}
#[inline(always)]
fn size_hint(&self) -> (usize, Option ::Subpixel: 'a,
{
rows: Rows<'a, P>,
y: u32,
width: u32,
}
impl<'a, P: Pixel + 'a> Iterator for EnumerateRows<'a, P>
where
P::Subpixel: 'a,
{
type Item = (u32, EnumeratePixels<'a, P>);
#[inline(always)]
fn next(&mut self) -> Option<(u32, EnumeratePixels<'a, P>)> {
let y = self.y;
self.y += 1;
self.rows.next().map(|r| {
(
y,
EnumeratePixels {
x: 0,
y,
width: self.width,
pixels: r,
},
)
})
}
#[inline(always)]
fn size_hint(&self) -> (usize, Option ::Subpixel: 'a,
{
pixels: PixelsMut<'a, P>,
x: u32,
y: u32,
width: u32,
}
impl<'a, P: Pixel + 'a> Iterator for EnumeratePixelsMut<'a, P>
where
P::Subpixel: 'a,
{
type Item = (u32, u32, &'a mut P);
#[inline(always)]
fn next(&mut self) -> Option<(u32, u32, &'a mut P)> {
if self.x >= self.width {
self.x = 0;
self.y += 1;
}
let (x, y) = (self.x, self.y);
self.x += 1;
self.pixels.next().map(|p| (x, y, p))
}
#[inline(always)]
fn size_hint(&self) -> (usize, Option ::Subpixel: 'a,
{
rows: RowsMut<'a, P>,
y: u32,
width: u32,
}
impl<'a, P: Pixel + 'a> Iterator for EnumerateRowsMut<'a, P>
where
P::Subpixel: 'a,
{
type Item = (u32, EnumeratePixelsMut<'a, P>);
#[inline(always)]
fn next(&mut self) -> Option<(u32, EnumeratePixelsMut<'a, P>)> {
let y = self.y;
self.y += 1;
self.rows.next().map(|r| {
(
y,
EnumeratePixelsMut {
x: 0,
y,
width: self.width,
pixels: r,
},
)
})
}
#[inline(always)]
fn size_hint(&self) -> (usize, Option ,
data: Container,
}
// generic implementation, shared along all image buffers
impl ImageBuffer
where
P: Pixel,
Container: Deref {
Pixels {
chunks: self
.inner_pixels()
.chunks_exact( ::CHANNEL_COUNT as usize),
}
}
/// Returns an iterator over the rows of this image.
///
/// Only non-empty rows can be iterated in this manner. In particular the iterator will not
/// yield any item when the width of the image is `0` or a pixel type without any channels is
/// used. This ensures that its length can always be represented by `usize`.
pub fn rows(&self) -> Rows {
Rows::with_image(&self.data, self.width, self.height)
}
/// Enumerates over the pixels of the image.
/// The iterator yields the coordinates of each pixel
/// along with a reference to them.
/// The iteration order is x = 0 to width then y = 0 to height
/// Starting from the top left.
pub fn enumerate_pixels(&self) -> EnumeratePixels {
EnumeratePixels {
pixels: self.pixels(),
x: 0,
y: 0,
width: self.width,
}
}
/// Enumerates over the rows of the image.
/// The iterator yields the y-coordinate of each row
/// along with a reference to them.
pub fn enumerate_rows(&self) -> EnumerateRows {
EnumerateRows {
rows: self.rows(),
y: 0,
width: self.width,
}
}
/// Gets a reference to the pixel at location `(x, y)`
///
/// # Panics
///
/// Panics if `(x, y)` is out of the bounds `(width, height)`.
#[inline]
#[track_caller]
pub fn get_pixel(&self, x: u32, y: u32) -> &P {
match self.pixel_indices(x, y) {
None => panic!(
"Image index {:?} out of bounds {:?}",
(x, y),
(self.width, self.height)
),
Some(pixel_indices) => ::from_slice(&self.data[pixel_indices]),
}
}
/// Gets a reference to the pixel at location `(x, y)` or returns `None` if
/// the index is out of the bounds `(width, height)`.
pub fn get_pixel_checked(&self, x: u32, y: u32) -> Option<&P> {
if x >= self.width {
return None;
}
let num_channels = ::CHANNEL_COUNT as usize;
let i = (y as usize)
.saturating_mul(self.width as usize)
.saturating_add(x as usize)
.saturating_mul(num_channels);
self.data
.get(i..i + num_channels)
.map(|pixel_indices| ::from_slice(pixel_indices))
}
/// Test that the image fits inside the buffer.
///
/// Verifies that the maximum image of pixels inside the bounds is smaller than the provided
/// length. Note that as a corrolary we also have that the index calculation of pixels inside
/// the bounds will not overflow.
fn check_image_fits(width: u32, height: u32, len: usize) -> bool {
let checked_len = Self::image_buffer_len(width, height);
checked_len.map(|min_len| min_len <= len).unwrap_or(false)
}
fn image_buffer_len(width: u32, height: u32) -> Option ::CHANNEL_COUNT as usize)
.and_then(|size| size.checked_mul(width as usize))
.and_then(|size| size.checked_mul(height as usize))
}
#[inline(always)]
fn pixel_indices(&self, x: u32, y: u32) -> Option ::CHANNEL_COUNT as usize;
// If in bounds, this can't overflow as we have tested that at construction!
let min_index = (y as usize * self.width as usize + x as usize) * no_channels;
min_index..min_index + no_channels
}
/// Get the format of the buffer when viewed as a matrix of samples.
pub fn sample_layout(&self) -> SampleLayout {
// None of these can overflow, as all our memory is addressable.
SampleLayout::row_major_packed( ::CHANNEL_COUNT, self.width, self.height)
}
/// Return the raw sample buffer with its stride an dimension information.
///
/// The returned buffer is guaranteed to be well formed in all cases. It is laid out by
/// colors, width then height, meaning `channel_stride <= width_stride <= height_stride`. All
/// strides are in numbers of elements but those are mostly `u8` in which case the strides are
/// also byte strides.
pub fn into_flat_samples(self) -> FlatSamples ImageBuffer
where
P: Pixel,
Container: Deref {
PixelsMut {
chunks: self
.inner_pixels_mut()
.chunks_exact_mut( ::CHANNEL_COUNT as usize),
}
}
/// Returns an iterator over the mutable rows of this image.
///
/// Only non-empty rows can be iterated in this manner. In particular the iterator will not
/// yield any item when the width of the image is `0` or a pixel type without any channels is
/// used. This ensures that its length can always be represented by `usize`.
pub fn rows_mut(&mut self) -> RowsMut {
RowsMut::with_image(&mut self.data, self.width, self.height)
}
/// Enumerates over the pixels of the image.
/// The iterator yields the coordinates of each pixel
/// along with a mutable reference to them.
pub fn enumerate_pixels_mut(&mut self) -> EnumeratePixelsMut {
let width = self.width;
EnumeratePixelsMut {
pixels: self.pixels_mut(),
x: 0,
y: 0,
width,
}
}
/// Enumerates over the rows of the image.
/// The iterator yields the y-coordinate of each row
/// along with a mutable reference to them.
pub fn enumerate_rows_mut(&mut self) -> EnumerateRowsMut {
let width = self.width;
EnumerateRowsMut {
rows: self.rows_mut(),
y: 0,
width,
}
}
/// Gets a reference to the mutable pixel at location `(x, y)`
///
/// # Panics
///
/// Panics if `(x, y)` is out of the bounds `(width, height)`.
#[inline]
#[track_caller]
pub fn get_pixel_mut(&mut self, x: u32, y: u32) -> &mut P {
match self.pixel_indices(x, y) {
None => panic!(
"Image index {:?} out of bounds {:?}",
(x, y),
(self.width, self.height)
),
Some(pixel_indices) => ::from_slice_mut(&mut self.data[pixel_indices]),
}
}
/// Gets a reference to the mutable pixel at location `(x, y)` or returns
/// `None` if the index is out of the bounds `(width, height)`.
pub fn get_pixel_mut_checked(&mut self, x: u32, y: u32) -> Option<&mut P> {
if x >= self.width {
return None;
}
let num_channels = ::CHANNEL_COUNT as usize;
let i = (y as usize)
.saturating_mul(self.width as usize)
.saturating_add(x as usize)
.saturating_mul(num_channels);
self.data
.get_mut(i..i + num_channels)
.map(|pixel_indices| ::from_slice_mut(pixel_indices))
}
/// Puts a pixel at location `(x, y)`
///
/// # Panics
///
/// Panics if `(x, y)` is out of the bounds `(width, height)`.
#[inline]
#[track_caller]
pub fn put_pixel(&mut self, x: u32, y: u32, pixel: P) {
*self.get_pixel_mut(x, y) = pixel
}
}
impl ImageBuffer
where
P: Pixel,
[P::Subpixel]: EncodableLayout,
Container: Deref ::COLOR_TYPE,
)
}
}
impl ImageBuffer
where
P: Pixel,
[P::Subpixel]: EncodableLayout,
Container: Deref ::COLOR_TYPE,
format,
)
}
}
impl ImageBuffer
where
P: Pixel,
[P::Subpixel]: EncodableLayout,
Container: Deref ::COLOR_TYPE,
format,
)
}
}
impl ImageBuffer
where
P: Pixel,
[P::Subpixel]: EncodableLayout,
Container: Deref ::COLOR_TYPE,
)
}
}
impl Default for ImageBuffer
where
P: Pixel,
Container: Default,
{
fn default() -> Self {
Self {
width: 0,
height: 0,
_phantom: PhantomData,
data: Default::default(),
}
}
}
impl Deref for ImageBuffer
where
P: Pixel,
Container: Deref DerefMut for ImageBuffer
where
P: Pixel,
Container: Deref Index<(u32, u32)> for ImageBuffer
where
P: Pixel,
Container: Deref IndexMut<(u32, u32)> for ImageBuffer
where
P: Pixel,
Container: Deref Clone for ImageBuffer
where
P: Pixel,
Container: Deref {
ImageBuffer {
data: self.data.clone(),
width: self.width,
height: self.height,
_phantom: PhantomData,
}
}
}
impl GenericImageView for ImageBuffer
where
P: Pixel,
Container: Deref ::from_slice(self.data.get_unchecked(indices))
}
}
impl GenericImage for ImageBuffer
where
P: Pixel,
Container: Deref ::from_slice_mut(self.data.get_unchecked_mut(indices));
*p = pixel
}
/// Put a pixel at location (x, y), taking into account alpha channels
///
/// DEPRECATED: This method will be removed. Blend the pixel directly instead.
fn blend_pixel(&mut self, x: u32, y: u32, p: P) {
self.get_pixel_mut(x, y).blend(&p)
}
fn copy_within(&mut self, source: Rect, x: u32, y: u32) -> bool {
let Rect {
x: sx,
y: sy,
width,
height,
} = source;
let dx = x;
let dy = y;
assert!(sx < self.width() && dx < self.width());
assert!(sy < self.height() && dy < self.height());
if self.width() - dx.max(sx) < width || self.height() - dy.max(sy) < height {
return false;
}
if sy < dy {
for y in (0..height).rev() {
let sy = sy + y;
let dy = dy + y;
let Range { start, .. } = self.pixel_indices_unchecked(sx, sy);
let Range { end, .. } = self.pixel_indices_unchecked(sx + width - 1, sy);
let dst = self.pixel_indices_unchecked(dx, dy).start;
self.data.copy_within(start..end, dst);
}
} else {
for y in 0..height {
let sy = sy + y;
let dy = dy + y;
let Range { start, .. } = self.pixel_indices_unchecked(sx, sy);
let Range { end, .. } = self.pixel_indices_unchecked(sx + width - 1, sy);
let dst = self.pixel_indices_unchecked(dx, dy).start;
self.data.copy_within(start..end, dst);
}
}
true
}
}
// concrete implementation for `Vec`-backed buffers
// TODO: I think that rustc does not "see" this impl any more: the impl with
// Container meets the same requirements. At least, I got compile errors that
// there is no such function as `into_vec`, whereas `into_raw` did work, and
// `into_vec` is redundant anyway, because `into_raw` will give you the vector,
// and it is more generic.
impl > {
/// Creates a new image buffer based on a `Vec > {
let size = Self::image_buffer_len(width, height)
.expect("Buffer length in `ImageBuffer::new` overflows usize");
ImageBuffer {
data: vec![Zero::zero(); size],
width,
height,
_phantom: PhantomData,
}
}
/// Constructs a new ImageBuffer by copying a pixel
///
/// # Panics
///
/// Panics when the resulting image is larger the the maximum size of a vector.
pub fn from_pixel(width: u32, height: u32, pixel: P) -> ImageBuffer > {
let mut buf = ImageBuffer::new(width, height);
for p in buf.pixels_mut() {
*p = pixel
}
buf
}
/// Constructs a new ImageBuffer by repeated application of the supplied function.
///
/// The arguments to the function are the pixel's x and y coordinates.
///
/// # Panics
///
/// Panics when the resulting image is larger the the maximum size of a vector.
pub fn from_fn >
where
F: FnMut(u32, u32) -> P,
{
let mut buf = ImageBuffer::new(width, height);
for (x, y, p) in buf.enumerate_pixels_mut() {
*p = f(x, y)
}
buf
}
/// Creates an image buffer out of an existing buffer.
/// Returns None if the buffer is not big enough.
pub fn from_vec(
width: u32,
height: u32,
buf: Vec ,
) -> Img<&'buf [RGBA8]>
where
P: Pixel + 'static,
Rgba ,
{
let (width, height) = image.dimensions();
// TODO: conversion re-using the target buffer?
let image: ImageBuffer
### Writing raw buffers
If the high level interface is not needed because the image was obtained by other means, `image` provides the function `save_buffer` to save a buffer to a file.
```rust,no_run
fn main() {
let buffer: &[u8] = unimplemented!(); // Generate the image data
// Save the buffer as "image.png"
image::save_buffer("image.png", buffer, 800, 600, image::ColorType::Rgb8).unwrap()
}
```
image-0.24.7/benches/README.md 0000644 0000000 0000000 00000000246 10461020230 0013670 0 ustar 0000000 0000000 # Getting started with benchmarking
To run the benchmarks you need a nightly rust toolchain.
Then you launch it with
cargo +nightly bench --features=benchmarks
image-0.24.7/benches/copy_from.rs 0000644 0000000 0000000 00000000761 10461020230 0014756 0 ustar 0000000 0000000 use criterion::{black_box, criterion_group, criterion_main, Criterion};
use image::{GenericImage, ImageBuffer, Rgba};
pub fn bench_copy_from(c: &mut Criterion) {
let src = ImageBuffer::from_pixel(2048, 2048, Rgba([255u8, 0, 0, 255]));
let mut dst = ImageBuffer::from_pixel(2048, 2048, Rgba([0u8, 0, 0, 255]));
c.bench_function("copy_from", |b| {
b.iter(|| dst.copy_from(black_box(&src), 0, 0))
});
}
criterion_group!(benches, bench_copy_from);
criterion_main!(benches);
image-0.24.7/benches/decode.rs 0000644 0000000 0000000 00000006067 10461020230 0014211 0 ustar 0000000 0000000 use std::{fs, iter, path};
use criterion::{criterion_group, criterion_main, Criterion};
use image::ImageFormat;
#[derive(Clone, Copy)]
struct BenchDef {
dir: &'static [&'static str],
files: &'static [&'static str],
format: ImageFormat,
}
fn load_all(c: &mut Criterion) {
const BENCH_DEFS: &'static [BenchDef] = &[
BenchDef {
dir: &["bmp", "images"],
files: &[
"Core_1_Bit.bmp",
"Core_4_Bit.bmp",
"Core_8_Bit.bmp",
"rgb16.bmp",
"rgb24.bmp",
"rgb32.bmp",
"pal4rle.bmp",
"pal8rle.bmp",
"rgb16-565.bmp",
"rgb32bf.bmp",
],
format: ImageFormat::Bmp,
},
BenchDef {
dir: &["gif", "simple"],
files: &["alpha_gif_a.gif", "sample_1.gif"],
format: ImageFormat::Gif,
},
BenchDef {
dir: &["hdr", "images"],
files: &["image1.hdr", "rgbr4x4.hdr"],
format: ImageFormat::Hdr,
},
BenchDef {
dir: &["ico", "images"],
files: &[
"bmp-24bpp-mask.ico",
"bmp-32bpp-alpha.ico",
"png-32bpp-alpha.ico",
"smile.ico",
],
format: ImageFormat::Ico,
},
BenchDef {
dir: &["jpg", "progressive"],
files: &["3.jpg", "cat.jpg", "test.jpg"],
format: ImageFormat::Jpeg,
},
// TODO: pnm
// TODO: png
BenchDef {
dir: &["tga", "testsuite"],
files: &["cbw8.tga", "ctc24.tga", "ubw8.tga", "utc24.tga"],
format: ImageFormat::Tga,
},
BenchDef {
dir: &["tiff", "testsuite"],
files: &[
"hpredict.tiff",
"hpredict_packbits.tiff",
"mandrill.tiff",
"rgb-3c-16b.tiff",
],
format: ImageFormat::Tiff,
},
BenchDef {
dir: &["webp", "images"],
files: &[
"simple-gray.webp",
"simple-rgb.webp",
"vp8x-gray.webp",
"vp8x-rgb.webp",
],
format: ImageFormat::WebP,
},
];
for bench in BENCH_DEFS {
bench_load(c, bench);
}
}
criterion_group!(benches, load_all);
criterion_main!(benches);
fn bench_load(c: &mut Criterion, def: &BenchDef) {
let group_name = format!("load-{:?}", def.format);
let mut group = c.benchmark_group(&group_name);
let paths = IMAGE_DIR.iter().chain(def.dir);
for file_name in def.files {
let path: path::PathBuf = paths.clone().chain(iter::once(file_name)).collect();
let buf = fs::read(path).unwrap();
group.bench_function(file_name.to_owned(), |b| {
b.iter(|| {
image::load_from_memory_with_format(&buf, def.format).unwrap();
})
});
}
}
const IMAGE_DIR: [&'static str; 3] = [".", "tests", "images"];
image-0.24.7/benches/encode.rs 0000644 0000000 0000000 00000010045 10461020230 0014212 0 ustar 0000000 0000000 extern crate criterion;
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use image::{codecs::bmp::BmpEncoder, codecs::jpeg::JpegEncoder, ColorType};
use std::fs::File;
use std::io::{BufWriter, Seek, SeekFrom, Write};
trait Encoder {
fn encode_raw(&self, into: &mut Vec
(&self, path: Q) -> ImageResult<()>
where
Q: AsRef
(&self, path: Q, format: ImageFormat) -> ImageResult<()>
where
Q: AsRef