HRESULT GetDVRAvailableFragments(ILMDVRSink* pDVR, double* pdFragmentStartPos, double* pdFragmentEndPos)
{
double dStartPos;
double dEndPos;
double dTotal;
// find available range of bytes
HRESULT hr = pDVR->GetAvailabilityInfo(&dStartPos, &dEndPos, &dTotal);
if (FAILED(hr))
return hr;
// align the offset with transport fragment boundaries
return pDVR->GetFragmentAlignment(dStartPos, dEndPos, pdFragmentStartPos, pdFragmentEndPos);
}
HRESULT SaveDVRFragments(ILMDVRSink* pDVR, LPCWSTR pszFile)
{
HRESULT hr;
double dStartPos;
double dEndPos;
// Get fragment aligned boundaries for all available data
hr = GetDVRAvailableFragments(pDVR, &dStartPos, &dEndPos);
if (FAILED(hr))
return hr;
// Save the fragments to a file
return pDVR->CopyBufferToFile(CComBSTR(pszFile), dStartPos, dEndPos);
}
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