Skip to content

RF Capture Decoding Guide

Harry Munday edited this page Oct 29, 2023 · 10 revisions

Welcome to the 21st, its the future.

Software decoding simply is just doing what was done on dedicated components, then on dedicated IC's and finally on FPGAs and all in one IC's, its not magic and its not black box hardware either its entirely software emulating the ability's of hardware with an order of magnitude more flexibility.

Do you need to know about programming?

No.

Do you need to know how to use basic systems on a computer.

Yes.

Do you need to have a basic understanding of a VCR does and what a TBC does?

Yes.

It makes life easier and decoding a thoughtless copy-paste clean, new tape, clean, hit enter and decode workflow after hardware hook-up.

Running the decoders

There are 4 decoders are bundled inside vhs-decode repository and windows binary version.

Linux/MacOS

vhs-decode / ld-decode / cvbs-decode / hifi-decode

cd vhs-decode - Enter the directory

Windows

decode.exe vhs / decode.exe ld / decode.exe cvbs / decode.exe hifi

Followed by universal arguments you can read the Full Command List for there use and effects.

Mandatory Settings

  • TV System i.g --system pal, --system ntsc, --system palm, --system ntscj

  • Tape format i.g --tape_format VHS or SVHS, UMATIC, UMATIC_HI, Hi8, Video8, BETAMAX, BETAMAX_HIFI, EIAJ, TYPEC, VCR.

  • Input Sample Rate -f or --frequency this is the msps value of your RF capture file. (40msps is the assumed/internal rate)

  • Input file & Out file Name.

Example Long: ./vhs-decode --debug --tape_format vhs --system pal --cxadc --threads 8 --recheck_phase my-tape.u8 my-tape-decoded

Example Short: ./vhs-decode --debug -p -t 8 --tf vhs --cxadc --recheck_phase my-tape.u8 my-tape-decoded

Ctrl+C Will kill the current process, use this to stop the decode manually.

Press Ctrl+C to copy then Ctrl+P to past the command use <+> to move edit position on the command line to edit the name or command and Enter to run the command.

Notes

--no_resample for example can speed up tape decodes drastically for smaller sampled captures i.e 20msps.

PAL-M - Brazil

NTSC-J - Japan

VBI Data Decoding

ld-process-vbi input.tbc / ld-prcoess-vits input.tbc Will decode most Vertical Blanking Interval Data.

This covers Closed Captions, VITC Timecode & VITS Test Signals currently.

Preview in ld-analyse

Your avalible frames will update every few 100, as the data is written to the JSON file.

Determining Capture Quality

There is 2 ways to assess the quality of a decode.

Black Signal To Noise Ratio

Visually you can tell how noisy the signal is by how black the VBI space is if its a clear grey colour this means a high SNR.

LaserDiscs will normally have a curve to the graph ware as tape will mostly be level per each recorded segment.

Sudden dips in the graph are ware there are dropouts, interference or weak signal.

60~70 dB - Live Composite

40~50 dB - Great Signal

30~40 dB - Good Signal

20~30 dB - Weak Signal

10~20 dB - Poor Signal

Visually Checking

Very Bad Signal Example

Normal Good Signal Example

*note this example contains a dropout.

CVBS-Decode

CVBS-Decode, decodes raw composite signals.

You capture the normal composite video signal out of a device, in raw RF values then save it to file, you have full control over the baseband processing, fine control over how colour is processed with the chroma-decoder you have a full 625/525 lines of image information.

HiFi-Decode

There is the full hifi-decode and the universal RTLSDR HiFi-Decode which is a GNU radio script.

FM Audio decoding has been normal for decades if you ever have used a car you know it has a radio and it picks up and decodes FM audio signals from local stations.

HiFi decode allows you to have full control over the de-modulation and noise filtering process this can remove and improve on sound quality drastically in some cases and or save you money if you don't have the best amplifiers or a decent audio interface capture solution, if you have good hearing you will notice the difference quickly with even 15USD Behringer ''studio'' headphones.

You can use an cheep RTLSDR or the DdD & CX Cards for HiFi capture, it does not require very high bandwidth.

Linear Audio will have to be captured via standard ADC solutions, in such cases decent quality conventional capture workflow hardware is mandatory on the audio front, this can range from an GV2-USB to an Blackmagic Analog to SDI setup or Zoom F3 field recorders for example, but modern 24-bit ADCs in basic recorders are very affordable.

ld-decode (LaserDisc Decoding)

It all started with Laserdisc, the TBC format, software time base correction, software VBI data processing, everything we have today is built off the initial drive to decode the BBC 1986 Domes Day Discs.

This decoder is also bundled inside the vhs-decode repository.

VHS-Decode

VHS-Decode, can decode a wide range of tape formats VHS, SVHS, Betamax, Umatic, Umatic SP, SMPTE-C/B, EIAJ to Video8/Hi8 formats as well, any analogue FM RF tape format is support viable even BetaCam and BetaCam SP are viable today thanks to duel clock locked CX Cards.

Basic Decoding Command Examples

VHS-Decode:

./vhs-decode --debug --threads 8 -p --ct --recheck_phase

CVBS-Decode:

./cvbs-decode --debug --threads 8 -p -A --cxadc CX_Blue_Level_0db_6db_off_CXADC.u8 CX_Blue_Level_0db_6db_off_CXADC

HiFi-Decode:

./HiFi-decode -p -t 8 Input Tape-name_HiFi_Decode_192khz.flac

HiFi-Decode is a single command system for RF to Playable files.

Pre export TBC adjustments via ld-analyse

ld-analyse can adjust JSON metadata alongside reading it, you can ignore this step however it is useful to learn to make better finer adjusted exports.

As ld-analyse reads the .tbc & _chroma.tbc files and combines them together in real-time with the ld-chroma-decoder this allows you to play with different chroma decoders and filtering settings on a basic level.

PAL Transform 2D for VHS & 3D for CVBS sources for example.

This is to the same effect as SOX combining commands on some media consider it good enough for checking but make a short video export with python3 tbc-video-export.py --length 300 input-tbc-name script to see the real media result.

  • Black Level Adjust

  • White Level Adjust

You can adjust these sliders and save an updated .json with these values that the tbc-video-export.py script will read.

  • Export PNG (Of Current Frame)

  • Chroma Gain (Intensity)

  • Chroma Phase (Hue Control)

  • Luma Noise Reduction (PAL/NTSC)

  • Chroma Noise Reduction (NTSC Only)

  • Export Dropout Analysis (Open window & screenshot it currently)

  • Export Black SNR Analysis (Open window & screenshot it currently)

Resource Usage

Chroma-Decoder can use around 20GB~33GB of ram with FFmpeg it will work with less.

decoders however are cpu bound and will use normally less then 500MB of ram, and up to 4-6 threads.


Previous Page RF Capture Guide

Next Page Exporting To Video Files

Clone this wiki locally