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 CDVRExample::PlayUDPSourceWithDVRBuffer()
{
USES_CONVERSION;
HRESULT hr = S_OK;
try
{
// Open the UDP Stream, but dont auto
start
m_player->put_AutoStart(VARIANT_FALSE);
m_player->put_SourceFile(L"udp://127.0.0.1:9005");
IUnknown *punk = NULL;
HRESULT hr = m_player->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(L"Capture.LBL");
// Set the buffer folder location to 'C:\Temp'
pDvrSink->put_FolderName(0,
L"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);
pDvrSink->Release();
}
}
// Run the stream
m_player->Run();
}
catch ( ... )
{
ASSERT ( FALSE );
throw;
}
}