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