pic_scale/
lib.rs

1/*
2 * Copyright (c) Radzivon Bartoshyk. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification,
5 * are permitted provided that the following conditions are met:
6 *
7 * 1.  Redistributions of source code must retain the above copyright notice, this
8 * list of conditions and the following disclaimer.
9 *
10 * 2.  Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution.
13 *
14 * 3.  Neither the name of the copyright holder nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29#![deny(deprecated)]
30// #![deny(unreachable_code, unused)]
31#![allow(clippy::too_many_arguments)]
32#![cfg_attr(
33    all(feature = "nightly_avx512", target_arch = "x86_64"),
34    feature(cfg_version)
35)]
36#![cfg_attr(
37    all(feature = "nightly_avx512", target_arch = "x86_64"),
38    feature(avx512_target_feature)
39)]
40#![cfg_attr(
41    all(feature = "nightly_avx512", target_arch = "x86_64"),
42    feature(stdarch_x86_avx512)
43)]
44#![cfg_attr(
45    all(feature = "nightly_avx512fp16", target_arch = "x86_64"),
46    feature(stdarch_x86_avx512_f16)
47)]
48#![cfg_attr(feature = "nightly_f16", feature(f16))]
49#![cfg_attr(docsrs, feature(doc_cfg))]
50
51mod alpha_check;
52#[cfg(feature = "nightly_f16")]
53mod alpha_handle_f16;
54mod alpha_handle_f32;
55mod alpha_handle_u16;
56mod alpha_handle_u8;
57mod ar30;
58#[cfg(all(target_arch = "x86_64", feature = "avx"))]
59mod avx2;
60#[cfg(all(target_arch = "x86_64", feature = "nightly_avx512"))]
61mod avx512;
62mod cbcr16;
63mod cbcr8;
64mod cbcr_f32;
65mod color_group;
66#[cfg(feature = "colorspaces")]
67mod colors;
68mod convolution;
69mod convolve_naive_f32;
70mod cpu_features;
71mod dispatch_group_ar30;
72#[cfg(feature = "nightly_f16")]
73mod dispatch_group_f16;
74mod dispatch_group_f32;
75mod dispatch_group_u16;
76mod dispatch_group_u8;
77#[cfg(feature = "nightly_f16")]
78mod f16;
79mod filter_weights;
80mod fixed_point_horizontal;
81mod fixed_point_horizontal_ar30;
82mod fixed_point_vertical;
83mod fixed_point_vertical_ar30;
84mod floating_point_horizontal;
85mod floating_point_vertical;
86mod handler_provider;
87mod image_size;
88mod image_store;
89mod math;
90mod mixed_storage;
91mod mlaf;
92mod nearest_sampler;
93#[cfg(all(target_arch = "aarch64", target_feature = "neon"))]
94mod neon;
95mod pic_scale_error;
96mod plane_f32;
97mod plane_u16;
98mod plane_u8;
99mod resize_ar30;
100mod rgb_f32;
101mod rgb_u16;
102mod rgb_u8;
103mod rgba_f32;
104mod rgba_u16;
105mod rgba_u8;
106mod sampler;
107mod saturate_narrow;
108mod scaler;
109#[cfg(feature = "nightly_f16")]
110#[cfg_attr(docsrs, doc(cfg(feature = "nightly_f16")))]
111mod scaler_f16;
112#[cfg(all(any(target_arch = "x86_64", target_arch = "x86"), feature = "sse"))]
113mod sse;
114mod support;
115mod threading_policy;
116#[cfg(all(target_arch = "wasm32", target_feature = "simd128",))]
117mod wasm32;
118
119pub use ar30::Ar30ByteOrder;
120#[cfg(feature = "colorspaces")]
121pub use colors::*;
122#[cfg(feature = "colorspaces")]
123pub use colorutils_rs::TransferFunction;
124pub use image_size::ImageSize;
125pub use image_store::{
126    BufferStore, CbCr16ImageStore, CbCr16ImageStoreMut, CbCr8ImageStore, CbCr8ImageStoreMut,
127    CbCrF32ImageStore, CbCrF32ImageStoreMut, ImageStore, ImageStoreMut, Planar16ImageStore,
128    Planar16ImageStoreMut, Planar8ImageStore, Planar8ImageStoreMut, PlanarF32ImageStore,
129    PlanarF32ImageStoreMut, Rgb16ImageStore, Rgb16ImageStoreMut, Rgb8ImageStore, Rgb8ImageStoreMut,
130    RgbF32ImageStore, RgbF32ImageStoreMut, Rgba16ImageStore, Rgba16ImageStoreMut, Rgba8ImageStore,
131    Rgba8ImageStoreMut, RgbaF32ImageStore, RgbaF32ImageStoreMut,
132};
133#[cfg(feature = "nightly_f16")]
134#[cfg_attr(docsrs, doc(cfg(feature = "nightly_f16")))]
135pub use image_store::{
136    CbCrF16ImageStore, CbCrF16ImageStoreMut, PlanarF16ImageStore, PlanarF16ImageStoreMut,
137    RgbF16ImageStore, RgbF16ImageStoreMut, RgbaF16ImageStore, RgbaF16ImageStoreMut,
138};
139pub use math::*;
140pub use pic_scale_error::{PicScaleBufferMismatch, PicScaleError};
141pub use sampler::*;
142pub use scaler::{ImageStoreScaling, Scaler, ScalingOptions, WorkloadStrategy};
143pub use scaler::{Scaling, ScalingF32, ScalingU16};
144pub use threading_policy::*;