JSI · Physical Security Engineering · Project EGA

What a Trailer Computer Can Carry

Three measured runs on the trailer machine, with every camera live. How many cameras fit, what happens when you push the frame rate, and the second limit we were not watching until it stopped the machine.

Machine
Intel N150 · 4 cores · 16 GB
Runs
3 · 20–30 min each
Cameras
9 paired
Revised
2026-08-26

The short answer

Nine paired cameras run comfortably at 55% of the machine.

That is nine cameras annotated by EGA and nine recorded by GeoVision, on one trailer computer. A camera only counts if it reaches both: EGA draws the detection box, and the recorder is the path to the monitoring centre. A camera in one but not the other reaches no operator at all.

We tried raising the frame rate and it does not scale. Nine cameras at the current settings is a good place to sit.

55% Nine cameras, 11 fps

Of the whole machine, with all nine annotated and all nine recorded.

4.4% Per paired camera

About a sixth of one of the machine's four processor cores.

83% The same nine at 13 fps

18% more frames cost 28 points of processor. It does not scale.

195 MB Memory per camera

Fixed, not growing. Memory turned out to be a real limit too.

What we measured

Three runs on the machine in the trailer, every camera live and publishing, sampled every ten seconds.

RunCamerasFrame rateProcessorClock
A711 fps44%2261 MHzcomfortable
B911 fps55%2140 MHzcomfortable
C913 fps83%1675 MHzno headroom

Where run B goes

Nine cameras at 11 fpsMeanp95
EGA — drawing the boxes on nine streams27.0%29.0%
GeoVision — recording nine streams16.8%19.5%
Everything else8.4%11.9%
Total55.3%70.0%

Each paired camera costs about 4.4% of the machine. Activity barely changes it: with people crossing, EGA measured 27.2% against 27.0% idle. The work is decoding, drawing and re-encoding every frame, and that happens whether the scene is empty or not.

Raising the frame rate does not scale

We raised all nine cameras from 11 to 13 frames per second — 18% more frames. It cost 28 points of processor, taking the machine from 55% to 83%, with peaks touching 100%.

Why

The processor slows itself down as it gets busy. It held 2140 MHz at 11 fps and only 1675 MHz at 13 fps. Every frame then took more processor time, which raised the load further, which lowered the clock again. Correcting for the clock, EGA itself scaled below the frame increase, as it should. The machine, as a whole, did not.

The lesson matters more than the number: this machine does not degrade smoothly. Estimating in a straight line works while there is room and stops working near the top. We projected 60% for this run and measured 83%. That is now known by measurement rather than assumed, which is why we would not go beyond about twelve cameras without testing first.

Raising the picture size costs far more than raising the frame rate

The cameras run at D1, which is 704 by 480 pixels. The next size up available on the stream EGA uses is 720p, at 1280 by 720. That is 2.7 times as many pixels, and the work scales with pixels almost exactly — we confirmed it: the PTZ camera, which runs at 720p because it cannot go lower, cost 2.72 times what a D1 camera cost on the same machine against a 2.73 ratio in pixels.

FormatPixelsAgainst D1Available on EGA's stream?
720p921,6002.73×Yes
D1 — in use today337,9201.00×Yes
VGA307,2000.91×Yes — saves almost nothing
CIF84,4800.25×Only on the other stream

Moving all nine cameras to 720p is not possible. It would take EGA from 27% to roughly 62% and the recorder from 17% to roughly 38% — about 109% of a machine that only has 100%.

Moving them one at a time is possible. Each camera raised from D1 to 720p costs about 7 points of the machine — roughly four and a half for EGA and two and a half for the recorder. Starting from 55%, arithmetic says three or four cameras could be raised before reaching a sensible ceiling.

Treat that number as optimistic

“Three or four” is a straight-line estimate, and a straight-line estimate is exactly what failed on the frame-rate test above: we projected 60% and measured 83%. The same slowdown would apply here. The honest answer is that one or two cameras at 720p is safe, and anything beyond that should be measured before it is promised. Memory adds a second reason for caution — a 720p frame is 2.7 times the bytes of a D1 one, and committed memory is already at 75%.

So the useful question is not “can we raise them all?” but “which one or two actually need the extra detail?” That is a decision about what each camera is watching, not a capacity calculation.

What the video hardware does, and what it cannot do for us

This processor contains a dedicated video engine — Intel calls it Quick Sync. It is not the graphics chip doing general work: it is fixed-purpose silicon that compresses and decompresses video without using the processor cores at all. Using it where we can is the single biggest reason nine cameras fit on a machine this small.

What already runs on it

Compression is on the hardware, and we verified it directly rather than assuming: all nine encoder processes have Intel's hardware video library loaded. It is also self-proving — the software is told to use the hardware encoder explicitly, and if the hardware were unavailable it would fail to start rather than quietly fall back.

What still runs on the processor, and why

StepCost, 9 camerasRuns onWhy
Decompress each camera's video 12.3% processor The library we read the cameras with does not ask for the hardware. This is the largest single thing we are leaving on the table.
Draw the detection box included above processor The box position arrives from the camera with each event, so the picture has to be in ordinary memory to draw on it. This one is structural, not an oversight.
Convert the picture format before compressing part of 13.2% processor We hand the compressor a picture in the wrong colour format, so it converts it in software before passing it to the hardware.
Compress the annotated video 13.2% hardware Already done.

Roughly half of EGA's cost is compression, which is already on the hardware, and half is decompression and drawing, which are not. Meanwhile the video engine itself is barely busy: we measured its decode unit at about 6% and the rest of it idle, while the processor was the thing running out.

We tested moving decompression to the hardware. It makes things worse.

The video engine can decompress as well as compress, so the obvious question was whether moving that 12.3% onto the hardware would free the processor. The hardware does the job — we confirmed the video engine was genuinely being used, not silently ignored. It is simply more expensive than doing it in software.

On a single camera the difference is invisible. It is under two thousandths of a second per picture, which does not move any figure you would see on screen. That is why we measured processor time per picture rather than watching the overall load — a difference that small only becomes visible once it is multiplied by nine cameras and eleven pictures a second.

Picture sizeSoftwareHardwareDifference
D1 — the eight ordinary cameras1.88 ms3.56 ms1.9× worse
720p — the PTZ6.25 ms8.05 ms1.3× worse

Across nine cameras at eleven pictures a second, that works out to roughly four points of the machine spent rather than saved — EGA would go from 27% to about 31%. Not a disaster, but the opposite of the point.

Why it costs instead of saving

The hardware decompresses into the graphics chip's own memory. Our software then has to draw a box on that picture, and it can only draw on a picture held in ordinary memory — so every frame has to be copied back out of the graphics chip and converted into the colour format our drawing code understands. For pictures this small, that return trip costs more than simply decompressing them on the processor in the first place.

The measurements show that plainly: the penalty shrinks as the picture grows — 1.9 times worse at D1, 1.3 times at 720p — because the decompression saved grows faster than the copy back. The break-even point is above any size we use.

So this door is closed, and closed cheaply: an afternoon of measurement rather than a rebuild that would have delivered nothing. The only way to genuinely remove that cost would be to decompress, draw and compress entirely inside the video engine so the picture never comes back at all — a rebuild of how EGA draws, and not something to start before the unattended-operation work is done.

Memory: the second limit

Earlier this week the machine ran out of memory and half the camera feeds stopped without any visible warning. Task Manager showed memory at 52%, which looked comfortable — but that is not the figure that matters. The relevant one, committed memory, was at its ceiling, because the machine had no paging file configured at all.

With nine cameras runningMeasured
Committed memory, during the runs above12.6 of 16.7 GB — 75%
Physical memory available8.8 GB
GeoVision, across 55 processes4.4 GB
EGA, across 11 processes1.75 GB — 195 MB per camera
Ceiling after the fix23.7 GB — same load, 53%

Note the trap in the first two rows: 8.8 GB of physical memory free while committed memory sits at 75%. A machine can look idle by one measure and be at its ceiling by the other.

The good news

Memory does not grow over time. Across a 30-minute run at full load EGA's memory moved by 4 MB, and across a 9.5-hour overnight run it did not grow at all. This is a fixed cost, not a leak — which matters, because a trailer runs for months without anyone looking at it.

This has since been fixed. An 8 GB paging file was configured and the machine restarted, which raised the ceiling from 16.7 GB to 23.7 GB. The same load that filled 75% of the old ceiling now fills 53% of the new one, and the spare capacity went from 4.2 GB to 11 GB.

Corrections to the previous version of this report

Four things published here before were wrong. All four are corrected above.

What it saidWhat is true
Per-camera costs, in the original figures They were about 25% too high. Our measuring script divided by the intended sampling interval instead of the time that actually elapsed. We caught it because the individual programs summed to more than the whole machine, which is impossible.
“The cameras do not offer CIF; the option is closed” They do offer it — on every camera, including the PTZ. It is simply not available on the particular stream EGA uses today. Using it would mean reassigning streams between EGA and the site's other AI system.
“Whether the recorder carries every camera is a policy decision” It is not. The recorder is how alarms reach the monitoring centre. A camera not in it reaches nobody, whatever is stored on the camera's own card.
Processor use, presented as the constraint Memory was the limit that actually stopped the machine, while the processor was comfortable at 44%. The report measured only one of the two.

What follows

  1. Run at 11 frames per second, not 13. Nine cameras at 11 fps leave real headroom. At 13 fps the machine sits at 83% and touches 100%, which is where it was the night it failed.
  2. The paging file is now set to 8 GB — done, and it removes this class of failure. Worth checking on any other trailer machine before it is loaded up, since this one had none configured at all.
  3. Prepare EGA for unattended operation. It does not currently recover from its own errors: when memory ran short, six camera feeds stopped and nothing restarted them or raised an alarm, while the interface looked normal. For trailers that run for months, this needs fixing before capacity is pushed further. It is the real obstacle to long deployments — not the megabytes.
  4. Measure before going past about twelve cameras. Straight-line estimates are unreliable near this machine's ceiling, as run C demonstrated at our expense.