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; } }