Template:AVO Sample of copying

From AVObjects Knowledge Base
(Difference between revisions)
Jump to: navigation, search
(Created page with "for(int n = 0; n < nStreams; n++) { HRESULT hr = spDest->CanPutFrame(n, 0); if ( FAILED(hr) ) return hr; else if (hr != S_OK) continue; hr = spSource->CanG...")
 
 
(One intermediate revision by one user not shown)
Line 1: Line 1:
 +
===Copy frames for all streams from source object to dest object===
 +
 +
<source lang=cpp>
 
for(int n = 0; n < nStreams; n++)
 
for(int n = 0; n < nStreams; n++)
 
{
 
{
Line 29: Line 32:
 
     return hr;
 
     return hr;
 
}
 
}
 +
</source>

Latest revision as of 16:46, 9 July 2014

Copy frames for all streams from source object to dest object

for(int n = 0; n < nStreams; n++)
{
  HRESULT hr = spDest->CanPutFrame(n, 0);
  if ( FAILED(hr) )
     return hr;
   else if (hr != S_OK)
     continue;
 
  hr = spSource->CanGetFrame(n, 0);
  if ( FAILED(hr) )
    return hr;
  else if (hr != S_OK)
    continue;
 
  DWORD cbActual = 0;
  REFERENCE_TIME tS = 0, tE = 0;
  DWORD dwFlags = 0;
 
  hr = spSource->GetFrame(n, m_pbBuffer, m_cbBuffer, &cbActual, &dwFlags, &tS, &tE, NULL);
  if (hr == S_OK)
  {
     hr = spDest->PutFrame(n, m_pbBuffer, cbActual, dwFlags, tS, tE, NULL);
  }
  else if (hr == HRESULT_FROM_WIN32(ERROR_HANDLE_EOF))
  {
     hr = spDest->PutFrame(n, NULL, 0, 0, 0, 0, NULL);
  }  
  if (FAILED(hr))
    return hr;
}
Personal tools