63 lines
861 B
C++
63 lines
861 B
C++
#pragma once
|
|
#include <windows.h>
|
|
|
|
namespace nu
|
|
{
|
|
class VideoClock
|
|
{
|
|
public:
|
|
VideoClock()
|
|
{
|
|
video_sync_start_time=0;
|
|
pause_start_time=0;
|
|
length_paused=0;
|
|
paused=0;
|
|
}
|
|
|
|
void Reset()
|
|
{
|
|
length_paused = 0;
|
|
paused=0;
|
|
}
|
|
|
|
void Pause()
|
|
{
|
|
paused=1;
|
|
pause_start_time = GetTickCount();
|
|
}
|
|
|
|
void Unpause()
|
|
{
|
|
paused=0;
|
|
length_paused += (GetTickCount() - pause_start_time);
|
|
}
|
|
|
|
int GetOutputTime()
|
|
{
|
|
if (paused)
|
|
{
|
|
return pause_start_time - video_sync_start_time - length_paused;
|
|
}
|
|
else
|
|
{
|
|
return GetTickCount() - video_sync_start_time - length_paused;
|
|
}
|
|
}
|
|
|
|
void Seek(int time_ms)
|
|
{
|
|
video_sync_start_time = GetTickCount() - time_ms;
|
|
length_paused = 0;
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
video_sync_start_time = GetTickCount();
|
|
}
|
|
private:
|
|
DWORD video_sync_start_time;
|
|
DWORD pause_start_time;
|
|
DWORD length_paused;
|
|
int paused;
|
|
};
|
|
} |