void readFrame() { if (!g_Depth.IsValid() && !g_Image.IsValid() && !g_IR.IsValid() && !g_Audio.IsValid()) // @@@dded return; XnStatus rc = XN_STATUS_OK; if (g_pPrimary != NULL) { rc = g_Context.WaitOneUpdateAll(*g_pPrimary); } else { rc = g_Context.WaitAnyUpdateAll(); } if (rc != XN_STATUS_OK) { printf("Error: %s\n", xnGetStatusString(rc)); } if (g_Depth.IsValid()) { g_Depth.GetMetaData(g_DepthMD); } if (g_Image.IsValid()) { g_Image.GetMetaData(g_ImageMD); } if (g_IR.IsValid()) { g_IR.GetMetaData(g_irMD); } if (g_Audio.IsValid()) { g_Audio.GetMetaData(g_AudioMD); } }
void seekFrame(int nDiff) { XnStatus nRetVal = XN_STATUS_OK; if (isPlayerOn()) { const XnChar* strNodeName = NULL; if (g_pPrimary != NULL) { strNodeName = g_pPrimary->GetName(); } else if (g_Depth.IsValid()) { strNodeName = g_Depth.GetName(); } else if (g_Image.IsValid()) { strNodeName = g_Image.GetName(); } else if (g_IR.IsValid()) { strNodeName = g_IR.GetName(); } else if (g_Audio.IsValid()) { strNodeName = g_Audio.GetName(); } nRetVal = g_Player.SeekToFrame(strNodeName, nDiff, XN_PLAYER_SEEK_CUR); if (nRetVal != XN_STATUS_OK) { displayMessage("Failed to seek: %s", xnGetStatusString(nRetVal)); return; } XnUInt32 nFrame = 0; XnUInt32 nNumFrames = 0; nRetVal = g_Player.TellFrame(strNodeName, nFrame); if (nRetVal != XN_STATUS_OK) { displayMessage("Failed to tell frame: %s", xnGetStatusString(nRetVal)); return; } nRetVal = g_Player.GetNumFrames(strNodeName, nNumFrames); if (nRetVal != XN_STATUS_OK) { displayMessage("Failed to get number of frames: %s", xnGetStatusString(nRetVal)); return; } displayMessage("Seeked %s to frame %u/%u", strNodeName, nFrame, nNumFrames); } }
const IRMetaData* getIRMetaData() { return g_IR.IsValid() ? &g_irMD : NULL; }
IRGenerator* getIRGenerator() { return g_IR.IsValid() ? &g_IR : NULL; }