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.
1. 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:
C Source
IltmmPlay* pPlay; // play object interface (initialized elsewhere)
HGLOBAL hGlobal; // allocated and filled elsewhere
IltmmPlay_put_SourceHGlobal (pPlay, (long) hGlobal);
C++ Source
IltmmPlay* pPlay; // play object interface (initialized elsewhere)
HGLOBAL hGlobal; // allocated and filled elsewhere
pPlay->put_SourceHGlobal ((long) hGlobal);
2. 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.
C Source
IltmmPlay_ResetSource (pPlay);
C++ Source
pPlay->ResetSource ();
Once the source has been reset, the user may free the memory.
3. Another means of supplying memory data to the ltmmConvert and ltmmPlay objects is through a SAFEARRAY as follows:
C Source
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);
C++ Source
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);
4. 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.
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET