I had problems using USB analog-2-digital Grabber devices like Hauppauge WinTV USB Live2 Grabber. It worked on VLC and DirectShow GraphStudio but not on VideoInput (and OpenCV which uses VideoInput).
I had to change
hr = VD->pCaptureGraph->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, VD->pVideoInputFilter, VD->pGrabberF, VD->pDestFilter);
to
hr = VD->pCaptureGraph->RenderStream(&CAPTURE_MODE, &MEDIATYPE_Video, VD->pVideoInputFilter, VD->pGrabberF, VD->pDestFilter);
to get it working.
Probably this is a logical change because CAPTURE_MODE was set to PIN_CATEGORY_PREVIEW previously, if PIN_CATEGORY_PREVIEW is possible.
Please verify that the change is ok and update if that's true.
Best regards, Michael