XnStatus XnSensor::GetBufferPool(const XnChar* strStream, XnBufferPool** ppBufferPool) { XnStatus nRetVal = XN_STATUS_OK; XnDeviceModuleHolder* pHolder; nRetVal = FindStream(strStream, &pHolder); XN_IS_STATUS_OK(nRetVal); XnSensorStreamHolder* pSensorStreamHolder = (XnSensorStreamHolder*)(pHolder); XnDeviceStream* pStream = pSensorStreamHolder->GetStream(); XnUInt64 nFrameBased; nRetVal = pStream->GetProperty(XN_STREAM_PROPERTY_IS_FRAME_BASED, &nFrameBased); XN_IS_STATUS_OK(nRetVal); if (nFrameBased == 0) { return XN_STATUS_BAD_TYPE; } XnFrameStream* pFrameStream = (XnFrameStream*)pStream; *ppBufferPool = pFrameStream->GetBufferPool(); return (XN_STATUS_OK); }
XnStatus XN_CALLBACK_TYPE XnFrameStream::GetLastRawFrameCallback(const XnGeneralProperty* pSender, const XnGeneralBuffer& gbValue, void* pCookie) { XN_VALIDATE_GENERAL_BUFFER_TYPE(gbValue, XnDynamicSizeBuffer); XnFrameStream* pThis = (XnFrameStream*)pCookie; XnDynamicSizeBuffer* pBuffer = (XnDynamicSizeBuffer*)gbValue.pData; return pThis->GetLastRawFrame(pBuffer); }
void XN_CALLBACK_TYPE XnFrameStream::OnTripleBufferNewData(XnFrameBufferManager* pTripleBuffer, XnUInt64 nTimestamp, void* pCookie) { XnFrameStream* pThis = (XnFrameStream*)pCookie; pThis->NewDataAvailable(nTimestamp, pThis->m_nLastReadFrame + 1); }
XnStatus XN_CALLBACK_TYPE XnFrameStream::RequiredSizeChangedCallback(const XnProperty* pSenser, void* pCookie) { XnFrameStream* pThis = (XnFrameStream*)pCookie; return pThis->OnRequiredSizeChanging(); }
XnStatus XN_CALLBACK_TYPE XnFrameStream::SetFPSCallback(XnActualIntProperty* pSenser, XnUInt64 nValue, void* pCookie) { XnFrameStream* pThis = (XnFrameStream*)pCookie; return pThis->SetFPS((XnUInt32)nValue); }
XnStatus XN_CALLBACK_TYPE XnFrameStream::SetExternalBufferPoolCallback(XnGeneralProperty* /*pSender*/, const XnGeneralBuffer& gbValue, void* pCookie) { XnFrameStream* pThis = (XnFrameStream*)pCookie; return pThis->SetExternalBufferPool(gbValue.nDataSize / sizeof(XnGeneralBuffer), (XnGeneralBuffer*)gbValue.pData); }
void XN_CALLBACK_TYPE XnFrameStream::OnTripleBufferNewData(const XnFrameBufferManager::NewFrameEventArgs& args, void* pCookie) { XnFrameStream* pThis = (XnFrameStream*)pCookie; pThis->NewDataAvailable(args.nTimestamp, pThis->m_nLastReadFrame + 1); }