public int GetLastGoodFrameId() { int probedFrame = m_FrameId; Pixelmap prevFrame = null; Pixelmap thisFrame = m_VideoController.GetFrame(probedFrame); Pixelmap nextFrame = m_VideoController.GetFrame(probedFrame + 1); try { do { prevFrame = m_VideoController.GetFrame(probedFrame - 1); if (!ArePixelmapsTheSame(prevFrame, thisFrame) && !ArePixelmapsTheSame(thisFrame, nextFrame)) { return(probedFrame); } //if (nextFrame != null) nextFrame.Dispose(); nextFrame = thisFrame; thisFrame = prevFrame; probedFrame--; }while (thisFrame != null && prevFrame != null && probedFrame > m_VideoController.VideoFirstFrame); } finally { if (prevFrame != null) { prevFrame.Dispose(); } if (thisFrame != null) { thisFrame.Dispose(); } if (nextFrame != null) { nextFrame.Dispose(); } } return(m_FrameId); }