1#ifndef ENGINE_SHARED_VIDEO_H
2#define ENGINE_SHARED_VIDEO_H
3
4#include <base/time.h>
5
6#include <cstdint>
7#include <functional>
8
9typedef std::function<void(short *pFinalOut, unsigned Frames)> ISoundMixFunc;
10
11class IVideo
12{
13public:
14 virtual ~IVideo() = default;
15
16 virtual bool Start() = 0;
17 virtual void Stop() = 0;
18 virtual void Pause(bool Pause) = 0;
19 virtual bool IsRecording() = 0;
20
21 virtual void NextVideoFrame() = 0;
22 virtual void NextVideoFrameThread() = 0;
23
24 virtual void NextAudioFrame(ISoundMixFunc Mix) = 0;
25 virtual void NextAudioFrameTimeline(ISoundMixFunc Mix) = 0;
26
27 static IVideo *Current() { return ms_pCurrentVideo; }
28
29 static int64_t Time() { return ms_Time; }
30 static float LocalTime() { return ms_LocalTime; }
31 static void SetLocalStartTime(int64_t LocalStartTime) { ms_LocalStartTime = LocalStartTime; }
32 static void SetFPS(int FPS) { ms_TickTime = time_freq() / FPS; }
33
34protected:
35 static IVideo *ms_pCurrentVideo;
36 static int64_t ms_Time;
37 static int64_t ms_LocalStartTime;
38 static float ms_LocalTime;
39 static int64_t ms_TickTime;
40};
41
42#endif
43