IltmmPlay::get_SourceStream Example for C

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

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); 
}