How to Capture 3D Signals Using a Magewell Capture Device

The HDMI models of the Magewell I/O product line (including the Pro Capture family, USB Capture family, USB Capture Plus family and Eco Capture family) support 3D signal input and capture. The supported 3D modes include Side-by-Side Half, Top-and-Bottom, and Frame Packed.

In this article, we will use a 3D HDMI input at 1080p as an example to discuss:

Side-by-Side Half

The Side by Side method makes sure that the transmission frame rate remains the same as the original frame rate. The Side-by-Side Half is one version of this method. In this version the material for the left eye and the right eye is sub-sampled to half the horizontal resolution, and the two sub-frames are combined into one for output. For a 3D 1080p signal, the resolution for each frame is 1920x1080 that consists of two 960x1080 sub-frames side by side. 

When using a Magewell capture device to capture such a signal, a developer needs to set the capture resolution to 1920x1080. When an application processes such a 3D signal, it needs to separate the 1920x1080 frame into two 960x1080 sub-frames and then restore each of the two frames to 1920x1080 when displaying them. 

Top-and-Bottom

The Top and Bottom method also makes sure that the transmission frame rate remains the same as the original frame rate. In the Top-and-Bottom mode, the material for the left eye and the right eye is sub-sampled to the half of the vertical resolution and the two sub-frames are combined into one frame for output. For a 3D 1080p signal, the resolution for each frame is 1920x1080 that consists of two 1920x540 sub-frames one above the other. 

When using a Magewell capture device to capture such a signal, a developer needs to set the capture resolution to 1920x1080. When an application processes such a 3D signal, it needs to separate the 1920x1080 frame into two 1920x540 frames and then restore each of the two frames to 1920x1080 when displaying them. 

Frame Packed

In the Frame Packed mode, both the entire frame of the left eye and the right eye are simultaneously output to the receiving device, with one frame above the other. This mode delivers a large frame that is twice the height of the original frames, instead of a frame consisting of two halved sub-frames. For a 1080p signal, the resolution of each output frame will be 1920x2160, with two 1920x1080 frames on top and bottom. Compared with the Side-by-Side Half mode and the Top-and-Bottom mode, the Frame Packed mode retains the original resolution of the source images.

When using a Magewell capture device to capture such a signal, a developer needs to set the capture resolution to 1920x2160. When an application processes such a 3D signal, it needs to separate the 1920x2160 frame into two 1920x1080 frames for display. 

Obtaining the Mode of a 3D Signal

The MWCapture SDK is a set of APIs for Magewell capture devices. Developers can go to Magewell website to learn about the SDK and apply for download.

  1. Only the HDMI models of Magewell capture devices support 3D signal capture. Therefore, an application needs to firstly determine whether the input signal is HDMI.
  2. If the input signal is HDMI, the application can obtain the 3D mode information from the details of the input signal. The sample code is as follows:
  1. MW_RESULT xr;  
  2.   
  3. MWCAP_INPUT_SPECIFIC_STATUS status;  
  4. xr = MWGetInputSpecificStatus(hChannel, &status);  
  5. if(xr  == MW_SUCCEEDED) {  
  6.     if(status.bValid) {  
  7.         switch(status.dwVideoInputType) {  
  8.         case MWCAP_VIDEO_INPUT_TYPE_HDMI  
  9.         {  
  10.             //Magewell capture device only support HDMI 3D signal  
  11.             if(status.hdmiStatus.b3DFormat == 0) {  
  12.                 // Input HDMI signal is 2D  
  13.             } else {  
  14.                 //Input signal is 3D, and use "status.by3DStructure" to get  
  15.                 //detailed mode of 3D signal  
  16.                 if(status.by3DStructure == 0x00) {  
  17.                     //Input 3D signal mode - Frame packed  
  18.                }else if(status.by3DStructure == 0x06) {  
  19.                    //Input 3D signal mode - Top and Bottom  
  20.                }else if (status.by3DStructure == 0x08) {  
  21.                    //Input 3D signal mode - Side-by-Side Half  
  22.                }  
  23.            }           
  24.         }  
  25.         default:  
  26.             break;  
  27.         }  
  28.     }