-
Notifications
You must be signed in to change notification settings - Fork 176
Description
I was experiencing freezes using the Unibrain Fire-i Board BW FireWire camera. After adding logging and testing start/acquire/stop for 24 hours I determined the filter graph as configured is incompatible with this particular device. Note that the Logitech Webcam C170 USB device that I'm using for testing did not experience any freezes with the original graph or the new graph after my code change.
The filter that seems to have caused the issue is the IMediaFilter with SetSyncSource to NULL.
I've commented this code and my test passed without any freezes.
// EXP - lets try setting the sync source to null - and make it run as fast as possible
{
IMediaFilter *pMediaFilter = 0;
hr = VD->pGraph->QueryInterface(IID_IMediaFilter, (void**)&pMediaFilter);
if (FAILED(hr)){
if(verbose)printf("ERROR: Could not get IID_IMediaFilter interface\n");
}else{
pMediaFilter->SetSyncSource(NULL);
pMediaFilter->Release();
}
}
https://msdn.microsoft.com/en-us/library/windows/desktop/dd377588(v=vs.85).aspx
You can also set the filter graph to run with no clock, by calling SetSyncSource with the value NULL. If there is no clock, the graph runs as quickly as possible. With no clock, renderer filters do not wait for a sample's presentation time. Instead, they render each sample as soon as it arrives. Setting the graph to run without a clock is useful if you want to process data quickly, rather than previewing it in real time.