Template:AVO Sample of copying
From AVObjects Knowledge Base
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;
}