[package]
name        = "nokhwa"
version     = "0.10.11"
authors     = [ "l1npengtul <l1npengtul@protonmail.com>" ]
edition     = "2021"
description = "A Simple-to-use, cross-platform Rust Webcam Capture Library"
keywords    = [ "camera", "webcam", "capture", "cross-platform" ]
categories  = [ "api-bindings", "multimedia", "os", "web-programming" ]
license     = "Apache-2.0"
repository  = "https://github.com/l1npengtul/nokhwa"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[workspace]
members = [
    "nokhwa-bindings-macos",
    "nokhwa-bindings-windows",
    "nokhwa-bindings-linux",
    "nokhwa-core",
]
exclude = [ "examples/jscam" ]

[lib]
crate-type = [ "cdylib", "rlib" ]

[features]
default            = [ "decoding" ]
serialize          = [ "serde", "nokhwa-core/serialize" ]
decoding           = [ "nokhwa-core/mjpeg" ]
input-avfoundation = [ "nokhwa-bindings-macos" ]
input-msmf         = [ "nokhwa-bindings-windows" ]
input-v4l          = [ "nokhwa-bindings-linux" ]
# Disable arena buffer on v4l
# This should fix crash on Raspberry Pi that have faulty v4l driver.
# WARNING: This create a performance regression, half of the frames will be dropped
# You shouldn't enable this unless you have to.
input-v4l-no-arena-buffer = [ "nokhwa-bindings-linux/no-arena-buffer" ]
input-native              = [ "input-avfoundation", "input-v4l", "input-msmf" ]
# Re-enable it once soundness has been proven + mozjpeg is updated to 0.9.x
# input-uvc = ["uvc", "uvc/vendor", "usb_enumeration", "lazy_static"]
input-opencv = [
    "opencv",
    "opencv/videoio",
    "opencv/rgb",
    "opencv/clang-runtime",
    "nokhwa-core/opencv-mat",
]
# input-jscam = [
#     "web-sys",
#     "js-sys",
#     "wasm-bindgen-futures",
#     "wasm-bindgen",
#     "wasm-rs-async-executor",
# ]
output-wgpu = [ "wgpu", "nokhwa-core/wgpu-types" ]
# output-wasm = [ "input-jscam" ]
output-threaded  = [ "parking_lot", "camera-sync-impl" ]
camera-sync-impl = [  ]
# small-wasm = [  ]
docs-only = [
    "input-native",
    "input-opencv",
    "output-wgpu",
    "output-threaded",
    "serialize",
]
docs-nolink = [ "nokhwa-core/docs-features" ]
docs-features = [  ]

[dependencies]
thiserror = "2.0"
paste     = "1.0"
flume     = "0.11"

[dependencies.nokhwa-core]
version = "0.1"
path    = "nokhwa-core"

[dependencies.serde]
version  = "1.0"
optional = true

[dependencies.image]
version          = "0.25"
default-features = false

[dependencies.usb_enumeration]
version  = "0.2"
optional = true

[dependencies.wgpu]
version  = "27"
optional = true

[dependencies.opencv]
version          = "0.97"
default-features = false
optional         = true

[dependencies.rgb]
version  = "0.8"
optional = true

[dependencies.nokhwa-bindings-windows]
version  = "0.4"
path     = "nokhwa-bindings-windows"
optional = true

[dependencies.nokhwa-bindings-macos]
version  = "0.2"
path     = "nokhwa-bindings-macos"
optional = true

[dependencies.nokhwa-bindings-linux]
version  = "0.1"
path     = "nokhwa-bindings-linux"
optional = true

[dependencies.regex]
version  = "1.12"
optional = true

[dependencies.parking_lot]
version  = "0.12"
optional = true

[dependencies.web-sys]
version = "0.3"
features = [
    "console",
    "CanvasRenderingContext2d",
    "CssStyleDeclaration",
    "Document",
    "Element",
    "HtmlElement",
    "HtmlVideoElement",
    "HtmlCanvasElement",
    "ImageData",
    "MediaDevices",
    "MediaDeviceInfo",
    "MediaDeviceKind",
    "MediaStreamConstraints",
    "MediaTrackSupportedConstraints",
    "MediaStream",
    "MediaStreamTrack",
    "MediaTrackSettings",
    "MediaTrackConstraints",
    "MediaStreamTrackState",
    "MimeType",
    "MimeTypeArray",
    "Navigator",
    "Node",
    "Permissions",
    "PermissionDescriptor",
    "PermissionState",
    "PermissionStatus",
    "Plugin",
    "PluginArray",
    "Window",
]
optional = true

[dependencies.js-sys]
version  = "0.3"
optional = true

[dependencies.wasm-bindgen]
version  = "0.2"
optional = true

[dependencies.wasm-bindgen-futures]
version  = "0.4"
optional = true

[dependencies.wasm-rs-async-executor]
version  = "0.9"
optional = true

[package.metadata.docs.rs]
features = [ "docs-only", "docs-nolink", "docs-features" ]
