pisstv: SSTV pictures

Sends a picture as slow scan television in the Martin 1 mode, which SSTV decoders such as QSSTV, MMSSTV or Robot36 receive. The Go constant is ModuleNamePISSSTV, with three S. Code: pisstv.go.

Fields

JSON Go field Type Required Rules
pictureFile PictureFile string yes Path to an existing raw RGB file, 320 pixels wide
frequency Frequency float64 yes Hz, 5000 to 1500000000

The picture file

The file is raw RGB with no header: three bytes per pixel (red, green, blue), 320 pixels per line, so 960 bytes per line. The program reads lines until the file ends. Martin 1 has 256 lines, which makes a 245760-byte file; other heights still transmit, but decoders expect 256.

convert input.jpg -resize 320x256! -depth 8 picture.rgb

Keep -depth 8. Without it a stock ImageMagick build writes 16 bits per sample and the file doubles to 491520 bytes. gorpitx checks only that the file exists. The repository’s test fixture .fixtures/martin1.rgb has this format.

A Martin 1 picture of 256 lines takes about two minutes.

Example

{
  "pictureFile": "/home/pi/picture.rgb",
  "frequency": 144500000
}

Runs:

stdbuf -oL "$GORPITX_PATH/pisstv" /home/pi/picture.rgb 144500000

What the program sends

From rpitx’s pisstv.cpp: a VIS header that identifies Martin 1, then for each line a 1200 Hz sync pulse and the green, blue and red scans, each pixel as a tone from 1500 Hz (black) to just under 2300 Hz (white).