Вставьте фильтр захвата образца. Подключите источник камеры к устройству захвата образца, а затем к нулевому средству визуализации. Пример граббера - это преобразование, поэтому вам нужно куда-то подать выходные данные, но если вам не нужно их визуализировать, хорошим выбором будет нулевой рендер.
Вы можете настроить сэмплер, используя ISampleGrabber. Вы можете организовать обратный вызов вашего приложения для каждого кадра, давая вам либо указатель на сами биты, либо указатель на объект IMediaSample, который также даст вам метаданные.
Вам нужно реализовать ISampleGrabberCB на вашем объекте, а затем вам нужно что-то вроде этого (псевдокод)
IFilterInfoPtr m_pFilterInfo;
ISampleGrabberPtr m_pGrabber;
m_pGrabber = pFilter;
m_pGrabber->SetBufferSamples(false);
m_pGrabber->SetOneShot(false);
// force to 24-bit mode
AM_MEDIA_TYPE mt;
ZeroMemory(&mt, sizeof(mt));
mt.majortype = MEDIATYPE_Video;
mt.subtype = MEDIASUBTYPE_RGB24;
m_pGrabber->SetMediaType(&mt);
m_pGrabber->SetCallback(this, 0);
// SetCallback increments a refcount on ourselves,
// but we own the grabber so this is recursive
/// -- must addref before SetCallback(NULL)
Release();