Как получить текущее разрешение SamleGrabber в DirectShow?Как получить разрешение в реальном времени в directshow?
Я пробовал приведенный ниже код, он не работает. Значение, которое вы получаете, всегда равно 1920x1080, а разрешение источника изменилось с 1920x1080 до 1680x1050.
void GetCurrentResolution(ISampleGrabber* pGrabber, int* pWidth, int* pHeight)
{
AM_MEDIA_TYPE pmt = {0};
hr = pGrabber->GetConnectedMediaType(&pmt);
if (SUCCEEDED(hr))
{
if(pmt.formattype == FORMAT_VideoInfo)
{
VIDEOINFOHEADER *pVih = (VIDEOINFOHEADER*)pmt.pbFormat;
*pWidth = pVih->bmiHeader.biWidth;
*pHeight = pVih->bmiHeader.biHeight;
}
FreeMediaType(pmt);
}
}
Не могли бы вы уточнить, что «не работает»? – Rachel
Если разрешение изменилось с 1920x1080 до 1680x1050, вы получите значение 1920x1080. – senggen