-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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.
-
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.validatedsidecar — 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.logand dropped next to the file as a portable.sha256sidecar (sha256sum -ccompatible). The matrix surfacesHASHING,VALIDATED,TOUCHED,CHANGED,INVALIDstates per step so file changes are spotted immediately, and acheck Nre-hash self-heals a benignTOUCHED(mtime-bumped copy roundtrip) back toVALIDATED. 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 viaunstage 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, macOSlibproc), 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.
| 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 |
-
Capture — menu option 1 (synchronised RF + audio via Clockgen Lite, or bring your own
.lds). - Configure — menu option 4 to set capture directory.
- Process — menu option 2 opens the Workflow Control Centre.
-
Per-project flags — press
Xon a project to set decode / export options (optional). -
Run the steps — type
1D(decode),1M(compress),1E(export),1A(align),1F(final), or just queue them all and walk away. -
Validate —
1mvruns the full.ldfround-trip check; on PASS a.ldf.validatedsidecar 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.
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 ontbc-exportandfinal-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 | 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 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.
| 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 |
- vhs-decode — VHS RF decoding
- ld-decode — LaserDisc / VHS decoding foundation
- tbc-video-export — TBC to video conversion
- Domesday Duplicator — RF capture hardware
- VhsDecodeAutoAudioAlign — Audio drift compensation by Rene Wolf
- Clockgen Lite — Clock synchronisation mod
- Project Flags
- Segment Mode
- Audio Synchronisation
- VHS Timecode Calibration
- Compress Validation
- Checksums and Verification
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