How to Play a UDP MPEG2 Stream with DVR Buffer Capturing (C++)

The following C++ method demonstrates how to use the ltmmPlayControl to play a UDP MPEG2 source stream with modified DVR buffer settings:

void PlayUDPSourceWithDVRBuffer(IltmmPlay *pPlay) 
{ 
   USES_CONVERSION; 
   try  
   { 
       // Open the UDP Stream, but dont auto start 
      pPlay->put_AutoStart(VARIANT_FALSE); 
      pPlay->put_SourceFile(L"udp://127.0.0.1:9005"); 
 
      IUnknown *punk = NULL; 
      HRESULT hr = pPlay->GetSubObject(ltmmPlay_Object_SourceFilter, &punk); 
 
      if (SUCCEEDED(hr))  
      { 
         ILMDVRSink *pDvrSink; 
         hr = punk->QueryInterface(IID_ILMDVRSink, (LPVOID*)&pDvrSink); 
         punk->Release(); 
 
         if (SUCCEEDED(hr))  
         { 
             // Tell the DVR Sink that settings are about to change  
            pDvrSink->StartChangingAttributes(); 
 
             // Set only one DVR buffer folder  
            pDvrSink->put_FolderCount(1); 
 
             // Set the buffer base file name to 'Capture.LBL'  
            pDvrSink->put_BaseName(TEXT("Capture.LBL")); 
 
             // Set the buffer folder location to 'C:\Temp'  
            pDvrSink->put_FolderName(0, TEXT("C:\\Temp")); 
 
             // Set the buffer folder to have 5 buffer data files, each at 100MB max size  
            pDvrSink->SetBufferSize(0, 5, 102400000); 
 
             // Commit the changed settings now 
            pDvrSink->StopChangingAttributes(VARIANT_FALSE); 
 
            // release the dvr sink object 
            pDvrSink->Release(); 
         } 
      } 
 
       // Run the stream  
      pPlay->Run(); 
   } 
   catch ( ... ) 
   { 
      ASSERT(FALSE); 
      throw; 
   } 
} 

Help Version 20.0.2019.9.19
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2019 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Multimedia C API Help