Kirill Kuzminykh
55ee4f1ec8
Improved optimisation of MulDiv with helps of NEON SIMD for U8x4 pixels.
2022-11-10 00:48:22 +04:00
Kirill Kuzminykh
f2ef3d1b04
Fixed error in implementation of MulDiv::divide_alpha() and MulDiv::divide_alpha_inplace() for U16x4 pixels with optimisation with helps of SSE4.1 and AVX2.
2022-11-09 03:22:13 +04:00
Kirill Kuzminykh
4ecb03336c
Added optimisation for processing U16x4 images by MulDiv with helps of NEON SIMD instructions.
2022-11-08 00:33:08 +04:00
Kirill Kuzminykh
d65ddab704
Added support of optimisation with helps of NEON SIMD for convolution of U16x4 images.
2022-11-02 23:43:22 +04:00
Kirill Kuzminykh
6c89f4fbae
- Internals of PixelComponentMapper changed to use heap to store its data.
...
- Fixed couple tests.
2022-10-29 02:13:55 +04:00
Kirill Kuzminykh
2f88f9df16
- Added method CpuExtensions::is_supported(&self).
...
- Refactored tests.
- Fixed GitHub Actions for run check and test the crate.
2022-10-29 01:14:08 +04:00
Kirill Kuzminykh
7b5a1238ca
Static variables SRGB_MAPPER and GAMMA22_MAPPER replaced by functions to create these mappers.
2022-10-28 20:59:41 +04:00
Kirill Kuzminykh
ff2837d704
- Added support of optimisation with help of NEON SIMD for convolution of U8x4 images.
...
- Added optimisation for processing `U8x4` images by `MulDiv` with helps of `NEON SIMD` instructions.
2022-10-19 00:25:14 +04:00
Kirill Kuzminykh
e3b64bf7b1
- Trait Pixel renamed into PixelExt and changed.
...
- All pixel types (`U8`, `U8x2`, ...) replaced by type aliases for new generic structure `Pixel`. Use method `new()` to create instance of one pixel.
- Added module `color` for working with colorspace and gamma.
2022-10-07 20:39:21 +04:00
Kirill Kuzminykh
39f7841030
- Breaking changes:
...
- Struct `ImageView` replaced by enum `DynamicImageView`.
- Struct `ImageViewMut` replaced by enum `DynamicImageViewMut`.
- Trait `Pixel` changed:
- Associated type `ComponentsCount` renamed into `CountOfComponents`.
- Associated type `ComponentCountOfValues` renamed into `CountOfComponentValues`.
- Associated method `components_count` renamed into `count_of_components`.
- Associated method `component_count_of_values` renamed into `count_of_component_values`.
- Added generic structs `ImageView` and `ImageViewMut`.
- Added module `color` for working with colorspace and gamma.
- Added functions `change_type_of_pixel_components` and
`change_type_of_pixel_components_dyn` to change type of pixel's
components in whole image.
- Added generic trait `IntoPixelComponent<Out: PixelComponent>`.
### Example application
- Added option `--high_precision` to use `u16` as pixel components
for intermediate image representation.
- Added converting of source image into linear colorspace before it will be resized.
Destination image will be returned into original colorspace before it will be saved.
2022-09-14 00:07:03 +03:00
Kirill Kuzminykh
c454c3b990
Added functions for converting image colorspace.
2022-08-31 22:38:27 +03:00
Kirill Kuzminykh
6483439ab3
Fixed resizing when the destination image has the same dimensions as the source image ( #9 ).
2022-07-14 23:29:45 +03:00
Kirill Kuzminykh
5b89090d11
- Fixed benchmarks for resizing images with alpha channel using the resizer crate.
...
- Removed `image` crate from benchmarks for resizing images with alpha.
- Added method `Image::copy(&self) -> Image<'static>`.
2022-06-28 23:50:14 +03:00
Kirill Kuzminykh
891312a4bb
Added support of new type of pixels PixelType::U16x4.
2022-06-26 19:16:22 +03:00
Kirill Kuzminykh
20d0578306
Added support of new type of pixels PixelType::U16x2
2022-06-22 21:52:47 +03:00
Kirill Kuzminykh
d719e2ab75
- Extracted helping code for testing into separate crate.
...
- Optimized convolution of U16 images with help of AVX2.
2022-05-31 22:58:10 +03:00
Kirill Kuzminykh
5954725342
Added support of new type of pixels PixelType::U16.
2022-05-22 22:51:05 +03:00
Kirill Kuzminykh
13b2cf99b7
Added optimisation for convolution of U8x2 images with helps of SSE4.1.
2022-05-19 20:15:16 +03:00
Kirill Kuzminykh
1be895f332
- Added optimisation for processing `U8x2 images by MulDiv with helps of SSE4.1 and AVX2` instructions.
...
- Added optimisation for convolution of ``U16x2`` images with helps of ``AVX2`` instructions.
2022-05-13 00:03:40 +03:00
Kirill Kuzminykh
0a19acf252
- Added support of new type of pixels `PixelType::U8x2`.
...
- Added into ``MulDiv`` support of images with pixel type ``U8x2``.
2022-05-01 23:09:25 +03:00
Kirill Kuzminykh
d5d46066f4
Removed unnecessary test.
2022-03-24 00:37:32 +03:00
Kirill Kuzminykh
d657aef4cf
- Allowed to create an instance of Image, ImageVew and ImageViewMut from a buffer larger than necessary ( #5 ).
...
- Removed methods: `Image::from_vec_u32()`, `Image::from_slice_u32()`.
- Removed error `InvalidBufferSizeError`.
2022-03-22 00:18:26 +03:00
Kirill Kuzminykh
bcf86e0cf1
- Added optimisation of convolution U16x3 images with helps of `SSE4.1 and AVX2` instructions.
...
- Added partial optimisation of convolution U8 images with helps of ``SSE4.1`` instructions.
2022-03-22 00:16:57 +03:00
Kirill Kuzminykh
146777ddbc
- Added support of new type of pixels PixelType::U16x3.
...
- Added variant `U16x3` into the enum `PixelType`.
2022-01-27 20:25:44 +03:00
Kirill Kuzminykh
d4ead15856
- Added optimisation of multiplying and dividing image by alpha channel with helps of `SSE4.1` instructions.
...
- Improved performance of dividing image by alpha channel without forced SIMD instructions.
- Deleted variant `SSE2` from enum ``CpuExtensions``.
2022-01-12 23:38:32 +03:00
Kirill Kuzminykh
2a5efa4105
Fixed tests in README.md
2021-12-14 00:45:21 +03:00
Kirill Kuzminykh
5fdbd5793b
Fixed compile errors on non-x86 architectures.
2021-12-14 00:33:54 +03:00
Kirill Kuzminykh
d76faadd2b
Fixes after merge.
2021-12-14 00:25:02 +03:00
Kirill Kuzminykh
a8f36e65c3
Merge branch 'main' into dev
...
# Conflicts:
# CHANGELOG.md
# tests/resize_tests.rs
2021-12-14 00:19:29 +03:00
Kirill Kuzminykh
044478620d
- Added optimisation of convolution U8x3 images with helps of `AVX2` instructions.
...
- Fixed error in code for convolution U8x4 images with helps of ``SSE4.1`` instructions.
- Fixed error in code for convolution U8 images with helps of ``AVX2`` instructions.
2021-12-14 00:17:45 +03:00
Kirill Kuzminykh
769355df03
Added support for running tests on architectures other than x86_64.
2021-11-26 10:21:24 +03:00
Kirill Kuzminykh
79c8fceeb1
- Added support of new type of pixels PixelType::U8x3 (with auto-vectorization for SSE4.1).
...
- Exposed module `fast_image_resize::pixels` with types `U8x3`, `U8x4`, `F32`, `I32`, `U8` used as wrappers for represent type of one pixel of image.
- Some optimisations in code of convolution written in Rust (without intrinsics for SIMD).
- Added variant `U8x3` into the enum `PixelType`.
- Changed internal tuple structures inside of variant of `ImageRows` and `ImageRowsMut` enums.
2021-11-18 21:48:32 +03:00
Kirill Kuzminykh
d918386dfb
Added optimisation of convolution grayscale images (U8) with helps of `AVX2` instructions.
2021-11-13 20:40:25 +03:00
Kirill Kuzminykh
61b94a05fc
- Added support of the new type of pixels - U8.
...
- Added benchmarks for resizing of U8 image.
2021-10-23 12:10:33 +03:00
Kirill Kuzminykh
4cb09ed0ac
- Added method SrcImageView.set_crop_box_to_fit_dst_size().
...
- Fixed out-of-bounds error during resize with cropping.
- Refactored `ImageData`.
2021-08-28 20:45:31 +03:00
Kirill Kuzminykh
c5d527704c
- Added method SrcImageView.set_crop_box_to_fit_dst_size().
...
- Fixed out-of-bounds error during resize with cropping.
- Refactored `ImageData`.
2021-08-28 17:12:53 +03:00
Kirill Kuzminykh
638064223e
Fixed link to CHANGELOG.md in the README.md.
2021-08-18 23:19:04 +03:00
Kirill Kuzminykh
ef12fe1d76
Changed example of code in README.md
2021-08-01 01:28:24 +03:00
Kirill Kuzminykh
69bef66fa1
Added generator of MD table with result of resizing speed comparison.
2021-07-30 01:22:16 +03:00
Kirill Kuzminykh
93f7cbb161
Added error `InvalidBufferSizeError`.
2021-07-27 22:57:58 +03:00
Kirill Kuzminykh
5295315342
Added method `ImageData<Vec<u32>>::from_buffer()`
2021-07-13 20:54:41 +03:00
Kirill Kuzminykh
dec46ebb49
Small optimisation of resizing of images with U8x4 pixel format.
2021-07-13 00:13:17 +03:00
Kirill Kuzminykh
6214456ddd
Added some comments for example code
2021-07-04 16:45:44 +03:00
Kirill Kuzminykh
bb1dd8e2b8
- Added benchmarks for resizing with target-cpu=native.
2021-07-04 00:41:38 +03:00
Kirill Kuzminykh
d098c213ad
Added benchmarks result into README.md
2021-07-03 17:02:57 +03:00
Kirill Kuzminykh
d8033a005b
Initial commit
2021-07-03 14:29:58 +03:00