如何使用美乐威采集设备采集3D信号

美乐威I/O产品线(包括Pro Capture、USB Capture、USB Capture Plus和Eco Capture系列)中带有HDMI接口的采集设备均支持3D HDMI信号的输入和采集。目前可支持的3D模式包括Side-by-Side Half、Top-and-Bottom和Frame Packed。

在本文中,我们将以1080p的信号源为例讨论:

Side-by-Side Half

在Side-by-Side传输格式中,左眼帧和右眼帧的水平分辨率被压缩为其原始值的一半,然后合成一帧同时传输。对于3D 1080p信号,每帧的分辨率为1920×1080,由两个960×1080视频帧水平排列组成。

在使用美乐威采集设备采集此类高清信号时,用户设置采集分辨率为1920×1080。应用程序在处理这种模式的3D信号时,需要将采集到的1920x1080分辨率的视频帧分离为两个960×1080的压缩帧,在显示时再将分辨率恢复到1920x1080。

Top-and-Bottom

在Top-and-Bottom传输格式中,左眼帧和右眼帧的垂直分辨率被压缩为其原始值的一半,然后合成一帧同时传输。对于1080p信号,每帧的分辨率为1920×1080,由两个1920×540视频帧上下排列组成。

在使用美乐威采集设备采集此类高清信号时,用户设置采集分辨率为1920×1080。应用程序再处理这种模式的3D信号时,需要将采集到的1920x1080分辨率的视频帧分离为两个1920×540的压缩帧,在显示时再将分辨率恢复到1920x1080。

Frame Packed

Frame packed将左眼帧和右眼帧图像同时发送给接收设备,两帧图像垂直排列。此模式的信号源发送一个巨大的、两倍高度的图像帧,而不是两个较小的图像帧。对于1080p信号,每帧的实际分辨率为1920×2160,由两个1920×1080视频帧上下排列组成的。相较于Side-by-Side Half和Top-and-Bottom模式,Frame Packed模式在传输过程中图片质量是没有任何损耗的。

在使用美乐威采集设备采集此类高清信号时,用户需要要将采集分辨率设置为1920×2160。应用程序在采集到视频帧后,需要将其分离为两个1920×1080的视频帧,然后进行显示。

获取3D信号类型

MWCapture SDK是美乐威针对I/O系列的采集设备提供的开发接口。研发人员可以在美乐威官网了解更多关于此SDK的信息并进行下载。

  1. 美乐威采集卡仅支持HDMI 3D信号的采集。首先应用程序需要判断输入信号是否为 HDMI 信号。
  2. 如果输入的是HDMI信号,应用程序可以通过输入信号的详细信息获取信号的 3D 格式。示例代码如下:
  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.     }