Use Memory Targets
The ltmmCapture and ltmmConvert objects allow the user to write media data to memory instead of a file.
1. |
Define the memory target you should allocate an empty SAFEARRAY and assign it to the ltmmCapture or ltmmConvert object. The assignment is performed as follows: |
C Source
IltmmConvert* pConvert; // ltmmConvert object interface (initialized elsewhere)
SAFEARRAY* psa;
// allocate an empty byte array
psa = SafeArrayCreateVector(VT_UI1, 0, 0);
// the array must be passed in a VARIANT
VariantInit(&var);
V_VT(&var) = (VT_ARRAY | VT_UI1);
V_ARRAY(&var) = psa;
// assign the array
IltmmConvert_put_TargetArray (pConvert, var);
C++ Source
IltmmConvert* pConvert; // ltmmConvert object interface (initialized elsewhere)
SAFEARRAY* psa;
// allocate an empty byte array
psa = SafeArrayCreateVector(VT_UI1, 0, 0);
// the array must be passed in a VARIANT
VariantInit(&var);
V_VT(&var) = (VT_ARRAY | VT_UI1);
V_ARRAY(&var) = psa;
// assign the array
pConvert->put_TargetArray (var);
2. |
The array will be resized and filled with the object’s output data. As long as the array is assigned to object, the array data and descriptor should not be accessed. The user can reset the target by calling the ResetTarget function: |
C Source
IltmmConvert_ResetTarget (pConvert);
C++ Source
pConvert->ResetTarget ();
3. |
Once the target has been reset, the user may access or free the memory. |