-
Notifications
You must be signed in to change notification settings - Fork 65
Stereoscopic 3D Video Settings
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.
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
In this mode left and right eye alter temporarily as described by here:
frame0 frame1 frame2 ...
LLLLLLLL RRRRRRRR LLLLLLLL
LLLLLLLL RRRRRRRR LLLLLLLL
LLLLLLLL RRRRRRRR LLLLLLLL
... ... ...
This mode can be used by UltraGrid in following way:
sender$ uv -F temporal_3d -t <vcapture> -c <compression> <receiver>
receiver$ uv -p temporal_3d -d <display> <sender>
(so temporal_3d on both ends, on sender as a capture-filter, on the receiver as a video postprocessor)
Notes:
- it is random whether first is acquired left or right eye; so it must be tweaked either on device or by restarting UG
- once started, the order (left-right) of the frames should be preserved
- in case of insufficient performance, an option
:nodelay
may be used for the receiver video postprocess (so-p temporal_3d:nodelay
)
Basically using temporal_3d preprocess+postprocess solves 2 things:
- inter-frame compression codecs: both eyes have its own compression context
- frame order: once left-right order is set, it won't change during the transmission eg. due lost frame in network transmission
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 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>
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 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
Same usage as above for capture.
If you have any technical or non-technical question or suggestion please feel free to contact us at