VideoDistanceMarking
A Windows-native, single-laptop pipeline that captures three 1080p60 HDMI camera feeds along a ski-jump landing hill, detects jumpers automatically, encodes a composite clip per jump, and lets an operator read a landing distance to the nearest half metre from calibrated grid lines.
Downloads
Everything needed to install and run VDM, plus the three-camera sample capture used throughout the sample footage and user guide pages.
- Go to downloads
-
vdm-install-package-1.2.1.zip
— the complete install package: application binaries, default configuration,
this documentation set, and the
Install-VDM.ps1installer. - Sample footage — three ~2 GB 1080p60 captures from 2018-09-23, one per camera, with an installer script and manifest. Roughly 5.6 GB in total.
Every artifact is published with a SHA-256 checksum in SHA256SUMS.txt. Verification instructions for both Windows and Linux are on the downloads page. Start with Prerequisites, then Installation.
What VDM is
Three cameras watch the landing hill. Three capture.exe processes pull their
HDMI feeds in over USB and write YUV frames into a large shared-memory ring buffer. Three
motion.exe processes run continuous frame-differencing and blob detection on those
rings. When a jumper passes through the middle camera's frame, videogen.exe merges
the feeds into a single composite frame stream, encodes it to H.264, and writes an mp4 to disk
— with no operator in the loop.
The operator's job starts after that. They open the clip in the viewer, where a one-time venue calibration projects meter markings onto the video as grid lines. Moving the mouse reads out a distance; the readout is rounded to the nearest half metre, the same precision an electronic landing system would produce.
Everything runs on one Windows laptop. There is no Linux box, no remote encoder, and no network traffic between components — the processes talk to each other purely through named shared-memory regions and Win32 mutex/event IPC. Motion detection is CPU-only and handles 60 fps across three feeds comfortably; only the merge-and-encode path wants the NVIDIA GPU.
The pipeline at a glance
capture.exe x3 --> motion.exe x3
(HDMI -> shmem) (blob trigger)
| |
v v
feed shared memory motion boundaries
(520-frame rings) in shmem control
| |
+---------+----------+
|
v
videogen.exe
(feed merge + H.264 encode)
| |
output ring shmem mp4 file on disk
| |
v v
viewer.exe fileviewer.exe
(live grid-line (offline review, same
distance read) SDL3 renderer)
VDM.exe is the controller and the only binary a human launches directly. It
presents the Win32 UI and spawns and supervises everything else: capture, motion, videogen,
capfile, practice_player, viewer, and fileviewer. NorgeReplay.exe is a separate GUI
product and is not part of this pipeline.
What this package contains
| Item | What it is |
|---|---|
app\ |
The compiled application: roughly ten executables plus the SDL3 and FFmpeg runtime DLLs and the required data files. |
config\ |
Configuration templates — the commented settings_sample.txt and the
supporting data files that get copied into the install directory. |
doc\ |
This documentation set. Fully offline — no internet connection needed to read it. |
| PowerShell installer script | Creates the install directory, copies the application in place, and reports what still needs doing by hand. See Installation. |
A separate companion download, vdm-sample-footage-20180923, carries about 5.6 GB
of recorded hill footage. You do not need it to install VDM, but it is the only way to exercise
the full pipeline without cameras plugged in. See Sample
footage.
Start here: brand-new laptop
If you have been handed a fresh Windows 11 laptop and this package, work through these in order. Steps 1–4 can be done anywhere; steps 5–7 need the cameras and the actual venue.
- Check the machine is good enough. Read Prerequisites first — particularly the RAM, the NVIDIA GPU requirement, and the USB controller topology. A laptop that fails the USB test cannot be fixed later in software.
- Install the software prerequisites. The Visual C++ 2015–2022 x64 redistributable and an R570-or-newer NVIDIA driver. Commands are in Installation § prerequisites.
- Set the antivirus exclusion before you copy any files in. This is not optional and it fails silently if you skip it. See Installation § antivirus exclusion.
- Run the installer and populate
C:\VDM\. See Installation § running the installer. - Assign the cameras and select the GPU on first run. These two settings are machine-specific and ship deliberately blank or wrong. Until you do this, nothing captures. See Installation § first run.
- Calibrate the venue. Motion regions, then grid lines, then optionally auto-setup. Budget half a day the first time. See User guide § calibration.
- Run the verification checklist the day before the event. Never on event morning. See Installation § verification checklist.
The one thing to understand up front
A working settings.txt copied from another machine will not work
as-is on this one. GPU name, window geometry, and camera device paths are all machine-specific,
and every calibration value is tied to the physical camera rig. Read
Configuration § machine-specific settings
before you copy a config from anywhere.
All documentation
-
Installation
The fresh-laptop install guide: prerequisites, the installer,
the
C:\VDM\layout, the antivirus exclusion, first-run camera and GPU selection, and the pre-tournament verification checklist. - Prerequisites Hardware and software requirements in detail — RAM, storage, USB topology, cameras and capture boxes, and the NVIDIA/NVENC constraint plus what degrades without it.
-
Configuration
The
settings.txtreference: file format, the*/@/%prefix conventions, every key grouped by theme, and the settings that must be re-established on a new machine. - User guide Operating the software: launching, the controller's four tabs, the capture workflow, motion tuning, movie generation, the viewers, practice mode, and grid-line calibration.
- Build from source Toolchain, the CMake commands, SDL3 and FFmpeg setup with the real library search order, running the test suite, and which targets silently vanish when a dependency is missing.
- Troubleshooting Symptom → cause → fix. Missing DLLs, cameras not detected, NVENC failures, green or frozen preview, config not found, off-screen windows, and disk pressure.
-
Sample footage
The
capture_20180923companion package: what it is, its specs, how to install and verify it, and how to play it through the pipeline without cameras.
Conventions used in this documentation
| Style | Meaning |
|---|---|
monospace | A literal file name, path, settings key, or command. |
| Bold in a UI context | An exact on-screen label — a button, tab, or menu item, spelled as it appears. |
| verify on target hardware | A detail that depends on your specific machine, driver, or venue and must be confirmed there rather than taken on faith. |
The install path C:\VDM\ is used throughout. It is a recommendation, not a
hard requirement — but it is short, has no spaces, and no special characters, and a few
launch-path edge cases inside the controller do break on paths containing spaces.
About this project
These pages are the technical documentation: how to install, configure, operate, build and troubleshoot VDM. For the project background — the problem it solves, the design approach, and the role Dave played — see the Video Distance Marking project page.
