Method PutFrame
From AVObjects Knowledge Base
(Difference between revisions)
Line 34: | Line 34: | ||
E_FAIL Object not initialized yet or other failure | E_FAIL Object not initialized yet or other failure | ||
</pre> | </pre> | ||
− | {{AVO Sample of | + | {{AVO Sample of copy stream}} |
[[Category:IAVObject]] | [[Category:IAVObject]] |
Latest revision as of 08:53, 11 July 2014
This page is a copy of the original page on the AVObjects' web site and can also be viewed here.
Method to put data to AV object.
HRESULT PutFrame( [in] int nStream, [in] BYTE* pbBuffer, [in] DWORD cbActual, [in] DWORD dwFlags, [in] REFERENCE_TIME tS, [in] REFERENCE_TIME tE, [in] BYTE* pbReserved );
Parameters:
nStream Number of stream pbBuffer Buffer with data. cbActual Size of data in buffer in bytes. dwFlags Library specific bitmap (see library description) tS Start time tE End time pbReserved Library specific variable (see library description)
Returns:
S_OK Data in pbBuffer sended HRESULT_FROM_WIN32(ERROR_HANDLE_EOF) End of stream E_INVALIDARG One or more arguments are invalid E_FAIL Object not initialized yet or other failure
Copy stream
//BYTE* pbBuffer - pointer to frame buffer //DWORD cbBuffer - size of frane buffer in bytes //int nStream - index of stream HRESULT hr = S_OK; while(1) { hr = spDest->CanPutFrame(nStream, INFINITE); if ( hr != S_OK ) return hr; hr = spSource->CanGetFrame(nStream, INFINITE); if (hr != S_OK) return hr; DWORD cbActual = 0; REFERENCE_TIME tS = 0, tE = 0; DWORD dwFlags = 0; hr = spSource->GetFrame(nStream, pbBuffer, cbBuffer, &cbActual, &dwFlags, &tS, &tE, NULL); if (hr == S_OK) { hr = spDest->PutFrame(nStream, m_pbBuffer, cbActual, dwFlags, tS, tE, NULL); } else if (hr == HRESULT_FROM_WIN32(ERROR_HANDLE_EOF)) { // EOS, put empty frame to dest hr = spDest->PutFrame(nStream, NULL, 0, 0, 0, 0, NULL); if (hr == S_OK) return hr; } if (FAILED(hr)) return hr; }