XnStatus PlayerImpl::SetSource(XnRecordMedium sourceType, const XnChar* strSource) { XnStatus nRetVal = XN_STATUS_OK; // NOTE: we don't want playback speed to affect getting to the first frame, so perform this // without playback speed XnDouble dPlaybackSpeed = GetPlaybackSpeed(); SetPlaybackSpeed(XN_PLAYBACK_SPEED_FASTEST); //Right now the only record medium we support is a file m_sourceType = sourceType; switch (m_sourceType) { case XN_RECORD_MEDIUM_FILE: { nRetVal = xnOSStrCopy(m_strSource, strSource, sizeof(m_strSource)); XN_IS_STATUS_OK(nRetVal); nRetVal = ModulePlayer().SetInputStream(ModuleHandle(), this, &s_fileInputStream); XN_IS_STATUS_OK(nRetVal); break; } default: XN_ASSERT(FALSE); return XN_STATUS_BAD_PARAM; } // now re-set playback speed nRetVal = SetPlaybackSpeed(dPlaybackSpeed); XN_IS_STATUS_OK(nRetVal); return XN_STATUS_OK; }
XnStatus PlayerImpl::Init(XnNodeHandle hPlayer) { XN_VALIDATE_PTR(hPlayer, XN_STATUS_ERROR); XnModuleInstance* pModuleInstance = hPlayer->pModuleInstance; XN_VALIDATE_PTR(pModuleInstance, XN_STATUS_ERROR); XnModuleNodeHandle hModule = pModuleInstance->hNode; XN_VALIDATE_PTR(hModule, XN_STATUS_ERROR); XN_VALIDATE_PTR(pModuleInstance->pLoaded, XN_STATUS_ERROR); XN_VALIDATE_PTR(pModuleInstance->pLoaded->pInterface, XN_STATUS_ERROR); m_hPlayer = hPlayer; XnStatus nRetVal = ModulePlayer().SetNodeNotifications(ModuleHandle(), this, &s_nodeNotifications); XN_IS_STATUS_OK(nRetVal); XnCallbackHandle hDummy; // node will be destroyed anyway nRetVal = ModulePlayer().RegisterToEndOfFileReached(ModuleHandle(), EndOfFileReachedCallback, this, &hDummy); XN_IS_STATUS_OK(nRetVal); return XN_STATUS_OK; }
XnStatus PlayerImpl::SetSource(XnRecordMedium sourceType, const XnChar* strSource) { XnStatus nRetVal = XN_STATUS_OK; m_sourceType = sourceType; //Right now the only record medium we support is a file switch (m_sourceType) { case XN_RECORD_MEDIUM_FILE: { nRetVal = xnOSStrCopy(m_strSource, strSource, sizeof(m_strSource)); XN_IS_STATUS_OK(nRetVal); nRetVal = ModulePlayer().SetInputStream(ModuleHandle(), this, &s_fileInputStream); XN_IS_STATUS_OK(nRetVal); break; } default: XN_ASSERT(FALSE); return XN_STATUS_BAD_PARAM; } return XN_STATUS_OK; }