一个自定义 AM_MEDIA_TYPE 问题
自定义了一个media subtype:
extern "C" const __declspec(selectany) GUID EMIP_MEDIASUBTYPE_I420 =
{0x30323449,0x0000,0x0010, {0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}};
然后
AM_MEDIA_TYPE mt;
ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));
mt.majortype = MEDIATYPE_Video;
mt.subtype = EMIP_MEDIASUBTYPE_I420;
hr = m_pGrabber->SetMediaType(&mt);
m_pGrabber是一个ISampleGrabber *m_pGrabber;
最后在枚举的时候却总是找不到这个类型:
hr = pConfig->GetNumberOfCapabilities(&count, &s);
for (int i = 0; i < count; i++)
{
VIDEO_STREAM_CONFIG_CAPS caps;
AM_MEDIA_TYPE *pMediaType;
hr = pConfig->GetStreamCaps(i, &pMediaType, (BYTE*)&caps);
if (HR_SUCCEEDED(hr))
{
if ((pMediaType->majortype == MEDIATYPE_Video) &&
(pMediaType->subtype == EMIP_MEDIASUBTYPE_I420) &&
(pMediaType->formattype == FORMAT_VideoInfo) &&
(pMediaType->cbFormat >= sizeof (VIDEOINFOHEADER)) &&
(pMediaType->pbFormat != NULL))
....
}
pConfig是IAMStreamConfig指针。
初学dshow,请大家指教