[package]
edition = "2021"
name = "crabcamera"
version = "0.9.2"
build = "build.rs"
links = "tauri_plugin_crabcamera"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Advanced cross-platform camera integration for Tauri applications"
readme = "README.md"
keywords = [
"tauri",
"camera",
"cross-platform",
"desktop",
"rust",
]
categories = [
"multimedia",
"gui",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/Michael-A-Kuykendall/crabcamera"
[features]
audio = [
"dep:cpal",
"dep:libopus_sys",
"dep:crossbeam-channel",
]
contextlite = ["dep:contextlite-client"]
default = ["tauri"]
full-recording = [
"recording",
"audio",
]
headless = []
recording = [
"dep:muxide",
"dep:openh264",
]
tauri = [
"dep:tauri",
"dep:tauri-plugin",
]
[lib]
name = "crabcamera"
path = "src/lib.rs"
[[bin]]
name = "crabcamera-cli"
path = "src/bin/cli.rs"
required-features = ["headless"]
[[bin]]
name = "headless-capture"
path = "src/bin/headless_capture.rs"
required-features = [
"headless",
"audio",
]
[[example]]
name = "audit_flow_debug"
path = "examples/audit_flow_debug.rs"
[[example]]
name = "camera_on_test"
path = "examples/camera_on_test.rs"
[[example]]
name = "camera_preview"
path = "examples/camera_preview.rs"
[[example]]
name = "camera_warmup_analysis"
path = "examples/camera_warmup_analysis.rs"
[[example]]
name = "direct_capture"
path = "examples/direct_capture.rs"
[[example]]
name = "format_debug"
path = "examples/format_debug.rs"
[[example]]
name = "functional_test"
path = "examples/functional_test.rs"
required-features = ["recording"]
[[example]]
name = "hardware_audit"
path = "examples/hardware_audit.rs"
[[example]]
name = "live_audio_test"
path = "examples/live_audio_test.rs"
[[example]]
name = "live_av_recording"
path = "examples/live_av_recording.rs"
[[example]]
name = "quick_test"
path = "examples/quick_test.rs"
[[example]]
name = "raw_nokhwa_test"
path = "examples/raw_nokhwa_test.rs"
[[example]]
name = "record_video"
path = "examples/record_video.rs"
required-features = ["recording"]
[[example]]
name = "reuse_debug"
path = "examples/reuse_debug.rs"
[[example]]
name = "save_test_output"
path = "examples/save_test_output.rs"
required-features = ["recording"]
[[example]]
name = "smart_capture_demo"
path = "examples/smart_capture_demo.rs"
[[example]]
name = "test_encoder_output"
path = "examples/test_encoder_output.rs"
required-features = ["recording"]
[[example]]
name = "visual_camera_test"
path = "examples/visual_camera_test.rs"
[[test]]
name = "audio_capture_test"
path = "tests/audio_capture_test.rs"
[[test]]
name = "av_integration"
path = "tests/av_integration.rs"
[[test]]
name = "commands_advanced_test"
path = "tests/commands_advanced_test.rs"
[[test]]
name = "commands_capture_test"
path = "tests/commands_capture_test.rs"
[[test]]
name = "commands_init_test"
path = "tests/commands_init_test.rs"
[[test]]
name = "commands_permissions_test"
path = "tests/commands_permissions_test.rs"
[[test]]
name = "contract_invariants"
path = "tests/contract_invariants.rs"
[[test]]
name = "encoder_test"
path = "tests/encoder_test.rs"
[[test]]
name = "errors_test"
path = "tests/errors_test.rs"
[[test]]
name = "focus_stack_test"
path = "tests/focus_stack_test.rs"
[[test]]
name = "fuzz_tests"
path = "tests/fuzz_tests.rs"
[[test]]
name = "headless"
path = "tests/headless/mod.rs"
required-features = ["headless"]
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "permissions_test"
path = "tests/permissions_test.rs"
[[test]]
name = "platform_linux_test"
path = "tests/platform_linux_test.rs"
[[test]]
name = "platform_test"
path = "tests/platform_test.rs"
[[test]]
name = "platform_windows_test"
path = "tests/platform_windows_test.rs"
[[test]]
name = "quality_analysis_test"
path = "tests/quality_analysis_test.rs"
[[test]]
name = "recording_props"
path = "tests/recording_props.rs"
required-features = ["recording"]
[[test]]
name = "save_frame_compressed_quality_test"
path = "tests/save_frame_compressed_quality_test.rs"
[[test]]
name = "standalone_test"
path = "tests/standalone_test.rs"
[[test]]
name = "synthetic_av_test"
path = "tests/synthetic_av_test.rs"
[[test]]
name = "types_test"
path = "tests/types_test.rs"
[[test]]
name = "windows_controls_unit_test"
path = "tests/windows_controls_unit_test.rs"
[[bench]]
name = "encoding_benchmarks"
path = "benches/encoding_benchmarks.rs"
harness = false
required-features = [
"recording",
"audio",
]
[dependencies.anyhow]
version = "1.0"
[dependencies.block]
version = "0.1"
[dependencies.bytes]
version = "1.0"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.config]
version = "0.14"
[dependencies.contextlite-client]
version = "2.0.7"
optional = true
[dependencies.cpal]
version = "0.15"
optional = true
[dependencies.crossbeam-channel]
version = "0.5"
optional = true
[dependencies.ctrlc]
version = "3.4"
[dependencies.env_logger]
version = "0.10"
[dependencies.image]
version = "0.25"
[dependencies.libopus_sys]
version = "0.3.2"
features = [
"bundled",
"static",
]
optional = true
[dependencies.log]
version = "0.4"
[dependencies.muxide]
version = "0.1.2"
optional = true
[dependencies.nokhwa]
version = "0.10.10"
features = [
"input-native",
"output-threaded",
]
[dependencies.openh264]
version = "0.9"
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.tauri]
version = "2.0"
features = ["protocol-asset"]
optional = true
[dependencies.thiserror]
version = "1.0"
[dependencies.tokio]
version = "1.40"
features = ["full"]
[dependencies.tokio-util]
version = "0.7"
[dependencies.toml]
version = "0.8"
[dependencies.uuid]
version = "1.10"
features = [
"v4",
"serde",
]
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.ctrlc]
version = "3.4"
[dev-dependencies.futures]
version = "0.3"
[dev-dependencies.proptest]
version = "1.4"
[dev-dependencies.serde_json]
version = "1.0"
[dev-dependencies.tempfile]
version = "3.10"
[dev-dependencies.tokio-test]
version = "0.4"
[build-dependencies.tauri-plugin]
version = "2.0"
features = ["build"]
optional = true
[target.'cfg(target_os = "linux")'.dependencies.v4l]
version = "0.14"
[target.'cfg(target_os = "macos")'.dependencies.cocoa]
version = "0.26"
[target.'cfg(target_os = "macos")'.dependencies.objc]
version = "0.2"
[target.'cfg(target_os = "windows")'.dependencies.windows]
version = "0.58"
features = [
"Win32_Media_MediaFoundation",
"Win32_Media_DirectShow",
"Win32_System_Com",
"Win32_Foundation",
"Win32_System_ProcessStatus",
"Win32_System_Threading",
"implement",
]
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ['cfg(feature, values("cargo-clippy"))']