3D Vision Blog

A normal user's look into the world of 3D Stereo Technologies

3D Vision Blog header image 2

MKV File Container Support for Stereo 3D Video and the MK3D Files

June 3rd, 2011 · 8 Comments · Other S3D Tech

The MKV container for audio/video has been supporting stereoscopic 3D video for quite some time, but it never got so popular and widely supported by 3D video players, the user interest in that however has been increasing since the announcement of the Popcorn Hour C-200 Video Player Getting HDMI 1.4 3D Video Support (currently available for $299.99 USD) as well as support for the MK3D (Matroska 3D Files) format. This practically opens the doors for all the multimedia players based on the platform from Syabas Technology and others as well for adding 3D video file support and playback without the need of a computer for example. But unfortunately two and a half months later nothing much has changed and there is still not a lot of content available in the so called Matroska 3D file format. What exactly is this MK3D format all about…

The MK3D format is essentially a MKV file container that has a special field set defining what type of stereoscopic 3D video material is contained in the file, so the MK3D file extension is just to make things more apparent. You can without problems also have a normal MKV file contained with the field set in its header, so that a player can automatically detect and switch to the right format for displaying the 3D content. The stereo 3D support for Matroska video files can be realized with either two separate video tracks – one for each eye, or with a single video track containing both the data for the left and right eye in multiple possible formats. If you are going to use multiple tracks than the TrackOperation field in the header is being used, but more likely you would want to do a single video track as it easier with the 3D content inside it and for that you need to set the StereoMode field.

StereoMode field values:

0: mono
1: side by side (left eye is first)
2: top-bottom (right eye is first)
3: top-bottom (left eye is first)
4: checkboard (right is first)
5: checkboard (left is first)
6: row interleaved (right is first)
7: row interleaved (left is first)
8: column interleaved (right is first)
9: column interleaved (left is first)
10: anaglyph (cyan/red)
11: side by side (right eye is first)
12: anaglyph (green/magenta)
13: both eyes laced in one Block (left eye is first) (field sequential mode)
14: both eyes laced in one Block (right eye is first) (field sequential mode)

You can set the respective value for the StereoMode field in an MKV file with 3D video that you’ve already downloaded or to apply it to a video you are encoding, so that it would become ready for devices and players that support MK3D to automatically use the right 3D format for the file. For adding the value for the StereoMode field you can use MKVToolnix (available for Linux, Windows and Mac) and more specifically the MKVmerge GUI and the Header editor that the GUI has to make things really quick and simple even for non-advanced users. And just for testing purposes I have for you a short stereo 3D video converted to MK3D (MKV file container with the StereoMode field set to the right format), so that you can just download and test with it.

Download the Resident Evil 3D Teaser Video by Guillem Rodriguez in MK3D Container…

Tags: ··········

8 responses so far ↓

  • 1 Petri Teittinen // Jun 3, 2011 at 17:59

    So which one of those modes is equal to Frame Packing? A quick glance of the list says all modes are frame compatible, i.e. they use a regular sized frame. And in that case there’s no need for HDMI 1.4 compatibility in Popcorn Hour C-200, for example… unless by “HDMI1.4” Popcorn Hour means using HDMI 1.4’s signalling bits to tell the 3DTV to switch automatically to Side-by-Side or Top/Bottom mode. If so, it’s a bit of a white lie since one could argue the main point of HDMI 1.4 spec was Frame Packing.

  • 2 Bloody // Jun 3, 2011 at 18:05

    The HDMI 1.4 compatibility of the device has noting to do with the MK3D (Mastroska 3D) support, it just means that the player outputs the stereo 3D video using frame packaging to a 3D-capable HDTV, regardless of what the source format of the 3D MKV video is. They just introduced both features with a single 3D-related update of the firmware…

  • 3 BlackShark // Jun 4, 2011 at 00:45

    Frame compatible formats allow to play 3D even if the player isn’t aware it’s plaing 3D (because it’s compatible with normal 2D video)
    The problem with frame packing is that the player has to be aware it’s playing 3D content and able to find the left and the right eye views.
    The whole point of the mkv 3D feature is to automatically tell the player where to find them.

    I don’t have a Popcorn Hour but I wonder :
    Can the Porcorn Hour play full resolution 3D video, like side by side fullres (3840×1080) or dual-stream with FullHD per stream ? And if yes, at what framerate ?

  • 4 LoneThread // Jun 4, 2011 at 05:00

    I’m still waiting for Stereoscopic Player (And thus nVidia 3D Vision Player) to add support for this.

  • 5 blackrat // Jul 5, 2011 at 12:24

    So ColorCode 3D is not supported?

    (a stereo driver for CC was added recently to iz3d driver)

  • 6 Publisher // Feb 19, 2012 at 17:19

    Download the sample file from RapidShare: https://rapidshare.com/files/1771647303/resident-evil-3d-teaser-video.mk3d

  • 7 Andre // Jun 16, 2012 at 19:46

    ” The stereo 3D support for Matroska video files can be realized with either **two separate video tracks**”

    By “two separated video tracks” you mean the top-bottom and side-by-side options? They are not really “two *separated*(…)”.

    I’m really in search to store into a MKV file two different video tracks, running each one at 100% resolution (not two video tracks at half size sharing the same frames). Its possible?


  • 8 Ale.net // Jul 26, 2013 at 01:13

    Hi friends, the video stereo mode is nice but, since there is a lot of empty space inside the window, why you didn’t put the list of the values in there instead of the annoing (0 – 11, see documentation) string?

Leave a Comment