The ltmmConvert and ltmmPlay objects allow the user to supply media data through memory instead of a file. The source can be defined by a global memory handle or by an array.
Define the source using a global memory handle you should allocate global memory, fill it with complete media file data, and assign the handle to the ltmmConvert or ltmmPlay objects. The assignment is performed as follows:
IltmmPlay* pPlay; // play object interface (initialized elsewhere)
HGLOBAL hGlobal; // allocated and filled elsewhere
IltmmPlay_put_SourceHGlobal (pPlay, (long) hGlobal);
IltmmPlay* pPlay; // play object interface (initialized elsewhere)
HGLOBAL hGlobal; // allocated and filled elsewhere
pPlay->put_SourceHGlobal ((long) hGlobal);
Reset the source by calling the ResetSource function. As long as the global memory handle is assigned to the object, the user must not free the memory.
IltmmPlay_ResetSource (pPlay);
pPlay->ResetSource ();
Another means of supplying memory data to the ltmmConvert and ltmmPlay objects is through a SAFEARRAY as follows:
ULONG cbData; // size of the media data (initialized elsewhere)
BYTE* pData; // pointer to the media data (initialized elsewhere)
SAFEARRAY sa; // array descriptor
VARIANT var;
// setup the SAFEARRAY to reference the data buffer
sa.cbElements = sizeof(unsigned char);
sa.cDims = 1;
sa.cLocks = 0;
sa.fFeatures = (FADF_STATIC | FADF_FIXEDSIZE);
sa.pvData = pData;
sa.rgsabound[0].cElements = cbData;
sa.rgsabound[0].lLbound = 0;
// the array must be passed in a VARIANT
VariantInit(&var);
V_VT(&var) = (VT_ARRAY | VT_UI1);
V_ARRAY(&var) = &sa;
// assign the array
IltmmPlay_put_SourceArray (pPlay, var);
ULONG cbData; // size of the media data (initialized elsewhere)
BYTE* pData; // pointer to the media data (initialized elsewhere)
SAFEARRAY sa; // array descriptor
VARIANT var;
// setup the SAFEARRAY to reference the data buffer
sa.cbElements = sizeof(unsigned char);
sa.cDims = 1;
sa.cLocks = 0;
sa.fFeatures = (FADF_STATIC | FADF_FIXEDSIZE);
sa.pvData = pData;
sa.rgsabound[0].cElements = cbData;
sa.rgsabound[0].lLbound = 0;
// the array must be passed in a VARIANT
VariantInit(&var);
V_VT(&var) = (VT_ARRAY | VT_UI1);
V_ARRAY(&var) = &sa;
// assign the array
pPlay->put_SourceArray (var);
Once again, the memory should be allocated and filled by the user. As long as the array is assigned to the object, the user must not free the data buffer or the array descriptor. The user can unassign the source by calling the ResetSource function as described above.
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