由于x264编码使用的是YUV数据,所以想让DShow视频采集时就输出YUV数据,
查询了相关资料后,发现该输出能力与视频设备相关,我们可以通过一些dshow接口来查询设备的输出能力。
查询的步骤
IAMStreamConfig *pSC;
取得IAMStringConfig
hr = m_pCGB2->FindInterface(&PIN_CATEGORY_PREVIEW,
&MEDIATYPE_Interleaved,
m_pCap,
IID_IAMStreamConfig,
(void **)&pSC);
获取设备支持的格式数量
hr = pSC->GetNumberOfCapabilities(&iCount, &iSize);
然后循环获取
VIDEO_STREAM_CONFIG_CAPS scc;
AM_MEDIA_TYPE* pmt;
for( i = 0 ; i < iCount ; i ++ )
{
hr = pSC->GetStreamCaps(iii++, &pmt, reinterpret_cast<BYTE*>(&scc));
VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *)pmt->pbFormat;
}
取到VIDEOINFOHEADER了,就可以看里面的bmiHeader了。
有支持YUV420的话,就设置该格式。没支持的就没办法了,
还是得做RGB2YUV420的转换。