This example shows how you can wait for the DVR sink to write data past a certain offset. This is useful if you want to wait for the data to become available before reading it. The error checking has been omitted for clarity.
void WaitForData(ILMDVRSink* pSink, __int64 startOffset, long nBytes){long registrationId = (long)GetTickCount(); // set this to a unique value in your applicationOLE_HANDLE dataWrittenEvent;OLE_HANDLE listChangedEvent;OLE_HANDLE offsetReachedEvent;// create the offset reached eventpSink->CreateEvents2(registrationId, GetCurrentProcessId(), &dataWrittenEvent, &listChangedEvent, &offsetReachedEvent);// instruct the sink to set the offset reached event once it reached nBytes past offset startOffsetpSink->SetOffsetToReach(registrationId, (double)(startOffset + nBytes));// wait for the event to be setWaitForSingleObject((HANDLE)offsetReachedEvent, INFINITE);// free the eventspSink->FreeEvents(registrationId);}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
