I have a USB iSight camera which slows down its frame rate depending on the light level (same as is happening here: https://discussions.apple.com/thread/1044245?tstart=0).
On Windows, CameraDevice::startRecordingToFile() is not taking account of this varying rate, so the resulting video plays too fast.
I'm happy to delve into the problem myself, but I'm not familiar with DirectShow - any ideas how to fix the frame rate, or maybe insert a rate converter in the filter graph?
It should be recording a VBR file... Are you sure that it's the recording that's wrong, and not your video player that's failing to replay it with the correct timings for each frame?