What a camera does to a CPU

Same footage. Same result. A fraction of the load.

Most camera-analytics pipelines reprocess the whole frame, every frame, forever — whether or not anything moved. Pick a stream and watch three approaches carry the same analytics. Only the work changes.

These are sample fixed-camera clips used for illustration. The core grid is a visualization, not a measurement of a real node; percentages are driven live by how much of each frame that method must actually recompute. When the whole frame changes at once — a camera bump, a lighting shift, a scene cut — HST detects it and switches to the dense path, then resumes tile-delta once the scene settles.

No optimization

full recompute
Every tile, every frame. The default in most deployments — and what melts the cluster.
Node load100%
tiles/frame 576▲ thermal throttle

Motion ROI

bounding box
Best-in-class open source (OpenCV / Frigate). Background subtraction, then analytics on a box around each moving blob.
Node load
tiles/frame warm

HST

tile-delta
Recomputes only the tiles whose pixels actually changed — and falls back to the dense path when too much changes at once.
Node load
tiles/frame cool

Measured, not mimicked

The benchmark behind the demo

The live panels above are illustrative. These numbers are measured wall-clock CPU, single core, OpenCV 5.0, running the identical analytics (blur → Sobel → threshold) over the evaluation streams. Two workload weights: light (edge pass) and heavy (adds bilateral denoise, ≈ a detection front-end). Baselines are the actual open-source options: frame-differencing gates (à la motion/ZoneMinder) and MOG2 background subtraction (à la Frigate).

17.6×
less analytics CPU — HST vs full recompute, quiet high-res stream, heavy workload
2.8×
less analytics CPU — busy 720p stream, heavy workload
identical
HST output vs full recompute, tile-exact
1784 / 1800
frames the frame-diff gate skipped while ~12 tiles/frame were genuinely changing
The main result is that HST dirty-tile scheduling is cutting analytics CPU while preserving full-recompute-equivalent output. On the heavy workload, we are seeing 2.8× less analytics CPU on the busy 720p stream and 17.6× less analytics CPU on the mostly static 2260×1272 stream. The important part is that this is not a cheap frame-skip trick: the output remains tile-exact against full recompute, while the open-source frame-diff style gate skips localized changes and MOG2 can cost more than it saves.
Full recompute HST tile-delta Frame-diff gate MOG2 gate

Stream A · Heavy

720p busy scene — the hard case
full 23.2 hst 8.4◂ 2.8× less diff 7.5 mog2 26.6

Stream B · Heavy

2260×1272 quiet — the cluster case
full 77.3 hst 4.4◂ 17.6× less diff 1.0 mog2 49.6

Stream A · Light

720p busy, edge pass only
full 1.9 hst 3.0 diff 0.7 mog2 13.7

Stream B · Light

high-res quiet, cheap per-pixel work
full 9.0 hst 3.2◂ 2.8× less diff 0.4 mog2 37.9
pipeline / cpu ms·frame⁻¹A · lightA · heavyB · lightB · heavyfidelity
Full recompute1.923.29.077.3reference
HST tile-delta3.0 0.65×8.4 2.8×3.2 2.8×4.4 17.6×tile-exact = full
Frame-diff gate (OSS)0.77.50.41.0misses localized motion
MOG2 gate (OSS)13.726.637.949.6costs more than it saves
H.264 decode (all pipelines)+4.9+15.6unavoidable
1

Where the gain appears

2.8× less analytics CPU on busy 720p and 17.6× on mostly-static high-res under heavy per-pixel work, both against full recompute. Big, quiet frames feeding heavy analytics — the camera-cluster profile — sit squarely in the HST envelope. Light analytics on a busy 720p frame is the other end of it: there HST reads 0.65× and loses, because the bookkeeping costs more than the 1.9 ms of work it is skipping. Every figure here is a single-core analytics-stage measurement taken in July 2026 on an arm64 Mac. The exact machine was not recorded, so read the architecture and not the part.

2

The open-source gates trade correctness for cheapness

The frame-diff gate posts the lowest CPU, but it is all-or-nothing: on Stream B it skipped analytics on 1,784 of 1,800 frames while ~12 tiles/frame were genuinely changing — localized motion it never saw. MOG2 is worse: its background model is a full-frame op every frame, so it costs more than the analytics it gates. HST is the only option delivering full-recompute-equivalent output at fractional cost.

3

It gets out of its own way

Merging adjacent dirty tiles into runs took dispatch from 5.2 → 3.0 ms on this harness — a single unpublished run, one compiler, with nothing else held fixed, so read it as a direction and not as a measured factor. When a whole scene turns over at once, the path switches to dense and back on its own, which is the behaviour the panels above show live. Nothing downstream has to be told which mode it is in.

4

Decode is a shared constant

H.264 software decode costs 4.9 ms/frame (A) and 15.6 ms/frame (B), identical across every pipeline here. These figures measure the analytics stage, which is the part that scales with resolution and detector weight. On cluster nodes, hardware decode takes the constant off the CPU entirely and the analytics saving lands on top.

Method: single core · OpenCV 5.0 · arm64 Mac, exact machine not recorded · July 2026 · 594 + 1800 frames · identical blur → Sobel → threshold analytics across every pipeline. Range across these runs is 2.8–17.6× on heavy analytics. Every ratio on this page is computed from the unrounded run; the table and charts show the same figures rounded to one decimal. Recompute from the rounded cells and you will land within about 2% of what we quote, not on it exactly — that is the rounding, not a second measurement.