0

DirectShow で SamleGrabber の現在の解像度を取得するには?

以下のコードを試しましたが、うまくいきません。得られる値は常に 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);
    }
}
4

2 に答える 2