Decoding a signal from a 1988 videophone

Nowadays, you can easily contact by video link with almost anywhere in the world. But it took a long time for the technology to reach that level. I will show you what solutions engineers used in 1988 so that you can not only talk, but also see your friend or partner during the conversation.

Once I saw on YouTube a review of the Sony PCT-15 – this device, made in Japan, connected to a regular telephone line and allowed not only to talk to the other person, but also to send and receive images during a call. At that time, high-speed communication was only available to institutions, the military and the government, so the telephone line was the only possible way to communicate with the world:

Source Popular Photography 1988
Source Popular Photography 1988

How it works? Let’s figure it out.

Decoding

The video review was posted on the Techmoan YouTube channel, which specializes in retro devices. But what was remarkable for me was the fact that the data transmission was audible on the video. I just saved the signal to WAV and decided to parse it with Python.

Let’s check the waveform first:

import scipy.io.wavfile as wav
import scipy.signal as signal
import matplotlib.pyplot as plt
import numpy as np

fs, data = wav.read('videophone.wav')

plt.rcParams["figure.figsize"] = (20,6)

time = np.linspace(0, len(data) / fs, num=len(data))
plt.plot(time, data)
plt.xlabel("Time, sec")
plt.ylabel("Amplitude")
plt.title("Signal")
plt.show()

The signal at the beginning is probably used as a trigger to start receiving. On the waveform, we can also see a series of “peaks”:

Let’s check the signal in the frequency domain:

plt.specgram(data, NFFT=1024, Fs=fs)
plt.title("Spectrum")
plt.xlabel("Time, sec")
plt.ylabel("Frequency")
plt.show()

It is noteworthy that all data is transmitted in the 1-3 kHz frequency band, which was optimal for an analog telephone line:

Now let’s go back to the waveform of the signal. I can assume that each “peak” represents one line of the image, and the data is transmitted in analog form:

This was the standard approach for analog television in the 1980s. Let’s enlarge one “peak”. Obviously, this is amplitude modulation. I assume that it encodes brightness, and this is easy to check. First, we apply the Hilbert transform to the data:

def hilbert(data):
    analytical_signal = signal.hilbert(data)
    amplitude_envelope = np.abs(analytical_signal)
    return amplitude_envelope
data_am = hilbert(data)
plt.plot(time, data_am)

After conversion, we get the signal envelope (yellow line):

As I already wrote, the signal is probably luminance-encoded – we know from the device specification that the Sony PCT-15 has a monochrome screen, and one luminance channel should be enough. It’s easy to put 1D data onto a 2D image and see the result.

frame_width = 1211
w, h = frame_width, data_am.shape[0]//frame_width
image = Image.new('RGB', (w, h))
px, py = 0, 0
for p in range(data_am.shape[0] - 1):
    lum = int(data_am[p]//128)
    if lum < 0: lum = 0
    if lum > 255: lum = 255
    image.putpixel((px, py), (lum, lum, lum))
    px += 1
    if px >= w:
        px = 0
        py += 1
        if py >= h:
            break

image = image.resize((w//2, 4*h))
plt.imshow(image)

plt.show()

After executing the code, we can see the pattern:

I am not clear on how the line sync works in a real device, I can assume that the PCT-15 uses the data header to start receiving the image. The format of the header is unknown to me, so I just tweaked the parameter frame_width manually in the source code.

Finally, we can get the image:

The numbers 0 … 250 in the image are “virtual”, they only depend on the sampling rate of the recorded audio file. As we know from the specification, the actual image resolution is only 96×100, but the device can also transmit images in 160×100 “high resolution” mode. I asked Techmoan to share a “high definition” WAV sample in the comments on the video, but the owner of a channel with> 1M viewers does not consider it necessary to answer subscribers’ questions, so this is the only sample I have. In any case, this is enough to assess the quality of the image.

Conclusion

It was interesting to analyze the data and see what was the “cutting edge” technology in the late 1980s. Then there was neither Skype nor WhatsApp, and the speed of the modem line was about 2400-14400 bits (not megabits 🙂 per second, which was clearly not enough for a “normal” video call. And there were no such devices as “webcams” at all, they simply hadn’t been invented yet. Therefore, Sony engineers decided to use analog TV transmission at a low speed for transmitting and receiving images. As we can see, the transfer time is about 6-10 seconds per image, which is obviously only enough for still images, but it was better than nothing – especially for people living in different countries or cities, this could be the only way to see each other in “near” real time.

I don’t know if the Sony PCT-15 was successful in the 1980s. The first webcam was introduced later in 1994, so there may have been a marketing demand from people who wanted to see each other at a time when digital and webcams were not yet available. On the other hand, a black and white image with a resolution of 160×100, which is transmitted in about 10 seconds, does not sound very good even for the 80s. In any case, when making a video call from a smartphone on vacation, it’s nice to remember how this technology was born, and to feel respect for the engineers and scientists who made it simple and possible.


As we can see from the article, the modern programming language Python was used to decode the “advanced” technology of the late 1980s. At OTUS, you can learn not only Python, but also other popular programming languages, as well as take courses in infrastructure, testing, databases, management, information security and a number of other areas. There are summer discounts on our website right now, so we invite you to familiarize yourself with the offer at the link below.

https://otus.pw/3tkp/
https://otus.pw/3tkp/

SEE SPECIAL OFFER

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *