http://download.csdn.net/user/chinabinlang
简单描述一下步骤:
假设要描述的摄像头为:CComPtr<IBaseFilter> m_pSrcFilter ; 已经获取;
1: 获取IAMStreamConfig接口:
CComPtr<IAMStreamConfig> ptrAMStreamConfig = NULL;
HRESULT hr = m_ptrCaptureGraphBuilder2->FindInterface(&PIN_CATEGORY_PREVIEW,&MEDIATYPE_Video,//MEDIATYPE_Interleaved,
m_pSrcFilter ,
IID_IAMStreamConfig, (void **)&ptrAMStreamConfig);
或者:
CComPtr<IPin> pin;
CComPtr<IAMStreamConfig> pConfig;
GetPin( m_pSrcFilter ,PINDIR_OUTPUT, & pin);
pin->QueryInterface(&pConfig);
2: 获取数量:
int nNumberOfCapabilities = 0, iSize = 0;
HRESULT hr = pVStreamConfig->GetNumberOfCapabilities(&nNumberOfCapabilities, &iSize);
3:获取VIDEO_STREAM_CONFIG_CAPS参数;
一个摄像头可以有多个颜色空间,每个颜色空间可以对应不同的分辨率;
for (int iCurrent = 0; iCurrent<nNumberOfCapabilities; iCurrent++ )
{
VIDEO_STREAM_CONFIG_CAPS tVSConfigCaps;
AM_MEDIA_TYPE *pMediaType = NULL;
hr = pVStreamConfig->GetStreamCaps(iCurrent, &pMediaType, (BYTE*)&tVSConfigCaps);
if ( ! SUCCEEDED(hr))
{
break;
}
if( pMediaType->subtype == /*获取的其中一个颜色空间*/ )
{
//指定颜色空间下的一个分辨率;
int nwidth = tVSConfigCaps.InputSize.cx;
int nheight = tVSConfigCaps.InputSize.cy;
}
}