How to Copy buffered DVR data to a new file (C++)

The following method for C++ shows how to get the DVR Sink object from the ltmmPlayControl object and use it to copy DVR buffered data to a new file.

 

void CDVRExample::DVRCopyToFile() 

   IUnknown *punk = NULL; 
   HRESULT hr = m_player->GetSubObject(ltmmPlay_Object_SourceFilter, &punk);
   
   if(SUCCEEDED(hr) && NULL != punk) 
   { 
      ILMDVRSink *pDvrSink; 
      hr = punk->QueryInterface(IID_ILMDVRSink, (LPVOID*)&pDvrSink); 
      punk->Release(); 

      if (SUCCEEDED(hr)) 
      { 
         double start, stop, total; 

          // Get available range to copy
         pDvrSink->GetAvailabilityInfo(&start, &stop, &total); 

          // Copy the data to the new file
         pDvrSink->CopyBufferToFile(L"C:\\Temp\\DVR\\Copied_Capture.mpg", start, stop);
         
          // Release the interface and free string data
         pDvrSink->Release();
      } 
   }
}