XnStatus XnFrameStream::ReadImpl(XnStreamData* pStreamOutput) { XnStatus nRetVal = XN_STATUS_OK; // release previous buffer if (pStreamOutput->pInternal->pLockedBuffer != NULL) { m_pBufferPool->DecRef(pStreamOutput->pInternal->pLockedBuffer); } else if (pStreamOutput->pInternal->nAllocSize > 0) { // no need for this buffer, we're replacing it with a pointer to the // buffer pool nRetVal = XnStreamDataUpdateSize(pStreamOutput, 0); XN_IS_STATUS_OK(nRetVal); } m_pBufferManager->ReadLastStableBuffer( &pStreamOutput->pInternal->pLockedBuffer, &pStreamOutput->nTimestamp, &pStreamOutput->nFrameID); pStreamOutput->pData = (void*)pStreamOutput->pInternal->pLockedBuffer->GetData(); pStreamOutput->nDataSize = pStreamOutput->pInternal->pLockedBuffer->GetSize(); pStreamOutput->nFrameID = ++m_nLastReadFrame; nRetVal = PostProcessFrame(pStreamOutput); XN_IS_STATUS_OK(nRetVal); return XN_STATUS_OK; }
XnStatus XnFrameStream::ReadImpl(XnStreamData* pStreamOutput) { XnStatus nRetVal = XN_STATUS_OK; // release previous buffer m_pBufferPool->DecRef(pStreamOutput->pInternal->pLockedBuffer); m_pBufferManager->ReadLastStableBuffer( &pStreamOutput->pInternal->pLockedBuffer, &pStreamOutput->nTimestamp, &pStreamOutput->nFrameID); pStreamOutput->pData = (void*)pStreamOutput->pInternal->pLockedBuffer->GetData(); pStreamOutput->nDataSize = pStreamOutput->pInternal->pLockedBuffer->GetSize(); pStreamOutput->nFrameID = ++m_nLastReadFrame; nRetVal = PostProcessFrame(pStreamOutput); XN_IS_STATUS_OK(nRetVal); return XN_STATUS_OK; }