mirror of
https://github.com/scottlamb/moonfire-nvr.git
synced 2025-02-03 09:55:59 -05:00
3ed397bacd
When compiled with cargo build --features=analytics and enabled via moonfire-nvr run --object-detection, this runs object detection on every sub stream frame through an Edge TPU (a Coral USB accelerator) and logs the result. This is a very small step toward a working system. It doesn't actually record the result in the database or send it out on the live stream yet. It doesn't support running object detection at a lower frame rate than the sub streams come in at either. To address those problems, I need to do some refactoring. Currently moonfire_db::writer::Writer::Write is the only place that knows the duration of the frame it's about to flush, before it gets added to the index or sent out on the live stream. I don't want to do the detection from there; I'd prefer the moonfire_nvr crate. So I either need to introduce an analytics callback or move a bunch of that logic to the other crate. Once I do that, I need to add database support (although I have some experiments for that in moonfire-playground) and API support, then some kind of useful frontend. Note edgetpu.tflite is taken from the Apache 2.0-licensed https://github.com/google-coral/edgetpu, test_data/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite. The following page says it's fine to include Apache 2.0 stuff in GPLv3 projects: https://www.apache.org/licenses/GPL-compatibility.html
72 lines
2.0 KiB
TOML
72 lines
2.0 KiB
TOML
[package]
|
|
name = "moonfire-nvr"
|
|
version = "0.1.0"
|
|
authors = ["Scott Lamb <slamb@slamb.org>"]
|
|
edition = "2018"
|
|
|
|
[features]
|
|
|
|
# The nightly feature is used within moonfire-nvr itself to gate the
|
|
# benchmarks. Also pass it along to crates that can benefit from it.
|
|
nightly = ["db/nightly", "parking_lot/nightly", "smallvec/union"]
|
|
|
|
# The bundled feature includes bundled (aka statically linked) versions of
|
|
# native libraries where possible.
|
|
bundled = ["rusqlite/bundled"]
|
|
|
|
analytics = ["moonfire-tflite", "ffmpeg/swscale"]
|
|
|
|
[workspace]
|
|
members = ["base", "db"]
|
|
|
|
[dependencies]
|
|
base = { package = "moonfire-base", path = "base" }
|
|
base64 = "0.11.0"
|
|
blake3 = "0.2.2"
|
|
bytes = "0.5.3"
|
|
byteorder = "1.0"
|
|
cstr = "0.1.7"
|
|
cursive = "0.14.0"
|
|
db = { package = "moonfire-db", path = "db" }
|
|
docopt = "1.0"
|
|
failure = "0.1.1"
|
|
ffmpeg = { package = "moonfire-ffmpeg", git = "https://github.com/scottlamb/moonfire-ffmpeg" }
|
|
futures = "0.3"
|
|
fnv = "1.0"
|
|
h264-reader = { git = "https://github.com/dholroyd/h264-reader" }
|
|
http = "0.2.0"
|
|
http-serve = "0.2.0"
|
|
hyper = "0.13.0"
|
|
lazy_static = "1.0"
|
|
libc = "0.2"
|
|
log = { version = "0.4", features = ["release_max_level_info"] }
|
|
memchr = "2.0.2"
|
|
memmap = "0.7"
|
|
mylog = { git = "https://github.com/scottlamb/mylog" }
|
|
nix = "0.16.1"
|
|
parking_lot = { version = "0.9", features = [] }
|
|
protobuf = { git = "https://github.com/stepancheg/rust-protobuf" }
|
|
reffers = "0.6.0"
|
|
regex = "1.0"
|
|
ring = "0.14.6"
|
|
rusqlite = "0.21.0"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
smallvec = "1.0"
|
|
moonfire-tflite = { git = "https://github.com/scottlamb/moonfire-tflite", features = ["edgetpu"], optional = true }
|
|
time = "0.1"
|
|
tokio = { version = "0.2.0", features = ["blocking", "macros", "rt-threaded", "signal"] }
|
|
tokio-tungstenite = "0.10.1"
|
|
url = "2.1.1"
|
|
uuid = { version = "0.8", features = ["serde", "std", "v4"] }
|
|
|
|
[dev-dependencies]
|
|
reqwest = { version = "0.10.1", features = ["json"] }
|
|
tempdir = "0.3"
|
|
|
|
[profile.release]
|
|
debug = true
|
|
|
|
[profile.bench]
|
|
debug = true
|