IltmmPlay::get_SourceStream Example for C

// This method will fill the source stream with
// data from a buffer
void FillSourceFromMemory(UCHAR *pData, long lSize, IltmmPlay *pPlay) 
{
   IltmmMemory *pMemSource = NULL; 
   SAFEARRAY sa; 
   VARIANT var; 

   HRESULT hr = IltmmPlay__get_SourceStream(pPlay, (IUnknown**)&pMemSource); 

   if(FAILED(hr) || pMemSource == NULL) 
      return; 

   IltmmMemory__put_BufferSize (pMemSource, lSize); 
   
   // pass data
   memset(&sa, 0, sizeof(sa)); 
   sa.cbElements = sizeof(unsigned char); 
   sa.cDims = 1; 
   sa.fFeatures = (FADF_AUTO | FADF_FIXEDSIZE); 
   sa.pvData = pData; 
   sa.rgsabound[0].cElements = lSize; 
   VariantInit(&var); 
   V_VT(&var) = (VT_ARRAY | VT_UI1); 
   V_ARRAY(&var) = &sa; 

   IltmmMemory_SetData(pMemSource, 0, lSize, var); 

   IltmmMemory_Release(pMemSource); 
}

This method will fill the source stream with data from a buffer.

L_MULTIMEDIATEX_API void IltmmPlay_get_SourceStream_Example (UCHAR *pData, long lSize, IltmmPlay *pPlay) 
{
	IltmmMemory *pMemSource = NULL; 
	SAFEARRAY sa; 
	VARIANT var; 

	HRESULT hr = IltmmPlay_get_SourceStream(pPlay, (IUnknown**)&pMemSource); 

	if(FAILED(hr) || pMemSource == NULL) 
		return; 

	IltmmMemory_put_BufferSize (pMemSource, lSize); 

	// pass data
	memset(&sa, 0, sizeof(sa)); 
	sa.cbElements = sizeof(unsigned char); 
	sa.cDims = 1; 
	sa.fFeatures = (FADF_AUTO | FADF_FIXEDSIZE); 
	sa.pvData = pData; 
	sa.rgsabound[0].cElements = lSize; 
	VariantInit(&var); 
	V_VT(&var) = (VT_ARRAY | VT_UI1); 
	V_ARRAY(&var) = &sa; 

	IltmmMemory_SetData(pMemSource, 0, lSize, var); 

	IltmmMemory_Release(pMemSource); 
}