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; 

   HRESULT hr = pPlay->get_SourceStream ((IUnknown**)&pMemSource); 

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

   pMemSource->put_BufferSize (lSize); 

   SAFEARRAY sa; 
   VARIANT var; 
   
   // 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; 

   pMemSource->SetData (0, lSize, var); 

   pMemSource->Release();
}