| 274 | |
| 275 | |
| 276 | XnStatus PlayerImpl::SeekToFrame(const XnChar* strNodeName, XnInt32 nFrameOffset, XnPlayerSeekOrigin origin) |
| 277 | { |
| 278 | XnStatus nRetVal = XN_STATUS_OK; |
| 279 | |
| 280 | // do the whole thing in a lock (so it wouldn't conflict with other threads playing / seeking) |
| 281 | XnAutoCSLocker locker(m_hPlaybackLock); |
| 282 | |
| 283 | // disable playback speed - so seeking would be immediate |
| 284 | XnDouble dPlaybackSpeed = GetPlaybackSpeed(); |
| 285 | SetPlaybackSpeed(XN_PLAYBACK_SPEED_FASTEST); |
| 286 | |
| 287 | nRetVal = ModulePlayer().SeekToFrame(ModuleHandle(), strNodeName, nFrameOffset, origin); |
| 288 | |
| 289 | // restore playback speed |
| 290 | SetPlaybackSpeed(dPlaybackSpeed); |
| 291 | ResetTimeReference(); |
| 292 | |
| 293 | // check if seeking failed |
| 294 | XN_IS_STATUS_OK(nRetVal); |
| 295 | |
| 296 | return XN_STATUS_OK; |
| 297 | } |
| 298 | |
| 299 | XnStatus XN_CALLBACK_TYPE PlayerImpl::OpenFile(void* pCookie) |
| 300 | { |
no test coverage detected