Skip to content

Stereoscopic 3D Video Settings

Martin Pulec edited this page Apr 24, 2023 · 13 revisions

There are multiple options to capture/display stereoscopic 3D. Most straightforward is to use separate SDI for both left and right eye. Another possibility is to use both eyes packed in HDMI (see here), which can be sometimes transmitted also 3D agnostic (eg. side-by-side packing).

UltraGrid supports multiple modes and there are two options to capture (provided that you have separate cables) - using single or multiple cards. Of course those can be combined - eg. captured with DeckLink 4K and displayed with two cards.

Table of Contents

Using single 3D-aware card

This expects a card that is aware of 3D and has either multiple inputs (SDI) or properly packed stereoscopic HDMI. Currently supported cards are DeckLink only, eg. 8K Pro. Usage:

# 8K Pro
uv -t decklink:3D:profile=1dfd <receiver_address>
uv -d decklink:3D:profile=1dfd
# 4K Extreme
uv -t decklink:3D <receiver_address>
uv -d decklink:3D

If using UltraGrid newer than 1.8.x, you don't need to specify 3D[1] and neither profile[2]

uv -t decklink[:full-duplex] <receiver_address>
uv -d decklink

[1] provided that the signal identifies itself as 3D (see also here)

[2] for capture on 8K pro, the 1-subdevice-full-hd profile still needs to be enabled for autocofiguration to work, it can be done in Desktop Video Setup: ☰ → <selected_card> → Connetors → "SDI 1 & 2 In, SDI 3 & 4 Out"

If using HDMI output, also packing can be specified:

uv -d decklink:3D:HDMI3DPacking=SideBySideHalfLineByLine
uv -d decklink:fullhelp # to see full list of packings

Using multiple cards

Sending

Testcard

Testcard can be used in aggregate mode to send the 3D signal, eg.:

uv -t aggregate -t testcard:size=1920x1080:fps=24 -t testcard:1920x1080:fps24 <recv>

DeckLink

DeckLink driver is special because it can handle multiple independent cards (but of same type) in a 3D, examples:

uv -t decklink:<card_indices>:<mode>:<pixel_format> -m 8500 <receiverIP> # (all values can be obtained with '-t decklink:help')
# eg.:
uv -t decklink:0,1:6:UYVY -m 8500 <receiverIP>

Other capture cards

If none DeckLink is not available, you can use aggregate pseudocapture as already mentioned in the section for testcard. Basically you'll let pick the signal from multiple sources and put it together. It is almost necessary for the sources to have the same signal. Example:

uv -t aggregate -t aja:device=0 -t aja:device=1

Receiving

Receiving is mostly analogous to sending/capture, possible modes are:

  • side by side video - SDL/GL

    uv -M 3D -d sdl/gl

    Note: It is recommended to use SDL for Linux and GL display on Mac X OS, because these 2 combinations can span across all displays (which is perhaps needed - left display left eye, right display right). On Mac, click to uv->Preferences and select 'Use Extended Desktop' option. Then, you can press 'f' to toggle fullscreen (both systems). On Linux, you should have properly set Xinerama (in many cases, it shouldn't require any action from you).

  • dual-head HW - DeckLink Quad or 2x Intensity HDMI

    uv -d decklink:0,1 -M 3D <senderIP>

    (supposing 0 and 1 are indices of Quad's output ports or Intensities' indices)

  • dual-head HW - DeckLink HD Extreme 3D

    uv -d decklink:0:3D -M 3D <senderIP

    (0 is index of DeckLink HD Extreme 3D card)

  • interlaced scanline video using GL (scaling is not currently supported). SDL (or another device) should be analogous:

    uv -d gl -M 3D -p 3d-interlaced

Using aggregate to display with multiple cards

Same usage as above for capture.

Clone this wiki locally