A fork of LD-Decode, the decoding software powering the Domesday86 Project.
This version has been modified to work with the differences found in the tracked RF drum head signals taken directly from videotapes.
(Not to be confused with the TV Modulator/Demodulator pack or the “antenna connectors” on the back of the VCR!).
SMPTE ColourBars (16:9) Test Tape With WSS (PAL) export exported full-frame (1112 x 624)
(S-)VHS 625-line and 525-line – NTSC, NTSC-J, PAL and PAL-M Fully Supported
U-Matic 625-line and 525-line Low Band, PAL and NTSC. – Fully Supported
Betamax 625-line and 525-line, PAL & NTSC – Working
Video8 & High8 625-line and 525-line, PAL & NTSC – Working
FAQ – Frequently Asked Questions
CVBS-Decode
The repository also contains an experimental CVBS decoder, cvbs-decode
, which shares code with ld-decode and vhs-decode. Capable of decoding basic raw digitized NTSC and PAL composite video, including colour if the source is somewhat stable. Samples can be captured using cxadc, however, this is somewhat buggy as the cx chip can decide to resample or do other things if it detects a valid video signal if the gain is too high.
Test samples & signals can be generated using HackTV
Note for test media generation AJA/Magewell/Blackmagic and even some consumer digital to analogue converters have test generators built-in some prosumer/broadcast decks also have generators built in same for later camcorders.
Functional but still a work in progress is VideoMem’s HiFi-Decode Branch witch takes uncompressed or flac compressed RF captures of HiFi audio, decodes and outputs standard 24bit 192khz FLAC or PCM (.wav) stereo files.
A Tape Player (VCR/VTR etc)
Preferably adjusted per tape and in excellent mechanical and head condition, prosumer metal track decks are preferable as they were built generally better in terms of mechnical stability than cheaper later consumer decks that use more plastics, the only crtical requirement is test points or a head amplifyer that is easy to tap into this goes for any and all tape formats.
Note SVHS tapes can be RF captured on standard VHS HiFi decks.
Note SVHS NTSC Decks – Currently inflated you can import PAL decks with NTSC support for 1/3rd the price though this only applys if conventinal refrance SVHS captures are required.
Its good practice to not cross contaminate tapes especially if dealing with mouldy or contained tapes always clean your tape track/drum/heads before and afterwards with with 99.9% Isopropanol and lint free cloths/pads/paper this ensures less dropouts from dirty heads.
It also helps to make sure to re-lubricate metal and plastic moving joints cogs and bearings with appropriate grease’s and oils to avoid mechnincal failures.
RF Capture Devices
Domesday Duplicator (DdD) (Method 01 – 300-350USD*)
Capture is done using an simple GUI application.
Originally geared towards capturing RF from laserdiscs players, it does however also work perfectly well for digitizing Tape RF data. It consists of a custom analogue to digital board with an amplifier, an off-shelf DE0-NANO FPGA development board, and a Cypress FX3 SuperSpeed Explorer USB 3.0 board.
How To Aquire? / How to Fabricate & Flash? / More Information
CX Card & CXADC (Method 02 – 20-35USD)
Capture & Config uses simple command-line arguments and parameters CXADC
There is now an CXADC Wiki explaining best card types and guides for modifications such as crystal upgrades.
The budget approach is using a video capture card based on a Conexant CX23880/1/2/3 PCI chipset. With a modified Linux driver, these cards can be forced to output RAW data that can be captured to file, instead of decoding video normally as they otherwise would.
There are now ‘’New’’ Chinese variants that can be found on AliExpress that have integrated Asmedia or ITE 1x PCIE bridge chips allowing modern systems to use them.
The cards sadly however at stock without any modifications these have more self-noise compared to the DdD with about a 3db signal to noise difference, Currently, the CX23883-39 based white variant cards in recent testing have been consistently lower noise.
Please Read the VHS-Decode Wiki for more in-depth information as it has examples locations and setup photos for various decks that have been RF tap’ed and tested.
If there is no info on your VCR in the wiki then acquire the service manual for your device, Google it! (But they are nearly all labelled clearly, so are not hard to visually identify and if serviced commonly marked with a sharpie)
- Find your test points test points will be called one of the following if looking though a service manual or labels on the VCR boards:
Modulated Video:
RF C, RF Y+C, PB, V RF, V ENV, ENV, ENVELOPE, VIDEO ENVE, VIDEO ENVELOPE
(Normally accompanied by a Composite test point useful if your VCR only has a SCART connection you can add another BNC for video)
HiFi Audio:
RF-Out, A-RF, HIFI RF
- Decide on connection method, Soldered or Clipped/Clamped. (Soldered is recommended due to reliability)
For some Sony decks you can use Dupont connectors on the pins to save effort soldering or hooking an probe.
For alligator clips this is red signal black ground if you have bigger test points like on Rackmount and later prosumer decks.
For direct soldering RG178 or RG316 cable to an BNC bulk head is recommended this allows a short clean direct run to a fixed mounting point you can drill or melt/file out or just thread the cable though a ventilation slit and so on.
- Test to see if an 10uf capacitor is needed, If you want to see your tape during RF capture or are playing SVHS or other higher bandwidth tapes you will need to add one in-line before your bulkhead/probe connection to avoid signal dropout. (Applies to most VCRs but not all)
Note Do not make sharp bends in any RF cabling.
Note with Coax cable (RGxxx etc) the centre stranded wire is signal and outer shield wire is ground twist the ground strands tight to make a solder able connection, and use ample flux to flow solder correctly, then wipe with 99.9% IPA to clean the flux off.
Note Some UMATIC decks have a direct RF output on the back that may be viable for RF capture. (needs expanding on)
VHS-Decode, as with LD-Decode, has been developed and tested on machines running the latest version of Ubuntu and Linux Mint.
Other distributions might have outdated (or even newer) versions of certain Python libraries or other dependencies, breaking compatibility.
Its fully working on WSL2 Ubuntu 20.04 (Windows Subsystem for Linux) however issues with larger captures i.g 180gb+ may require expanding the default virtual disk size
It also partially runs on Windows natively; currently, ld-tools have been ported over.
Other dependencies include Python 3.5+, numpy, scipy, cython, numba, pandas, Qt5, Cmake, and FFmpeg.
Some useful free tools to note for post processing are StaxRip & Lossless Cut & of course DaVinci Resolve this gives you basic editing to quickly handle uncompressed files cross operating systems, and for windows users an easy FFMPEG/AviSynth/Vapoursynth encoding and de-interlacing experience, and full colour grading and post production ability.
By default, the main VHS-Decode script allocates only one thread, though the gen_chroma_vid scripts allocate two threads.
The make
rule of thumb of “number of logical processors, plus one” generally applies here,
though it mainly depends on the amount of memory available to the decoder.
Install all dependencies required by LD-Decode and VHS-Decode:
sudo apt install clang libfann-dev python3-setuptools python3-numpy python3-scipy python3-matplotlib git qt5-default libqwt-qt5-dev libfftw3-dev python3-tk python3-pandas python3-numba libavformat-dev libavcodec-dev libavutil-dev ffmpeg openssl pv python3-distutils make cython3 cmake
For Ubuntu 22.04 that is:
sudo apt install clang libfann-dev python3-setuptools python3-numpy python3-scipy python3-matplotlib git qt5-qmake qtbase5-dev libqwt-qt5-dev libfftw3-dev python3-tk python3-pandas python3-numba libavformat-dev libavcodec-dev libavutil-dev ffmpeg openssl pv python3-distutils pkg-config make cython3 cmake
Install dependencies for GPU FLAC compression support:
sudo apt install make ocl-icd-opencl-dev mono-runtime
Install all dependencies required for optional gooey graphical user interface:
sudo apt-get install build-essential dpkg-dev freeglut3-dev libgl1-mesa-dev libglu1-mesa-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libjpeg-dev libnotify-dev libpng-dev libsdl2-dev libsm-dev libtiff-dev libwebkit2gtk-4.0-dev libxtst-dev python3.9-dev libpython3.9-dev
Then install gooey
Download VHS-Decode:
git clone https://github.com/oyvindln/vhs-decode.git vhs-decode
Install VHS-Decode:
cd vhs-decode
sudo ./setup.py install
Compile and Install ld-tools suite: (Required)
mkdir build
cd build
cmake ..
make -j4
sudo make install
To update do git pull
while inside of the vhs-decode directory.
Note with WSL2 & Ubuntu, ./
in front of applications and scripts may be needed to run them.
Use cd vhs-decode
to enter into the directory to run commands, cd..
to go back a directory.
ld-tools suite for Windows (Note this is only the tools, not the decoder’s)
The ld-tools suit has been ported to windows, This mainly allows the easy use of LD-Analyse to view .TBC files, please see the wiki for more information Windows Tools Builds
CX Card Setup & Capture
See the readme file for CXADC for more information on how to configure the driver and what each mode and capture rate means.
To see a live preview of tape signal being received by CXADC card from video head tracked signal will be unstable or wobbly if settings are not the same you may only see signal flash if in 16-bit modes for example, this is quite useful if you don’t own an CRT with H/V shifting as it will allow you to inspect the full area for alignment/tracking issues.
PAL framing for 35.8 MHz/8-bit mode:
ffplay -hide_banner -async 1 -f rawvideo -pix_fmt gray8 -video_size 2291x625 -i /dev/cxadc0 -vf scale=1135x625,eq=gamma=0.5:contrast=1.5
NTSC framing for 35.8 MHz/8-bit mode:
ffplay -hide_banner -async 1 -f rawvideo -pix_fmt gray8 -video_size 2275x525 -i /dev/cxadc0 -vf scale=910x525,eq=gamma=0.5:contrast=1.5
Capture 30 seconds of tape signal using CXA