3D

From Official Kodi Wiki
Jump to navigation Jump to search
Home icon grey.png   ▶ Video library ▶ Playback ▶ 3D

Starting in v13, Kodi supports a number of passive 3D video formats such as SBS, TAB, anaglyph or interlaced. This support extends to the Kodi GUI including subtitles and on-screen-controls.

Theory of Operations

3D can be encoded in the video file in a variety of methods and displayed on the output device in yet another variety of methods. When Kodi can decode the video file and knows how 3D is encoded in it, it can then transform the decoded video to the desired output method. In that case Kodi can also render its GUI according to the desired output method, making the GUI naturally useable during playback.

The most popular 3D formats encode left and right images of the 3D frame inside a 2D frame and can therefore be supported with any Kodi supported video file encoding (typically h264/h265(hevc) with mkv container format). For example, in (half) Side-By-Side (SBS) a left eye 960x1080 and a right eye 960x1080 frame are combined side-by-side into a full HD 1920x1080 frame. In (half) Top-And-Bottom (TAB), a left eye 1920x540 and a right eye 1920x540 frame are combined top and bottom into a full HD 1920x1080 frame.

Either of these formats can be played back onto a HDMI 1.4 compatible display even without the player (Kodi or any other) knowing that they are 3D. The display can then (usually manually) be set to decode the 3D content, and then displays it for active or passive shutter glasses (depending on the type of 3D display). If Kodi is unaware of the video being 3D, it will render its GUI across the whole 2D frame, so that it becomes gibberish after 3D decoding by the display.

Typically, Kodi is aware of the 3D encoding of the video, see the section "How Kodi does 3D detection". In that that case it will transform the 3D format of the video after decoding to the desired output mode for the display, for example converting SBS to TAB or vice versa, or even to anamorphic which can be played back on any display using colored (plastic) glasses.

HDMI 3D

HDMI 1.4/2.0/2.1 support SBS and TAB formats with 24, 50 and 60Hz but only up tofull-HD resolution of 1920x1080. Larger size SBS/TAB such as full SBS (3840x1080) or full TAB (1920x2160) can be played back by Kodi but will be scaled down to 1920x1080 for HDMI displays, resulting in a loss of half the horizontal (SBS) or vertical (TAB) resolution.

For full HD 3D resolution on a HDMI display the system must render a HDMI 1.4 frame-packing signal (unchanged in HDMI 2.0/2.1). This is the format used by Blu Ray 3D players. It is a 1920x2205 signal constituting of full-HD top and bottom left and eye frames separated by 45 lines of blanking. It is only supported by HDMI at 24 fps or at 1280x720 resolution with 50/60Hz. Support for this output format is platform specific. See Platform specific info below. If Kodi supports this output format, it is usually enabled (Kodi 17) via the "Hardware based" output method in Kodi and can be used to play back full SBS/TAB videos without loss of resolution.

Limitations

MVC software decoding not supported

Kodi does not yet support software video decoding of MVC (Multiview Video Coding) encoded 3D videos, which is the format most commonly used in raw Blu-ray 3D backups/rips (and on original Blu-ray Disc media with stereoscopic video.

However, hardware decoding of MVC (Multiview Video Coding) encoded 3D videos is supported in Kodi on some platforms/operating-systems if the device drivers and hardware supports it, like it does for the Raspberry Pi. For hardware decoding Kodi relies on the SoC/VPU/GPU chipset hardware manufacturer to add support for this to their SDK (Software Developer Kits) and for the media player box manufacturers to implement that into their API, firmware, kernel, and/or device drivers images as needed.

For software video decoding Kodi depends on the third-party decoder libraries from the (ffmpeg.org) project as well as code from its sister-project Libav (libav.org). The fact is that Kodi developers will not be ablle to add support software video decoding of MVC encoded 3D videos until the developers of those upstream projects have written and added code for it first, and those projects are just like Kodi also non-profit organizations run by volunteers working for free so it is impossible to estimate when (if ever) someone will write and add code for MVC decoding support to FFmpeg and/or Libav (which is needed before it can be added to Kodi).

For some Kodi forum discussion please see: http://forum.kodi.tv/showthread.php?tid=227862 or for more information read the wikipedia article about MVC (Multiview Video Coding)

Developers might also want to read this development-oriented description written by the Libav (and FFmpeg) developers on their wiki here: http://wiki.libav.org/Blueprint/MVC as well as a very descriptive blog-post which explains why software video decoding of MVC is so hard to code into FFmpeg/Libav: http://blogs.gentoo.org/lu_zero/2014/04/04/the-road-to-mvc/ (posted by Luca Barbato and Vittorio who have been two of the lead developers in the FFmpeg and Libav projects for the past 10-years).

Interface and menus

Incomplete.png INCOMPLETE:
This page or section is incomplete. Please add information or correct uncertain data which is marked with a ?
Over-under 3D.png


How Kodi does 3D detection

Kodi has three ways to detect whether a videofile is a 3D video. These methods are checked in the following order:

Embedded streaminfo

First, Kodi tries to detect the stereoscopic mode for a video when extracting streamdetails from the videofile.

One of the supported fields is the 'Stereomode' field in the Matroska specification: http://matroska.org/technical/specs/index.html#StereoMode

Manual selection

When playing a video, you can bring up the video settings dialog to manually select the stereoscopic mode.

If you've done this before, Kodi will remember this setting and use it as the second method to detect the stereoscopic mode of a videofile.

Video filenames flags

The third and final method is detection through the filename of the video.

Kodi uses regular expressions to check for certain flags in the filename.

In order to properly detect the stereomode, two tags need to be present in the filename. First, a '3D' tag has to be present that matches the following regex: [-. _]3d[-. _]

In addition to this, either a 'SBS' tag [-. _]h?sbs[-. _] or a 'TAB' flag [-. _]h?tab[-. _] must be present in the filename.

You can customize these regular expressions through the Advancedsettings.xml file.


Regex matching is done case-insensitive, so for example either .3d. and .3D. will work.

Note: the tags need be be surrounded be either a hyphen -, space  , dot . or underscore _.


See the table below for some examples:

3D Stereoscopic side-by-side Stereoscopic top-and-bottom
.3D. .sbs. .tab.
-3d- .SBS. .TAB.
3d .HSBS. .HTAB.
_3d_ -hsbs- -htab-
.3D- _sbs_ _tab_
3D. SBS TAB
.3D sbs tab
-SBS -TAB
HSBS_ HTAB_
Filename examples
  • moviename (year).3d.hsbs.mkv
  • moviename 3d sbs.mkv
  • moviename.3D-HTAB.mkv
  • moviename-3D.sbs-720p.mkv


For other filename flags examples.

Subtitiles

?

Platform specific info

General

  • Hardware acceleration is not provided for full SBS or full TAB movies, meaning users will need playback hardware with adequate CPU power.
  • Kodi's "window mode" in Settings -> System -> Video output must use normal "Full screen" and not "Full screen window".

Windows

Starting with version 8.1, Windows supports HDMI 1.4 frame packing, and Kodi on Windows can therefore not only render to half-SBS/TAB HDMI output formats, but also full-HD 3D (at 24 Hz) via the "Hardware based" output method to HDMI displays supporting HDMI 3D. This should work across all GPUs (Intel, Nvidia, ARM, tested for this text on Intel, Nvidia). This does not require any MVC specific build of Kodi.

Intel GPU

On Intel GPU, HDMI 1.4 3D support may require the GPU to support InTru 3D. With IntTru 3D, HDMI 1.4 3D full-HD (1080p@24) is supported on Windows 7, 8 and 8.1 (unclear if Kodi supports this on Windows 7, unclear if Intel article just forgot to mention Windows 10 or if there is a change in support).

NVidia GPU

HDMI 1.4 3D capable displays

When connecting a HDMI 1.4 frame packing 3D capable HDMI display to an NVidia GPU, "Enable stereoscopic 3D" must be enabled in Windows NVidia Control Panel to use it. In Kodis "stereoscopic 3D mode" selection, this enables "Hardware based" for that display. It also enables the "HD 3D" modes 1080p24 and 720p50/60 in the NVidia Control Panels "Change resolution" section. These resolutions do not need to be selected explicitly to play back 3D in Kodi, instead set "Hardware based" as the default 3D optoin and enable frame rate switching in Kodi. Kodi will then automatically switch to 1080p24 frame packing when playing back 3D videos.

When stereoscopic 3D is enabled in the NVidia Control Panel for such a HDMI display, there is no separate "2D" 1080p24 option anymore. Kodi can therefore only use the "3D" 1080p24 frame packing mode when playing back 24fps videos (without any 3D effect of course). Active 3D capable HDMI displays often enable their IR transmitter when frame packing mode is selected. This can be irritating when the IR transmitter disturbs other IR remotes and only a 2D video is shown. It may then be necessary to switch between 2D/3D on the display manually or enable stereoscopic 3D on the NVidia Control Panel manually only before playing 3D.

NVidia 3DTV Play

By default, the NVidia Control Panel shows "HDMI Blu-Ray 3D" as the "Stereoscopic 3D display type" under "Enable stereoscopic 3D" for HDMI 1.4 capable displays and there is no other option. When NVIDIA 3DTV Play is active on the system, "HDMI Blu-Ray 3D" is not available anymore, but instead "3DTV Play" must be selected to enable HDMI 1.4 frame packing resolutions. NVIDIA 3DTV Play is neither necessary nor beneficial for Kodi nor other Blu-Ray DVD playback software for video playback with HDMI 1.4 frame packing.

NVidia 3DTV is an optional and separately sold software from NVidia primarily for rendering 3D games in HDMI 1.4 stereoscopic 3D. It is also enabled automatically for free when an NVidia 3D Vision USB IR emitter is connected to the PC. That emitter services no purpose for HDMI 1.4 display, it solely serves as a dongle so customers of the NVidia 3D Vision kit (including emitter and glasses) can get NVIDIA 3DTV Play for free if they have both NVidia 3DTV Vision capable display and HDMI 1.4 display connected to their PC. See http://www.nvidia.com/object/3dtv-play-compare.html.

When NVIDIA 3DTV Play is active, Kodi may display during startup a red warning onscreen that the selected resolution is incompatible with HDMI 1.4 3D. This is NVIDIA 3DTV Play recognizing Kodi as a 3D application. The warning will go away after some time and can simply be ignored.

NVidia 3D Vision

NVidia 3D Vision uses 3D active shutter glassses in conjunction with (certified for NVidia 3D Vision) DisplayPort PC Displays at 100/120/144 Hz. This can be used to display 3D video up to the full display resolution of the display used. In the NVidia Control Panel, Stereoscopic 3D needs to be enabled, then a resolution with >= 100Hz refresh rate needs to be choosen. 144Hz is best for 24p material to avoid motion judder. In Kodi, "Adjust display refresh rate" must be disabled (or else 3D vision gets enabled when Kodi switches to 24p fps) and "Hardware based" output method must be choosen. Tested with Windows 10, Kodi 17.6 for this paragraph (01/2018).

ARM (Android, iOS, Raspberry Pi)

  • 3D modes anaglyph and interlaced are not currently supported on ARM platforms (such as Android, iOS, Raspberry Pi, or other linux-based ARM distros) due to those platforms using OpenGLES rather than OpenGL or DirectX.

Other guides

See also