8 DEC, 2022

3D video storage and transmission

3D video is a sad relic of a bygone era, though I suspect it'll make a comeback in the next decade (once technology makes it more accessible, and audiences start looking for the "next thing" beyond HDR. But 3D is not a new thing at all! It's already done a round, and we have the leftovers of how we managed to retrofit a completely different mode of operation into existing technologies: let's talk about it.

3D video storage

I'll only be discussing HDMI, and we'll limit ourselves to movies, i.e. a FullHD (1,920 horizontal by 1,080 vertical pixels) resolution at 24 frames per second (or "23.98" or 23.976 or "23.97").

Half resolutions

The simple way of fitting two frames into the space of one is to just squash them in next to each other. The two common approaches to this are called "side-by-side" (abbreviated SBS) and "top-and-bottom" (abbreviated TAB or TB). In this case, each "eye" gets half of the total resolution in one dimension, i.e. 960 by 540 pixels for SBS and 1920 by 540 pixels for TAB.

Two side-by-side rectangles, left is blue and right is pink.
Two top-and-bottom rectangles, top is blue and right is pink.

Full resolutions

These are the more interesting options, as they require some special extra support.

Full side-by-side

This is just like SBS above, except that it is two FullHD frames alongside each other for a total resultion of 3840 by 1080.

Two side-by-side rectangles, left is blue and right is pink.

Multiview Video Coding (MVC)

This is a super-special feature which uses a single 2D frame, alongside another video stream which contains the "delta" (difference) needed to recreate the other frame to form a 3D perspective. This is what 3D Blu-rays use.

Transmission

Most of the formats transmit as-is, such as:

The special cases

MVC can be transformed into a one of the above methods, and then transmitted as such.

However, there are two other cool methods: frame sequential, and frame packing.

Frame sequential

So you need to transmit twice as many frames? Just send them through twice as fast! Send a left-eye frame, then a right-eye frame, etcetera ad infinitum.

Frame packing

This is the "official" HDMI way of doing full-resolution FullHD 3D. Place the two frames above each other, with a 45 pixel blank gap in between them, transmit the whole thing as a 1920 by 2205 frame, at 24 frames per second.

Two top-and-bottom rectangles with a black space in between, top is blue and right is pink.