DateTime getCurrentPlayTime(int millisecondCounter) { int seconds = 0; int minutes = 0; int hours = 0; while (millisecondCounter > 999) { seconds = millisecondCounter / 1000; millisecondCounter = (millisecondCounter % 1000); while (seconds > 59) { minutes = seconds / 60; seconds = seconds % 60; while (minutes > 59) { hours = minutes / 60; minutes = minutes % 60; } } } DateTime firstFrameTime = PATHS.GetTimeFromFile(jpegsToPlay[0]); TimeSpan interval = new TimeSpan(0, hours, minutes, seconds, millisecondCounter); return(firstFrameTime.Add(interval)); }
TimeSpan GetNextFrameInterval() { int index = m_JpegPlayIndex; index++; if (index >= jpegsToPlay.Length) { return(new TimeSpan(0, 0, 0, 0, 30)); // return an arbitrarily short time, since we are at the end } DateTime frameTimeAtLastFrame = PATHS.GetTimeFromFile(jpegsToPlay[m_JpegPlayIndex]); DateTime frameTimeAtNextFrame = PATHS.GetTimeFromFile(jpegsToPlay[index]); TimeSpan interval = frameTimeAtNextFrame.Subtract(frameTimeAtLastFrame); return(interval); }
void PlayLoop() { m_PlayControl = new PlayControl(); m_PlayControl.Reset(); while (!m_Stop) { while (m_Play) { if (m_PlayControl.intervalCounter >= (int)m_PlayControl.interval.TotalMilliseconds) { lock (jpegArrayLock) { m_PlayControl.previousFrameTime = PATHS.GetTimeFromFile(jpegsToPlay[m_JpegPlayIndex]); } this.BeginInvoke((MethodInvoker) delegate { this.PushNextJpeg(); }); if (m_JpegPlayIndex == jpegsToPlay.Length - 1) { m_Play = false; this.BeginInvoke((MethodInvoker) delegate { this.StopPlay(); }); continue; } DateTime nexttimestamp = PATHS.GetTimeFromFile(jpegsToPlay[m_JpegPlayIndex + 1]); m_PlayControl.interval = nexttimestamp.Subtract(m_PlayControl.previousFrameTime); m_JpegPlayIndex++; m_PlayControl.intervalCounter = 0; } if (m_Stop) { break; } TimeSpan playtime = m_PlayControl.interval.Add(new TimeSpan(0, 0, 0, 0, m_PlayControl.intervalCounter)); this.BeginInvoke((MethodInvoker) delegate { this.PushPlayStats(m_PlayControl.previousFrameTime.Add(playtime).ToString(m_AppData.TimeFormatStringForFileNames), m_PlayControl.previousFrameTime.ToString(m_AppData.TimeFormatStringForFileNames)); }); m_PlayControl.intervalCounter++; Thread.Sleep(1); } Thread.Sleep(1); } }
DateTime getCurrentFrameTime() { return(PATHS.GetTimeFromFile(jpegsToPlay[m_JpegPlayIndex])); }
void PlayOneFrame(bool playForward) { if (jpegsToPlay == null) { return; } if (playForward) { m_JpegPlayIndex++; } else { m_JpegPlayIndex--; } if (jpegsToPlay.Length == 0) { return; } if (m_JpegPlayIndex >= jpegsToPlay.Length) { m_JpegPlayIndex = 0; } if (m_JpegPlayIndex < 0) { m_JpegPlayIndex = jpegsToPlay.Length - 1; } lock (jpegArrayLock) { m_PlayControl.previousFrameTime = PATHS.GetTimeFromFile(jpegsToPlay[m_JpegPlayIndex]); } this.BeginInvoke((MethodInvoker) delegate { this.PushNextJpeg(jpegsToPlay[m_JpegPlayIndex]); }); int nextIndex; if (playForward) { nextIndex = m_JpegPlayIndex + 1; } else { nextIndex = m_JpegPlayIndex - 1; } if (nextIndex >= jpegsToPlay.Length) { nextIndex = 0; } if (nextIndex < 0) { nextIndex = jpegsToPlay.Length - 1; } int nextNextIndex = nextIndex + 1; if (nextNextIndex >= jpegsToPlay.Length) { nextNextIndex = nextIndex; } DateTime nexttimestamp = PATHS.GetTimeFromFile(jpegsToPlay[nextNextIndex]); m_PlayControl.interval = nexttimestamp.Subtract(m_PlayControl.previousFrameTime); m_PlayControl.intervalCounter = 0; TimeSpan playtime = m_PlayControl.interval.Add(new TimeSpan(0, 0, 0, 0, m_PlayControl.intervalCounter)); this.BeginInvoke((MethodInvoker) delegate { this.PushPlayStats(m_PlayControl.previousFrameTime.Add(playtime).ToString(m_AppData.TimeFormatStringForFileNames), m_PlayControl.previousFrameTime.ToString(m_AppData.TimeFormatStringForFileNames), m_JpegPlayIndex); }); m_PlayControl.intervalCounter++; }