Skip to content
Marshalleq edited this page May 25, 2026 · 6 revisions

DDD Capture Toolkit — An archival workflow for VHS-Decode and Domesday Duplicator

Capture, decode, compress, export, validate, archive. Built for archivists who want to keep the original RF masters of their VHS tapes and prove cryptographically that the compressed copies are true and correct.

The toolkit grew out of a fix for the Domesday Duplicator (DdD) audio-sync problem and has since become a general-purpose batch workflow system for the entire VHS-Decode pipeline. If you can produce a .lds or .ldf (with or without DdD hardware), it queues, prioritises, validates and archives the rest of the work for you.

The validation pipeline is the heart of it. A three-tier compress check (always-on structural check, optional end-to-end FLAC integrity, manual full sample-count round-trip against the source .lds), plus per-file SHA-256 logging, means you can safely delete raw .lds masters once their .ldf has been proven a complete lossless compression.

What it does

  • Three-tier compress validation — structural seek check, end-to-end FLAC integrity, and a sample-count round-trip against the source .lds. On PASS, writes a .ldf.validated sidecar — the gate before you delete an original RF master. See Compress Validation.
  • Automatic content hashing — every pipeline output's SHA-256 is recorded in a per-project _validation.log and dropped next to the file as a portable .sha256 sidecar (sha256sum -c compatible). The matrix surfaces HASHING, VALIDATED, TOUCHED, CHANGED, INVALID states per step so file changes are spotted immediately, and a check N re-hash self-heals a benign TOUCHED (mtime-bumped copy roundtrip) back to VALIDATED. See Checksums and Verification.
  • Non-destructive archive staging — one command (stage N) moves intermediate files into a subfolder, leaving only the archive set at the top level. Reversible via unstage N. See Workflow Control Centre.
  • Batch and auto-queuing of pipeline jobs — queue every decode, compress, export and final-mux you have, walk away. The scheduler runs them in the right order with hardware-aware concurrency.
  • CPU-aware scheduling — concurrent VHS-Decode jobs are pinned to disjoint L3 cache groups (CCDs on AMD, P/E clusters on Intel) so they don't fight for cache. Other CPU-heavy jobs are dynamically kept off the decode cores. See Prioritisation and Queuing.
  • Live, exact progress — the matrix shows percent / MB/s / ETA per running job. Compress progress is computed from the kernel-side input-offset (Linux /proc, macOS libproc), not estimated from compression ratio. See Progress Reporting.
  • Domesday Duplicator audio sync — the original feature: synchronised capture with Clockgen Lite, automatic offset measurement, and VCR speed compensation. CLI control of the DdD software (added as part of this project) makes the synchronisation possible. See Audio Synchronisation.

Quick Navigation

Page Description
Getting Started Installation and first-time setup
Pipeline Overview End-to-end view from capture to final mux
Workflow Control Centre The main interface
Project Flags Per-project decode and export options
Segment Mode Testing with partial decodes
Audio Synchronisation How audio sync works
VHS Timecode Calibration V2 timecode system for precise A/V sync
Compress Validation Three-tier safety check before deleting .lds masters
Checksums and Verification Automatic hashing and integrity log
Prioritisation and Queuing Job scheduling, decode cap, CPU pinning
Progress Reporting How progress bars / ETA are computed per step
Troubleshooting Common issues and solutions

Basic workflow

  1. Capture — menu option 1 (synchronised RF + audio via Clockgen Lite, or bring your own .lds).
  2. Configure — menu option 4 to set capture directory.
  3. Process — menu option 2 opens the Workflow Control Centre.
  4. Per-project flags — press X on a project to set decode / export options (optional).
  5. Run the steps — type 1D (decode), 1M (compress), 1E (export), 1A (align), 1F (final), or just queue them all and walk away.
  6. Validate1mv runs the full .ldf round-trip check; on PASS a .ldf.validated sidecar is written next to the master.

The Workflow Control Centre handles the order automatically — you can queue everything at once and the scheduler resolves dependencies and concurrency limits as jobs progress.

Performance and packaging

The toolkit supports two build modes:

  • Compile from source (the default in setup.sh) — builds key tools like ffmpeg from source with the codec set this pipeline actually needs. The ffmpeg case is a notable improvement: distro ffmpeg is typically built for "everything plus the kitchen sink" and is slower in the configurations this toolkit uses. A purpose-built one shows real fps gains on tbc-export and final-mux.
  • System packages — skip the compile step and use whatever your distro ships. Quicker to set up, but expect lower throughput on the ffmpeg-bound steps.

You can also tune scheduling — the Prioritisation and Queuing page covers the configurable concurrent-decode cap and how to give other work CPU headroom.

Platform support

Platform Status
Fedora (Linux) First-class — the development and primary-test environment. Includes exact /proc-based compress progress and full CPU-affinity pinning.
macOS Groundwork in place — environment-macos.yml, platform detection, and an exact-progress path via libproc. Needs real-hardware testing; the code structure is verified against Apple's <sys/proc_info.h> headers but the path hasn't been exercised on a real Mac yet. Testers welcome.
Windows Groundwork in place — environment-windows.yml and platform conditionals throughout. Exact compress progress falls back to the output-bytes estimate (the native NT path requires admin and isn't built). Testers welcome.

If you run it on macOS or Windows and something doesn't work, please open an issue — the failure modes will be the most informative input we can get.

The audio-sync problem (original use case)

The Domesday Duplicator captures RF video but not audio. That originally created a thorny set of sync issues:

  • Two separate capture processes, started at slightly different moments.
  • Independent clocks that drift apart over the length of a tape.
  • VCRs that don't actually play at exactly 25 or 29.97 fps.

The toolkit solves these via synchronised capture with Clockgen Lite, automatic offset measurement, and VCR-speed compensation. If that's what brought you here, head straight to Audio Synchronisation and VHS Timecode Calibration.

Supported formats

Format Support
PAL Full (25 fps), auto-detected
NTSC Full (29.97 fps), auto-detected
SP / LP / EP All tape speeds
Colour Full chroma processing
B&W Luma-only mode available

Credits

DDD Capture Toolkit

Home

Getting Started

Features

Internals

Reference


Quick Reference

Workflow Commands:

  • 1D - Decode project 1
  • 1M - Compress project 1
  • 1E - Export project 1
  • 1A - Align audio
  • 1F - Final mux
  • 1X - Project settings
  • 1mv - Validate compressed master (Tier 3)
  • hash 1 - Hash files lacking a recorded hash
  • check 1 - Re-hash and compare to log

Key Features:

  • PAL/NTSC auto-detect
  • Reverse field order (automatic)
  • Segment testing mode
  • Three-tier compress validation
  • Automatic checksums + per-project validation log

Clone this wiki locally