[package]
edition = "2024"
rust-version = "1.95.0"
name = "colconv"
version = "0.1.0"
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "SIMD-dispatched color-conversion kernels covering the FFmpeg AVPixelFormat space, with a Sink-based API so consumers pick which derived outputs (RGB / Luma / HSV / custom) they want without paying for the ones they don't."
homepage = "https://github.com/findit-ai/colconv"
documentation = "https://docs.rs/colconv"
readme = "README.md"
license = "GPL-3.0-or-later"
repository = "https://github.com/findit-ai/colconv"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
alloc = [
"libm",
"mediaframe/alloc",
]
bayer = ["mediaframe/bayer"]
default = [
"std",
"frame",
]
frame = [
"mediaframe/frame",
"yuv-planar",
"yuv-semi-planar",
"yuva",
"yuv-packed",
"yuv-444-packed",
"y2xx",
"v210",
"rgb",
"rgb-float",
"rgb-legacy",
"gbr",
"gray",
"bayer",
"xyz",
"mono",
]
gbr = ["mediaframe/gbr"]
gray = ["mediaframe/gray"]
mono = ["mediaframe/mono"]
rgb = ["mediaframe/rgb"]
rgb-float = ["mediaframe/rgb-float"]
rgb-legacy = ["mediaframe/rgb-legacy"]
std = [
"thiserror/default",
"mediaframe/std",
]
v210 = ["mediaframe/v210"]
xyz = ["mediaframe/xyz"]
y2xx = ["mediaframe/y2xx"]
yuv-444-packed = ["mediaframe/yuv-444-packed"]
yuv-packed = ["mediaframe/yuv-packed"]
yuv-planar = ["mediaframe/yuv-planar"]
yuv-semi-planar = ["mediaframe/yuv-semi-planar"]
yuva = [
"mediaframe/yuva",
"yuv-planar",
]
[lib]
name = "colconv"
path = "src/lib.rs"
bench = false
[[example]]
name = "derive_oetf_polynomial"
path = "examples/derive_oetf_polynomial.rs"
[[example]]
name = "derive_xyz_matrices"
path = "examples/derive_xyz_matrices.rs"
[[bench]]
name = "ayuv64_a_plus_combo"
path = "benches/ayuv64_a_plus_combo.rs"
harness = false
[[bench]]
name = "bayer16_to_rgb"
path = "benches/bayer16_to_rgb.rs"
harness = false
[[bench]]
name = "bayer_to_rgb"
path = "benches/bayer_to_rgb.rs"
harness = false
[[bench]]
name = "bgr24_to_rgb"
path = "benches/bgr24_to_rgb.rs"
harness = false
[[bench]]
name = "gbrap_to_rgba"
path = "benches/gbrap_to_rgba.rs"
harness = false
[[bench]]
name = "gbrp12_to_rgb"
path = "benches/gbrp12_to_rgb.rs"
harness = false
[[bench]]
name = "gbrp_to_rgb"
path = "benches/gbrp_to_rgb.rs"
harness = false
[[bench]]
name = "gbrpf32_to_rgb"
path = "benches/gbrpf32_to_rgb.rs"
harness = false
[[bench]]
name = "gray16_to_rgb"
path = "benches/gray16_to_rgb.rs"
harness = false
[[bench]]
name = "gray8_to_rgb"
path = "benches/gray8_to_rgb.rs"
harness = false
[[bench]]
name = "grayf32_to_rgb"
path = "benches/grayf32_to_rgb.rs"
harness = false
[[bench]]
name = "monoblack_to_rgb"
path = "benches/monoblack_to_rgb.rs"
harness = false
[[bench]]
name = "nv12_to_rgb"
path = "benches/nv12_to_rgb.rs"
harness = false
[[bench]]
name = "nv16_to_rgb"
path = "benches/nv16_to_rgb.rs"
harness = false
[[bench]]
name = "nv21_to_rgb"
path = "benches/nv21_to_rgb.rs"
harness = false
[[bench]]
name = "nv24_to_rgb"
path = "benches/nv24_to_rgb.rs"
harness = false
[[bench]]
name = "nv42_to_rgb"
path = "benches/nv42_to_rgb.rs"
harness = false
[[bench]]
name = "p010_to_rgb"
path = "benches/p010_to_rgb.rs"
harness = false
[[bench]]
name = "p012_to_rgb"
path = "benches/p012_to_rgb.rs"
harness = false
[[bench]]
name = "p016_to_rgb"
path = "benches/p016_to_rgb.rs"
harness = false
[[bench]]
name = "p210_to_rgb"
path = "benches/p210_to_rgb.rs"
harness = false
[[bench]]
name = "p212_to_rgb"
path = "benches/p212_to_rgb.rs"
harness = false
[[bench]]
name = "p216_to_rgb"
path = "benches/p216_to_rgb.rs"
harness = false
[[bench]]
name = "p410_to_rgb"
path = "benches/p410_to_rgb.rs"
harness = false
[[bench]]
name = "p412_to_rgb"
path = "benches/p412_to_rgb.rs"
harness = false
[[bench]]
name = "p416_to_rgb"
path = "benches/p416_to_rgb.rs"
harness = false
[[bench]]
name = "pal8_simd"
path = "benches/pal8_simd.rs"
harness = false
[[bench]]
name = "rgb24_to_luma"
path = "benches/rgb24_to_luma.rs"
harness = false
[[bench]]
name = "rgb48_to_rgb"
path = "benches/rgb48_to_rgb.rs"
harness = false
[[bench]]
name = "rgb565_to_rgb"
path = "benches/rgb565_to_rgb.rs"
harness = false
[[bench]]
name = "rgb_to_hsv"
path = "benches/rgb_to_hsv.rs"
harness = false
[[bench]]
name = "rgba64_to_rgba"
path = "benches/rgba64_to_rgba.rs"
harness = false
[[bench]]
name = "rgba_to_luma"
path = "benches/rgba_to_luma.rs"
harness = false
[[bench]]
name = "rgbf16_to_rgb"
path = "benches/rgbf16_to_rgb.rs"
harness = false
[[bench]]
name = "rgbf32_to_rgb"
path = "benches/rgbf32_to_rgb.rs"
harness = false
[[bench]]
name = "uyvy422_to_rgb"
path = "benches/uyvy422_to_rgb.rs"
harness = false
[[bench]]
name = "uyyvyy411_to_rgb"
path = "benches/uyyvyy411_to_rgb.rs"
harness = false
[[bench]]
name = "v210_to_rgb"
path = "benches/v210_to_rgb.rs"
harness = false
[[bench]]
name = "v30x_to_rgb"
path = "benches/v30x_to_rgb.rs"
harness = false
[[bench]]
name = "v410_to_rgb"
path = "benches/v410_to_rgb.rs"
harness = false
[[bench]]
name = "vuya_a_plus_combo"
path = "benches/vuya_a_plus_combo.rs"
harness = false
[[bench]]
name = "vuyx_to_rgb"
path = "benches/vuyx_to_rgb.rs"
harness = false
[[bench]]
name = "x2rgb10_to_rgb"
path = "benches/x2rgb10_to_rgb.rs"
harness = false
[[bench]]
name = "xv36_to_rgb"
path = "benches/xv36_to_rgb.rs"
harness = false
[[bench]]
name = "xyz12_to_rgb"
path = "benches/xyz12_to_rgb.rs"
harness = false
[[bench]]
name = "y210_to_rgb"
path = "benches/y210_to_rgb.rs"
harness = false
[[bench]]
name = "y212_to_rgb"
path = "benches/y212_to_rgb.rs"
harness = false
[[bench]]
name = "y216_to_rgb"
path = "benches/y216_to_rgb.rs"
harness = false
[[bench]]
name = "ya8_to_rgba"
path = "benches/ya8_to_rgba.rs"
harness = false
[[bench]]
name = "yuv_410p_to_rgb"
path = "benches/yuv_410p_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_411p_to_rgb"
path = "benches/yuv_411p_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_420_to_rgb"
path = "benches/yuv_420_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_420p10_to_rgb"
path = "benches/yuv_420p10_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_420p12_to_rgb"
path = "benches/yuv_420p12_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_420p14_to_rgb"
path = "benches/yuv_420p14_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_420p16_to_rgb"
path = "benches/yuv_420p16_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_422p10_to_rgb"
path = "benches/yuv_422p10_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_422p12_to_rgb"
path = "benches/yuv_422p12_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_422p14_to_rgb"
path = "benches/yuv_422p14_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_422p16_to_rgb"
path = "benches/yuv_422p16_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_422p_to_rgb"
path = "benches/yuv_422p_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_440p10_to_rgb"
path = "benches/yuv_440p10_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_440p12_to_rgb"
path = "benches/yuv_440p12_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_440p_to_rgb"
path = "benches/yuv_440p_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_444p10_to_rgb"
path = "benches/yuv_444p10_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_444p12_to_rgb"
path = "benches/yuv_444p12_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_444p14_to_rgb"
path = "benches/yuv_444p14_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_444p16_to_rgb"
path = "benches/yuv_444p16_to_rgb.rs"
harness = false
[[bench]]
name = "yuv_444p_to_rgb"
path = "benches/yuv_444p_to_rgb.rs"
harness = false
[[bench]]
name = "yuva_4_2_0_a_plus_combo"
path = "benches/yuva_4_2_0_a_plus_combo.rs"
harness = false
[[bench]]
name = "yuva_4_2_2_a_plus_combo"
path = "benches/yuva_4_2_2_a_plus_combo.rs"
harness = false
[[bench]]
name = "yuva_4_4_4_a_plus_combo"
path = "benches/yuva_4_4_4_a_plus_combo.rs"
harness = false
[[bench]]
name = "yuyv422_to_rgb"
path = "benches/yuyv422_to_rgb.rs"
harness = false
[[bench]]
name = "yvyu422_to_rgb"
path = "benches/yvyu422_to_rgb.rs"
harness = false
[dependencies.derive_more]
version = "2"
features = [
"display",
"is_variant",
"try_unwrap",
"unwrap",
]
default-features = false
[dependencies.half]
version = "2"
default-features = false
[dependencies.libm]
version = "0.2"
optional = true
[dependencies.mediaframe]
version = "0.1"
default-features = false
[dependencies.thiserror]
version = "2"
default-features = false
[dev-dependencies.tempfile]
version = "3"
[target.'cfg(not(target_family = "wasm"))'.dev-dependencies.criterion]
version = "0.8"
[lints.rust]
rust_2018_idioms = "warn"
single_use_lifetimes = "warn"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(all_tests)",
"cfg(tarpaulin)",
"cfg(colconv_force_scalar)",
"cfg(colconv_disable_avx512)",
"cfg(colconv_disable_avx2)",
]
[profile.bench]
opt-level = 3
lto = "thin"
codegen-units = 1
debug = 0
debug-assertions = false
rpath = false
overflow-checks = false
incremental = false